<?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>122868</bug_id>
          
          <creation_ts>2013-10-15 15:27:26 -0700</creation_ts>
          <short_desc>Web Inspector: ES6: JavaScript syntax highlighting and recognition of for..of</short_desc>
          <delta_ts>2013-12-12 11:49:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>lvidacs.u-szeged</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940162</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-10-15 15:27:26 -0700</bug_when>
    <thetext>JSC now supports for..of. We should syntax highlight it like for..in:

Compare these in the JS Console:

  js&gt; for (var x in []) {}
  js&gt; for (var x of []) {}

NOTE: Most likely CodeMirror JavaScript ES6 update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940163</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-10-15 15:27:42 -0700</bug_when>
    <thetext>&lt;rdar://problem/15235823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950568</commentid>
    <comment_count>2</comment_count>
    <who name="Laszlo Vidacs">lvidacs.u-szeged</who>
    <bug_when>2013-11-14 02:19:01 -0800</bug_when>
    <thetext>Pull request submitted to the CodeMirror repository: https://github.com/lvidacs/CodeMirror/commit/1cb45c87c70629e6cb5899403e07b2ab39354dca</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950576</commentid>
    <comment_count>3</comment_count>
    <who name="Laszlo Vidacs">lvidacs.u-szeged</who>
    <bug_when>2013-11-14 02:36:59 -0800</bug_when>
    <thetext>The patch landed in CodeMirror 
https://github.com/marijnh/CodeMirror/commit/39804ada3d6d14da5e0f237fa5904a5e0aaa4489</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950708</commentid>
    <comment_count>4</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-14 09:20:58 -0800</bug_when>
    <thetext>Sweet! We just need to update CodeMirror then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>950710</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-11-14 09:21:32 -0800</bug_when>
    <thetext>Thanks for fixing this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954944</commentid>
    <comment_count>6</comment_count>
      <attachid>218053</attachid>
    <who name="Laszlo Vidacs">lvidacs.u-szeged</who>
    <bug_when>2013-11-29 04:43:26 -0800</bug_when>
    <thetext>Created attachment 218053
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954945</commentid>
    <comment_count>7</comment_count>
    <who name="Laszlo Vidacs">lvidacs.u-szeged</who>
    <bug_when>2013-11-29 04:45:46 -0800</bug_when>
    <thetext>CodeMirror release 3.20 contains javascript ES6 updates, among others the fix for this bug. Patch created according to the commnet in https://bugs.webkit.org/show_bug.cgi?id=120165 however not fully tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955533</commentid>
    <comment_count>8</comment_count>
      <attachid>218053</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-12-02 13:07:08 -0800</bug_when>
    <thetext>Comment on attachment 218053
Patch

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

&gt; Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.js:5570
&gt; -      var result = /\-[^ \-?]|\?[^ !\&apos;\&quot;\),.\-\/:;\?\]\}]/.test(str.slice(i - 1, i + 1));
&gt; -      return result;
&gt; +      return /\-[^ \-?]|\?[^ !\&apos;\&quot;\),.\-\/:;\?\]\}]/.test(str.slice(i - 1, i + 1));

This change breaks the jsmin.py script. It needs reverted. This is a local change to CodeMirror we have until we fix it. Testing copy-user-interface-resources.sh with COMBINE_INSPECTOR_RESOURCES = YES will show what I mean.

&gt; Source/WebInspectorUI/Tools/PrettyPrinting/codemirror.js:5583
&gt; -      var result = /[~!#%&amp;*)=+}\]|\&quot;\.&gt;,:;][({[&lt;]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&amp;*(_=+{[|&gt;&lt;]|â¦[\w~`@#$%\^&amp;*(_=+{[&gt;&lt;]/.test(str.slice(i - 1, i + 1));
&gt; -      return result;
&gt; +      return /[~!#%&amp;*)=+}\]\\|\&quot;\.&gt;,:;][({[&lt;]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&amp;*(_=+{[|&gt;&lt;]|â¦[\w~`@#$%\^&amp;*(_=+{[&gt;&lt;]/.test(str.slice(i - 1, i + 1));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958748</commentid>
    <comment_count>9</comment_count>
      <attachid>218969</attachid>
    <who name="Laszlo Vidacs">lvidacs.u-szeged</who>
    <bug_when>2013-12-11 08:47:50 -0800</bug_when>
    <thetext>Created attachment 218969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958749</commentid>
    <comment_count>10</comment_count>
    <who name="Laszlo Vidacs">lvidacs.u-szeged</who>
    <bug_when>2013-12-11 08:52:54 -0800</bug_when>
    <thetext>Patch updated accordingly; codemirror.js files in WebInspectorUI/Tools/PrettyPrinting/ and in WebInspectorUI/UserInterface/External/CodeMirror/ now differ.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958779</commentid>
    <comment_count>11</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-12-11 10:15:07 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Patch updated accordingly; codemirror.js files in WebInspectorUI/Tools/PrettyPrinting/ and in WebInspectorUI/UserInterface/External/CodeMirror/ now differ.

No reason for these files to differ. PrettyPrinting should just be a copy of UserInterface/External/CodeMirror. It is nice to have them separate for development, but identical if you run pretty printing tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958780</commentid>
    <comment_count>12</comment_count>
      <attachid>218969</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-12-11 10:16:33 -0800</bug_when>
    <thetext>Comment on attachment 218969
Patch

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

&gt; Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.js:5570
&gt; -      var result = /\-[^ \-?]|\?[^ !\&apos;\&quot;\),.\-\/:;\?\]\}]/.test(str.slice(i - 1, i + 1));
&gt; -      return result;
&gt; +      return /\-[^ \-?]|\?[^ !\&apos;\&quot;\),.\-\/:;\?\]\}]/.test(str.slice(i - 1, i + 1));

Sorry for the confusion. My comment wasn&apos;t meant for the PrettyPrinting copy. It was meant for the main codemirror.js. The version in UserInterface is the one we use jsmin.js on, but both copies in our tree should be the same.

&gt; Source/WebInspectorUI/UserInterface/External/CodeMirror/codemirror.js:5583
&gt; -      var result = /[~!#%&amp;*)=+}\]|\&quot;\.&gt;,:;][({[&lt;]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&amp;*(_=+{[|&gt;&lt;]|â¦[\w~`@#$%\^&amp;*(_=+{[&gt;&lt;]/.test(str.slice(i - 1, i + 1));
&gt; -      return result;
&gt; +      return /[~!#%&amp;*)=+}\]\\|\&quot;\.&gt;,:;][({[&lt;]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&amp;*(_=+{[|&gt;&lt;]|â¦[\w~`@#$%\^&amp;*(_=+{[&gt;&lt;]/.test(str.slice(i - 1, i + 1));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958843</commentid>
    <comment_count>13</comment_count>
      <attachid>218990</attachid>
    <who name="Laszlo Vidacs">lvidacs.u-szeged</who>
    <bug_when>2013-12-11 11:50:52 -0800</bug_when>
    <thetext>Created attachment 218990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958845</commentid>
    <comment_count>14</comment_count>
    <who name="Laszlo Vidacs">lvidacs.u-szeged</who>
    <bug_when>2013-12-11 11:54:28 -0800</bug_when>
    <thetext>Sorry, I updated the patch with identical codemirror.js in both places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959275</commentid>
    <comment_count>15</comment_count>
      <attachid>218990</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-12 11:49:42 -0800</bug_when>
    <thetext>Comment on attachment 218990
Patch

Clearing flags on attachment: 218990

Committed r160500: &lt;http://trac.webkit.org/changeset/160500&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959276</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-12 11:49:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218053</attachid>
            <date>2013-11-29 04:43:26 -0800</date>
            <delta_ts>2013-12-11 08:47:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122868-20131129134322.patch</filename>
            <type>text/plain</type>
            <size>167584</size>
            <attacher name="Laszlo Vidacs">lvidacs.u-szeged</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU5ODY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
OGIxMDNiM2JiZGFkMmIwMWY5YzQ5YjY0YTZiMDg0ODU3MmU5YmZmLi4xNDU5OWFmMGUxNjZhMDEw
N2YwMTU1MzJlZDAzYTU5MTA4NmMzYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxMy0xMS0yOSAgTGFzemxvIFZpZGFjcyAgPGxhY0BpbmYudS1zemVnZWQu
aHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRVM2OiBKYXZhU2NyaXB0IHN5bnRheCBoaWdo
bGlnaHRpbmcgYW5kIHJlY29nbml0aW9uIG9mIGZvci4ub2YKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjg2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0byBDb2RlTWlycm9yIDMuMjAgaW5j
bHVkaW5nIGphdmFzY3JpcHQgRVM2IHVwZGF0ZXMuCisKKyAgICAgICAgKiBUb29scy9QcmV0dHlQ
cmludGluZy9jb2RlbWlycm9yLmNzczoKKyAgICAgICAgKiBUb29scy9QcmV0dHlQcmludGluZy9j
b2RlbWlycm9yLmpzOgorICAgICAgICAqIFRvb2xzL1ByZXR0eVByaW50aW5nL2Nzcy5qczoKKyAg
ICAgICAgKiBUb29scy9QcmV0dHlQcmludGluZy9qYXZhc2NyaXB0LmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29mZmVlc2NyaXB0LmpzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jc3MuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2h0bWxtaXhlZC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvamF2YXNjcmlwdC5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbGVzcy5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbWF0Y2hicmFja2V0cy5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvcGxhY2Vob2xk
ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3J1bm1v
ZGUuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NlYXJj
aGN1cnNvci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3Iv
c3FsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwu
anM6CisKIDIwMTMtMTEtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBBbGxvdyBzaG93aW5nIGEgY29udGV4dCBtZW51IG9uIGFs
bCBtb3VzZSBldmVudHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMv
UHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9v
bHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5jc3MKaW5kZXggNGUzMDBiMmJlMmU5MGNjMzA2
NjhlYmVjMDNjMGNmYWJjNWEwNTc2Zi4uMjNlYWY3NGQ0NDliY2Q1Y2RiNGU5NTJlNWIyODQ2NDI4
ZThlYmI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVBy
aW50aW5nL2NvZGVtaXJyb3IuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9Q
cmV0dHlQcmludGluZy9jb2RlbWlycm9yLmNzcwpAQCAtNzQsNyArNzQsNiBAQAogLmNtLXMtZGVm
YXVsdCAuY20tc3RyaW5nIHtjb2xvcjogI2ExMTt9CiAuY20tcy1kZWZhdWx0IC5jbS1zdHJpbmct
MiB7Y29sb3I6ICNmNTA7fQogLmNtLXMtZGVmYXVsdCAuY20tbWV0YSB7Y29sb3I6ICM1NTU7fQot
LmNtLXMtZGVmYXVsdCAuY20tZXJyb3Ige2NvbG9yOiAjZjAwO30KIC5jbS1zLWRlZmF1bHQgLmNt
LXF1YWxpZmllciB7Y29sb3I6ICM1NTU7fQogLmNtLXMtZGVmYXVsdCAuY20tYnVpbHRpbiB7Y29s
b3I6ICMzMGE7fQogLmNtLXMtZGVmYXVsdCAuY20tYnJhY2tldCB7Y29sb3I6ICM5OTc7fQpAQCAt
OTEsNiArOTAsNyBAQAogLmNtLWVtIHtmb250LXN0eWxlOiBpdGFsaWM7fQogLmNtLWxpbmsge3Rl
eHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO30KIAorLmNtLXMtZGVmYXVsdCAuY20tZXJyb3Ige2Nv
bG9yOiAjZjAwO30KIC5jbS1pbnZhbGlkY2hhciB7Y29sb3I6ICNmMDA7fQogCiBkaXYuQ29kZU1p
cnJvciBzcGFuLkNvZGVNaXJyb3ItbWF0Y2hpbmdicmFja2V0IHtjb2xvcjogIzBmMDt9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1p
cnJvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jb2Rl
bWlycm9yLmpzCmluZGV4IDgxNzcxZTk5YjEyYWFhZGRlZmY2ZTQyNWUyOTRlZDM1OWU5YWI3N2Eu
LjdiNGZkMDAxNDExYWQxNGVhYzYzNGJlMzcyNzQ4YThhZDE3ZTRjMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jb2RlbWlycm9yLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jb2RlbWlycm9y
LmpzCkBAIC03LDkgKzcsMTMgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAg
IC8vIENydWRlLCBidXQgbmVjZXNzYXJ5IHRvIGhhbmRsZSBhIG51bWJlciBvZiBoYXJkLXRvLWZl
YXR1cmUtZGV0ZWN0CiAgIC8vIGJ1Z3MgYW5kIGJlaGF2aW9yIGRpZmZlcmVuY2VzLgogICB2YXIg
Z2Vja28gPSAvZ2Vja29cL1xkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgLy8gSUUx
MSBjdXJyZW50bHkgZG9lc24ndCBjb3VudCBhcyAnaWUnLCBzaW5jZSBpdCBoYXMgYWxtb3N0IG5v
bmUgb2YKKyAgLy8gdGhlIHNhbWUgYnVncyBhcyBlYXJsaWVyIHZlcnNpb25zLiBVc2UgaWVfZ3Qx
MCB0byBoYW5kbGUKKyAgLy8gaW5jb21wYXRpYmlsaXRpZXMgaW4gdGhhdCB2ZXJzaW9uLgogICB2
YXIgaWUgPSAvTVNJRSBcZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKICAgdmFyIGllX2x0
OCA9IGllICYmIChkb2N1bWVudC5kb2N1bWVudE1vZGUgPT0gbnVsbCB8fCBkb2N1bWVudC5kb2N1
bWVudE1vZGUgPCA4KTsKICAgdmFyIGllX2x0OSA9IGllICYmIChkb2N1bWVudC5kb2N1bWVudE1v
ZGUgPT0gbnVsbCB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCA5KTsKKyAgdmFyIGllX2d0MTAg
PSAvVHJpZGVudFwvKFs3LTldfFxkezIsfSlcLi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsK
ICAgdmFyIHdlYmtpdCA9IC9XZWJLaXRcLy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKICAg
dmFyIHF0d2Via2l0ID0gd2Via2l0ICYmIC9RdFwvXGQrXC5cZCsvLnRlc3QobmF2aWdhdG9yLnVz
ZXJBZ2VudCk7CiAgIHZhciBjaHJvbWUgPSAvQ2hyb21lXC8vLnRlc3QobmF2aWdhdG9yLnVzZXJB
Z2VudCk7CkBAIC0zMDksNyArMzEzLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24o
KSB7CiAgICAgICBvcHRpb25zLmd1dHRlcnMgPSBvcHRpb25zLmd1dHRlcnMuY29uY2F0KFsiQ29k
ZU1pcnJvci1saW5lbnVtYmVycyJdKTsKICAgICB9IGVsc2UgaWYgKGZvdW5kID4gLTEgJiYgIW9w
dGlvbnMubGluZU51bWJlcnMpIHsKICAgICAgIG9wdGlvbnMuZ3V0dGVycyA9IG9wdGlvbnMuZ3V0
dGVycy5zbGljZSgwKTsKLSAgICAgIG9wdGlvbnMuZ3V0dGVycy5zcGxpY2UoaSwgMSk7CisgICAg
ICBvcHRpb25zLmd1dHRlcnMuc3BsaWNlKGZvdW5kLCAxKTsKICAgICB9CiAgIH0KIApAQCAtMzUz
LDggKzM1NywxMCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIGQu
Z3V0dGVyRmlsbGVyLnN0eWxlLndpZHRoID0gZC5ndXR0ZXJzLm9mZnNldFdpZHRoICsgInB4IjsK
ICAgICB9IGVsc2UgZC5ndXR0ZXJGaWxsZXIuc3R5bGUuZGlzcGxheSA9ICIiOwogCi0gICAgaWYg
KG1hY19nZUxpb24gJiYgc2Nyb2xsYmFyV2lkdGgoZC5tZWFzdXJlKSA9PT0gMCkKKyAgICBpZiAo
bWFjX2dlTGlvbiAmJiBzY3JvbGxiYXJXaWR0aChkLm1lYXN1cmUpID09PSAwKSB7CiAgICAgICBk
LnNjcm9sbGJhclYuc3R5bGUubWluV2lkdGggPSBkLnNjcm9sbGJhckguc3R5bGUubWluSGVpZ2h0
ID0gbWFjX2dlTW91bnRhaW5MaW9uID8gIjE4cHgiIDogIjEycHgiOworICAgICAgZC5zY3JvbGxi
YXJWLnN0eWxlLnBvaW50ZXJFdmVudHMgPSBkLnNjcm9sbGJhckguc3R5bGUucG9pbnRlckV2ZW50
cyA9ICJub25lIjsKKyAgICB9CiAgIH0KIAogICBmdW5jdGlvbiB2aXNpYmxlTGluZXMoZGlzcGxh
eSwgZG9jLCB2aWV3UG9ydCkgewpAQCAtNDA5LDE0ICs0MTUsMTQgQEAgd2luZG93LkNvZGVNaXJy
b3IgPSAoZnVuY3Rpb24oKSB7CiAgIGZ1bmN0aW9uIHVwZGF0ZURpc3BsYXkoY20sIGNoYW5nZXMs
IHZpZXdQb3J0LCBmb3JjZWQpIHsKICAgICB2YXIgb2xkRnJvbSA9IGNtLmRpc3BsYXkuc2hvd2lu
Z0Zyb20sIG9sZFRvID0gY20uZGlzcGxheS5zaG93aW5nVG8sIHVwZGF0ZWQ7CiAgICAgdmFyIHZp
c2libGUgPSB2aXNpYmxlTGluZXMoY20uZGlzcGxheSwgY20uZG9jLCB2aWV3UG9ydCk7Ci0gICAg
Zm9yICg7OykgeworICAgIGZvciAodmFyIGZpcnN0ID0gdHJ1ZTs7IGZpcnN0ID0gZmFsc2UpIHsK
ICAgICAgIHZhciBvbGRXaWR0aCA9IGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGg7CiAg
ICAgICBpZiAoIXVwZGF0ZURpc3BsYXlJbm5lcihjbSwgY2hhbmdlcywgdmlzaWJsZSwgZm9yY2Vk
KSkgYnJlYWs7CiAgICAgICB1cGRhdGVkID0gdHJ1ZTsKICAgICAgIGNoYW5nZXMgPSBbXTsKICAg
ICAgIHVwZGF0ZVNlbGVjdGlvbihjbSk7CiAgICAgICB1cGRhdGVTY3JvbGxiYXJzKGNtKTsKLSAg
ICAgIGlmIChjbS5vcHRpb25zLmxpbmVXcmFwcGluZyAmJiBvbGRXaWR0aCAhPSBjbS5kaXNwbGF5
LnNjcm9sbGVyLmNsaWVudFdpZHRoKSB7CisgICAgICBpZiAoZmlyc3QgJiYgY20ub3B0aW9ucy5s
aW5lV3JhcHBpbmcgJiYgb2xkV2lkdGggIT0gY20uZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0
aCkgewogICAgICAgICBmb3JjZWQgPSB0cnVlOwogICAgICAgICBjb250aW51ZTsKICAgICAgIH0K
QEAgLTkwNCw3ICs5MTAsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAg
ICBkb2MuaXRlcihkb2MuZnJvbnRpZXIsIE1hdGgubWluKGRvYy5maXJzdCArIGRvYy5zaXplLCBj
bS5kaXNwbGF5LnNob3dpbmdUbyArIDUwMCksIGZ1bmN0aW9uKGxpbmUpIHsKICAgICAgIGlmIChk
b2MuZnJvbnRpZXIgPj0gY20uZGlzcGxheS5zaG93aW5nRnJvbSkgeyAvLyBWaXNpYmxlCiAgICAg
ICAgIHZhciBvbGRTdHlsZXMgPSBsaW5lLnN0eWxlczsKLSAgICAgICAgbGluZS5zdHlsZXMgPSBo
aWdobGlnaHRMaW5lKGNtLCBsaW5lLCBzdGF0ZSk7CisgICAgICAgIGxpbmUuc3R5bGVzID0gaGln
aGxpZ2h0TGluZShjbSwgbGluZSwgc3RhdGUsIHRydWUpOwogICAgICAgICB2YXIgaXNjaGFuZ2Ug
PSAhb2xkU3R5bGVzIHx8IG9sZFN0eWxlcy5sZW5ndGggIT0gbGluZS5zdHlsZXMubGVuZ3RoOwog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgIWlzY2hhbmdlICYmIGkgPCBvbGRTdHlsZXMubGVuZ3Ro
OyArK2kpIGlzY2hhbmdlID0gb2xkU3R5bGVzW2ldICE9IGxpbmUuc3R5bGVzW2ldOwogICAgICAg
ICBpZiAoaXNjaGFuZ2UpIHsKQEAgLTkxMyw3ICs5MTksNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICAgICAgfQogICAgICAgICBsaW5lLnN0YXRlQWZ0ZXIgPSBjb3B5
U3RhdGUoZG9jLm1vZGUsIHN0YXRlKTsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHByb2Nlc3NM
aW5lKGNtLCBsaW5lLCBzdGF0ZSk7CisgICAgICAgIHByb2Nlc3NMaW5lKGNtLCBsaW5lLnRleHQs
IHN0YXRlKTsKICAgICAgICAgbGluZS5zdGF0ZUFmdGVyID0gZG9jLmZyb250aWVyICUgNSA9PSAw
ID8gY29weVN0YXRlKGRvYy5tb2RlLCBzdGF0ZSkgOiBudWxsOwogICAgICAgfQogICAgICAgKytk
b2MuZnJvbnRpZXI7CkBAIC05MzUsOCArOTQxLDkgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAgIC8vIHNtYWxsZXN0IGluZGVudGF0aW9uLCB3aGljaCB0ZW5kcyB0byBuZWVk
IHRoZSBsZWFzdCBjb250ZXh0IHRvCiAgIC8vIHBhcnNlIGNvcnJlY3RseS4KICAgZnVuY3Rpb24g
ZmluZFN0YXJ0TGluZShjbSwgbiwgcHJlY2lzZSkgewotICAgIHZhciBtaW5pbmRlbnQsIG1pbmxp
bmUsIGRvYyA9IGNtLmRvYywgbWF4U2NhbiA9IGNtLmRvYy5tb2RlLmlubmVyTW9kZSA/IDEwMDAg
OiAxMDA7Ci0gICAgZm9yICh2YXIgc2VhcmNoID0gbiwgbGltID0gbiAtIG1heFNjYW47IHNlYXJj
aCA+IGxpbTsgLS1zZWFyY2gpIHsKKyAgICB2YXIgbWluaW5kZW50LCBtaW5saW5lLCBkb2MgPSBj
bS5kb2M7CisgICAgdmFyIGxpbSA9IHByZWNpc2UgPyAtMSA6IG4gLSAoY20uZG9jLm1vZGUuaW5u
ZXJNb2RlID8gMTAwMCA6IDEwMCk7CisgICAgZm9yICh2YXIgc2VhcmNoID0gbjsgc2VhcmNoID4g
bGltOyAtLXNlYXJjaCkgewogICAgICAgaWYgKHNlYXJjaCA8PSBkb2MuZmlyc3QpIHJldHVybiBk
b2MuZmlyc3Q7CiAgICAgICB2YXIgbGluZSA9IGdldExpbmUoZG9jLCBzZWFyY2ggLSAxKTsKICAg
ICAgIGlmIChsaW5lLnN0YXRlQWZ0ZXIgJiYgKCFwcmVjaXNlIHx8IHNlYXJjaCA8PSBkb2MuZnJv
bnRpZXIpKSByZXR1cm4gc2VhcmNoOwpAQCAtOTU2LDExICs5NjMsMTIgQEAgd2luZG93LkNvZGVN
aXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgaWYgKCFzdGF0ZSkgc3RhdGUgPSBzdGFydFN0YXRl
KGRvYy5tb2RlKTsKICAgICBlbHNlIHN0YXRlID0gY29weVN0YXRlKGRvYy5tb2RlLCBzdGF0ZSk7
CiAgICAgZG9jLml0ZXIocG9zLCBuLCBmdW5jdGlvbihsaW5lKSB7Ci0gICAgICBwcm9jZXNzTGlu
ZShjbSwgbGluZSwgc3RhdGUpOworICAgICAgcHJvY2Vzc0xpbmUoY20sIGxpbmUudGV4dCwgc3Rh
dGUpOwogICAgICAgdmFyIHNhdmUgPSBwb3MgPT0gbiAtIDEgfHwgcG9zICUgNSA9PSAwIHx8IHBv
cyA+PSBkaXNwbGF5LnNob3dpbmdGcm9tICYmIHBvcyA8IGRpc3BsYXkuc2hvd2luZ1RvOwogICAg
ICAgbGluZS5zdGF0ZUFmdGVyID0gc2F2ZSA/IGNvcHlTdGF0ZShkb2MubW9kZSwgc3RhdGUpIDog
bnVsbDsKICAgICAgICsrcG9zOwogICAgIH0pOworICAgIGlmIChwcmVjaXNlKSBkb2MuZnJvbnRp
ZXIgPSBwb3M7CiAgICAgcmV0dXJuIHN0YXRlOwogICB9CiAKQEAgLTEwMDEsNyArMTAwOSw3IEBA
IHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgdmFyIG1lbW8gPSBjYWNo
ZVtpXTsKICAgICAgIGlmIChtZW1vLnRleHQgPT0gbGluZS50ZXh0ICYmIG1lbW8ubWFya2VkU3Bh
bnMgPT0gbGluZS5tYXJrZWRTcGFucyAmJgogICAgICAgICAgIGNtLmRpc3BsYXkuc2Nyb2xsZXIu
Y2xpZW50V2lkdGggPT0gbWVtby53aWR0aCAmJgotICAgICAgICAgIG1lbW8uY2xhc3NlcyA9PSBs
aW5lLnRleHRDbGFzcyArICJ8IiArIGxpbmUuYmdDbGFzcyArICJ8IiArIGxpbmUud3JhcENsYXNz
KQorICAgICAgICAgIG1lbW8uY2xhc3NlcyA9PSBsaW5lLnRleHRDbGFzcyArICJ8IiArIGxpbmUu
d3JhcENsYXNzKQogICAgICAgICByZXR1cm4gbWVtbzsKICAgICB9CiAgIH0KQEAgLTEwMjEsNyAr
MTAyOSw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIHZhciBjYWNo
ZSA9IGNtLmRpc3BsYXkubWVhc3VyZUxpbmVDYWNoZTsKICAgICB2YXIgbWVtbyA9IHt0ZXh0OiBs
aW5lLnRleHQsIHdpZHRoOiBjbS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoLAogICAgICAg
ICAgICAgICAgIG1hcmtlZFNwYW5zOiBsaW5lLm1hcmtlZFNwYW5zLCBtZWFzdXJlOiBtZWFzdXJl
LAotICAgICAgICAgICAgICAgIGNsYXNzZXM6IGxpbmUudGV4dENsYXNzICsgInwiICsgbGluZS5i
Z0NsYXNzICsgInwiICsgbGluZS53cmFwQ2xhc3N9OworICAgICAgICAgICAgICAgIGNsYXNzZXM6
IGxpbmUudGV4dENsYXNzICsgInwiICsgbGluZS53cmFwQ2xhc3N9OwogICAgIGlmIChjYWNoZS5s
ZW5ndGggPT0gMTYpIGNhY2hlWysrY20uZGlzcGxheS5tZWFzdXJlTGluZUNhY2hlUG9zICUgMTZd
ID0gbWVtbzsKICAgICBlbHNlIGNhY2hlLnB1c2gobWVtbyk7CiAgICAgcmV0dXJuIG1lYXN1cmU7
CkBAIC0xMzc5LDExICsxMzg3LDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICAgIH0KICAgICBpZiAoIXVwZGF0ZWQgJiYgb3Auc2VsZWN0aW9uQ2hhbmdlZCkgdXBkYXRl
U2VsZWN0aW9uKGNtKTsKICAgICBpZiAob3AudXBkYXRlU2Nyb2xsUG9zKSB7Ci0gICAgICBkaXNw
bGF5LnNjcm9sbGVyLnNjcm9sbFRvcCA9IGRpc3BsYXkuc2Nyb2xsYmFyVi5zY3JvbGxUb3AgPSBk
b2Muc2Nyb2xsVG9wID0gbmV3U2Nyb2xsUG9zLnNjcm9sbFRvcDsKLSAgICAgIGRpc3BsYXkuc2Ny
b2xsZXIuc2Nyb2xsTGVmdCA9IGRpc3BsYXkuc2Nyb2xsYmFySC5zY3JvbGxMZWZ0ID0gZG9jLnNj
cm9sbExlZnQgPSBuZXdTY3JvbGxQb3Muc2Nyb2xsTGVmdDsKKyAgICAgIHZhciB0b3AgPSBNYXRo
Lm1heCgwLCBNYXRoLm1pbihkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbEhlaWdodCAtIGRpc3BsYXku
c2Nyb2xsZXIuY2xpZW50SGVpZ2h0LCBuZXdTY3JvbGxQb3Muc2Nyb2xsVG9wKSk7CisgICAgICB2
YXIgbGVmdCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsV2lk
dGggLSBkaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoLCBuZXdTY3JvbGxQb3Muc2Nyb2xsTGVm
dCkpOworICAgICAgZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AgPSBkaXNwbGF5LnNjcm9sbGJh
clYuc2Nyb2xsVG9wID0gZG9jLnNjcm9sbFRvcCA9IHRvcDsKKyAgICAgIGRpc3BsYXkuc2Nyb2xs
ZXIuc2Nyb2xsTGVmdCA9IGRpc3BsYXkuc2Nyb2xsYmFySC5zY3JvbGxMZWZ0ID0gZG9jLnNjcm9s
bExlZnQgPSBsZWZ0OwogICAgICAgYWxpZ25Ib3Jpem9udGFsbHkoY20pOwogICAgICAgaWYgKG9w
LnNjcm9sbFRvUG9zKQotICAgICAgICBzY3JvbGxQb3NJbnRvVmlldyhjbSwgY2xpcFBvcyhjbS5k
b2MsIG9wLnNjcm9sbFRvUG9zKSwgb3Auc2Nyb2xsVG9Qb3NNYXJnaW4pOworICAgICAgICBzY3Jv
bGxQb3NJbnRvVmlldyhjbSwgY2xpcFBvcyhjbS5kb2MsIG9wLnNjcm9sbFRvUG9zLmZyb20pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwUG9zKGNtLmRvYywgb3Auc2Nyb2xsVG9Qb3Mu
dG8pLCBvcC5zY3JvbGxUb1Bvcy5tYXJnaW4pOwogICAgIH0gZWxzZSBpZiAobmV3U2Nyb2xsUG9z
KSB7CiAgICAgICBzY3JvbGxDdXJzb3JJbnRvVmlldyhjbSk7CiAgICAgfQpAQCAtMTYwNSw3ICsx
NjE2LDEwIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgaWYgKHNp
Z25hbERPTUV2ZW50KGNtLCBlKSB8fCBjbS5vcHRpb25zLm9uS2V5RXZlbnQgJiYgY20ub3B0aW9u
cy5vbktleUV2ZW50KGNtLCBhZGRTdG9wKGUpKSkgcmV0dXJuOwogICAgICAgaWYgKGUua2V5Q29k
ZSA9PSAxNikgY20uZG9jLnNlbC5zaGlmdCA9IGZhbHNlOwogICAgIH0pKTsKLSAgICBvbihkLmlu
cHV0LCAiaW5wdXQiLCBiaW5kKGZhc3RQb2xsLCBjbSkpOworICAgIG9uKGQuaW5wdXQsICJpbnB1
dCIsIGZ1bmN0aW9uKCkgeworICAgICAgaWYgKGllICYmICFpZV9sdDkgJiYgY20uZGlzcGxheS5p
bnB1dEhhc1NlbGVjdGlvbikgY20uZGlzcGxheS5pbnB1dEhhc1NlbGVjdGlvbiA9IG51bGw7Cisg
ICAgICBmYXN0UG9sbChjbSk7CisgICAgfSk7CiAgICAgb24oZC5pbnB1dCwgImtleWRvd24iLCBv
cGVyYXRpb24oY20sIG9uS2V5RG93bikpOwogICAgIG9uKGQuaW5wdXQsICJrZXlwcmVzcyIsIG9w
ZXJhdGlvbihjbSwgb25LZXlQcmVzcykpOwogICAgIG9uKGQuaW5wdXQsICJmb2N1cyIsIGJpbmQo
b25Gb2N1cywgY20pKTsKQEAgLTE4OTUsNyArMTkwOSw2IEBAIHdpbmRvdy5Db2RlTWlycm9yID0g
KGZ1bmN0aW9uKCkgewogICAgICAgICAgIGlmIChjbS5zdGF0ZS5kcmFnZ2luZ1RleHQpIHJlcGxh
Y2VSYW5nZShjbS5kb2MsICIiLCBjdXJGcm9tLCBjdXJUbywgInBhc3RlIik7CiAgICAgICAgICAg
Y20ucmVwbGFjZVNlbGVjdGlvbih0ZXh0LCBudWxsLCAicGFzdGUiKTsKICAgICAgICAgICBmb2N1
c0lucHV0KGNtKTsKLSAgICAgICAgICBvbkZvY3VzKGNtKTsKICAgICAgICAgfQogICAgICAgfQog
ICAgICAgY2F0Y2goZSl7fQpAQCAtMjE3Niw3ICsyMTg5LDExIEBAIHdpbmRvdy5Db2RlTWlycm9y
ID0gKGZ1bmN0aW9uKCkgewogCiAgICAgdmFyIHBvcyA9IHBvc0Zyb21Nb3VzZShjbSwgZSksIHNj
cm9sbFBvcyA9IGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wOwogICAgIGlmICghcG9zIHx8IG9w
ZXJhKSByZXR1cm47IC8vIE9wZXJhIGlzIGRpZmZpY3VsdC4KLSAgICBpZiAocG9zRXEoc2VsLmZy
b20sIHNlbC50bykgfHwgcG9zTGVzcyhwb3MsIHNlbC5mcm9tKSB8fCAhcG9zTGVzcyhwb3MsIHNl
bC50bykpCisKKyAgICAvLyBSZXNldCB0aGUgY3VycmVudCB0ZXh0IHNlbGVjdGlvbiBvbmx5IGlm
IHRoZSBjbGljayBpcyBkb25lIG91dHNpZGUgb2YgdGhlIHNlbGVjdGlvbgorICAgIC8vIGFuZCAn
cmVzZXRTZWxlY3Rpb25PbkNvbnRleHRNZW51JyBvcHRpb24gaXMgdHJ1ZS4KKyAgICB2YXIgcmVz
ZXQgPSBjbS5vcHRpb25zLnJlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudTsKKyAgICBpZiAocmVz
ZXQgJiYgKHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pIHx8IHBvc0xlc3MocG9zLCBzZWwuZnJvbSkg
fHwgIXBvc0xlc3MocG9zLCBzZWwudG8pKSkKICAgICAgIG9wZXJhdGlvbihjbSwgc2V0U2VsZWN0
aW9uKShjbS5kb2MsIHBvcywgcG9zKTsKIAogICAgIHZhciBvbGRDU1MgPSBkaXNwbGF5LmlucHV0
LnN0eWxlLmNzc1RleHQ7CkBAIC0yMzI2LDYgKzIzNDMsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgfQogCiAgIGZ1bmN0aW9uIG1ha2VDaGFuZ2VOb1JlYWRvbmx5KGRv
YywgY2hhbmdlLCBzZWxVcGRhdGUpIHsKKyAgICBpZiAoY2hhbmdlLnRleHQubGVuZ3RoID09IDEg
JiYgY2hhbmdlLnRleHRbMF0gPT0gIiIgJiYgcG9zRXEoY2hhbmdlLmZyb20sIGNoYW5nZS50bykp
IHJldHVybjsKICAgICB2YXIgc2VsQWZ0ZXIgPSBjb21wdXRlU2VsQWZ0ZXJDaGFuZ2UoZG9jLCBj
aGFuZ2UsIHNlbFVwZGF0ZSk7CiAgICAgYWRkVG9IaXN0b3J5KGRvYywgY2hhbmdlLCBzZWxBZnRl
ciwgZG9jLmNtID8gZG9jLmNtLmN1ck9wLmlkIDogTmFOKTsKIApAQCAtMjYyNiw3ICsyNjQ0LDcg
QEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIC8vIFNDUk9MTElORwogCiAg
IGZ1bmN0aW9uIHNjcm9sbEN1cnNvckludG9WaWV3KGNtKSB7Ci0gICAgdmFyIGNvb3JkcyA9IHNj
cm9sbFBvc0ludG9WaWV3KGNtLCBjbS5kb2Muc2VsLmhlYWQsIGNtLm9wdGlvbnMuY3Vyc29yU2Ny
b2xsTWFyZ2luKTsKKyAgICB2YXIgY29vcmRzID0gc2Nyb2xsUG9zSW50b1ZpZXcoY20sIGNtLmRv
Yy5zZWwuaGVhZCwgbnVsbCwgY20ub3B0aW9ucy5jdXJzb3JTY3JvbGxNYXJnaW4pOwogICAgIGlm
ICghY20uc3RhdGUuZm9jdXNlZCkgcmV0dXJuOwogICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxh
eSwgYm94ID0gZ2V0UmVjdChkaXNwbGF5LnNpemVyKSwgZG9TY3JvbGwgPSBudWxsOwogICAgIGlm
IChjb29yZHMudG9wICsgYm94LnRvcCA8IDApIGRvU2Nyb2xsID0gdHJ1ZTsKQEAgLTI2NDMsMTEg
KzI2NjEsMTUgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgfQogICB9
CiAKLSAgZnVuY3Rpb24gc2Nyb2xsUG9zSW50b1ZpZXcoY20sIHBvcywgbWFyZ2luKSB7CisgIGZ1
bmN0aW9uIHNjcm9sbFBvc0ludG9WaWV3KGNtLCBwb3MsIGVuZCwgbWFyZ2luKSB7CiAgICAgaWYg
KG1hcmdpbiA9PSBudWxsKSBtYXJnaW4gPSAwOwogICAgIGZvciAoOzspIHsKICAgICAgIHZhciBj
aGFuZ2VkID0gZmFsc2UsIGNvb3JkcyA9IGN1cnNvckNvb3JkcyhjbSwgcG9zKTsKLSAgICAgIHZh
ciBzY3JvbGxQb3MgPSBjYWxjdWxhdGVTY3JvbGxQb3MoY20sIGNvb3Jkcy5sZWZ0LCBjb29yZHMu
dG9wIC0gbWFyZ2luLCBjb29yZHMubGVmdCwgY29vcmRzLmJvdHRvbSArIG1hcmdpbik7CisgICAg
ICB2YXIgZW5kQ29vcmRzID0gIWVuZCB8fCBlbmQgPT0gcG9zID8gY29vcmRzIDogY3Vyc29yQ29v
cmRzKGNtLCBlbmQpOworICAgICAgdmFyIHNjcm9sbFBvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyhj
bSwgTWF0aC5taW4oY29vcmRzLmxlZnQsIGVuZENvb3Jkcy5sZWZ0KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5taW4oY29vcmRzLnRvcCwgZW5kQ29vcmRz
LnRvcCkgLSBtYXJnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE1hdGgubWF4KGNvb3Jkcy5sZWZ0LCBlbmRDb29yZHMubGVmdCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KGNvb3Jkcy5ib3R0b20sIGVuZENvb3Jk
cy5ib3R0b20pICsgbWFyZ2luKTsKICAgICAgIHZhciBzdGFydFRvcCA9IGNtLmRvYy5zY3JvbGxU
b3AsIHN0YXJ0TGVmdCA9IGNtLmRvYy5zY3JvbGxMZWZ0OwogICAgICAgaWYgKHNjcm9sbFBvcy5z
Y3JvbGxUb3AgIT0gbnVsbCkgewogICAgICAgICBzZXRTY3JvbGxUb3AoY20sIHNjcm9sbFBvcy5z
Y3JvbGxUb3ApOwpAQCAtMjc0NCw2ICsyNzY2LDggQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAKICAgICBpZiAoaW5kZW50U3RyaW5nICE9IGN1clNwYWNlU3RyaW5nKQogICAg
ICAgcmVwbGFjZVJhbmdlKGNtLmRvYywgaW5kZW50U3RyaW5nLCBQb3MobiwgMCksIFBvcyhuLCBj
dXJTcGFjZVN0cmluZy5sZW5ndGgpLCAiK2lucHV0Iik7CisgICAgZWxzZSBpZiAoZG9jLnNlbC5o
ZWFkLmxpbmUgPT0gbiAmJiBkb2Muc2VsLmhlYWQuY2ggPCBjdXJTcGFjZVN0cmluZy5sZW5ndGgp
CisgICAgICBzZXRTZWxlY3Rpb24oZG9jLCBQb3MobiwgY3VyU3BhY2VTdHJpbmcubGVuZ3RoKSwg
UG9zKG4sIGN1clNwYWNlU3RyaW5nLmxlbmd0aCksIDEpOwogICAgIGxpbmUuc3RhdGVBZnRlciA9
IG51bGw7CiAgIH0KIApAQCAtMjg0NCw3ICsyODY4LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAo
ZnVuY3Rpb24oKSB7CiAKICAgQ29kZU1pcnJvci5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0
b3I6IENvZGVNaXJyb3IsCi0gICAgZm9jdXM6IGZ1bmN0aW9uKCl7d2luZG93LmZvY3VzKCk7IGZv
Y3VzSW5wdXQodGhpcyk7IG9uRm9jdXModGhpcyk7IGZhc3RQb2xsKHRoaXMpO30sCisgICAgZm9j
dXM6IGZ1bmN0aW9uKCl7d2luZG93LmZvY3VzKCk7IGZvY3VzSW5wdXQodGhpcyk7IGZhc3RQb2xs
KHRoaXMpO30sCiAKICAgICBzZXRPcHRpb246IGZ1bmN0aW9uKG9wdGlvbiwgdmFsdWUpIHsKICAg
ICAgIHZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zLCBvbGQgPSBvcHRpb25zW29wdGlvbl07CkBA
IC0zMTY1LDE3ICszMTg5LDIzIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewog
ICAgICAgICAgICAgICBjbGllbnRIZWlnaHQ6IHNjcm9sbGVyLmNsaWVudEhlaWdodCAtIGNvLCBj
bGllbnRXaWR0aDogc2Nyb2xsZXIuY2xpZW50V2lkdGggLSBjb307CiAgICAgfSwKIAotICAgIHNj
cm9sbEludG9WaWV3OiBvcGVyYXRpb24obnVsbCwgZnVuY3Rpb24ocG9zLCBtYXJnaW4pIHsKLSAg
ICAgIGlmICh0eXBlb2YgcG9zID09ICJudW1iZXIiKSBwb3MgPSBQb3MocG9zLCAwKTsKKyAgICBz
Y3JvbGxJbnRvVmlldzogb3BlcmF0aW9uKG51bGwsIGZ1bmN0aW9uKHJhbmdlLCBtYXJnaW4pIHsK
KyAgICAgIGlmIChyYW5nZSA9PSBudWxsKSByYW5nZSA9IHtmcm9tOiB0aGlzLmRvYy5zZWwuaGVh
ZCwgdG86IG51bGx9OworICAgICAgZWxzZSBpZiAodHlwZW9mIHJhbmdlID09ICJudW1iZXIiKSBy
YW5nZSA9IHtmcm9tOiBQb3MocmFuZ2UsIDApLCB0bzogbnVsbH07CisgICAgICBlbHNlIGlmIChy
YW5nZS5mcm9tID09IG51bGwpIHJhbmdlID0ge2Zyb206IHJhbmdlLCB0bzogbnVsbH07CisgICAg
ICBpZiAoIXJhbmdlLnRvKSByYW5nZS50byA9IHJhbmdlLmZyb207CiAgICAgICBpZiAoIW1hcmdp
bikgbWFyZ2luID0gMDsKLSAgICAgIHZhciBjb29yZHMgPSBwb3M7CiAKLSAgICAgIGlmICghcG9z
IHx8IHBvcy5saW5lICE9IG51bGwpIHsKLSAgICAgICAgdGhpcy5jdXJPcC5zY3JvbGxUb1BvcyA9
IHBvcyA/IGNsaXBQb3ModGhpcy5kb2MsIHBvcykgOiB0aGlzLmRvYy5zZWwuaGVhZDsKLSAgICAg
ICAgdGhpcy5jdXJPcC5zY3JvbGxUb1Bvc01hcmdpbiA9IG1hcmdpbjsKLSAgICAgICAgY29vcmRz
ID0gY3Vyc29yQ29vcmRzKHRoaXMsIHRoaXMuY3VyT3Auc2Nyb2xsVG9Qb3MpOworICAgICAgdmFy
IGNvb3JkcyA9IHJhbmdlOworICAgICAgaWYgKHJhbmdlLmZyb20ubGluZSAhPSBudWxsKSB7Cisg
ICAgICAgIHRoaXMuY3VyT3Auc2Nyb2xsVG9Qb3MgPSB7ZnJvbTogcmFuZ2UuZnJvbSwgdG86IHJh
bmdlLnRvLCBtYXJnaW46IG1hcmdpbn07CisgICAgICAgIGNvb3JkcyA9IHtmcm9tOiBjdXJzb3JD
b29yZHModGhpcywgcmFuZ2UuZnJvbSksCisgICAgICAgICAgICAgICAgICB0bzogY3Vyc29yQ29v
cmRzKHRoaXMsIHJhbmdlLnRvKX07CiAgICAgICB9Ci0gICAgICB2YXIgc1BvcyA9IGNhbGN1bGF0
ZVNjcm9sbFBvcyh0aGlzLCBjb29yZHMubGVmdCwgY29vcmRzLnRvcCAtIG1hcmdpbiwgY29vcmRz
LnJpZ2h0LCBjb29yZHMuYm90dG9tICsgbWFyZ2luKTsKKyAgICAgIHZhciBzUG9zID0gY2FsY3Vs
YXRlU2Nyb2xsUG9zKHRoaXMsIE1hdGgubWluKGNvb3Jkcy5mcm9tLmxlZnQsIGNvb3Jkcy50by5s
ZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWluKGNvb3Jk
cy5mcm9tLnRvcCwgY29vcmRzLnRvLnRvcCkgLSBtYXJnaW4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNYXRoLm1heChjb29yZHMuZnJvbS5yaWdodCwgY29vcmRzLnRvLnJp
Z2h0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KGNvb3Jk
cy5mcm9tLmJvdHRvbSwgY29vcmRzLnRvLmJvdHRvbSkgKyBtYXJnaW4pOwogICAgICAgdXBkYXRl
U2Nyb2xsUG9zKHRoaXMsIHNQb3Muc2Nyb2xsTGVmdCwgc1Bvcy5zY3JvbGxUb3ApOwogICAgIH0p
LAogCkBAIC0zMjA3LDYgKzMyMzcsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigp
IHsKICAgICAgIGNsZWFyQ2FjaGVzKHRoaXMpOwogICAgICAgcmVzZXRJbnB1dCh0aGlzLCB0cnVl
KTsKICAgICAgIHVwZGF0ZVNjcm9sbFBvcyh0aGlzLCBkb2Muc2Nyb2xsTGVmdCwgZG9jLnNjcm9s
bFRvcCk7CisgICAgICBzaWduYWxMYXRlcih0aGlzLCAic3dhcERvYyIsIHRoaXMsIG9sZCk7CiAg
ICAgICByZXR1cm4gb2xkOwogICAgIH0pLAogCkBAIC0zMjUwLDggKzMyODEsMTQgQEAgd2luZG93
LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgY2xlYXJDYWNoZXMoY20pOwogICAgIHJl
Z0NoYW5nZShjbSk7CiAgIH0sIHRydWUpOworICBvcHRpb24oInNwZWNpYWxDaGFycyIsIC9bXHRc
dTAwMDAtXHUwMDE5XHUwMGFkXHUyMDBiXHUyMDI4XHUyMDI5XHVmZWZmXS9nLCBmdW5jdGlvbihj
bSwgdmFsKSB7CisgICAgY20ub3B0aW9ucy5zcGVjaWFsQ2hhcnMgPSBuZXcgUmVnRXhwKHZhbC5z
b3VyY2UgKyAodmFsLnRlc3QoIlx0IikgPyAiIiA6ICJ8XHQiKSwgImciKTsKKyAgICBjbS5yZWZy
ZXNoKCk7CisgIH0sIHRydWUpOworICBvcHRpb24oInNwZWNpYWxDaGFyUGxhY2Vob2xkZXIiLCBk
ZWZhdWx0U3BlY2lhbENoYXJQbGFjZWhvbGRlciwgZnVuY3Rpb24oY20pIHtjbS5yZWZyZXNoKCk7
fSwgdHJ1ZSk7CiAgIG9wdGlvbigiZWxlY3RyaWNDaGFycyIsIHRydWUpOwogICBvcHRpb24oInJ0
bE1vdmVWaXN1YWxseSIsICF3aW5kb3dzKTsKKyAgb3B0aW9uKCJ3aG9sZUxpbmVVcGRhdGVCZWZv
cmUiLCB0cnVlKTsKIAogICBvcHRpb24oInRoZW1lIiwgImRlZmF1bHQiLCBmdW5jdGlvbihjbSkg
ewogICAgIHRoZW1lQ2hhbmdlZChjbSk7CkBAIC0zMjgxLDkgKzMzMTgsMTcgQEAgd2luZG93LkNv
ZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIG9wdGlvbigibGluZU51bWJlckZvcm1hdHRlciIs
IGZ1bmN0aW9uKGludGVnZXIpIHtyZXR1cm4gaW50ZWdlcjt9LCBndXR0ZXJzQ2hhbmdlZCwgdHJ1
ZSk7CiAgIG9wdGlvbigic2hvd0N1cnNvcldoZW5TZWxlY3RpbmciLCBmYWxzZSwgdXBkYXRlU2Vs
ZWN0aW9uLCB0cnVlKTsKIAorICBvcHRpb24oInJlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudSIs
IHRydWUpOworCiAgIG9wdGlvbigicmVhZE9ubHkiLCBmYWxzZSwgZnVuY3Rpb24oY20sIHZhbCkg
ewotICAgIGlmICh2YWwgPT0gIm5vY3Vyc29yIikge29uQmx1cihjbSk7IGNtLmRpc3BsYXkuaW5w
dXQuYmx1cigpO30KLSAgICBlbHNlIGlmICghdmFsKSByZXNldElucHV0KGNtLCB0cnVlKTsKKyAg
ICBpZiAodmFsID09ICJub2N1cnNvciIpIHsKKyAgICAgIG9uQmx1cihjbSk7CisgICAgICBjbS5k
aXNwbGF5LmlucHV0LmJsdXIoKTsKKyAgICAgIGNtLmRpc3BsYXkuZGlzYWJsZWQgPSB0cnVlOwor
ICAgIH0gZWxzZSB7CisgICAgICBjbS5kaXNwbGF5LmRpc2FibGVkID0gZmFsc2U7CisgICAgICBp
ZiAoIXZhbCkgcmVzZXRJbnB1dChjbSwgdHJ1ZSk7CisgICAgfQogICB9KTsKICAgb3B0aW9uKCJk
cmFnRHJvcCIsIHRydWUpOwogCkBAIC0zNTE3LDcgKzM1NjIsOCBAQCB3aW5kb3cuQ29kZU1pcnJv
ciA9IChmdW5jdGlvbigpIHsKICAga2V5TWFwLmJhc2ljID0gewogICAgICJMZWZ0IjogImdvQ2hh
ckxlZnQiLCAiUmlnaHQiOiAiZ29DaGFyUmlnaHQiLCAiVXAiOiAiZ29MaW5lVXAiLCAiRG93biI6
ICJnb0xpbmVEb3duIiwKICAgICAiRW5kIjogImdvTGluZUVuZCIsICJIb21lIjogImdvTGluZVN0
YXJ0U21hcnQiLCAiUGFnZVVwIjogImdvUGFnZVVwIiwgIlBhZ2VEb3duIjogImdvUGFnZURvd24i
LAotICAgICJEZWxldGUiOiAiZGVsQ2hhckFmdGVyIiwgIkJhY2tzcGFjZSI6ICJkZWxDaGFyQmVm
b3JlIiwgIlRhYiI6ICJkZWZhdWx0VGFiIiwgIlNoaWZ0LVRhYiI6ICJpbmRlbnRBdXRvIiwKKyAg
ICAiRGVsZXRlIjogImRlbENoYXJBZnRlciIsICJCYWNrc3BhY2UiOiAiZGVsQ2hhckJlZm9yZSIs
ICJTaGlmdC1CYWNrc3BhY2UiOiAiZGVsQ2hhckJlZm9yZSIsCisgICAgIlRhYiI6ICJkZWZhdWx0
VGFiIiwgIlNoaWZ0LVRhYiI6ICJpbmRlbnRBdXRvIiwKICAgICAiRW50ZXIiOiAibmV3bGluZUFu
ZEluZGVudCIsICJJbnNlcnQiOiAidG9nZ2xlT3ZlcndyaXRlIgogICB9OwogICAvLyBOb3RlIHRo
YXQgdGhlIHNhdmUgYW5kIGZpbmQtcmVsYXRlZCBjb21tYW5kcyBhcmVuJ3QgZGVmaW5lZCBieQpA
QCAtMzgyMyw3ICszODY5LDkgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAg
ICAgaWYgKGRvYy5jbSAmJiAhZG9jLmNtLmN1ck9wKSByZXR1cm4gb3BlcmF0aW9uKGRvYy5jbSwg
bWFya1RleHQpKGRvYywgZnJvbSwgdG8sIG9wdGlvbnMsIHR5cGUpOwogCiAgICAgdmFyIG1hcmtl
ciA9IG5ldyBUZXh0TWFya2VyKGRvYywgdHlwZSk7Ci0gICAgaWYgKHR5cGUgPT0gInJhbmdlIiAm
JiAhcG9zTGVzcyhmcm9tLCB0bykpIHJldHVybiBtYXJrZXI7CisgICAgaWYgKHBvc0xlc3ModG8s
IGZyb20pIHx8IHBvc0VxKGZyb20sIHRvKSAmJiB0eXBlID09ICJyYW5nZSIgJiYKKyAgICAgICAg
IShvcHRpb25zLmluY2x1c2l2ZUxlZnQgJiYgb3B0aW9ucy5pbmNsdXNpdmVSaWdodCkpCisgICAg
ICByZXR1cm4gbWFya2VyOwogICAgIGlmIChvcHRpb25zKSBjb3B5T2JqKG9wdGlvbnMsIG1hcmtl
cik7CiAgICAgaWYgKG1hcmtlci5yZXBsYWNlZFdpdGgpIHsKICAgICAgIG1hcmtlci5jb2xsYXBz
ZWQgPSB0cnVlOwpAQCAtMzkzOSw3ICszOTg3LDkgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAgICAgaWYgKG9sZCkgZm9yICh2YXIgaSA9IDAsIG53OyBpIDwgb2xkLmxlbmd0
aDsgKytpKSB7CiAgICAgICB2YXIgc3BhbiA9IG9sZFtpXSwgbWFya2VyID0gc3Bhbi5tYXJrZXI7
CiAgICAgICB2YXIgc3RhcnRzQmVmb3JlID0gc3Bhbi5mcm9tID09IG51bGwgfHwgKG1hcmtlci5p
bmNsdXNpdmVMZWZ0ID8gc3Bhbi5mcm9tIDw9IHN0YXJ0Q2ggOiBzcGFuLmZyb20gPCBzdGFydENo
KTsKLSAgICAgIGlmIChzdGFydHNCZWZvcmUgfHwgbWFya2VyLnR5cGUgPT0gImJvb2ttYXJrIiAm
JiBzcGFuLmZyb20gPT0gc3RhcnRDaCAmJiAoIWlzSW5zZXJ0IHx8ICFzcGFuLm1hcmtlci5pbnNl
cnRMZWZ0KSkgeworICAgICAgaWYgKHN0YXJ0c0JlZm9yZSB8fAorICAgICAgICAgIChtYXJrZXIu
aW5jbHVzaXZlTGVmdCAmJiBtYXJrZXIuaW5jbHVzaXZlUmlnaHQgfHwgbWFya2VyLnR5cGUgPT0g
ImJvb2ttYXJrIikgJiYKKyAgICAgICAgICBzcGFuLmZyb20gPT0gc3RhcnRDaCAmJiAoIWlzSW5z
ZXJ0IHx8ICFzcGFuLm1hcmtlci5pbnNlcnRMZWZ0KSkgewogICAgICAgICB2YXIgZW5kc0FmdGVy
ID0gc3Bhbi50byA9PSBudWxsIHx8IChtYXJrZXIuaW5jbHVzaXZlUmlnaHQgPyBzcGFuLnRvID49
IHN0YXJ0Q2ggOiBzcGFuLnRvID4gc3RhcnRDaCk7CiAgICAgICAgIChudyB8fCAobncgPSBbXSkp
LnB1c2goe2Zyb206IHNwYW4uZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG86IGVuZHNBZnRlciA/IG51bGwgOiBzcGFuLnRvLApAQCAtNDIxMiw2ICs0MjYyLDcgQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgdGhpcy5oZWlnaHQgPSBlc3RpbWF0
ZUhlaWdodCA/IGVzdGltYXRlSGVpZ2h0KHRoaXMpIDogMTsKICAgfTsKICAgZXZlbnRNaXhpbihM
aW5lKTsKKyAgTGluZS5wcm90b3R5cGUubGluZU5vID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5l
Tm8odGhpcyk7IH07CiAKICAgZnVuY3Rpb24gdXBkYXRlTGluZShsaW5lLCB0ZXh0LCBtYXJrZWRT
cGFucywgZXN0aW1hdGVIZWlnaHQpIHsKICAgICBsaW5lLnRleHQgPSB0ZXh0OwpAQCAtNDIzMiw3
ICs0MjgzLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIC8vIFJ1biB0
aGUgZ2l2ZW4gbW9kZSdzIHBhcnNlciBvdmVyIGEgbGluZSwgdXBkYXRlIHRoZSBzdHlsZXMKICAg
Ly8gYXJyYXksIHdoaWNoIGNvbnRhaW5zIGFsdGVybmF0aW5nIGZyYWdtZW50cyBvZiB0ZXh0IGFu
ZCBDU1MKICAgLy8gY2xhc3Nlcy4KLSAgZnVuY3Rpb24gcnVuTW9kZShjbSwgdGV4dCwgbW9kZSwg
c3RhdGUsIGYpIHsKKyAgZnVuY3Rpb24gcnVuTW9kZShjbSwgdGV4dCwgbW9kZSwgc3RhdGUsIGYs
IGZvcmNlVG9FbmQpIHsKICAgICB2YXIgZmxhdHRlblNwYW5zID0gbW9kZS5mbGF0dGVuU3BhbnM7
CiAgICAgaWYgKGZsYXR0ZW5TcGFucyA9PSBudWxsKSBmbGF0dGVuU3BhbnMgPSBjbS5vcHRpb25z
LmZsYXR0ZW5TcGFuczsKICAgICB2YXIgY3VyU3RhcnQgPSAwLCBjdXJTdHlsZSA9IG51bGw7CkBA
IC00MjQxLDYgKzQyOTIsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAg
ICB3aGlsZSAoIXN0cmVhbS5lb2woKSkgewogICAgICAgaWYgKHN0cmVhbS5wb3MgPiBjbS5vcHRp
b25zLm1heEhpZ2hsaWdodExlbmd0aCkgewogICAgICAgICBmbGF0dGVuU3BhbnMgPSBmYWxzZTsK
KyAgICAgICAgaWYgKGZvcmNlVG9FbmQpIHByb2Nlc3NMaW5lKGNtLCB0ZXh0LCBzdGF0ZSwgc3Ry
ZWFtLnBvcyk7CiAgICAgICAgIHN0cmVhbS5wb3MgPSB0ZXh0Lmxlbmd0aDsKICAgICAgICAgc3R5
bGUgPSBudWxsOwogICAgICAgfSBlbHNlIHsKQEAgLTQyNjAsMTIgKzQzMTIsMTQgQEAgd2luZG93
LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgfQogICB9CiAKLSAgZnVuY3Rpb24gaGln
aGxpZ2h0TGluZShjbSwgbGluZSwgc3RhdGUpIHsKKyAgZnVuY3Rpb24gaGlnaGxpZ2h0TGluZShj
bSwgbGluZSwgc3RhdGUsIGZvcmNlVG9FbmQpIHsKICAgICAvLyBBIHN0eWxlcyBhcnJheSBhbHdh
eXMgc3RhcnRzIHdpdGggYSBudW1iZXIgaWRlbnRpZnlpbmcgdGhlCiAgICAgLy8gbW9kZS9vdmVy
bGF5cyB0aGF0IGl0IGlzIGJhc2VkIG9uIChmb3IgZWFzeSBpbnZhbGlkYXRpb24pLgogICAgIHZh
ciBzdCA9IFtjbS5zdGF0ZS5tb2RlR2VuXTsKICAgICAvLyBDb21wdXRlIHRoZSBiYXNlIGFycmF5
IG9mIHN0eWxlcwotICAgIHJ1bk1vZGUoY20sIGxpbmUudGV4dCwgY20uZG9jLm1vZGUsIHN0YXRl
LCBmdW5jdGlvbihlbmQsIHN0eWxlKSB7c3QucHVzaChlbmQsIHN0eWxlKTt9KTsKKyAgICBydW5N
b2RlKGNtLCBsaW5lLnRleHQsIGNtLmRvYy5tb2RlLCBzdGF0ZSwgZnVuY3Rpb24oZW5kLCBzdHls
ZSkgeworICAgICAgc3QucHVzaChlbmQsIHN0eWxlKTsKKyAgICB9LCBmb3JjZVRvRW5kKTsKIAog
ICAgIC8vIFJ1biBvdmVybGF5cywgYWRqdXN0IHN0eWxlIGFycmF5LgogICAgIGZvciAodmFyIG8g
PSAwOyBvIDwgY20uc3RhdGUub3ZlcmxheXMubGVuZ3RoOyArK28pIHsKQEAgLTQzMDQsMTAgKzQz
NTgsMTEgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAKICAgLy8gTGlnaHR3
ZWlnaHQgZm9ybSBvZiBoaWdobGlnaHQgLS0gcHJvY2VlZCBvdmVyIHRoaXMgbGluZSBhbmQKICAg
Ly8gdXBkYXRlIHN0YXRlLCBidXQgZG9uJ3Qgc2F2ZSBhIHN0eWxlIGFycmF5LgotICBmdW5jdGlv
biBwcm9jZXNzTGluZShjbSwgbGluZSwgc3RhdGUpIHsKKyAgZnVuY3Rpb24gcHJvY2Vzc0xpbmUo
Y20sIHRleHQsIHN0YXRlLCBzdGFydEF0KSB7CiAgICAgdmFyIG1vZGUgPSBjbS5kb2MubW9kZTsK
LSAgICB2YXIgc3RyZWFtID0gbmV3IFN0cmluZ1N0cmVhbShsaW5lLnRleHQsIGNtLm9wdGlvbnMu
dGFiU2l6ZSk7Ci0gICAgaWYgKGxpbmUudGV4dCA9PSAiIiAmJiBtb2RlLmJsYW5rTGluZSkgbW9k
ZS5ibGFua0xpbmUoc3RhdGUpOworICAgIHZhciBzdHJlYW0gPSBuZXcgU3RyaW5nU3RyZWFtKHRl
eHQsIGNtLm9wdGlvbnMudGFiU2l6ZSk7CisgICAgc3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBvcyA9
IHN0YXJ0QXQgfHwgMDsKKyAgICBpZiAodGV4dCA9PSAiIiAmJiBtb2RlLmJsYW5rTGluZSkgbW9k
ZS5ibGFua0xpbmUoc3RhdGUpOwogICAgIHdoaWxlICghc3RyZWFtLmVvbCgpICYmIHN0cmVhbS5w
b3MgPD0gY20ub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGgpIHsKICAgICAgIG1vZGUudG9rZW4o
c3RyZWFtLCBzdGF0ZSk7CiAgICAgICBzdHJlYW0uc3RhcnQgPSBzdHJlYW0ucG9zOwpAQCAtNDM2
NCw3ICs0NDE5LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgLy8g
V29yayBhcm91bmQgcHJvYmxlbSB3aXRoIHRoZSByZXBvcnRlZCBkaW1lbnNpb25zIG9mIHNpbmds
ZS1jaGFyCiAgICAgLy8gZGlyZWN0aW9uIHNwYW5zIG9uIElFIChpc3N1ZSAjMTEyOSkuIFNlZSBh
bHNvIHRoZSBjb21tZW50IGluCiAgICAgLy8gY3Vyc29yQ29vcmRzLgotICAgIGlmIChtZWFzdXJl
ICYmIGllICYmIChvcmRlciA9IGdldE9yZGVyKGxpbmUpKSkgeworICAgIGlmIChtZWFzdXJlICYm
IChpZSB8fCBpZV9ndDEwKSAmJiAob3JkZXIgPSBnZXRPcmRlcihsaW5lKSkpIHsKICAgICAgIHZh
ciBsID0gb3JkZXIubGVuZ3RoIC0gMTsKICAgICAgIGlmIChvcmRlcltsXS5mcm9tID09IG9yZGVy
W2xdLnRvKSAtLWw7CiAgICAgICB2YXIgbGFzdCA9IG9yZGVyW2xdLCBwcmV2ID0gb3JkZXJbbCAt
IDFdOwpAQCAtNDM4MiwxNyArNDQzNywyMyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlv
bigpIHsKICAgICByZXR1cm4gYnVpbGRlcjsKICAgfQogCi0gIHZhciB0b2tlblNwZWNpYWxDaGFy
cyA9IC9bXHRcdTAwMDAtXHUwMDE5XHUwMGFkXHUyMDBiXHUyMDI4XHUyMDI5XHVGRUZGXS9nOwor
ICBmdW5jdGlvbiBkZWZhdWx0U3BlY2lhbENoYXJQbGFjZWhvbGRlcihjaCkgeworICAgIHZhciB0
b2tlbiA9IGVsdCgic3BhbiIsICJcdTIwMjIiLCAiY20taW52YWxpZGNoYXIiKTsKKyAgICB0b2tl
bi50aXRsZSA9ICJcXHUiICsgY2guY2hhckNvZGVBdCgwKS50b1N0cmluZygxNik7CisgICAgcmV0
dXJuIHRva2VuOworICB9CisKICAgZnVuY3Rpb24gYnVpbGRUb2tlbihidWlsZGVyLCB0ZXh0LCBz
dHlsZSwgc3RhcnRTdHlsZSwgZW5kU3R5bGUsIHRpdGxlKSB7CiAgICAgaWYgKCF0ZXh0KSByZXR1
cm47Ci0gICAgaWYgKCF0b2tlblNwZWNpYWxDaGFycy50ZXN0KHRleHQpKSB7CisgICAgdmFyIHNw
ZWNpYWwgPSBidWlsZGVyLmNtLm9wdGlvbnMuc3BlY2lhbENoYXJzOworICAgIGlmICghc3BlY2lh
bC50ZXN0KHRleHQpKSB7CiAgICAgICBidWlsZGVyLmNvbCArPSB0ZXh0Lmxlbmd0aDsKICAgICAg
IHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CiAgICAgfSBlbHNl
IHsKICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
LCBwb3MgPSAwOwogICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgdG9rZW5TcGVjaWFsQ2hh
cnMubGFzdEluZGV4ID0gcG9zOwotICAgICAgICB2YXIgbSA9IHRva2VuU3BlY2lhbENoYXJzLmV4
ZWModGV4dCk7CisgICAgICAgIHNwZWNpYWwubGFzdEluZGV4ID0gcG9zOworICAgICAgICB2YXIg
bSA9IHNwZWNpYWwuZXhlYyh0ZXh0KTsKICAgICAgICAgdmFyIHNraXBwZWQgPSBtID8gbS5pbmRl
eCAtIHBvcyA6IHRleHQubGVuZ3RoIC0gcG9zOwogICAgICAgICBpZiAoc2tpcHBlZCkgewogICAg
ICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dC5z
bGljZShwb3MsIHBvcyArIHNraXBwZWQpKSk7CkBAIC00NDA1LDggKzQ0NjYsNyBAQCB3aW5kb3cu
Q29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxk
KGVsdCgic3BhbiIsIHNwYWNlU3RyKHRhYldpZHRoKSwgImNtLXRhYiIpKTsKICAgICAgICAgICBi
dWlsZGVyLmNvbCArPSB0YWJXaWR0aDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB2YXIg
dG9rZW4gPSBlbHQoInNwYW4iLCAiXHUyMDIyIiwgImNtLWludmFsaWRjaGFyIik7Ci0gICAgICAg
ICAgdG9rZW4udGl0bGUgPSAiXFx1IiArIG1bMF0uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNik7
CisgICAgICAgICAgdmFyIHRva2VuID0gYnVpbGRlci5jbS5vcHRpb25zLnNwZWNpYWxDaGFyUGxh
Y2Vob2xkZXIobVswXSk7CiAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0b2tlbik7CiAg
ICAgICAgICAgYnVpbGRlci5jb2wgKz0gMTsKICAgICAgICAgfQpAQCAtNDQ1Nyw3ICs0NTE3LDcg
QEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICByZXR1cm4gb3V0Owog
ICAgIH0KICAgICByZXR1cm4gZnVuY3Rpb24oYnVpbGRlciwgdGV4dCwgc3R5bGUsIHN0YXJ0U3R5
bGUsIGVuZFN0eWxlLCB0aXRsZSkgewotICAgICAgcmV0dXJuIGlubmVyKGJ1aWxkZXIsIHRleHQu
cmVwbGFjZSgvIHszLH0vLCBzcGxpdCksIHN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgdGl0
bGUpOworICAgICAgcmV0dXJuIGlubmVyKGJ1aWxkZXIsIHRleHQucmVwbGFjZSgvIHszLH0vZywg
c3BsaXQpLCBzdHlsZSwgc3RhcnRTdHlsZSwgZW5kU3R5bGUsIHRpdGxlKTsKICAgICB9OwogICB9
CiAKQEAgLTQ1NTksNyArNDYxOSw4IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICAgIHZhciBsYXN0VGV4dCA9IGxzdCh0ZXh0KSwgbGFzdFNwYW5zID0gc3BhbnNGb3IodGV4
dC5sZW5ndGggLSAxKSwgbmxpbmVzID0gdG8ubGluZSAtIGZyb20ubGluZTsKIAogICAgIC8vIEZp
cnN0IGFkanVzdCB0aGUgbGluZSBzdHJ1Y3R1cmUKLSAgICBpZiAoZnJvbS5jaCA9PSAwICYmIHRv
LmNoID09IDAgJiYgbGFzdFRleHQgPT0gIiIpIHsKKyAgICBpZiAoZnJvbS5jaCA9PSAwICYmIHRv
LmNoID09IDAgJiYgbGFzdFRleHQgPT0gIiIgJiYKKyAgICAgICAgKCFkb2MuY20gfHwgZG9jLmNt
Lm9wdGlvbnMud2hvbGVMaW5lVXBkYXRlQmVmb3JlKSkgewogICAgICAgLy8gVGhpcyBpcyBhIHdo
b2xlLWxpbmUgcmVwbGFjZS4gVHJlYXRlZCBzcGVjaWFsbHkgdG8gbWFrZQogICAgICAgLy8gc3Vy
ZSBsaW5lIG9iamVjdHMgbW92ZSB0aGUgd2F5IHRoZXkgYXJlIHN1cHBvc2VkIHRvLgogICAgICAg
Zm9yICh2YXIgaSA9IDAsIGUgPSB0ZXh0Lmxlbmd0aCAtIDEsIGFkZGVkID0gW107IGkgPCBlOyAr
K2kpCkBAIC01NDQ2LDcgKzU1MDcsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigp
IHsKICAgICByZXR1cm4gdHJ1ZTsKICAgfQogCi0gIHZhciBpc0V4dGVuZGluZ0NoYXIgPSAvW1x1
MDMwMC1cdTAzNkZcdTA0ODMtXHUwNDg3XHUwNDg4LVx1MDQ4OVx1MDU5MS1cdTA1QkRcdTA1QkZc
dTA1QzEtXHUwNUMyXHUwNUM0LVx1MDVDNVx1MDVDN1x1MDYxMC1cdTA2MUFcdTA2NEItXHUwNjVG
XHUwNjcwXHUwNkQ2LVx1MDZEQ1x1MDZERi1cdTA2RTRcdTA2RTctXHUwNkU4XHUwNkVBLVx1MDZF
RFx1QTY2Rlx1QTY3MC1cdUE2NzJcdUE2NzQtXHVBNjdEXHVBNjlGXHVkYzAwLVx1ZGZmZl0vOwor
ICB2YXIgaXNFeHRlbmRpbmdDaGFyID0gL1tcdTAzMDAtXHUwMzZGXHUwNDgzLVx1MDQ4N1x1MDQ4
OC1cdTA0ODlcdTA1OTEtXHUwNUJEXHUwNUJGXHUwNUMxLVx1MDVDMlx1MDVDNC1cdTA1QzVcdTA1
QzdcdTA2MTAtXHUwNjFBXHUwNjRCLVx1MDY1Rlx1MDY3MFx1MDZENi1cdTA2RENcdTA2REYtXHUw
NkU0XHUwNkU3LVx1MDZFOFx1MDZFQS1cdTA2RURcdUE2NkZcdTFEQzDigJNcdTFERkZcdTIwRDDi
gJNcdTIwRkZcdUE2NzAtXHVBNjcyXHVBNjc0LVx1QTY3RFx1QTY5Rlx1ZGMwMC1cdWRmZmZcdUZF
MjDigJNcdUZFMkZdLzsKIAogICAvLyBET00gVVRJTElUSUVTCiAKQEAgLTU1MDYsOCArNTU2Nyw3
IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIH07CiAgIGVsc2UgaWYg
KHNhZmFyaSAmJiAhL1ZlcnNpb25cLyhbNi05XXxcZFxkKVxiLy50ZXN0KG5hdmlnYXRvci51c2Vy
QWdlbnQpKQogICAgIHNwYW5BZmZlY3RzV3JhcHBpbmcgPSBmdW5jdGlvbihzdHIsIGkpIHsKLSAg
ICAgIHZhciByZXN1bHQgPSAvXC1bXiBcLT9dfFw/W14gIVwnXCJcKSwuXC1cLzo7XD9cXVx9XS8u
dGVzdChzdHIuc2xpY2UoaSAtIDEsIGkgKyAxKSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgcmV0dXJuIC9cLVteIFwtP118XD9bXiAhXCdcIlwpLC5cLVwvOjtcP1xdXH1dLy50ZXN0KHN0
ci5zbGljZShpIC0gMSwgaSArIDEpKTsKICAgICB9OwogICBlbHNlIGlmICh3ZWJraXQgJiYgL0No
cm9tZVwvKD86Mjl8WzMtOV1cZHxcZFxkXGQpXC4vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkp
CiAgICAgc3BhbkFmZmVjdHNXcmFwcGluZyA9IGZ1bmN0aW9uKHN0ciwgaSkgewpAQCAtNTUyMCw4
ICs1NTgwLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgIGlm
ICgvXHcvLnRlc3Qoc3RyLmNoYXJBdChpIC0gMikpICYmIC9bXlwtP1wuXS8udGVzdChzdHIuY2hh
ckF0KGkpKSkgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChpID4gMiAmJiAvW1xkXC4sXS8udGVz
dChzdHIuY2hhckF0KGkgLSAyKSkgJiYgL1tcZFwuLF0vLnRlc3Qoc3RyLmNoYXJBdChpKSkpIHJl
dHVybiBmYWxzZTsKICAgICAgIH0KLSAgICAgIHZhciByZXN1bHQgPSAvW34hIyUmKik9K31cXXxc
IlwuPiw6O11bKHtbPF18LVteXC0/XC5cdTIwMTAtXHUyMDFmXHUyMDI2XXxcP1tcd35gQCMkJVxe
JiooXz0re1t8PjxdfOKApltcd35gQCMkJVxeJiooXz0re1s+PF0vLnRlc3Qoc3RyLnNsaWNlKGkg
LSAxLCBpICsgMSkpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIHJldHVybiAvW34hIyUm
Kik9K31cXVxcfFwiXC4+LDo7XVsoe1s8XXwtW15cLT9cLlx1MjAxMC1cdTIwMWZcdTIwMjZdfFw/
W1x3fmBAIyQlXF4mKihfPSt7W3w+PF184oCmW1x3fmBAIyQlXF4mKihfPSt7Wz48XS8udGVzdChz
dHIuc2xpY2UoaSAtIDEsIGkgKyAxKSk7CiAgICAgfTsKIAogICB2YXIga25vd25TY3JvbGxiYXJX
aWR0aDsKQEAgLTU4NzcsNyArNTkzNiw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9u
KCkgewogCiAgIC8vIFRIRSBFTkQKIAotICBDb2RlTWlycm9yLnZlcnNpb24gPSAiMy4xNi4xIjsK
KyAgQ29kZU1pcnJvci52ZXJzaW9uID0gIjMuMjAuMCI7CiAKICAgcmV0dXJuIENvZGVNaXJyb3I7
CiB9KSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVBy
aW50aW5nL2Nzcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGlu
Zy9jc3MuanMKaW5kZXggMDg1YjExOWRlNGRmYzgyZjVmNzQzY2E1MmEyZjgwNDU5MGNhNWY0MS4u
ZDhjMzBjZjMzZDZmZTFiNWI0NTJmMzllNmZhYTBhYWU5YTM2MWFmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2Nzcy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY3NzLmpzCkBAIC0zLDcgKzMs
NyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2Vy
Q29uZmlnKSB7CiAKICAgaWYgKCFwYXJzZXJDb25maWcucHJvcGVydHlLZXl3b3JkcykgcGFyc2Vy
Q29uZmlnID0gQ29kZU1pcnJvci5yZXNvbHZlTW9kZSgidGV4dC9jc3MiKTsKIAotICB2YXIgaW5k
ZW50VW5pdCA9IGNvbmZpZy5pbmRlbnRVbml0LAorICB2YXIgaW5kZW50VW5pdCA9IGNvbmZpZy5p
bmRlbnRVbml0IHx8IGNvbmZpZy50YWJTaXplIHx8IDIsCiAgICAgICBob29rcyA9IHBhcnNlckNv
bmZpZy5ob29rcyB8fCB7fSwKICAgICAgIGF0TWVkaWFUeXBlcyA9IHBhcnNlckNvbmZpZy5hdE1l
ZGlhVHlwZXMgfHwge30sCiAgICAgICBhdE1lZGlhRmVhdHVyZXMgPSBwYXJzZXJDb25maWcuYXRN
ZWRpYUZlYXR1cmVzIHx8IHt9LApAQCAtMzcsNyArMzcsNyBAQCBDb2RlTWlycm9yLmRlZmluZU1v
ZGUoImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICBzdHJlYW0u
bWF0Y2goL15ccypcdyovKTsKICAgICAgIHJldHVybiByZXQoImtleXdvcmQiLCAiaW1wb3J0YW50
Iik7CiAgICAgfQotICAgIGVsc2UgaWYgKC9cZC8udGVzdChjaCkpIHsKKyAgICBlbHNlIGlmICgv
XGQvLnRlc3QoY2gpIHx8IGNoID09ICIuIiAmJiBzdHJlYW0uZWF0KC9cZC8pKSB7CiAgICAgICBz
dHJlYW0uZWF0V2hpbGUoL1tcdy4lXS8pOwogICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgInVu
aXQiKTsKICAgICB9CkBAIC0yNTksOCArMjU5LDEzIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgi
Y3NzIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgIH0KICAgICAgIGVs
c2UgaWYgKHR5cGUgPT0gIn0iKSB7CiAgICAgICAgIGlmIChjb250ZXh0ID09ICJpbnRlcnBvbGF0
aW9uIikgc3R5bGUgPSAib3BlcmF0b3IiOwotICAgICAgICBzdGF0ZS5zdGFjay5wb3AoKTsKLSAg
ICAgICAgaWYgKGNvbnRleHQgPT0gInByb3BlcnR5VmFsdWUiKSBzdGF0ZS5zdGFjay5wb3AoKTsK
KyAgICAgICAgLy8gUG9wIG9mZiBlbmQgb2YgYXJyYXkgdW50aWwgeyBpcyByZWFjaGVkCisgICAg
ICAgIHdoaWxlKHN0YXRlLnN0YWNrLmxlbmd0aCl7CisgICAgICAgICAgdmFyIHJlbW92ZWQgPSBz
dGF0ZS5zdGFjay5wb3AoKTsKKyAgICAgICAgICBpZihyZW1vdmVkLmluZGV4T2YoInsiKSA+IC0x
IHx8IHJlbW92ZWQgPT0gImJsb2NrIiB8fCByZW1vdmVkID09ICJydWxlIil7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgIH0KICAgICAgIGVsc2UgaWYg
KHR5cGUgPT0gImludGVycG9sYXRpb24iKSBzdGF0ZS5zdGFjay5wdXNoKCJpbnRlcnBvbGF0aW9u
Iik7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJAbWVkaWEiKSBzdGF0ZS5zdGFjay5wdXNoKCJA
bWVkaWEiKTsKQEAgLTI3OCwxMSArMjgzLDEzIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiY3Nz
IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgICAgZWxzZSBzdGF0ZS5z
dGFjay5wdXNoKCIoIik7CiAgICAgICB9CiAgICAgICBlbHNlIGlmICh0eXBlID09ICIpIikgewot
ICAgICAgICBpZiAoY29udGV4dCA9PSAicHJvcGVydHlWYWx1ZSIpIHsKLSAgICAgICAgICAvLyBJ
biBAbWVkaWFUeXBlKCB3aXRob3V0IGNsb3NpbmcgOyBhZnRlciBwcm9wZXJ0eVZhbHVlCi0gICAg
ICAgICAgc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICAgIC8vIFBvcCBvZmYgZW5kIG9mIGFycmF5
IHVudGlsICggaXMgcmVhY2hlZAorICAgICAgICB3aGlsZShzdGF0ZS5zdGFjay5sZW5ndGgpewor
ICAgICAgICAgIHZhciByZW1vdmVkID0gc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICAgICAgaWYo
cmVtb3ZlZC5pbmRleE9mKCIoIikgPiAtMSl7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7CiAgICAgICB9CiAgICAg
ICBlbHNlIGlmICh0eXBlID09ICI6IiAmJiBzdGF0ZS5sYXN0VG9rZW4gPT0gInByb3BlcnR5Iikg
c3RhdGUuc3RhY2sucHVzaCgicHJvcGVydHlWYWx1ZSIpOwogICAgICAgZWxzZSBpZiAoY29udGV4
dCA9PSAicHJvcGVydHlWYWx1ZSIgJiYgdHlwZSA9PSAiOyIpIHN0YXRlLnN0YWNrLnBvcCgpOwpA
QCAtNjAyLDYgKzYwOSwxMSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9u
KGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFsidmFy
aWFibGUiLCAidmFyaWFibGUiXTsKICAgICAgIH0sCisgICAgICAiLCI6IGZ1bmN0aW9uKHN0cmVh
bSwgc3RhdGUpIHsKKyAgICAgICAgaWYgKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aCAt
IDFdID09ICJwcm9wZXJ0eVZhbHVlIiAmJiBzdHJlYW0ubWF0Y2goL14gKlwkLywgZmFsc2UpKSB7
CisgICAgICAgICAgcmV0dXJuIFsib3BlcmF0b3IiLCAiOyJdOworICAgICAgICB9CisgICAgICB9
LAogICAgICAgIi8iOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CiAgICAgICAgIGlmIChzdHJl
YW0uZWF0KCIvIikpIHsKICAgICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9qYXZhc2NyaXB0
LmpzCmluZGV4IGU4YWNlMzJkODk2YWMxYzA4M2Q1YWIzMTVmMTg0NzkwOTY4M2IyNjYuLmYyN2Mw
NjM0NmM2M2VlOTExODA0OGYyNTIyNjU5N2NmMWE0YjI2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9qYXZhc2NyaXB0LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9qYXZhc2NyaXB0LmpzCkBA
IC0yMSw3ICsyMSw4IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0
aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAiZm9yIjoga3coImZvciIpLCAic3dp
dGNoIjoga3coInN3aXRjaCIpLCAiY2FzZSI6IGt3KCJjYXNlIiksICJkZWZhdWx0Ijoga3coImRl
ZmF1bHQiKSwKICAgICAgICJpbiI6IG9wZXJhdG9yLCAidHlwZW9mIjogb3BlcmF0b3IsICJpbnN0
YW5jZW9mIjogb3BlcmF0b3IsCiAgICAgICAidHJ1ZSI6IGF0b20sICJmYWxzZSI6IGF0b20sICJu
dWxsIjogYXRvbSwgInVuZGVmaW5lZCI6IGF0b20sICJOYU4iOiBhdG9tLCAiSW5maW5pdHkiOiBh
dG9tLAotICAgICAgInRoaXMiOiBrdygidGhpcyIpCisgICAgICAidGhpcyI6IGt3KCJ0aGlzIiks
ICJtb2R1bGUiOiBrdygibW9kdWxlIiksICJjbGFzcyI6IGt3KCJjbGFzcyIpLCAic3VwZXIiOiBr
dygiYXRvbSIpLAorICAgICAgInlpZWxkIjogQywgImV4cG9ydCI6IGt3KCJleHBvcnQiKSwgImlt
cG9ydCI6IGt3KCJpbXBvcnQiKSwgImV4dGVuZHMiOiBDCiAgICAgfTsKIAogICAgIC8vIEV4dGVu
ZCB0aGUgJ25vcm1hbCcga2V5d29yZHMgd2l0aCB0aGUgVHlwZVNjcmlwdCBsYW5ndWFnZSBleHRl
bnNpb25zCkBAIC0zMCw3ICszMSw2IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlw
dCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICB2YXIgdHNLZXl3b3Jk
cyA9IHsKICAgICAgICAgLy8gb2JqZWN0LWxpa2UgdGhpbmdzCiAgICAgICAgICJpbnRlcmZhY2Ui
OiBrdygiaW50ZXJmYWNlIiksCi0gICAgICAgICJjbGFzcyI6IGt3KCJjbGFzcyIpLAogICAgICAg
ICAiZXh0ZW5kcyI6IGt3KCJleHRlbmRzIiksCiAgICAgICAgICJjb25zdHJ1Y3RvciI6IGt3KCJj
b25zdHJ1Y3RvciIpLAogCkBAIC00MCw4ICs0MCw2IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgi
amF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAgICJw
cm90ZWN0ZWQiOiBrdygicHJvdGVjdGVkIiksCiAgICAgICAgICJzdGF0aWMiOiBrdygic3RhdGlj
IiksCiAKLSAgICAgICAgInN1cGVyIjoga3coInN1cGVyIiksCi0KICAgICAgICAgLy8gdHlwZXMK
ICAgICAgICAgInN0cmluZyI6IHR5cGUsICJudW1iZXIiOiB0eXBlLCAiYm9vbCI6IHR5cGUsICJh
bnkiOiB0eXBlCiAgICAgICB9OwpAQCAtNTYsMTEgKzU0LDYgQEAgQ29kZU1pcnJvci5kZWZpbmVN
b2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKIAogICB2
YXIgaXNPcGVyYXRvckNoYXIgPSAvWytcLSomJT08PiE/fH5eXS87CiAKLSAgZnVuY3Rpb24gY2hh
aW4oc3RyZWFtLCBzdGF0ZSwgZikgewotICAgIHN0YXRlLnRva2VuaXplID0gZjsKLSAgICByZXR1
cm4gZihzdHJlYW0sIHN0YXRlKTsKLSAgfQotCiAgIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBl
ZChzdHJlYW0sIGVuZCkgewogICAgIHZhciBlc2NhcGVkID0gZmFsc2UsIG5leHQ7CiAgICAgd2hp
bGUgKChuZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgewpAQCAtNzgsNTAgKzcxLDUxIEBA
IENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFy
c2VyQ29uZmlnKSB7CiAgICAgdHlwZSA9IHRwOyBjb250ZW50ID0gY29udDsKICAgICByZXR1cm4g
c3R5bGU7CiAgIH0KLSAgZnVuY3Rpb24ganNUb2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgeworICBm
dW5jdGlvbiB0b2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgewogICAgIHZhciBjaCA9IHN0cmVhbS5u
ZXh0KCk7Ci0gICAgaWYgKGNoID09ICciJyB8fCBjaCA9PSAiJyIpCi0gICAgICByZXR1cm4gY2hh
aW4oc3RyZWFtLCBzdGF0ZSwganNUb2tlblN0cmluZyhjaCkpOwotICAgIGVsc2UgaWYgKGNoID09
ICIuIiAmJiBzdHJlYW0ubWF0Y2goL15cZCsoPzpbZUVdWytcLV0/XGQrKT8vKSkKKyAgICBpZiAo
Y2ggPT0gJyInIHx8IGNoID09ICInIikgeworICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlblN0
cmluZyhjaCk7CisgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7Cisg
ICAgfSBlbHNlIGlmIChjaCA9PSAiLiIgJiYgc3RyZWFtLm1hdGNoKC9eXGQrKD86W2VFXVsrXC1d
P1xkKyk/LykpIHsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJudW1iZXIiKTsKLSAgICBl
bHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGNoKSkKKyAgICB9IGVsc2UgaWYgKGNo
ID09ICIuIiAmJiBzdHJlYW0ubWF0Y2goIi4uIikpIHsKKyAgICAgIHJldHVybiByZXQoInNwcmVh
ZCIsICJtZXRhIik7CisgICAgfSBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGNo
KSkgewogICAgICAgcmV0dXJuIHJldChjaCk7Ci0gICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIHN0
cmVhbS5lYXQoL3gvaSkpIHsKKyAgICB9IGVsc2UgaWYgKGNoID09ICI9IiAmJiBzdHJlYW0uZWF0
KCI+IikpIHsKKyAgICAgIHJldHVybiByZXQoIj0+Iik7CisgICAgfSBlbHNlIGlmIChjaCA9PSAi
MCIgJiYgc3RyZWFtLmVhdCgveC9pKSkgewogICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXGRhLWZd
L2kpOwogICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgIm51bWJlciIpOwotICAgIH0KLSAgICBl
bHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CisgICAgfSBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7
CiAgICAgICBzdHJlYW0ubWF0Y2goL15cZCooPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/Lyk7
CiAgICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAibnVtYmVyIik7Ci0gICAgfQotICAgIGVsc2Ug
aWYgKGNoID09ICIvIikgeworICAgIH0gZWxzZSBpZiAoY2ggPT0gIi8iKSB7CiAgICAgICBpZiAo
c3RyZWFtLmVhdCgiKiIpKSB7Ci0gICAgICAgIHJldHVybiBjaGFpbihzdHJlYW0sIHN0YXRlLCBq
c1Rva2VuQ29tbWVudCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChzdHJlYW0uZWF0KCIvIikp
IHsKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkNvbW1lbnQ7CisgICAgICAgIHJldHVy
biB0b2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSk7CisgICAgICB9IGVsc2UgaWYgKHN0cmVhbS5l
YXQoIi8iKSkgewogICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7CiAgICAgICAgIHJldHVybiBy
ZXQoImNvbW1lbnQiLCAiY29tbWVudCIpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoc3RhdGUu
bGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5sYXN0VHlwZSA9PSAia2V5d29yZCBjIiB8
fAotICAgICAgICAgICAgICAgL15bXFt7fVwoLDs6XSQvLnRlc3Qoc3RhdGUubGFzdFR5cGUpKSB7
CisgICAgICB9IGVsc2UgaWYgKHN0YXRlLmxhc3RUeXBlID09ICJvcGVyYXRvciIgfHwgc3RhdGUu
bGFzdFR5cGUgPT0gImtleXdvcmQgYyIgfHwKKyAgICAgICAgICAgICAgIHN0YXRlLmxhc3RUeXBl
ID09ICJzb2YiIHx8IC9eW1xbe31cKCw7Ol0kLy50ZXN0KHN0YXRlLmxhc3RUeXBlKSkgewogICAg
ICAgICBuZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCAiLyIpOwogICAgICAgICBzdHJlYW0uZWF0
V2hpbGUoL1tnaW15XS8pOyAvLyAneScgaXMgInN0aWNreSIgb3B0aW9uIGluIE1vemlsbGEKICAg
ICAgICAgcmV0dXJuIHJldCgicmVnZXhwIiwgInN0cmluZy0yIik7Ci0gICAgICB9Ci0gICAgICBl
bHNlIHsKKyAgICAgIH0gZWxzZSB7CiAgICAgICAgIHN0cmVhbS5lYXRXaGlsZShpc09wZXJhdG9y
Q2hhcik7CiAgICAgICAgIHJldHVybiByZXQoIm9wZXJhdG9yIiwgbnVsbCwgc3RyZWFtLmN1cnJl
bnQoKSk7CiAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGNoID09ICIjIikgeworICAgIH0g
ZWxzZSBpZiAoY2ggPT0gImAiKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuUXVhc2k7
CisgICAgICByZXR1cm4gdG9rZW5RdWFzaShzdHJlYW0sIHN0YXRlKTsKKyAgICB9IGVsc2UgaWYg
KGNoID09ICIjIikgewogICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOwogICAgICAgcmV0dXJuIHJl
dCgiZXJyb3IiLCAiZXJyb3IiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoaXNPcGVyYXRvckNoYXIu
dGVzdChjaCkpIHsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmF0b3JDaGFyLnRlc3QoY2gpKSB7CiAg
ICAgICBzdHJlYW0uZWF0V2hpbGUoaXNPcGVyYXRvckNoYXIpOwogICAgICAgcmV0dXJuIHJldCgi
b3BlcmF0b3IiLCBudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKLSAgICB9Ci0gICAgZWxzZSB7Cisg
ICAgfSBlbHNlIHsKICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XCRfXS8pOwogICAgICAgdmFy
IHdvcmQgPSBzdHJlYW0uY3VycmVudCgpLCBrbm93biA9IGtleXdvcmRzLnByb3BlcnR5SXNFbnVt
ZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICAgcmV0dXJuIChrbm93biAmJiBz
dGF0ZS5sYXN0VHlwZSAhPSAiLiIpID8gcmV0KGtub3duLnR5cGUsIGtub3duLnN0eWxlLCB3b3Jk
KSA6CkBAIC0xMjksMTkgKzEyMywxOSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3Jp
cHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIH0KICAgfQogCi0gIGZ1
bmN0aW9uIGpzVG9rZW5TdHJpbmcocXVvdGUpIHsKKyAgZnVuY3Rpb24gdG9rZW5TdHJpbmcocXVv
dGUpIHsKICAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgewogICAgICAgaWYgKCFu
ZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCBxdW90ZSkpCi0gICAgICAgIHN0YXRlLnRva2VuaXpl
ID0ganNUb2tlbkJhc2U7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOwogICAg
ICAgcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIpOwogICAgIH07CiAgIH0KIAotICBmdW5j
dGlvbiBqc1Rva2VuQ29tbWVudChzdHJlYW0sIHN0YXRlKSB7CisgIGZ1bmN0aW9uIHRva2VuQ29t
bWVudChzdHJlYW0sIHN0YXRlKSB7CiAgICAgdmFyIG1heWJlRW5kID0gZmFsc2UsIGNoOwogICAg
IHdoaWxlIChjaCA9IHN0cmVhbS5uZXh0KCkpIHsKICAgICAgIGlmIChjaCA9PSAiLyIgJiYgbWF5
YmVFbmQpIHsKLSAgICAgICAgc3RhdGUudG9rZW5pemUgPSBqc1Rva2VuQmFzZTsKKyAgICAgICAg
c3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAg
ICAgbWF5YmVFbmQgPSAoY2ggPT0gIioiKTsKQEAgLTE0OSw2ICsxNDMsNTAgQEAgQ29kZU1pcnJv
ci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcp
IHsKICAgICByZXR1cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQiKTsKICAgfQogCisgIGZ1bmN0
aW9uIHRva2VuUXVhc2koc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBlc2NhcGVkID0gZmFsc2Us
IG5leHQ7CisgICAgd2hpbGUgKChuZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgeworICAg
ICAgaWYgKCFlc2NhcGVkICYmIChuZXh0ID09ICJgIiB8fCBuZXh0ID09ICIkIiAmJiBzdHJlYW0u
ZWF0KCJ7IikpKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOworICAgICAg
ICBicmVhazsKKyAgICAgIH0KKyAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBuZXh0ID09ICJc
XCI7CisgICAgfQorICAgIHJldHVybiByZXQoInF1YXNpIiwgInN0cmluZy0yIiwgc3RyZWFtLmN1
cnJlbnQoKSk7CisgIH0KKworICB2YXIgYnJhY2tldHMgPSAiKFt7fV0pIjsKKyAgLy8gVGhpcyBp
cyBhIGNydWRlIGxvb2thaGVhZCB0cmljayB0byB0cnkgYW5kIG5vdGljZSB0aGF0IHdlJ3JlCisg
IC8vIHBhcnNpbmcgdGhlIGFyZ3VtZW50IHBhdHRlcm5zIGZvciBhIGZhdC1hcnJvdyBmdW5jdGlv
biBiZWZvcmUgd2UKKyAgLy8gYWN0dWFsbHkgaGl0IHRoZSBhcnJvdyB0b2tlbi4gSXQgb25seSB3
b3JrcyBpZiB0aGUgYXJyb3cgaXMgb24KKyAgLy8gdGhlIHNhbWUgbGluZSBhcyB0aGUgYXJndW1l
bnRzIGFuZCB0aGVyZSdzIG5vIHN0cmFuZ2Ugbm9pc2UKKyAgLy8gKGNvbW1lbnRzKSBpbiBiZXR3
ZWVuLiBGYWxsYmFjayBpcyB0byBvbmx5IG5vdGljZSB3aGVuIHdlIGhpdCB0aGUKKyAgLy8gYXJy
b3csIGFuZCBub3QgZGVjbGFyZSB0aGUgYXJndW1lbnRzIGFzIGxvY2FscyBmb3IgdGhlIGFycm93
CisgIC8vIGJvZHkuCisgIGZ1bmN0aW9uIGZpbmRGYXRBcnJvdyhzdHJlYW0sIHN0YXRlKSB7Cisg
ICAgaWYgKHN0YXRlLmZhdEFycm93QXQpIHN0YXRlLmZhdEFycm93QXQgPSBudWxsOworICAgIHZh
ciBhcnJvdyA9IHN0cmVhbS5zdHJpbmcuaW5kZXhPZigiPT4iLCBzdHJlYW0uc3RhcnQpOworICAg
IGlmIChhcnJvdyA8IDApIHJldHVybjsKKworICAgIHZhciBkZXB0aCA9IDAsIHNhd1NvbWV0aGlu
ZyA9IGZhbHNlOworICAgIGZvciAodmFyIHBvcyA9IGFycm93IC0gMTsgcG9zID49IDA7IC0tcG9z
KSB7CisgICAgICB2YXIgY2ggPSBzdHJlYW0uc3RyaW5nLmNoYXJBdChwb3MpOworICAgICAgdmFy
IGJyYWNrZXQgPSBicmFja2V0cy5pbmRleE9mKGNoKTsKKyAgICAgIGlmIChicmFja2V0ID49IDAg
JiYgYnJhY2tldCA8IDMpIHsKKyAgICAgICAgaWYgKCFkZXB0aCkgeyArK3BvczsgYnJlYWs7IH0K
KyAgICAgICAgaWYgKC0tZGVwdGggPT0gMCkgYnJlYWs7CisgICAgICB9IGVsc2UgaWYgKGJyYWNr
ZXQgPj0gMyAmJiBicmFja2V0IDwgNikgeworICAgICAgICArK2RlcHRoOworICAgICAgfSBlbHNl
IGlmICgvWyRcd10vLnRlc3QoY2gpKSB7CisgICAgICAgIHNhd1NvbWV0aGluZyA9IHRydWU7Cisg
ICAgICB9IGVsc2UgaWYgKHNhd1NvbWV0aGluZyAmJiAhZGVwdGgpIHsKKyAgICAgICAgKytwb3M7
CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZiAoc2F3U29tZXRoaW5nICYm
ICFkZXB0aCkgc3RhdGUuZmF0QXJyb3dBdCA9IHBvczsKKyAgfQorCiAgIC8vIFBhcnNlcgogCiAg
IHZhciBhdG9taWNUeXBlcyA9IHsiYXRvbSI6IHRydWUsICJudW1iZXIiOiB0cnVlLCAidmFyaWFi
bGUiOiB0cnVlLCAic3RyaW5nIjogdHJ1ZSwgInJlZ2V4cCI6IHRydWUsICJ0aGlzIjogdHJ1ZX07
CkBAIC0xNjUsNiArMjAzLDEwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIs
IGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgIGZ1bmN0aW9uIGluU2NvcGUoc3Rh
dGUsIHZhcm5hbWUpIHsKICAgICBmb3IgKHZhciB2ID0gc3RhdGUubG9jYWxWYXJzOyB2OyB2ID0g
di5uZXh0KQogICAgICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1cm4gdHJ1ZTsKKyAgICBm
b3IgKHZhciBjeCA9IHN0YXRlLmNvbnRleHQ7IGN4OyBjeCA9IGN4LnByZXYpIHsKKyAgICAgIGZv
ciAodmFyIHYgPSBjeC52YXJzOyB2OyB2ID0gdi5uZXh0KQorICAgICAgICBpZiAodi5uYW1lID09
IHZhcm5hbWUpIHJldHVybiB0cnVlOworICAgIH0KICAgfQogCiAgIGZ1bmN0aW9uIHBhcnNlSlMo
c3RhdGUsIHN0eWxlLCB0eXBlLCBjb250ZW50LCBzdHJlYW0pIHsKQEAgLTIxMSw3ICsyNTMsOCBA
QCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBh
cnNlckNvbmZpZykgewogICAgICAgc3RhdGUubG9jYWxWYXJzID0ge25hbWU6IHZhcm5hbWUsIG5l
eHQ6IHN0YXRlLmxvY2FsVmFyc307CiAgICAgfSBlbHNlIHsKICAgICAgIGlmIChpbkxpc3Qoc3Rh
dGUuZ2xvYmFsVmFycykpIHJldHVybjsKLSAgICAgIHN0YXRlLmdsb2JhbFZhcnMgPSB7bmFtZTog
dmFybmFtZSwgbmV4dDogc3RhdGUuZ2xvYmFsVmFyc307CisgICAgICBpZiAocGFyc2VyQ29uZmln
Lmdsb2JhbFZhcnMpCisgICAgICAgIHN0YXRlLmdsb2JhbFZhcnMgPSB7bmFtZTogdmFybmFtZSwg
bmV4dDogc3RhdGUuZ2xvYmFsVmFyc307CiAgICAgfQogICB9CiAKQEAgLTI1MywxNiArMjk2LDE1
IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywg
cGFyc2VyQ29uZmlnKSB7CiAgICAgfTsKICAgfQogCi0gIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBl
KSB7Ci0gICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVybiBjb250KHB1c2hsZXgoInZhcmRlZiIp
LCB2YXJkZWYxLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKKyAgZnVuY3Rpb24gc3RhdGVtZW50KHR5
cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVybiBjb250KHB1c2hsZXgo
InZhcmRlZiIsIHZhbHVlLmxlbmd0aCksIHZhcmRlZiwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAg
ICAgaWYgKHR5cGUgPT0gImtleXdvcmQgYSIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwg
ZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgIGlmICh0eXBlID09ICJrZXl3b3Jk
IGIiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHN0YXRlbWVudCwgcG9wbGV4KTsKICAg
ICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250KHB1c2hsZXgoIn0iKSwgYmxvY2ssIHBvcGxl
eCk7CiAgICAgaWYgKHR5cGUgPT0gIjsiKSByZXR1cm4gY29udCgpOwogICAgIGlmICh0eXBlID09
ICJpZiIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50
LCBwb3BsZXgsIG1heWJlZWxzZSk7CiAgICAgaWYgKHR5cGUgPT0gImZ1bmN0aW9uIikgcmV0dXJu
IGNvbnQoZnVuY3Rpb25kZWYpOwotICAgIGlmICh0eXBlID09ICJmb3IiKSByZXR1cm4gY29udChw
dXNobGV4KCJmb3JtIiksIGV4cGVjdCgiKCIpLCBwdXNobGV4KCIpIiksIGZvcnNwZWMxLCBleHBl
Y3QoIikiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wbGV4LCBzdGF0
ZW1lbnQsIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gImZvciIpIHJldHVybiBjb250KHB1c2hs
ZXgoImZvcm0iKSwgZm9yc3BlYywgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgaWYg
KHR5cGUgPT0gInZhcmlhYmxlIikgcmV0dXJuIGNvbnQocHVzaGxleCgic3RhdCIpLCBtYXliZWxh
YmVsKTsKICAgICBpZiAodHlwZSA9PSAic3dpdGNoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiZm9y
bSIpLCBleHByZXNzaW9uLCBwdXNobGV4KCJ9IiwgInN3aXRjaCIpLCBleHBlY3QoInsiKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssIHBvcGxleCwgcG9wbGV4
KTsKQEAgLTI3MCw2ICszMTIsMTAgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0
IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICBpZiAodHlwZSA9PSAiZGVm
YXVsdCIpIHJldHVybiBjb250KGV4cGVjdCgiOiIpKTsKICAgICBpZiAodHlwZSA9PSAiY2F0Y2gi
KSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHB1c2hjb250ZXh0LCBleHBlY3QoIigiKSwg
ZnVuYXJnLCBleHBlY3QoIikiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0ZW1lbnQsIHBvcGxleCwgcG9wY29udGV4dCk7CisgICAgaWYgKHR5cGUgPT0gIm1vZHVs
ZSIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgcHVzaGNvbnRleHQsIGFmdGVyTW9kdWxl
LCBwb3Bjb250ZXh0LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJjbGFzcyIpIHJldHVybiBj
b250KHB1c2hsZXgoImZvcm0iKSwgY2xhc3NOYW1lLCBvYmpsaXQsIHBvcGxleCk7CisgICAgaWYg
KHR5cGUgPT0gImV4cG9ydCIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgYWZ0ZXJFeHBv
cnQsIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gImltcG9ydCIpIHJldHVybiBjb250KHB1c2hs
ZXgoImZvcm0iKSwgYWZ0ZXJJbXBvcnQsIHBvcGxleCk7CiAgICAgcmV0dXJuIHBhc3MocHVzaGxl
eCgic3RhdCIpLCBleHByZXNzaW9uLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKICAgfQogICBmdW5j
dGlvbiBleHByZXNzaW9uKHR5cGUpIHsKQEAgLTI3OSwxNCArMzI1LDIwIEBAIENvZGVNaXJyb3Iu
ZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7
CiAgICAgcmV0dXJuIGV4cHJlc3Npb25Jbm5lcih0eXBlLCB0cnVlKTsKICAgfQogICBmdW5jdGlv
biBleHByZXNzaW9uSW5uZXIodHlwZSwgbm9Db21tYSkgeworICAgIGlmIChjeC5zdGF0ZS5mYXRB
cnJvd0F0ID09IGN4LnN0cmVhbS5zdGFydCkgeworICAgICAgdmFyIGJvZHkgPSBub0NvbW1hID8g
YXJyb3dCb2R5Tm9Db21tYSA6IGFycm93Qm9keTsKKyAgICAgIGlmICh0eXBlID09ICIoIikgcmV0
dXJuIGNvbnQocHVzaGNvbnRleHQsIGNvbW1hc2VwKHBhdHRlcm4sICIpIiksIGV4cGVjdCgiPT4i
KSwgYm9keSwgcG9wY29udGV4dCk7CisgICAgICBlbHNlIGlmICh0eXBlID09ICJ2YXJpYWJsZSIp
IHJldHVybiBwYXNzKHB1c2hjb250ZXh0LCBwYXR0ZXJuLCBleHBlY3QoIj0+IiksIGJvZHksIHBv
cGNvbnRleHQpOworICAgIH0KKwogICAgIHZhciBtYXliZW9wID0gbm9Db21tYSA/IG1heWJlb3Bl
cmF0b3JOb0NvbW1hIDogbWF5YmVvcGVyYXRvckNvbW1hOwogICAgIGlmIChhdG9taWNUeXBlcy5o
YXNPd25Qcm9wZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQobWF5YmVvcCk7CiAgICAgaWYgKHR5cGUg
PT0gImZ1bmN0aW9uIikgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgIGlmICh0eXBlID09
ICJrZXl3b3JkIGMiKSByZXR1cm4gY29udChub0NvbW1hID8gbWF5YmVleHByZXNzaW9uTm9Db21t
YSA6IG1heWJlZXhwcmVzc2lvbik7Ci0gICAgaWYgKHR5cGUgPT0gIigiKSByZXR1cm4gY29udChw
dXNobGV4KCIpIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0KCIpIiksIHBvcGxleCwgbWF5YmVv
cCk7Ci0gICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgcmV0dXJuIGNvbnQobm9Db21tYSA/IGV4
cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7Ci0gICAgaWYgKHR5cGUgPT0gIlsiKSByZXR1
cm4gY29udChwdXNobGV4KCJdIiksIGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCAiXSIpLCBw
b3BsZXgsIG1heWJlb3ApOwotICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQocHVzaGxl
eCgifSIpLCBjb21tYXNlcChvYmpwcm9wLCAifSIpLCBwb3BsZXgsIG1heWJlb3ApOworICAgIGlm
ICh0eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIpLCBtYXliZWV4cHJlc3Npb24s
IGNvbXByZWhlbnNpb24sIGV4cGVjdCgiKSIpLCBwb3BsZXgsIG1heWJlb3ApOworICAgIGlmICh0
eXBlID09ICJvcGVyYXRvciIgfHwgdHlwZSA9PSAic3ByZWFkIikgcmV0dXJuIGNvbnQobm9Db21t
YSA/IGV4cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7CisgICAgaWYgKHR5cGUgPT0gIlsi
KSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb25Ob0NvbW1hLCBtYXliZUFycmF5
Q29tcHJlaGVuc2lvbiwgcG9wbGV4LCBtYXliZW9wKTsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJl
dHVybiBjb250KGNvbW1hc2VwKG9ianByb3AsICJ9IiksIG1heWJlb3ApOwogICAgIHJldHVybiBj
b250KCk7CiAgIH0KICAgZnVuY3Rpb24gbWF5YmVleHByZXNzaW9uKHR5cGUpIHsKQEAgLTMwNSwx
NiArMzU3LDQwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9u
KGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3JOb0NvbW1h
KHR5cGUsIHZhbHVlLCBub0NvbW1hKSB7CiAgICAgdmFyIG1lID0gbm9Db21tYSA9PSBmYWxzZSA/
IG1heWJlb3BlcmF0b3JDb21tYSA6IG1heWJlb3BlcmF0b3JOb0NvbW1hOwogICAgIHZhciBleHBy
ID0gbm9Db21tYSA9PSBmYWxzZSA/IGV4cHJlc3Npb24gOiBleHByZXNzaW9uTm9Db21tYTsKKyAg
ICBpZiAodmFsdWUgPT0gIj0+IikgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIG5vQ29tbWEgPyBh
cnJvd0JvZHlOb0NvbW1hIDogYXJyb3dCb2R5LCBwb3Bjb250ZXh0KTsKICAgICBpZiAodHlwZSA9
PSAib3BlcmF0b3IiKSB7CiAgICAgICBpZiAoL1wrXCt8LS0vLnRlc3QodmFsdWUpKSByZXR1cm4g
Y29udChtZSk7CiAgICAgICBpZiAodmFsdWUgPT0gIj8iKSByZXR1cm4gY29udChleHByZXNzaW9u
LCBleHBlY3QoIjoiKSwgZXhwcik7CiAgICAgICByZXR1cm4gY29udChleHByKTsKICAgICB9Cisg
ICAgaWYgKHR5cGUgPT0gInF1YXNpIikgeyBjeC5jYy5wdXNoKG1lKTsgcmV0dXJuIHF1YXNpKHZh
bHVlKTsgfQogICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuOwotICAgIGlmICh0eXBlID09ICIo
IikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIsICJjYWxsIiksIGNvbW1hc2VwKGV4cHJlc3Npb25O
b0NvbW1hLCAiKSIpLCBwb3BsZXgsIG1lKTsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBj
b250KGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCAiKSIsICJjYWxsIiksIG1lKTsKICAgICBp
ZiAodHlwZSA9PSAiLiIpIHJldHVybiBjb250KHByb3BlcnR5LCBtZSk7CiAgICAgaWYgKHR5cGUg
PT0gIlsiKSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0
KCJdIiksIHBvcGxleCwgbWUpOwogICB9CisgIGZ1bmN0aW9uIHF1YXNpKHZhbHVlKSB7CisgICAg
aWYgKCF2YWx1ZSkgZGVidWdnZXI7CisgICAgaWYgKHZhbHVlLnNsaWNlKHZhbHVlLmxlbmd0aCAt
IDIpICE9ICIkeyIpIHJldHVybiBjb250KCk7CisgICAgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwg
Y29udGludWVRdWFzaSk7CisgIH0KKyAgZnVuY3Rpb24gY29udGludWVRdWFzaSh0eXBlKSB7Cisg
ICAgaWYgKHR5cGUgPT0gIn0iKSB7CisgICAgICBjeC5tYXJrZWQgPSAic3RyaW5nLTIiOworICAg
ICAgY3guc3RhdGUudG9rZW5pemUgPSB0b2tlblF1YXNpOworICAgICAgcmV0dXJuIGNvbnQoKTsK
KyAgICB9CisgIH0KKyAgZnVuY3Rpb24gYXJyb3dCb2R5KHR5cGUpIHsKKyAgICBmaW5kRmF0QXJy
b3coY3guc3RyZWFtLCBjeC5zdGF0ZSk7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gcGFz
cyhzdGF0ZW1lbnQpOworICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24pOworICB9CisgIGZ1bmN0
aW9uIGFycm93Qm9keU5vQ29tbWEodHlwZSkgeworICAgIGZpbmRGYXRBcnJvdyhjeC5zdHJlYW0s
IGN4LnN0YXRlKTsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBwYXNzKHN0YXRlbWVudCk7
CisgICAgcmV0dXJuIHBhc3MoZXhwcmVzc2lvbk5vQ29tbWEpOworICB9CiAgIGZ1bmN0aW9uIG1h
eWJlbGFiZWwodHlwZSkgewogICAgIGlmICh0eXBlID09ICI6IikgcmV0dXJuIGNvbnQocG9wbGV4
LCBzdGF0ZW1lbnQpOwogICAgIHJldHVybiBwYXNzKG1heWJlb3BlcmF0b3JDb21tYSwgZXhwZWN0
KCI7IiksIHBvcGxleCk7CkBAIC0zMjgsMTYgKzQwNCwyMSBAQCBDb2RlTWlycm9yLmRlZmluZU1v
ZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAg
aWYgKHZhbHVlID09ICJnZXQiIHx8IHZhbHVlID09ICJzZXQiKSByZXR1cm4gY29udChnZXR0ZXJT
ZXR0ZXIpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAibnVtYmVyIiB8fCB0eXBlID09ICJzdHJp
bmciKSB7CiAgICAgICBjeC5tYXJrZWQgPSB0eXBlICsgIiBwcm9wZXJ0eSI7CisgICAgfSBlbHNl
IGlmICh0eXBlID09ICJbIikgeworICAgICAgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0
KCJdIiksIGFmdGVycHJvcCk7CiAgICAgfQotICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9w
ZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQoZXhwZWN0KCI6IiksIGV4cHJlc3Npb25Ob0NvbW1hKTsK
KyAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIHJldHVybiBjb250KGFm
dGVycHJvcCk7CiAgIH0KICAgZnVuY3Rpb24gZ2V0dGVyU2V0dGVyKHR5cGUpIHsKLSAgICBpZiAo
dHlwZSA9PSAiOiIpIHJldHVybiBjb250KGV4cHJlc3Npb24pOwotICAgIGlmICh0eXBlICE9ICJ2
YXJpYWJsZSIpIHJldHVybiBjb250KGV4cGVjdCgiOiIpLCBleHByZXNzaW9uKTsKKyAgICBpZiAo
dHlwZSAhPSAidmFyaWFibGUiKSByZXR1cm4gcGFzcyhhZnRlcnByb3ApOwogICAgIGN4Lm1hcmtl
ZCA9ICJwcm9wZXJ0eSI7CiAgICAgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOwogICB9Ci0gIGZ1
bmN0aW9uIGNvbW1hc2VwKHdoYXQsIGVuZCkgeworICBmdW5jdGlvbiBhZnRlcnByb3AodHlwZSkg
eworICAgIGlmICh0eXBlID09ICI6IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbk5vQ29tbWEpOwor
ICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIHBhc3MoZnVuY3Rpb25kZWYpOworICB9CisgIGZ1
bmN0aW9uIGNvbW1hc2VwKHdoYXQsIGVuZCwgaW5mbykgewogICAgIGZ1bmN0aW9uIHByb2NlZWQo
dHlwZSkgewogICAgICAgaWYgKHR5cGUgPT0gIiwiKSB7CiAgICAgICAgIHZhciBsZXggPSBjeC5z
dGF0ZS5sZXhpY2FsOwpAQCAtMzQ5LDcgKzQzMCw4IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgi
amF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgfQogICAg
IHJldHVybiBmdW5jdGlvbih0eXBlKSB7CiAgICAgICBpZiAodHlwZSA9PSBlbmQpIHJldHVybiBj
b250KCk7Ci0gICAgICBlbHNlIHJldHVybiBwYXNzKHdoYXQsIHByb2NlZWQpOworICAgICAgaWYg
KGluZm8gPT09IGZhbHNlKSByZXR1cm4gcGFzcyh3aGF0LCBwcm9jZWVkKTsKKyAgICAgIHJldHVy
biBwYXNzKHB1c2hsZXgoZW5kLCBpbmZvKSwgd2hhdCwgcHJvY2VlZCwgcG9wbGV4KTsKICAgICB9
OwogICB9CiAgIGZ1bmN0aW9uIGJsb2NrKHR5cGUpIHsKQEAgLTM1Nyw2NyArNDM5LDEyMSBAQCBD
b2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNl
ckNvbmZpZykgewogICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgYmxvY2spOwogICB9CiAgIGZ1
bmN0aW9uIG1heWJldHlwZSh0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0gIjoiKSByZXR1cm4gY29u
dCh0eXBlZGVmKTsKLSAgICByZXR1cm4gcGFzcygpOworICAgIGlmIChpc1RTICYmIHR5cGUgPT0g
IjoiKSByZXR1cm4gY29udCh0eXBlZGVmKTsKICAgfQogICBmdW5jdGlvbiB0eXBlZGVmKHR5cGUp
IHsKICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKXtjeC5tYXJrZWQgPSAidmFyaWFibGUtMyI7
IHJldHVybiBjb250KCk7fQotICAgIHJldHVybiBwYXNzKCk7CiAgIH0KLSAgZnVuY3Rpb24gdmFy
ZGVmMSh0eXBlLCB2YWx1ZSkgewotICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHsKKyAgZnVu
Y3Rpb24gdmFyZGVmKCkgeworICAgIHJldHVybiBwYXNzKHBhdHRlcm4sIG1heWJldHlwZSwgbWF5
YmVBc3NpZ24sIHZhcmRlZkNvbnQpOworICB9CisgIGZ1bmN0aW9uIHBhdHRlcm4odHlwZSwgdmFs
dWUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7IHJlZ2lzdGVyKHZhbHVlKTsgcmV0
dXJuIGNvbnQoKTsgfQorICAgIGlmICh0eXBlID09ICJbIikgcmV0dXJuIGNvbnQoY29tbWFzZXAo
cGF0dGVybiwgIl0iKSk7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gY29udChjb21tYXNl
cChwcm9wcGF0dGVybiwgIn0iKSk7CisgIH0KKyAgZnVuY3Rpb24gcHJvcHBhdHRlcm4odHlwZSwg
dmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiICYmICFjeC5zdHJlYW0ubWF0Y2go
L15ccyo6LywgZmFsc2UpKSB7CiAgICAgICByZWdpc3Rlcih2YWx1ZSk7Ci0gICAgICByZXR1cm4g
aXNUUyA/IGNvbnQobWF5YmV0eXBlLCB2YXJkZWYyKSA6IGNvbnQodmFyZGVmMik7CisgICAgICBy
ZXR1cm4gY29udChtYXliZUFzc2lnbik7CiAgICAgfQotICAgIHJldHVybiBwYXNzKCk7CisgICAg
aWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY3gubWFya2VkID0gInByb3BlcnR5IjsKKyAgICByZXR1
cm4gY29udChleHBlY3QoIjoiKSwgcGF0dGVybiwgbWF5YmVBc3NpZ24pOworICB9CisgIGZ1bmN0
aW9uIG1heWJlQXNzaWduKF90eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9PSAiPSIpIHJl
dHVybiBjb250KGV4cHJlc3Npb25Ob0NvbW1hKTsKICAgfQotICBmdW5jdGlvbiB2YXJkZWYyKHR5
cGUsIHZhbHVlKSB7Ci0gICAgaWYgKHZhbHVlID09ICI9IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lv
bk5vQ29tbWEsIHZhcmRlZjIpOwotICAgIGlmICh0eXBlID09ICIsIikgcmV0dXJuIGNvbnQodmFy
ZGVmMSk7CisgIGZ1bmN0aW9uIHZhcmRlZkNvbnQodHlwZSkgeworICAgIGlmICh0eXBlID09ICIs
IikgcmV0dXJuIGNvbnQodmFyZGVmKTsKICAgfQogICBmdW5jdGlvbiBtYXliZWVsc2UodHlwZSwg
dmFsdWUpIHsKICAgICBpZiAodHlwZSA9PSAia2V5d29yZCBiIiAmJiB2YWx1ZSA9PSAiZWxzZSIp
IHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICB9Cisg
IGZ1bmN0aW9uIGZvcnNwZWModHlwZSkgeworICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIGNv
bnQocHVzaGxleCgiKSIpLCBmb3JzcGVjMSwgZXhwZWN0KCIpIikpOworICB9CiAgIGZ1bmN0aW9u
IGZvcnNwZWMxKHR5cGUpIHsKLSAgICBpZiAodHlwZSA9PSAidmFyIikgcmV0dXJuIGNvbnQodmFy
ZGVmMSwgZXhwZWN0KCI7IiksIGZvcnNwZWMyKTsKKyAgICBpZiAodHlwZSA9PSAidmFyIikgcmV0
dXJuIGNvbnQodmFyZGVmLCBleHBlY3QoIjsiKSwgZm9yc3BlYzIpOwogICAgIGlmICh0eXBlID09
ICI7IikgcmV0dXJuIGNvbnQoZm9yc3BlYzIpOwotICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIp
IHJldHVybiBjb250KGZvcm1heWJlaW4pOworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJl
dHVybiBjb250KGZvcm1heWJlaW5vZik7CiAgICAgcmV0dXJuIHBhc3MoZXhwcmVzc2lvbiwgZXhw
ZWN0KCI7IiksIGZvcnNwZWMyKTsKICAgfQotICBmdW5jdGlvbiBmb3JtYXliZWluKF90eXBlLCB2
YWx1ZSkgewotICAgIGlmICh2YWx1ZSA9PSAiaW4iKSByZXR1cm4gY29udChleHByZXNzaW9uKTsK
KyAgZnVuY3Rpb24gZm9ybWF5YmVpbm9mKF90eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9
PSAiaW4iIHx8IHZhbHVlID09ICJvZiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4g
Y29udChleHByZXNzaW9uKTsgfQogICAgIHJldHVybiBjb250KG1heWJlb3BlcmF0b3JDb21tYSwg
Zm9yc3BlYzIpOwogICB9CiAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKSB7CiAgICAg
aWYgKHR5cGUgPT0gIjsiKSByZXR1cm4gY29udChmb3JzcGVjMyk7Ci0gICAgaWYgKHZhbHVlID09
ICJpbiIpIHJldHVybiBjb250KGV4cHJlc3Npb24pOworICAgIGlmICh2YWx1ZSA9PSAiaW4iIHx8
IHZhbHVlID09ICJvZiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4gY29udChleHBy
ZXNzaW9uKTsgfQogICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBmb3Jz
cGVjMyk7CiAgIH0KICAgZnVuY3Rpb24gZm9yc3BlYzModHlwZSkgewogICAgIGlmICh0eXBlICE9
ICIpIikgY29udChleHByZXNzaW9uKTsKICAgfQogICBmdW5jdGlvbiBmdW5jdGlvbmRlZih0eXBl
LCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9PSAiKiIpIHtjeC5tYXJrZWQgPSAia2V5d29yZCI7
IHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTt9CiAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikg
e3JlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpO30KLSAgICBpZiAodHlw
ZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiKSwgcHVzaGNvbnRleHQsIGNvbW1hc2Vw
KGZ1bmFyZywgIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGNvbnRleHQpOworICAgIGlmICh0
eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIGNvbW1hc2VwKGZ1bmFyZywgIiki
KSwgc3RhdGVtZW50LCBwb3Bjb250ZXh0KTsKKyAgfQorICBmdW5jdGlvbiBmdW5hcmcodHlwZSkg
eworICAgIGlmICh0eXBlID09ICJzcHJlYWQiKSByZXR1cm4gY29udChmdW5hcmcpOworICAgIHJl
dHVybiBwYXNzKHBhdHRlcm4sIG1heWJldHlwZSk7CisgIH0KKyAgZnVuY3Rpb24gY2xhc3NOYW1l
KHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikge3JlZ2lzdGVyKHZh
bHVlKTsgcmV0dXJuIGNvbnQoY2xhc3NOYW1lQWZ0ZXIpO30KKyAgfQorICBmdW5jdGlvbiBjbGFz
c05hbWVBZnRlcihfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gImV4dGVuZHMiKSBy
ZXR1cm4gY29udChleHByZXNzaW9uKTsKKyAgfQorICBmdW5jdGlvbiBvYmpsaXQodHlwZSkgewor
ICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQoY29tbWFzZXAob2JqcHJvcCwgIn0iKSk7
CisgIH0KKyAgZnVuY3Rpb24gYWZ0ZXJNb2R1bGUodHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlw
ZSA9PSAic3RyaW5nIikgcmV0dXJuIGNvbnQoc3RhdGVtZW50KTsKKyAgICBpZiAodHlwZSA9PSAi
dmFyaWFibGUiKSB7IHJlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQobWF5YmVGcm9tKTsgfQor
ICB9CisgIGZ1bmN0aW9uIGFmdGVyRXhwb3J0KF90eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1
ZSA9PSAiKiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4gY29udChtYXliZUZyb20s
IGV4cGVjdCgiOyIpKTsgfQorICAgIGlmICh2YWx1ZSA9PSAiZGVmYXVsdCIpIHsgY3gubWFya2Vk
ID0gImtleXdvcmQiOyByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoIjsiKSk7IH0KKyAg
ICByZXR1cm4gcGFzcyhzdGF0ZW1lbnQpOworICB9CisgIGZ1bmN0aW9uIGFmdGVySW1wb3J0KHR5
cGUpIHsKKyAgICBpZiAodHlwZSA9PSAic3RyaW5nIikgcmV0dXJuIGNvbnQoKTsKKyAgICByZXR1
cm4gcGFzcyhpbXBvcnRTcGVjLCBtYXliZUZyb20pOworICB9CisgIGZ1bmN0aW9uIGltcG9ydFNw
ZWModHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250KGNvbW1h
c2VwKGltcG9ydFNwZWMsICJ9IikpOworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJlZ2lz
dGVyKHZhbHVlKTsKKyAgICByZXR1cm4gY29udCgpOworICB9CisgIGZ1bmN0aW9uIG1heWJlRnJv
bShfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gImZyb20iKSB7IGN4Lm1hcmtlZCA9
ICJrZXl3b3JkIjsgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7IH0KKyAgfQorICBmdW5jdGlvbiBt
YXliZUFycmF5Q29tcHJlaGVuc2lvbih0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gImZvciIpIHJl
dHVybiBwYXNzKGNvbXByZWhlbnNpb24pOworICAgIGlmICh0eXBlID09ICIsIikgcmV0dXJuIGNv
bnQoY29tbWFzZXAoZXhwcmVzc2lvbk5vQ29tbWEsICJdIiwgZmFsc2UpKTsKKyAgICByZXR1cm4g
cGFzcyhjb21tYXNlcChleHByZXNzaW9uTm9Db21tYSwgIl0iLCBmYWxzZSkpOwogICB9Ci0gIGZ1
bmN0aW9uIGZ1bmFyZyh0eXBlLCB2YWx1ZSkgewotICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIp
IHtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBpc1RTID8gY29udChtYXliZXR5cGUpIDogY29udCgp
O30KKyAgZnVuY3Rpb24gY29tcHJlaGVuc2lvbih0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gImZv
ciIpIHJldHVybiBjb250KGZvcnNwZWMsIGNvbXByZWhlbnNpb24pOworICAgIGlmICh0eXBlID09
ICJpZiIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGNvbXByZWhlbnNpb24pOwogICB9CiAKICAg
Ly8gSW50ZXJmYWNlCiAKICAgcmV0dXJuIHsKICAgICBzdGFydFN0YXRlOiBmdW5jdGlvbihiYXNl
Y29sdW1uKSB7Ci0gICAgICByZXR1cm4gewotICAgICAgICB0b2tlbml6ZToganNUb2tlbkJhc2Us
Ci0gICAgICAgIGxhc3RUeXBlOiBudWxsLAorICAgICAgdmFyIHN0YXRlID0geworICAgICAgICB0
b2tlbml6ZTogdG9rZW5CYXNlLAorICAgICAgICBsYXN0VHlwZTogInNvZiIsCiAgICAgICAgIGNj
OiBbXSwKICAgICAgICAgbGV4aWNhbDogbmV3IEpTTGV4aWNhbCgoYmFzZWNvbHVtbiB8fCAwKSAt
IGluZGVudFVuaXQsIDAsICJibG9jayIsIGZhbHNlKSwKICAgICAgICAgbG9jYWxWYXJzOiBwYXJz
ZXJDb25maWcubG9jYWxWYXJzLAotICAgICAgICBnbG9iYWxWYXJzOiBwYXJzZXJDb25maWcuZ2xv
YmFsVmFycywKICAgICAgICAgY29udGV4dDogcGFyc2VyQ29uZmlnLmxvY2FsVmFycyAmJiB7dmFy
czogcGFyc2VyQ29uZmlnLmxvY2FsVmFyc30sCiAgICAgICAgIGluZGVudGVkOiAwCiAgICAgICB9
OworICAgICAgaWYgKHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzKSBzdGF0ZS5nbG9iYWxWYXJzID0g
cGFyc2VyQ29uZmlnLmdsb2JhbFZhcnM7CisgICAgICByZXR1cm4gc3RhdGU7CiAgICAgfSwKIAog
ICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CkBAIC00MjUsOCArNTYxLDkgQEAg
Q29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJz
ZXJDb25maWcpIHsKICAgICAgICAgaWYgKCFzdGF0ZS5sZXhpY2FsLmhhc093blByb3BlcnR5KCJh
bGlnbiIpKQogICAgICAgICAgIHN0YXRlLmxleGljYWwuYWxpZ24gPSBmYWxzZTsKICAgICAgICAg
c3RhdGUuaW5kZW50ZWQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKKyAgICAgICAgZmluZEZhdEFy
cm93KHN0cmVhbSwgc3RhdGUpOwogICAgICAgfQotICAgICAgaWYgKHN0YXRlLnRva2VuaXplICE9
IGpzVG9rZW5Db21tZW50ICYmIHN0cmVhbS5lYXRTcGFjZSgpKSByZXR1cm4gbnVsbDsKKyAgICAg
IGlmIChzdGF0ZS50b2tlbml6ZSAhPSB0b2tlbkNvbW1lbnQgJiYgc3RyZWFtLmVhdFNwYWNlKCkp
IHJldHVybiBudWxsOwogICAgICAgdmFyIHN0eWxlID0gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBz
dGF0ZSk7CiAgICAgICBpZiAodHlwZSA9PSAiY29tbWVudCIpIHJldHVybiBzdHlsZTsKICAgICAg
IHN0YXRlLmxhc3RUeXBlID0gdHlwZSA9PSAib3BlcmF0b3IiICYmIChjb250ZW50ID09ICIrKyIg
fHwgY29udGVudCA9PSAiLS0iKSA/ICJpbmNkZWMiIDogdHlwZTsKQEAgLTQzNCwyMSArNTcxLDIx
IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywg
cGFyc2VyQ29uZmlnKSB7CiAgICAgfSwKIAogICAgIGluZGVudDogZnVuY3Rpb24oc3RhdGUsIHRl
eHRBZnRlcikgewotICAgICAgaWYgKHN0YXRlLnRva2VuaXplID09IGpzVG9rZW5Db21tZW50KSBy
ZXR1cm4gQ29kZU1pcnJvci5QYXNzOwotICAgICAgaWYgKHN0YXRlLnRva2VuaXplICE9IGpzVG9r
ZW5CYXNlKSByZXR1cm4gMDsKKyAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSA9PSB0b2tlbkNvbW1l
bnQpIHJldHVybiBDb2RlTWlycm9yLlBhc3M7CisgICAgICBpZiAoc3RhdGUudG9rZW5pemUgIT0g
dG9rZW5CYXNlKSByZXR1cm4gMDsKICAgICAgIHZhciBmaXJzdENoYXIgPSB0ZXh0QWZ0ZXIgJiYg
dGV4dEFmdGVyLmNoYXJBdCgwKSwgbGV4aWNhbCA9IHN0YXRlLmxleGljYWw7CiAgICAgICAvLyBL
bHVkZ2UgdG8gcHJldmVudCAnbWF5YmVsc2UnIGZyb20gYmxvY2tpbmcgbGV4aWNhbCBzY29wZSBw
b3BzCiAgICAgICBmb3IgKHZhciBpID0gc3RhdGUuY2MubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkp
IHsKICAgICAgICAgdmFyIGMgPSBzdGF0ZS5jY1tpXTsKICAgICAgICAgaWYgKGMgPT0gcG9wbGV4
KSBsZXhpY2FsID0gbGV4aWNhbC5wcmV2OwotICAgICAgICBlbHNlIGlmIChjICE9IG1heWJlZWxz
ZSB8fCAvXmVsc2VcYi8udGVzdCh0ZXh0QWZ0ZXIpKSBicmVhazsKKyAgICAgICAgZWxzZSBpZiAo
YyAhPSBtYXliZWVsc2UpIGJyZWFrOwogICAgICAgfQogICAgICAgaWYgKGxleGljYWwudHlwZSA9
PSAic3RhdCIgJiYgZmlyc3RDaGFyID09ICJ9IikgbGV4aWNhbCA9IGxleGljYWwucHJldjsKICAg
ICAgIGlmIChzdGF0ZW1lbnRJbmRlbnQgJiYgbGV4aWNhbC50eXBlID09ICIpIiAmJiBsZXhpY2Fs
LnByZXYudHlwZSA9PSAic3RhdCIpCiAgICAgICAgIGxleGljYWwgPSBsZXhpY2FsLnByZXY7CiAg
ICAgICB2YXIgdHlwZSA9IGxleGljYWwudHlwZSwgY2xvc2luZyA9IGZpcnN0Q2hhciA9PSB0eXBl
OwogCi0gICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQg
KyAoc3RhdGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5sYXN0VHlwZSA9PSAiLCIg
PyA0IDogMCk7CisgICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikgcmV0dXJuIGxleGljYWwuaW5k
ZW50ZWQgKyAoc3RhdGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5sYXN0VHlwZSA9
PSAiLCIgPyBsZXhpY2FsLmluZm8gKyAxIDogMCk7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJm
b3JtIiAmJiBmaXJzdENoYXIgPT0gInsiKSByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZDsKICAgICAg
IGVsc2UgaWYgKHR5cGUgPT0gImZvcm0iKSByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIGluZGVu
dFVuaXQ7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1p
cnJvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9D
b2RlTWlycm9yL2NvZGVtaXJyb3IuY3NzCmluZGV4IDRlMzAwYjJiZTJlOTBjYzMwNjY4ZWJlYzAz
YzBjZmFiYzVhMDU3NmYuLjIzZWFmNzRkNDQ5YmNkNWNkYjRlOTUyZTViMjg0NjQyOGU4ZWJiNzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFs
L0NvZGVNaXJyb3IvY29kZW1pcnJvci5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzcwpAQCAtNzQsNyAr
NzQsNiBAQAogLmNtLXMtZGVmYXVsdCAuY20tc3RyaW5nIHtjb2xvcjogI2ExMTt9CiAuY20tcy1k
ZWZhdWx0IC5jbS1zdHJpbmctMiB7Y29sb3I6ICNmNTA7fQogLmNtLXMtZGVmYXVsdCAuY20tbWV0
YSB7Y29sb3I6ICM1NTU7fQotLmNtLXMtZGVmYXVsdCAuY20tZXJyb3Ige2NvbG9yOiAjZjAwO30K
IC5jbS1zLWRlZmF1bHQgLmNtLXF1YWxpZmllciB7Y29sb3I6ICM1NTU7fQogLmNtLXMtZGVmYXVs
dCAuY20tYnVpbHRpbiB7Y29sb3I6ICMzMGE7fQogLmNtLXMtZGVmYXVsdCAuY20tYnJhY2tldCB7
Y29sb3I6ICM5OTc7fQpAQCAtOTEsNiArOTAsNyBAQAogLmNtLWVtIHtmb250LXN0eWxlOiBpdGFs
aWM7fQogLmNtLWxpbmsge3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO30KIAorLmNtLXMtZGVm
YXVsdCAuY20tZXJyb3Ige2NvbG9yOiAjZjAwO30KIC5jbS1pbnZhbGlkY2hhciB7Y29sb3I6ICNm
MDA7fQogCiBkaXYuQ29kZU1pcnJvciBzcGFuLkNvZGVNaXJyb3ItbWF0Y2hpbmdicmFja2V0IHtj
b2xvcjogIzBmMDt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanMKaW5k
ZXggODE3NzFlOTliMTJhYWFkZGVmZjZlNDI1ZTI5NGVkMzU5ZTlhYjc3YS4uN2I0ZmQwMDE0MTFh
ZDE0ZWFjNjM0YmUzNzI3NDhhOGFkMTdlNGMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJy
b3IvY29kZW1pcnJvci5qcwpAQCAtNyw5ICs3LDEzIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1
bmN0aW9uKCkgewogICAvLyBDcnVkZSwgYnV0IG5lY2Vzc2FyeSB0byBoYW5kbGUgYSBudW1iZXIg
b2YgaGFyZC10by1mZWF0dXJlLWRldGVjdAogICAvLyBidWdzIGFuZCBiZWhhdmlvciBkaWZmZXJl
bmNlcy4KICAgdmFyIGdlY2tvID0gL2dlY2tvXC9cZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2Vu
dCk7CisgIC8vIElFMTEgY3VycmVudGx5IGRvZXNuJ3QgY291bnQgYXMgJ2llJywgc2luY2UgaXQg
aGFzIGFsbW9zdCBub25lIG9mCisgIC8vIHRoZSBzYW1lIGJ1Z3MgYXMgZWFybGllciB2ZXJzaW9u
cy4gVXNlIGllX2d0MTAgdG8gaGFuZGxlCisgIC8vIGluY29tcGF0aWJpbGl0aWVzIGluIHRoYXQg
dmVyc2lvbi4KICAgdmFyIGllID0gL01TSUUgXGQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7
CiAgIHZhciBpZV9sdDggPSBpZSAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09IG51bGwgfHwg
ZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDwgOCk7CiAgIHZhciBpZV9sdDkgPSBpZSAmJiAoZG9jdW1l
bnQuZG9jdW1lbnRNb2RlID09IG51bGwgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDwgOSk7Cisg
IHZhciBpZV9ndDEwID0gL1RyaWRlbnRcLyhbNy05XXxcZHsyLH0pXC4vLnRlc3QobmF2aWdhdG9y
LnVzZXJBZ2VudCk7CiAgIHZhciB3ZWJraXQgPSAvV2ViS2l0XC8vLnRlc3QobmF2aWdhdG9yLnVz
ZXJBZ2VudCk7CiAgIHZhciBxdHdlYmtpdCA9IHdlYmtpdCAmJiAvUXRcL1xkK1wuXGQrLy50ZXN0
KG5hdmlnYXRvci51c2VyQWdlbnQpOwogICB2YXIgY2hyb21lID0gL0Nocm9tZVwvLy50ZXN0KG5h
dmlnYXRvci51c2VyQWdlbnQpOwpAQCAtMzA5LDcgKzMxMyw3IEBAIHdpbmRvdy5Db2RlTWlycm9y
ID0gKGZ1bmN0aW9uKCkgewogICAgICAgb3B0aW9ucy5ndXR0ZXJzID0gb3B0aW9ucy5ndXR0ZXJz
LmNvbmNhdChbIkNvZGVNaXJyb3ItbGluZW51bWJlcnMiXSk7CiAgICAgfSBlbHNlIGlmIChmb3Vu
ZCA+IC0xICYmICFvcHRpb25zLmxpbmVOdW1iZXJzKSB7CiAgICAgICBvcHRpb25zLmd1dHRlcnMg
PSBvcHRpb25zLmd1dHRlcnMuc2xpY2UoMCk7Ci0gICAgICBvcHRpb25zLmd1dHRlcnMuc3BsaWNl
KGksIDEpOworICAgICAgb3B0aW9ucy5ndXR0ZXJzLnNwbGljZShmb3VuZCwgMSk7CiAgICAgfQog
ICB9CiAKQEAgLTM1Myw4ICszNTcsMTAgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24o
KSB7CiAgICAgICBkLmd1dHRlckZpbGxlci5zdHlsZS53aWR0aCA9IGQuZ3V0dGVycy5vZmZzZXRX
aWR0aCArICJweCI7CiAgICAgfSBlbHNlIGQuZ3V0dGVyRmlsbGVyLnN0eWxlLmRpc3BsYXkgPSAi
IjsKIAotICAgIGlmIChtYWNfZ2VMaW9uICYmIHNjcm9sbGJhcldpZHRoKGQubWVhc3VyZSkgPT09
IDApCisgICAgaWYgKG1hY19nZUxpb24gJiYgc2Nyb2xsYmFyV2lkdGgoZC5tZWFzdXJlKSA9PT0g
MCkgewogICAgICAgZC5zY3JvbGxiYXJWLnN0eWxlLm1pbldpZHRoID0gZC5zY3JvbGxiYXJILnN0
eWxlLm1pbkhlaWdodCA9IG1hY19nZU1vdW50YWluTGlvbiA/ICIxOHB4IiA6ICIxMnB4IjsKKyAg
ICAgIGQuc2Nyb2xsYmFyVi5zdHlsZS5wb2ludGVyRXZlbnRzID0gZC5zY3JvbGxiYXJILnN0eWxl
LnBvaW50ZXJFdmVudHMgPSAibm9uZSI7CisgICAgfQogICB9CiAKICAgZnVuY3Rpb24gdmlzaWJs
ZUxpbmVzKGRpc3BsYXksIGRvYywgdmlld1BvcnQpIHsKQEAgLTQwOSwxNCArNDE1LDE0IEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICBmdW5jdGlvbiB1cGRhdGVEaXNwbGF5
KGNtLCBjaGFuZ2VzLCB2aWV3UG9ydCwgZm9yY2VkKSB7CiAgICAgdmFyIG9sZEZyb20gPSBjbS5k
aXNwbGF5LnNob3dpbmdGcm9tLCBvbGRUbyA9IGNtLmRpc3BsYXkuc2hvd2luZ1RvLCB1cGRhdGVk
OwogICAgIHZhciB2aXNpYmxlID0gdmlzaWJsZUxpbmVzKGNtLmRpc3BsYXksIGNtLmRvYywgdmll
d1BvcnQpOwotICAgIGZvciAoOzspIHsKKyAgICBmb3IgKHZhciBmaXJzdCA9IHRydWU7OyBmaXJz
dCA9IGZhbHNlKSB7CiAgICAgICB2YXIgb2xkV2lkdGggPSBjbS5kaXNwbGF5LnNjcm9sbGVyLmNs
aWVudFdpZHRoOwogICAgICAgaWYgKCF1cGRhdGVEaXNwbGF5SW5uZXIoY20sIGNoYW5nZXMsIHZp
c2libGUsIGZvcmNlZCkpIGJyZWFrOwogICAgICAgdXBkYXRlZCA9IHRydWU7CiAgICAgICBjaGFu
Z2VzID0gW107CiAgICAgICB1cGRhdGVTZWxlY3Rpb24oY20pOwogICAgICAgdXBkYXRlU2Nyb2xs
YmFycyhjbSk7Ci0gICAgICBpZiAoY20ub3B0aW9ucy5saW5lV3JhcHBpbmcgJiYgb2xkV2lkdGgg
IT0gY20uZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCkgeworICAgICAgaWYgKGZpcnN0ICYm
IGNtLm9wdGlvbnMubGluZVdyYXBwaW5nICYmIG9sZFdpZHRoICE9IGNtLmRpc3BsYXkuc2Nyb2xs
ZXIuY2xpZW50V2lkdGgpIHsKICAgICAgICAgZm9yY2VkID0gdHJ1ZTsKICAgICAgICAgY29udGlu
dWU7CiAgICAgICB9CkBAIC05MDQsNyArOTEwLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAgICAgZG9jLml0ZXIoZG9jLmZyb250aWVyLCBNYXRoLm1pbihkb2MuZmlyc3Qg
KyBkb2Muc2l6ZSwgY20uZGlzcGxheS5zaG93aW5nVG8gKyA1MDApLCBmdW5jdGlvbihsaW5lKSB7
CiAgICAgICBpZiAoZG9jLmZyb250aWVyID49IGNtLmRpc3BsYXkuc2hvd2luZ0Zyb20pIHsgLy8g
VmlzaWJsZQogICAgICAgICB2YXIgb2xkU3R5bGVzID0gbGluZS5zdHlsZXM7Ci0gICAgICAgIGxp
bmUuc3R5bGVzID0gaGlnaGxpZ2h0TGluZShjbSwgbGluZSwgc3RhdGUpOworICAgICAgICBsaW5l
LnN0eWxlcyA9IGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIHN0YXRlLCB0cnVlKTsKICAgICAgICAg
dmFyIGlzY2hhbmdlID0gIW9sZFN0eWxlcyB8fCBvbGRTdHlsZXMubGVuZ3RoICE9IGxpbmUuc3R5
bGVzLmxlbmd0aDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7ICFpc2NoYW5nZSAmJiBpIDwgb2xk
U3R5bGVzLmxlbmd0aDsgKytpKSBpc2NoYW5nZSA9IG9sZFN0eWxlc1tpXSAhPSBsaW5lLnN0eWxl
c1tpXTsKICAgICAgICAgaWYgKGlzY2hhbmdlKSB7CkBAIC05MTMsNyArOTE5LDcgQEAgd2luZG93
LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0KICAgICAgICAgbGluZS5zdGF0
ZUFmdGVyID0gY29weVN0YXRlKGRvYy5tb2RlLCBzdGF0ZSk7CiAgICAgICB9IGVsc2UgewotICAg
ICAgICBwcm9jZXNzTGluZShjbSwgbGluZSwgc3RhdGUpOworICAgICAgICBwcm9jZXNzTGluZShj
bSwgbGluZS50ZXh0LCBzdGF0ZSk7CiAgICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IGRvYy5mcm9u
dGllciAlIDUgPT0gMCA/IGNvcHlTdGF0ZShkb2MubW9kZSwgc3RhdGUpIDogbnVsbDsKICAgICAg
IH0KICAgICAgICsrZG9jLmZyb250aWVyOwpAQCAtOTM1LDggKzk0MSw5IEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAvLyBzbWFsbGVzdCBpbmRlbnRhdGlvbiwgd2hpY2gg
dGVuZHMgdG8gbmVlZCB0aGUgbGVhc3QgY29udGV4dCB0bwogICAvLyBwYXJzZSBjb3JyZWN0bHku
CiAgIGZ1bmN0aW9uIGZpbmRTdGFydExpbmUoY20sIG4sIHByZWNpc2UpIHsKLSAgICB2YXIgbWlu
aW5kZW50LCBtaW5saW5lLCBkb2MgPSBjbS5kb2MsIG1heFNjYW4gPSBjbS5kb2MubW9kZS5pbm5l
ck1vZGUgPyAxMDAwIDogMTAwOwotICAgIGZvciAodmFyIHNlYXJjaCA9IG4sIGxpbSA9IG4gLSBt
YXhTY2FuOyBzZWFyY2ggPiBsaW07IC0tc2VhcmNoKSB7CisgICAgdmFyIG1pbmluZGVudCwgbWlu
bGluZSwgZG9jID0gY20uZG9jOworICAgIHZhciBsaW0gPSBwcmVjaXNlID8gLTEgOiBuIC0gKGNt
LmRvYy5tb2RlLmlubmVyTW9kZSA/IDEwMDAgOiAxMDApOworICAgIGZvciAodmFyIHNlYXJjaCA9
IG47IHNlYXJjaCA+IGxpbTsgLS1zZWFyY2gpIHsKICAgICAgIGlmIChzZWFyY2ggPD0gZG9jLmZp
cnN0KSByZXR1cm4gZG9jLmZpcnN0OwogICAgICAgdmFyIGxpbmUgPSBnZXRMaW5lKGRvYywgc2Vh
cmNoIC0gMSk7CiAgICAgICBpZiAobGluZS5zdGF0ZUFmdGVyICYmICghcHJlY2lzZSB8fCBzZWFy
Y2ggPD0gZG9jLmZyb250aWVyKSkgcmV0dXJuIHNlYXJjaDsKQEAgLTk1NiwxMSArOTYzLDEyIEBA
IHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIGlmICghc3RhdGUpIHN0YXRl
ID0gc3RhcnRTdGF0ZShkb2MubW9kZSk7CiAgICAgZWxzZSBzdGF0ZSA9IGNvcHlTdGF0ZShkb2Mu
bW9kZSwgc3RhdGUpOwogICAgIGRvYy5pdGVyKHBvcywgbiwgZnVuY3Rpb24obGluZSkgewotICAg
ICAgcHJvY2Vzc0xpbmUoY20sIGxpbmUsIHN0YXRlKTsKKyAgICAgIHByb2Nlc3NMaW5lKGNtLCBs
aW5lLnRleHQsIHN0YXRlKTsKICAgICAgIHZhciBzYXZlID0gcG9zID09IG4gLSAxIHx8IHBvcyAl
IDUgPT0gMCB8fCBwb3MgPj0gZGlzcGxheS5zaG93aW5nRnJvbSAmJiBwb3MgPCBkaXNwbGF5LnNo
b3dpbmdUbzsKICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IHNhdmUgPyBjb3B5U3RhdGUoZG9jLm1v
ZGUsIHN0YXRlKSA6IG51bGw7CiAgICAgICArK3BvczsKICAgICB9KTsKKyAgICBpZiAocHJlY2lz
ZSkgZG9jLmZyb250aWVyID0gcG9zOwogICAgIHJldHVybiBzdGF0ZTsKICAgfQogCkBAIC0xMDAx
LDcgKzEwMDksNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIHZh
ciBtZW1vID0gY2FjaGVbaV07CiAgICAgICBpZiAobWVtby50ZXh0ID09IGxpbmUudGV4dCAmJiBt
ZW1vLm1hcmtlZFNwYW5zID09IGxpbmUubWFya2VkU3BhbnMgJiYKICAgICAgICAgICBjbS5kaXNw
bGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoID09IG1lbW8ud2lkdGggJiYKLSAgICAgICAgICBtZW1v
LmNsYXNzZXMgPT0gbGluZS50ZXh0Q2xhc3MgKyAifCIgKyBsaW5lLmJnQ2xhc3MgKyAifCIgKyBs
aW5lLndyYXBDbGFzcykKKyAgICAgICAgICBtZW1vLmNsYXNzZXMgPT0gbGluZS50ZXh0Q2xhc3Mg
KyAifCIgKyBsaW5lLndyYXBDbGFzcykKICAgICAgICAgcmV0dXJuIG1lbW87CiAgICAgfQogICB9
CkBAIC0xMDIxLDcgKzEwMjksNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsK
ICAgICB2YXIgY2FjaGUgPSBjbS5kaXNwbGF5Lm1lYXN1cmVMaW5lQ2FjaGU7CiAgICAgdmFyIG1l
bW8gPSB7dGV4dDogbGluZS50ZXh0LCB3aWR0aDogY20uZGlzcGxheS5zY3JvbGxlci5jbGllbnRX
aWR0aCwKICAgICAgICAgICAgICAgICBtYXJrZWRTcGFuczogbGluZS5tYXJrZWRTcGFucywgbWVh
c3VyZTogbWVhc3VyZSwKLSAgICAgICAgICAgICAgICBjbGFzc2VzOiBsaW5lLnRleHRDbGFzcyAr
ICJ8IiArIGxpbmUuYmdDbGFzcyArICJ8IiArIGxpbmUud3JhcENsYXNzfTsKKyAgICAgICAgICAg
ICAgICBjbGFzc2VzOiBsaW5lLnRleHRDbGFzcyArICJ8IiArIGxpbmUud3JhcENsYXNzfTsKICAg
ICBpZiAoY2FjaGUubGVuZ3RoID09IDE2KSBjYWNoZVsrK2NtLmRpc3BsYXkubWVhc3VyZUxpbmVD
YWNoZVBvcyAlIDE2XSA9IG1lbW87CiAgICAgZWxzZSBjYWNoZS5wdXNoKG1lbW8pOwogICAgIHJl
dHVybiBtZWFzdXJlOwpAQCAtMTM3OSwxMSArMTM4NywxNCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICB9CiAgICAgaWYgKCF1cGRhdGVkICYmIG9wLnNlbGVjdGlvbkNo
YW5nZWQpIHVwZGF0ZVNlbGVjdGlvbihjbSk7CiAgICAgaWYgKG9wLnVwZGF0ZVNjcm9sbFBvcykg
ewotICAgICAgZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AgPSBkaXNwbGF5LnNjcm9sbGJhclYu
c2Nyb2xsVG9wID0gZG9jLnNjcm9sbFRvcCA9IG5ld1Njcm9sbFBvcy5zY3JvbGxUb3A7Ci0gICAg
ICBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQgPSBkaXNwbGF5LnNjcm9sbGJhckguc2Nyb2xs
TGVmdCA9IGRvYy5zY3JvbGxMZWZ0ID0gbmV3U2Nyb2xsUG9zLnNjcm9sbExlZnQ7CisgICAgICB2
YXIgdG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZGlzcGxheS5zY3JvbGxlci5zY3JvbGxIZWln
aHQgLSBkaXNwbGF5LnNjcm9sbGVyLmNsaWVudEhlaWdodCwgbmV3U2Nyb2xsUG9zLnNjcm9sbFRv
cCkpOworICAgICAgdmFyIGxlZnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbihkaXNwbGF5LnNjcm9s
bGVyLnNjcm9sbFdpZHRoIC0gZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCwgbmV3U2Nyb2xs
UG9zLnNjcm9sbExlZnQpKTsKKyAgICAgIGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wID0gZGlz
cGxheS5zY3JvbGxiYXJWLnNjcm9sbFRvcCA9IGRvYy5zY3JvbGxUb3AgPSB0b3A7CisgICAgICBk
aXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQgPSBkaXNwbGF5LnNjcm9sbGJhckguc2Nyb2xsTGVm
dCA9IGRvYy5zY3JvbGxMZWZ0ID0gbGVmdDsKICAgICAgIGFsaWduSG9yaXpvbnRhbGx5KGNtKTsK
ICAgICAgIGlmIChvcC5zY3JvbGxUb1BvcykKLSAgICAgICAgc2Nyb2xsUG9zSW50b1ZpZXcoY20s
IGNsaXBQb3MoY20uZG9jLCBvcC5zY3JvbGxUb1BvcyksIG9wLnNjcm9sbFRvUG9zTWFyZ2luKTsK
KyAgICAgICAgc2Nyb2xsUG9zSW50b1ZpZXcoY20sIGNsaXBQb3MoY20uZG9jLCBvcC5zY3JvbGxU
b1Bvcy5mcm9tKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcFBvcyhjbS5kb2MsIG9w
LnNjcm9sbFRvUG9zLnRvKSwgb3Auc2Nyb2xsVG9Qb3MubWFyZ2luKTsKICAgICB9IGVsc2UgaWYg
KG5ld1Njcm9sbFBvcykgewogICAgICAgc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoY20pOwogICAgIH0K
QEAgLTE2MDUsNyArMTYxNiwxMCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsK
ICAgICAgIGlmIChzaWduYWxET01FdmVudChjbSwgZSkgfHwgY20ub3B0aW9ucy5vbktleUV2ZW50
ICYmIGNtLm9wdGlvbnMub25LZXlFdmVudChjbSwgYWRkU3RvcChlKSkpIHJldHVybjsKICAgICAg
IGlmIChlLmtleUNvZGUgPT0gMTYpIGNtLmRvYy5zZWwuc2hpZnQgPSBmYWxzZTsKICAgICB9KSk7
Ci0gICAgb24oZC5pbnB1dCwgImlucHV0IiwgYmluZChmYXN0UG9sbCwgY20pKTsKKyAgICBvbihk
LmlucHV0LCAiaW5wdXQiLCBmdW5jdGlvbigpIHsKKyAgICAgIGlmIChpZSAmJiAhaWVfbHQ5ICYm
IGNtLmRpc3BsYXkuaW5wdXRIYXNTZWxlY3Rpb24pIGNtLmRpc3BsYXkuaW5wdXRIYXNTZWxlY3Rp
b24gPSBudWxsOworICAgICAgZmFzdFBvbGwoY20pOworICAgIH0pOwogICAgIG9uKGQuaW5wdXQs
ICJrZXlkb3duIiwgb3BlcmF0aW9uKGNtLCBvbktleURvd24pKTsKICAgICBvbihkLmlucHV0LCAi
a2V5cHJlc3MiLCBvcGVyYXRpb24oY20sIG9uS2V5UHJlc3MpKTsKICAgICBvbihkLmlucHV0LCAi
Zm9jdXMiLCBiaW5kKG9uRm9jdXMsIGNtKSk7CkBAIC0xODk1LDcgKzE5MDksNiBAQCB3aW5kb3cu
Q29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICBpZiAoY20uc3RhdGUuZHJhZ2dp
bmdUZXh0KSByZXBsYWNlUmFuZ2UoY20uZG9jLCAiIiwgY3VyRnJvbSwgY3VyVG8sICJwYXN0ZSIp
OwogICAgICAgICAgIGNtLnJlcGxhY2VTZWxlY3Rpb24odGV4dCwgbnVsbCwgInBhc3RlIik7CiAg
ICAgICAgICAgZm9jdXNJbnB1dChjbSk7Ci0gICAgICAgICAgb25Gb2N1cyhjbSk7CiAgICAgICAg
IH0KICAgICAgIH0KICAgICAgIGNhdGNoKGUpe30KQEAgLTIxNzYsNyArMjE4OSwxMSBAQCB3aW5k
b3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKIAogICAgIHZhciBwb3MgPSBwb3NGcm9tTW91
c2UoY20sIGUpLCBzY3JvbGxQb3MgPSBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcDsKICAgICBp
ZiAoIXBvcyB8fCBvcGVyYSkgcmV0dXJuOyAvLyBPcGVyYSBpcyBkaWZmaWN1bHQuCi0gICAgaWYg
KHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pIHx8IHBvc0xlc3MocG9zLCBzZWwuZnJvbSkgfHwgIXBv
c0xlc3MocG9zLCBzZWwudG8pKQorCisgICAgLy8gUmVzZXQgdGhlIGN1cnJlbnQgdGV4dCBzZWxl
Y3Rpb24gb25seSBpZiB0aGUgY2xpY2sgaXMgZG9uZSBvdXRzaWRlIG9mIHRoZSBzZWxlY3Rpb24K
KyAgICAvLyBhbmQgJ3Jlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudScgb3B0aW9uIGlzIHRydWUu
CisgICAgdmFyIHJlc2V0ID0gY20ub3B0aW9ucy5yZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnU7
CisgICAgaWYgKHJlc2V0ICYmIChwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSB8fCBwb3NMZXNzKHBv
cywgc2VsLmZyb20pIHx8ICFwb3NMZXNzKHBvcywgc2VsLnRvKSkpCiAgICAgICBvcGVyYXRpb24o
Y20sIHNldFNlbGVjdGlvbikoY20uZG9jLCBwb3MsIHBvcyk7CiAKICAgICB2YXIgb2xkQ1NTID0g
ZGlzcGxheS5pbnB1dC5zdHlsZS5jc3NUZXh0OwpAQCAtMjMyNiw2ICsyMzQzLDcgQEAgd2luZG93
LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIH0KIAogICBmdW5jdGlvbiBtYWtlQ2hhbmdl
Tm9SZWFkb25seShkb2MsIGNoYW5nZSwgc2VsVXBkYXRlKSB7CisgICAgaWYgKGNoYW5nZS50ZXh0
Lmxlbmd0aCA9PSAxICYmIGNoYW5nZS50ZXh0WzBdID09ICIiICYmIHBvc0VxKGNoYW5nZS5mcm9t
LCBjaGFuZ2UudG8pKSByZXR1cm47CiAgICAgdmFyIHNlbEFmdGVyID0gY29tcHV0ZVNlbEFmdGVy
Q2hhbmdlKGRvYywgY2hhbmdlLCBzZWxVcGRhdGUpOwogICAgIGFkZFRvSGlzdG9yeShkb2MsIGNo
YW5nZSwgc2VsQWZ0ZXIsIGRvYy5jbSA/IGRvYy5jbS5jdXJPcC5pZCA6IE5hTik7CiAKQEAgLTI2
MjYsNyArMjY0NCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAvLyBT
Q1JPTExJTkcKIAogICBmdW5jdGlvbiBzY3JvbGxDdXJzb3JJbnRvVmlldyhjbSkgewotICAgIHZh
ciBjb29yZHMgPSBzY3JvbGxQb3NJbnRvVmlldyhjbSwgY20uZG9jLnNlbC5oZWFkLCBjbS5vcHRp
b25zLmN1cnNvclNjcm9sbE1hcmdpbik7CisgICAgdmFyIGNvb3JkcyA9IHNjcm9sbFBvc0ludG9W
aWV3KGNtLCBjbS5kb2Muc2VsLmhlYWQsIG51bGwsIGNtLm9wdGlvbnMuY3Vyc29yU2Nyb2xsTWFy
Z2luKTsKICAgICBpZiAoIWNtLnN0YXRlLmZvY3VzZWQpIHJldHVybjsKICAgICB2YXIgZGlzcGxh
eSA9IGNtLmRpc3BsYXksIGJveCA9IGdldFJlY3QoZGlzcGxheS5zaXplciksIGRvU2Nyb2xsID0g
bnVsbDsKICAgICBpZiAoY29vcmRzLnRvcCArIGJveC50b3AgPCAwKSBkb1Njcm9sbCA9IHRydWU7
CkBAIC0yNjQzLDExICsyNjYxLDE1IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICAgIH0KICAgfQogCi0gIGZ1bmN0aW9uIHNjcm9sbFBvc0ludG9WaWV3KGNtLCBwb3MsIG1h
cmdpbikgeworICBmdW5jdGlvbiBzY3JvbGxQb3NJbnRvVmlldyhjbSwgcG9zLCBlbmQsIG1hcmdp
bikgewogICAgIGlmIChtYXJnaW4gPT0gbnVsbCkgbWFyZ2luID0gMDsKICAgICBmb3IgKDs7KSB7
CiAgICAgICB2YXIgY2hhbmdlZCA9IGZhbHNlLCBjb29yZHMgPSBjdXJzb3JDb29yZHMoY20sIHBv
cyk7Ci0gICAgICB2YXIgc2Nyb2xsUG9zID0gY2FsY3VsYXRlU2Nyb2xsUG9zKGNtLCBjb29yZHMu
bGVmdCwgY29vcmRzLnRvcCAtIG1hcmdpbiwgY29vcmRzLmxlZnQsIGNvb3Jkcy5ib3R0b20gKyBt
YXJnaW4pOworICAgICAgdmFyIGVuZENvb3JkcyA9ICFlbmQgfHwgZW5kID09IHBvcyA/IGNvb3Jk
cyA6IGN1cnNvckNvb3JkcyhjbSwgZW5kKTsKKyAgICAgIHZhciBzY3JvbGxQb3MgPSBjYWxjdWxh
dGVTY3JvbGxQb3MoY20sIE1hdGgubWluKGNvb3Jkcy5sZWZ0LCBlbmRDb29yZHMubGVmdCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWluKGNvb3Jkcy50
b3AsIGVuZENvb3Jkcy50b3ApIC0gbWFyZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXRoLm1heChjb29yZHMubGVmdCwgZW5kQ29vcmRzLmxlZnQpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLm1heChjb29yZHMuYm90
dG9tLCBlbmRDb29yZHMuYm90dG9tKSArIG1hcmdpbik7CiAgICAgICB2YXIgc3RhcnRUb3AgPSBj
bS5kb2Muc2Nyb2xsVG9wLCBzdGFydExlZnQgPSBjbS5kb2Muc2Nyb2xsTGVmdDsKICAgICAgIGlm
IChzY3JvbGxQb3Muc2Nyb2xsVG9wICE9IG51bGwpIHsKICAgICAgICAgc2V0U2Nyb2xsVG9wKGNt
LCBzY3JvbGxQb3Muc2Nyb2xsVG9wKTsKQEAgLTI3NDQsNiArMjc2Niw4IEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgICAgaWYgKGluZGVudFN0cmluZyAhPSBjdXJTcGFj
ZVN0cmluZykKICAgICAgIHJlcGxhY2VSYW5nZShjbS5kb2MsIGluZGVudFN0cmluZywgUG9zKG4s
IDApLCBQb3MobiwgY3VyU3BhY2VTdHJpbmcubGVuZ3RoKSwgIitpbnB1dCIpOworICAgIGVsc2Ug
aWYgKGRvYy5zZWwuaGVhZC5saW5lID09IG4gJiYgZG9jLnNlbC5oZWFkLmNoIDwgY3VyU3BhY2VT
dHJpbmcubGVuZ3RoKQorICAgICAgc2V0U2VsZWN0aW9uKGRvYywgUG9zKG4sIGN1clNwYWNlU3Ry
aW5nLmxlbmd0aCksIFBvcyhuLCBjdXJTcGFjZVN0cmluZy5sZW5ndGgpLCAxKTsKICAgICBsaW5l
LnN0YXRlQWZ0ZXIgPSBudWxsOwogICB9CiAKQEAgLTI4NDQsNyArMjg2OCw3IEBAIHdpbmRvdy5D
b2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgIENvZGVNaXJyb3IucHJvdG90eXBlID0gewog
ICAgIGNvbnN0cnVjdG9yOiBDb2RlTWlycm9yLAotICAgIGZvY3VzOiBmdW5jdGlvbigpe3dpbmRv
dy5mb2N1cygpOyBmb2N1c0lucHV0KHRoaXMpOyBvbkZvY3VzKHRoaXMpOyBmYXN0UG9sbCh0aGlz
KTt9LAorICAgIGZvY3VzOiBmdW5jdGlvbigpe3dpbmRvdy5mb2N1cygpOyBmb2N1c0lucHV0KHRo
aXMpOyBmYXN0UG9sbCh0aGlzKTt9LAogCiAgICAgc2V0T3B0aW9uOiBmdW5jdGlvbihvcHRpb24s
IHZhbHVlKSB7CiAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucywgb2xkID0gb3B0aW9u
c1tvcHRpb25dOwpAQCAtMzE2NSwxNyArMzE4OSwyMyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChm
dW5jdGlvbigpIHsKICAgICAgICAgICAgICAgY2xpZW50SGVpZ2h0OiBzY3JvbGxlci5jbGllbnRI
ZWlnaHQgLSBjbywgY2xpZW50V2lkdGg6IHNjcm9sbGVyLmNsaWVudFdpZHRoIC0gY299OwogICAg
IH0sCiAKLSAgICBzY3JvbGxJbnRvVmlldzogb3BlcmF0aW9uKG51bGwsIGZ1bmN0aW9uKHBvcywg
bWFyZ2luKSB7Ci0gICAgICBpZiAodHlwZW9mIHBvcyA9PSAibnVtYmVyIikgcG9zID0gUG9zKHBv
cywgMCk7CisgICAgc2Nyb2xsSW50b1ZpZXc6IG9wZXJhdGlvbihudWxsLCBmdW5jdGlvbihyYW5n
ZSwgbWFyZ2luKSB7CisgICAgICBpZiAocmFuZ2UgPT0gbnVsbCkgcmFuZ2UgPSB7ZnJvbTogdGhp
cy5kb2Muc2VsLmhlYWQsIHRvOiBudWxsfTsKKyAgICAgIGVsc2UgaWYgKHR5cGVvZiByYW5nZSA9
PSAibnVtYmVyIikgcmFuZ2UgPSB7ZnJvbTogUG9zKHJhbmdlLCAwKSwgdG86IG51bGx9OworICAg
ICAgZWxzZSBpZiAocmFuZ2UuZnJvbSA9PSBudWxsKSByYW5nZSA9IHtmcm9tOiByYW5nZSwgdG86
IG51bGx9OworICAgICAgaWYgKCFyYW5nZS50bykgcmFuZ2UudG8gPSByYW5nZS5mcm9tOwogICAg
ICAgaWYgKCFtYXJnaW4pIG1hcmdpbiA9IDA7Ci0gICAgICB2YXIgY29vcmRzID0gcG9zOwogCi0g
ICAgICBpZiAoIXBvcyB8fCBwb3MubGluZSAhPSBudWxsKSB7Ci0gICAgICAgIHRoaXMuY3VyT3Au
c2Nyb2xsVG9Qb3MgPSBwb3MgPyBjbGlwUG9zKHRoaXMuZG9jLCBwb3MpIDogdGhpcy5kb2Muc2Vs
LmhlYWQ7Ci0gICAgICAgIHRoaXMuY3VyT3Auc2Nyb2xsVG9Qb3NNYXJnaW4gPSBtYXJnaW47Ci0g
ICAgICAgIGNvb3JkcyA9IGN1cnNvckNvb3Jkcyh0aGlzLCB0aGlzLmN1ck9wLnNjcm9sbFRvUG9z
KTsKKyAgICAgIHZhciBjb29yZHMgPSByYW5nZTsKKyAgICAgIGlmIChyYW5nZS5mcm9tLmxpbmUg
IT0gbnVsbCkgeworICAgICAgICB0aGlzLmN1ck9wLnNjcm9sbFRvUG9zID0ge2Zyb206IHJhbmdl
LmZyb20sIHRvOiByYW5nZS50bywgbWFyZ2luOiBtYXJnaW59OworICAgICAgICBjb29yZHMgPSB7
ZnJvbTogY3Vyc29yQ29vcmRzKHRoaXMsIHJhbmdlLmZyb20pLAorICAgICAgICAgICAgICAgICAg
dG86IGN1cnNvckNvb3Jkcyh0aGlzLCByYW5nZS50byl9OwogICAgICAgfQotICAgICAgdmFyIHNQ
b3MgPSBjYWxjdWxhdGVTY3JvbGxQb3ModGhpcywgY29vcmRzLmxlZnQsIGNvb3Jkcy50b3AgLSBt
YXJnaW4sIGNvb3Jkcy5yaWdodCwgY29vcmRzLmJvdHRvbSArIG1hcmdpbik7CisgICAgICB2YXIg
c1BvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyh0aGlzLCBNYXRoLm1pbihjb29yZHMuZnJvbS5sZWZ0
LCBjb29yZHMudG8ubGVmdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXRoLm1pbihjb29yZHMuZnJvbS50b3AsIGNvb3Jkcy50by50b3ApIC0gbWFyZ2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoY29vcmRzLmZyb20ucmlnaHQs
IGNvb3Jkcy50by5yaWdodCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
YXRoLm1heChjb29yZHMuZnJvbS5ib3R0b20sIGNvb3Jkcy50by5ib3R0b20pICsgbWFyZ2luKTsK
ICAgICAgIHVwZGF0ZVNjcm9sbFBvcyh0aGlzLCBzUG9zLnNjcm9sbExlZnQsIHNQb3Muc2Nyb2xs
VG9wKTsKICAgICB9KSwKIApAQCAtMzIwNyw2ICszMjM3LDcgQEAgd2luZG93LkNvZGVNaXJyb3Ig
PSAoZnVuY3Rpb24oKSB7CiAgICAgICBjbGVhckNhY2hlcyh0aGlzKTsKICAgICAgIHJlc2V0SW5w
dXQodGhpcywgdHJ1ZSk7CiAgICAgICB1cGRhdGVTY3JvbGxQb3ModGhpcywgZG9jLnNjcm9sbExl
ZnQsIGRvYy5zY3JvbGxUb3ApOworICAgICAgc2lnbmFsTGF0ZXIodGhpcywgInN3YXBEb2MiLCB0
aGlzLCBvbGQpOwogICAgICAgcmV0dXJuIG9sZDsKICAgICB9KSwKIApAQCAtMzI1MCw4ICszMjgx
LDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIGNsZWFyQ2FjaGVz
KGNtKTsKICAgICByZWdDaGFuZ2UoY20pOwogICB9LCB0cnVlKTsKKyAgb3B0aW9uKCJzcGVjaWFs
Q2hhcnMiLCAvW1x0XHUwMDAwLVx1MDAxOVx1MDBhZFx1MjAwYlx1MjAyOFx1MjAyOVx1ZmVmZl0v
ZywgZnVuY3Rpb24oY20sIHZhbCkgeworICAgIGNtLm9wdGlvbnMuc3BlY2lhbENoYXJzID0gbmV3
IFJlZ0V4cCh2YWwuc291cmNlICsgKHZhbC50ZXN0KCJcdCIpID8gIiIgOiAifFx0IiksICJnIik7
CisgICAgY20ucmVmcmVzaCgpOworICB9LCB0cnVlKTsKKyAgb3B0aW9uKCJzcGVjaWFsQ2hhclBs
YWNlaG9sZGVyIiwgZGVmYXVsdFNwZWNpYWxDaGFyUGxhY2Vob2xkZXIsIGZ1bmN0aW9uKGNtKSB7
Y20ucmVmcmVzaCgpO30sIHRydWUpOwogICBvcHRpb24oImVsZWN0cmljQ2hhcnMiLCB0cnVlKTsK
ICAgb3B0aW9uKCJydGxNb3ZlVmlzdWFsbHkiLCAhd2luZG93cyk7CisgIG9wdGlvbigid2hvbGVM
aW5lVXBkYXRlQmVmb3JlIiwgdHJ1ZSk7CiAKICAgb3B0aW9uKCJ0aGVtZSIsICJkZWZhdWx0Iiwg
ZnVuY3Rpb24oY20pIHsKICAgICB0aGVtZUNoYW5nZWQoY20pOwpAQCAtMzI4MSw5ICszMzE4LDE3
IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICBvcHRpb24oImxpbmVOdW1i
ZXJGb3JtYXR0ZXIiLCBmdW5jdGlvbihpbnRlZ2VyKSB7cmV0dXJuIGludGVnZXI7fSwgZ3V0dGVy
c0NoYW5nZWQsIHRydWUpOwogICBvcHRpb24oInNob3dDdXJzb3JXaGVuU2VsZWN0aW5nIiwgZmFs
c2UsIHVwZGF0ZVNlbGVjdGlvbiwgdHJ1ZSk7CiAKKyAgb3B0aW9uKCJyZXNldFNlbGVjdGlvbk9u
Q29udGV4dE1lbnUiLCB0cnVlKTsKKwogICBvcHRpb24oInJlYWRPbmx5IiwgZmFsc2UsIGZ1bmN0
aW9uKGNtLCB2YWwpIHsKLSAgICBpZiAodmFsID09ICJub2N1cnNvciIpIHtvbkJsdXIoY20pOyBj
bS5kaXNwbGF5LmlucHV0LmJsdXIoKTt9Ci0gICAgZWxzZSBpZiAoIXZhbCkgcmVzZXRJbnB1dChj
bSwgdHJ1ZSk7CisgICAgaWYgKHZhbCA9PSAibm9jdXJzb3IiKSB7CisgICAgICBvbkJsdXIoY20p
OworICAgICAgY20uZGlzcGxheS5pbnB1dC5ibHVyKCk7CisgICAgICBjbS5kaXNwbGF5LmRpc2Fi
bGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgY20uZGlzcGxheS5kaXNhYmxlZCA9IGZh
bHNlOworICAgICAgaWYgKCF2YWwpIHJlc2V0SW5wdXQoY20sIHRydWUpOworICAgIH0KICAgfSk7
CiAgIG9wdGlvbigiZHJhZ0Ryb3AiLCB0cnVlKTsKIApAQCAtMzUxNyw3ICszNTYyLDggQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIGtleU1hcC5iYXNpYyA9IHsKICAgICAi
TGVmdCI6ICJnb0NoYXJMZWZ0IiwgIlJpZ2h0IjogImdvQ2hhclJpZ2h0IiwgIlVwIjogImdvTGlu
ZVVwIiwgIkRvd24iOiAiZ29MaW5lRG93biIsCiAgICAgIkVuZCI6ICJnb0xpbmVFbmQiLCAiSG9t
ZSI6ICJnb0xpbmVTdGFydFNtYXJ0IiwgIlBhZ2VVcCI6ICJnb1BhZ2VVcCIsICJQYWdlRG93biI6
ICJnb1BhZ2VEb3duIiwKLSAgICAiRGVsZXRlIjogImRlbENoYXJBZnRlciIsICJCYWNrc3BhY2Ui
OiAiZGVsQ2hhckJlZm9yZSIsICJUYWIiOiAiZGVmYXVsdFRhYiIsICJTaGlmdC1UYWIiOiAiaW5k
ZW50QXV0byIsCisgICAgIkRlbGV0ZSI6ICJkZWxDaGFyQWZ0ZXIiLCAiQmFja3NwYWNlIjogImRl
bENoYXJCZWZvcmUiLCAiU2hpZnQtQmFja3NwYWNlIjogImRlbENoYXJCZWZvcmUiLAorICAgICJU
YWIiOiAiZGVmYXVsdFRhYiIsICJTaGlmdC1UYWIiOiAiaW5kZW50QXV0byIsCiAgICAgIkVudGVy
IjogIm5ld2xpbmVBbmRJbmRlbnQiLCAiSW5zZXJ0IjogInRvZ2dsZU92ZXJ3cml0ZSIKICAgfTsK
ICAgLy8gTm90ZSB0aGF0IHRoZSBzYXZlIGFuZCBmaW5kLXJlbGF0ZWQgY29tbWFuZHMgYXJlbid0
IGRlZmluZWQgYnkKQEAgLTM4MjMsNyArMzg2OSw5IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1
bmN0aW9uKCkgewogICAgIGlmIChkb2MuY20gJiYgIWRvYy5jbS5jdXJPcCkgcmV0dXJuIG9wZXJh
dGlvbihkb2MuY20sIG1hcmtUZXh0KShkb2MsIGZyb20sIHRvLCBvcHRpb25zLCB0eXBlKTsKIAog
ICAgIHZhciBtYXJrZXIgPSBuZXcgVGV4dE1hcmtlcihkb2MsIHR5cGUpOwotICAgIGlmICh0eXBl
ID09ICJyYW5nZSIgJiYgIXBvc0xlc3MoZnJvbSwgdG8pKSByZXR1cm4gbWFya2VyOworICAgIGlm
IChwb3NMZXNzKHRvLCBmcm9tKSB8fCBwb3NFcShmcm9tLCB0bykgJiYgdHlwZSA9PSAicmFuZ2Ui
ICYmCisgICAgICAgICEob3B0aW9ucy5pbmNsdXNpdmVMZWZ0ICYmIG9wdGlvbnMuaW5jbHVzaXZl
UmlnaHQpKQorICAgICAgcmV0dXJuIG1hcmtlcjsKICAgICBpZiAob3B0aW9ucykgY29weU9iaihv
cHRpb25zLCBtYXJrZXIpOwogICAgIGlmIChtYXJrZXIucmVwbGFjZWRXaXRoKSB7CiAgICAgICBt
YXJrZXIuY29sbGFwc2VkID0gdHJ1ZTsKQEAgLTM5MzksNyArMzk4Nyw5IEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIGlmIChvbGQpIGZvciAodmFyIGkgPSAwLCBudzsg
aSA8IG9sZC5sZW5ndGg7ICsraSkgewogICAgICAgdmFyIHNwYW4gPSBvbGRbaV0sIG1hcmtlciA9
IHNwYW4ubWFya2VyOwogICAgICAgdmFyIHN0YXJ0c0JlZm9yZSA9IHNwYW4uZnJvbSA9PSBudWxs
IHx8IChtYXJrZXIuaW5jbHVzaXZlTGVmdCA/IHNwYW4uZnJvbSA8PSBzdGFydENoIDogc3Bhbi5m
cm9tIDwgc3RhcnRDaCk7Ci0gICAgICBpZiAoc3RhcnRzQmVmb3JlIHx8IG1hcmtlci50eXBlID09
ICJib29rbWFyayIgJiYgc3Bhbi5mcm9tID09IHN0YXJ0Q2ggJiYgKCFpc0luc2VydCB8fCAhc3Bh
bi5tYXJrZXIuaW5zZXJ0TGVmdCkpIHsKKyAgICAgIGlmIChzdGFydHNCZWZvcmUgfHwKKyAgICAg
ICAgICAobWFya2VyLmluY2x1c2l2ZUxlZnQgJiYgbWFya2VyLmluY2x1c2l2ZVJpZ2h0IHx8IG1h
cmtlci50eXBlID09ICJib29rbWFyayIpICYmCisgICAgICAgICAgc3Bhbi5mcm9tID09IHN0YXJ0
Q2ggJiYgKCFpc0luc2VydCB8fCAhc3Bhbi5tYXJrZXIuaW5zZXJ0TGVmdCkpIHsKICAgICAgICAg
dmFyIGVuZHNBZnRlciA9IHNwYW4udG8gPT0gbnVsbCB8fCAobWFya2VyLmluY2x1c2l2ZVJpZ2h0
ID8gc3Bhbi50byA+PSBzdGFydENoIDogc3Bhbi50byA+IHN0YXJ0Q2gpOwogICAgICAgICAobncg
fHwgKG53ID0gW10pKS5wdXNoKHtmcm9tOiBzcGFuLmZyb20sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRvOiBlbmRzQWZ0ZXIgPyBudWxsIDogc3Bhbi50bywKQEAgLTQyMTIsNiAr
NDI2Miw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIHRoaXMuaGVp
Z2h0ID0gZXN0aW1hdGVIZWlnaHQgPyBlc3RpbWF0ZUhlaWdodCh0aGlzKSA6IDE7CiAgIH07CiAg
IGV2ZW50TWl4aW4oTGluZSk7CisgIExpbmUucHJvdG90eXBlLmxpbmVObyA9IGZ1bmN0aW9uKCkg
eyByZXR1cm4gbGluZU5vKHRoaXMpOyB9OwogCiAgIGZ1bmN0aW9uIHVwZGF0ZUxpbmUobGluZSwg
dGV4dCwgbWFya2VkU3BhbnMsIGVzdGltYXRlSGVpZ2h0KSB7CiAgICAgbGluZS50ZXh0ID0gdGV4
dDsKQEAgLTQyMzIsNyArNDI4Myw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICAvLyBSdW4gdGhlIGdpdmVuIG1vZGUncyBwYXJzZXIgb3ZlciBhIGxpbmUsIHVwZGF0ZSB0
aGUgc3R5bGVzCiAgIC8vIGFycmF5LCB3aGljaCBjb250YWlucyBhbHRlcm5hdGluZyBmcmFnbWVu
dHMgb2YgdGV4dCBhbmQgQ1NTCiAgIC8vIGNsYXNzZXMuCi0gIGZ1bmN0aW9uIHJ1bk1vZGUoY20s
IHRleHQsIG1vZGUsIHN0YXRlLCBmKSB7CisgIGZ1bmN0aW9uIHJ1bk1vZGUoY20sIHRleHQsIG1v
ZGUsIHN0YXRlLCBmLCBmb3JjZVRvRW5kKSB7CiAgICAgdmFyIGZsYXR0ZW5TcGFucyA9IG1vZGUu
ZmxhdHRlblNwYW5zOwogICAgIGlmIChmbGF0dGVuU3BhbnMgPT0gbnVsbCkgZmxhdHRlblNwYW5z
ID0gY20ub3B0aW9ucy5mbGF0dGVuU3BhbnM7CiAgICAgdmFyIGN1clN0YXJ0ID0gMCwgY3VyU3R5
bGUgPSBudWxsOwpAQCAtNDI0MSw2ICs0MjkyLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsKICAgICAgIGlmIChzdHJlYW0u
cG9zID4gY20ub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGgpIHsKICAgICAgICAgZmxhdHRlblNw
YW5zID0gZmFsc2U7CisgICAgICAgIGlmIChmb3JjZVRvRW5kKSBwcm9jZXNzTGluZShjbSwgdGV4
dCwgc3RhdGUsIHN0cmVhbS5wb3MpOwogICAgICAgICBzdHJlYW0ucG9zID0gdGV4dC5sZW5ndGg7
CiAgICAgICAgIHN0eWxlID0gbnVsbDsKICAgICAgIH0gZWxzZSB7CkBAIC00MjYwLDEyICs0MzEy
LDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIH0KICAgfQogCi0g
IGZ1bmN0aW9uIGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIHN0YXRlKSB7CisgIGZ1bmN0aW9uIGhp
Z2hsaWdodExpbmUoY20sIGxpbmUsIHN0YXRlLCBmb3JjZVRvRW5kKSB7CiAgICAgLy8gQSBzdHls
ZXMgYXJyYXkgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgbnVtYmVyIGlkZW50aWZ5aW5nIHRoZQogICAg
IC8vIG1vZGUvb3ZlcmxheXMgdGhhdCBpdCBpcyBiYXNlZCBvbiAoZm9yIGVhc3kgaW52YWxpZGF0
aW9uKS4KICAgICB2YXIgc3QgPSBbY20uc3RhdGUubW9kZUdlbl07CiAgICAgLy8gQ29tcHV0ZSB0
aGUgYmFzZSBhcnJheSBvZiBzdHlsZXMKLSAgICBydW5Nb2RlKGNtLCBsaW5lLnRleHQsIGNtLmRv
Yy5tb2RlLCBzdGF0ZSwgZnVuY3Rpb24oZW5kLCBzdHlsZSkge3N0LnB1c2goZW5kLCBzdHlsZSk7
fSk7CisgICAgcnVuTW9kZShjbSwgbGluZS50ZXh0LCBjbS5kb2MubW9kZSwgc3RhdGUsIGZ1bmN0
aW9uKGVuZCwgc3R5bGUpIHsKKyAgICAgIHN0LnB1c2goZW5kLCBzdHlsZSk7CisgICAgfSwgZm9y
Y2VUb0VuZCk7CiAKICAgICAvLyBSdW4gb3ZlcmxheXMsIGFkanVzdCBzdHlsZSBhcnJheS4KICAg
ICBmb3IgKHZhciBvID0gMDsgbyA8IGNtLnN0YXRlLm92ZXJsYXlzLmxlbmd0aDsgKytvKSB7CkBA
IC00MzA0LDEwICs0MzU4LDExIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewog
CiAgIC8vIExpZ2h0d2VpZ2h0IGZvcm0gb2YgaGlnaGxpZ2h0IC0tIHByb2NlZWQgb3ZlciB0aGlz
IGxpbmUgYW5kCiAgIC8vIHVwZGF0ZSBzdGF0ZSwgYnV0IGRvbid0IHNhdmUgYSBzdHlsZSBhcnJh
eS4KLSAgZnVuY3Rpb24gcHJvY2Vzc0xpbmUoY20sIGxpbmUsIHN0YXRlKSB7CisgIGZ1bmN0aW9u
IHByb2Nlc3NMaW5lKGNtLCB0ZXh0LCBzdGF0ZSwgc3RhcnRBdCkgewogICAgIHZhciBtb2RlID0g
Y20uZG9jLm1vZGU7Ci0gICAgdmFyIHN0cmVhbSA9IG5ldyBTdHJpbmdTdHJlYW0obGluZS50ZXh0
LCBjbS5vcHRpb25zLnRhYlNpemUpOwotICAgIGlmIChsaW5lLnRleHQgPT0gIiIgJiYgbW9kZS5i
bGFua0xpbmUpIG1vZGUuYmxhbmtMaW5lKHN0YXRlKTsKKyAgICB2YXIgc3RyZWFtID0gbmV3IFN0
cmluZ1N0cmVhbSh0ZXh0LCBjbS5vcHRpb25zLnRhYlNpemUpOworICAgIHN0cmVhbS5zdGFydCA9
IHN0cmVhbS5wb3MgPSBzdGFydEF0IHx8IDA7CisgICAgaWYgKHRleHQgPT0gIiIgJiYgbW9kZS5i
bGFua0xpbmUpIG1vZGUuYmxhbmtMaW5lKHN0YXRlKTsKICAgICB3aGlsZSAoIXN0cmVhbS5lb2wo
KSAmJiBzdHJlYW0ucG9zIDw9IGNtLm9wdGlvbnMubWF4SGlnaGxpZ2h0TGVuZ3RoKSB7CiAgICAg
ICBtb2RlLnRva2VuKHN0cmVhbSwgc3RhdGUpOwogICAgICAgc3RyZWFtLnN0YXJ0ID0gc3RyZWFt
LnBvczsKQEAgLTQzNjQsNyArNDQxOSw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9u
KCkgewogICAgIC8vIFdvcmsgYXJvdW5kIHByb2JsZW0gd2l0aCB0aGUgcmVwb3J0ZWQgZGltZW5z
aW9ucyBvZiBzaW5nbGUtY2hhcgogICAgIC8vIGRpcmVjdGlvbiBzcGFucyBvbiBJRSAoaXNzdWUg
IzExMjkpLiBTZWUgYWxzbyB0aGUgY29tbWVudCBpbgogICAgIC8vIGN1cnNvckNvb3Jkcy4KLSAg
ICBpZiAobWVhc3VyZSAmJiBpZSAmJiAob3JkZXIgPSBnZXRPcmRlcihsaW5lKSkpIHsKKyAgICBp
ZiAobWVhc3VyZSAmJiAoaWUgfHwgaWVfZ3QxMCkgJiYgKG9yZGVyID0gZ2V0T3JkZXIobGluZSkp
KSB7CiAgICAgICB2YXIgbCA9IG9yZGVyLmxlbmd0aCAtIDE7CiAgICAgICBpZiAob3JkZXJbbF0u
ZnJvbSA9PSBvcmRlcltsXS50bykgLS1sOwogICAgICAgdmFyIGxhc3QgPSBvcmRlcltsXSwgcHJl
diA9IG9yZGVyW2wgLSAxXTsKQEAgLTQzODIsMTcgKzQ0MzcsMjMgQEAgd2luZG93LkNvZGVNaXJy
b3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgcmV0dXJuIGJ1aWxkZXI7CiAgIH0KIAotICB2YXIgdG9r
ZW5TcGVjaWFsQ2hhcnMgPSAvW1x0XHUwMDAwLVx1MDAxOVx1MDBhZFx1MjAwYlx1MjAyOFx1MjAy
OVx1RkVGRl0vZzsKKyAgZnVuY3Rpb24gZGVmYXVsdFNwZWNpYWxDaGFyUGxhY2Vob2xkZXIoY2gp
IHsKKyAgICB2YXIgdG9rZW4gPSBlbHQoInNwYW4iLCAiXHUyMDIyIiwgImNtLWludmFsaWRjaGFy
Iik7CisgICAgdG9rZW4udGl0bGUgPSAiXFx1IiArIGNoLmNoYXJDb2RlQXQoMCkudG9TdHJpbmco
MTYpOworICAgIHJldHVybiB0b2tlbjsKKyAgfQorCiAgIGZ1bmN0aW9uIGJ1aWxkVG9rZW4oYnVp
bGRlciwgdGV4dCwgc3R5bGUsIHN0YXJ0U3R5bGUsIGVuZFN0eWxlLCB0aXRsZSkgewogICAgIGlm
ICghdGV4dCkgcmV0dXJuOwotICAgIGlmICghdG9rZW5TcGVjaWFsQ2hhcnMudGVzdCh0ZXh0KSkg
eworICAgIHZhciBzcGVjaWFsID0gYnVpbGRlci5jbS5vcHRpb25zLnNwZWNpYWxDaGFyczsKKyAg
ICBpZiAoIXNwZWNpYWwudGVzdCh0ZXh0KSkgewogICAgICAgYnVpbGRlci5jb2wgKz0gdGV4dC5s
ZW5ndGg7CiAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQp
OwogICAgIH0gZWxzZSB7CiAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3Vt
ZW50RnJhZ21lbnQoKSwgcG9zID0gMDsKICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHRv
a2VuU3BlY2lhbENoYXJzLmxhc3RJbmRleCA9IHBvczsKLSAgICAgICAgdmFyIG0gPSB0b2tlblNw
ZWNpYWxDaGFycy5leGVjKHRleHQpOworICAgICAgICBzcGVjaWFsLmxhc3RJbmRleCA9IHBvczsK
KyAgICAgICAgdmFyIG0gPSBzcGVjaWFsLmV4ZWModGV4dCk7CiAgICAgICAgIHZhciBza2lwcGVk
ID0gbSA/IG0uaW5kZXggLSBwb3MgOiB0ZXh0Lmxlbmd0aCAtIHBvczsKICAgICAgICAgaWYgKHNr
aXBwZWQpIHsKICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKHRleHQuc2xpY2UocG9zLCBwb3MgKyBza2lwcGVkKSkpOwpAQCAtNDQwNSw4ICs0NDY2
LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgY29udGVu
dC5hcHBlbmRDaGlsZChlbHQoInNwYW4iLCBzcGFjZVN0cih0YWJXaWR0aCksICJjbS10YWIiKSk7
CiAgICAgICAgICAgYnVpbGRlci5jb2wgKz0gdGFiV2lkdGg7CiAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgdmFyIHRva2VuID0gZWx0KCJzcGFuIiwgIlx1MjAyMiIsICJjbS1pbnZhbGlkY2hh
ciIpOwotICAgICAgICAgIHRva2VuLnRpdGxlID0gIlxcdSIgKyBtWzBdLmNoYXJDb2RlQXQoMCku
dG9TdHJpbmcoMTYpOworICAgICAgICAgIHZhciB0b2tlbiA9IGJ1aWxkZXIuY20ub3B0aW9ucy5z
cGVjaWFsQ2hhclBsYWNlaG9sZGVyKG1bMF0pOwogICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hp
bGQodG9rZW4pOwogICAgICAgICAgIGJ1aWxkZXIuY29sICs9IDE7CiAgICAgICAgIH0KQEAgLTQ0
NTcsNyArNDUxNyw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAg
cmV0dXJuIG91dDsKICAgICB9CiAgICAgcmV0dXJuIGZ1bmN0aW9uKGJ1aWxkZXIsIHRleHQsIHN0
eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgdGl0bGUpIHsKLSAgICAgIHJldHVybiBpbm5lcihi
dWlsZGVyLCB0ZXh0LnJlcGxhY2UoLyB7Myx9Lywgc3BsaXQpLCBzdHlsZSwgc3RhcnRTdHlsZSwg
ZW5kU3R5bGUsIHRpdGxlKTsKKyAgICAgIHJldHVybiBpbm5lcihidWlsZGVyLCB0ZXh0LnJlcGxh
Y2UoLyB7Myx9L2csIHNwbGl0KSwgc3R5bGUsIHN0YXJ0U3R5bGUsIGVuZFN0eWxlLCB0aXRsZSk7
CiAgICAgfTsKICAgfQogCkBAIC00NTU5LDcgKzQ2MTksOCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICB2YXIgbGFzdFRleHQgPSBsc3QodGV4dCksIGxhc3RTcGFucyA9
IHNwYW5zRm9yKHRleHQubGVuZ3RoIC0gMSksIG5saW5lcyA9IHRvLmxpbmUgLSBmcm9tLmxpbmU7
CiAKICAgICAvLyBGaXJzdCBhZGp1c3QgdGhlIGxpbmUgc3RydWN0dXJlCi0gICAgaWYgKGZyb20u
Y2ggPT0gMCAmJiB0by5jaCA9PSAwICYmIGxhc3RUZXh0ID09ICIiKSB7CisgICAgaWYgKGZyb20u
Y2ggPT0gMCAmJiB0by5jaCA9PSAwICYmIGxhc3RUZXh0ID09ICIiICYmCisgICAgICAgICghZG9j
LmNtIHx8IGRvYy5jbS5vcHRpb25zLndob2xlTGluZVVwZGF0ZUJlZm9yZSkpIHsKICAgICAgIC8v
IFRoaXMgaXMgYSB3aG9sZS1saW5lIHJlcGxhY2UuIFRyZWF0ZWQgc3BlY2lhbGx5IHRvIG1ha2UK
ICAgICAgIC8vIHN1cmUgbGluZSBvYmplY3RzIG1vdmUgdGhlIHdheSB0aGV5IGFyZSBzdXBwb3Nl
ZCB0by4KICAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gdGV4dC5sZW5ndGggLSAxLCBhZGRlZCA9
IFtdOyBpIDwgZTsgKytpKQpAQCAtNTQ0Niw3ICs1NTA3LDcgQEAgd2luZG93LkNvZGVNaXJyb3Ig
PSAoZnVuY3Rpb24oKSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAotICB2YXIgaXNFeHRlbmRp
bmdDaGFyID0gL1tcdTAzMDAtXHUwMzZGXHUwNDgzLVx1MDQ4N1x1MDQ4OC1cdTA0ODlcdTA1OTEt
XHUwNUJEXHUwNUJGXHUwNUMxLVx1MDVDMlx1MDVDNC1cdTA1QzVcdTA1QzdcdTA2MTAtXHUwNjFB
XHUwNjRCLVx1MDY1Rlx1MDY3MFx1MDZENi1cdTA2RENcdTA2REYtXHUwNkU0XHUwNkU3LVx1MDZF
OFx1MDZFQS1cdTA2RURcdUE2NkZcdUE2NzAtXHVBNjcyXHVBNjc0LVx1QTY3RFx1QTY5Rlx1ZGMw
MC1cdWRmZmZdLzsKKyAgdmFyIGlzRXh0ZW5kaW5nQ2hhciA9IC9bXHUwMzAwLVx1MDM2Rlx1MDQ4
My1cdTA0ODdcdTA0ODgtXHUwNDg5XHUwNTkxLVx1MDVCRFx1MDVCRlx1MDVDMS1cdTA1QzJcdTA1
QzQtXHUwNUM1XHUwNUM3XHUwNjEwLVx1MDYxQVx1MDY0Qi1cdTA2NUZcdTA2NzBcdTA2RDYtXHUw
NkRDXHUwNkRGLVx1MDZFNFx1MDZFNy1cdTA2RThcdTA2RUEtXHUwNkVEXHVBNjZGXHUxREMw4oCT
XHUxREZGXHUyMEQw4oCTXHUyMEZGXHVBNjcwLVx1QTY3Mlx1QTY3NC1cdUE2N0RcdUE2OUZcdWRj
MDAtXHVkZmZmXHVGRTIw4oCTXHVGRTJGXS87CiAKICAgLy8gRE9NIFVUSUxJVElFUwogCkBAIC01
NTA2LDggKzU1NjcsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB9
OwogICBlbHNlIGlmIChzYWZhcmkgJiYgIS9WZXJzaW9uXC8oWzYtOV18XGRcZClcYi8udGVzdChu
YXZpZ2F0b3IudXNlckFnZW50KSkKICAgICBzcGFuQWZmZWN0c1dyYXBwaW5nID0gZnVuY3Rpb24o
c3RyLCBpKSB7Ci0gICAgICB2YXIgcmVzdWx0ID0gL1wtW14gXC0/XXxcP1teICFcJ1wiXCksLlwt
XC86O1w/XF1cfV0vLnRlc3Qoc3RyLnNsaWNlKGkgLSAxLCBpICsgMSkpOwotICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgIHJldHVybiAvXC1bXiBcLT9dfFw/W14gIVwnXCJcKSwuXC1cLzo7XD9c
XVx9XS8udGVzdChzdHIuc2xpY2UoaSAtIDEsIGkgKyAxKSk7CiAgICAgfTsKICAgZWxzZSBpZiAo
d2Via2l0ICYmIC9DaHJvbWVcLyg/OjI5fFszLTldXGR8XGRcZFxkKVwuLy50ZXN0KG5hdmlnYXRv
ci51c2VyQWdlbnQpKQogICAgIHNwYW5BZmZlY3RzV3JhcHBpbmcgPSBmdW5jdGlvbihzdHIsIGkp
IHsKQEAgLTU1MjAsOCArNTU4MCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICAgICAgICBpZiAoL1x3Ly50ZXN0KHN0ci5jaGFyQXQoaSAtIDIpKSAmJiAvW15cLT9cLl0v
LnRlc3Qoc3RyLmNoYXJBdChpKSkpIHJldHVybiB0cnVlOwogICAgICAgICBpZiAoaSA+IDIgJiYg
L1tcZFwuLF0vLnRlc3Qoc3RyLmNoYXJBdChpIC0gMikpICYmIC9bXGRcLixdLy50ZXN0KHN0ci5j
aGFyQXQoaSkpKSByZXR1cm4gZmFsc2U7CiAgICAgICB9Ci0gICAgICB2YXIgcmVzdWx0ID0gL1t+
ISMlJiopPSt9XF18XCJcLj4sOjtdWyh7WzxdfC1bXlwtP1wuXHUyMDEwLVx1MjAxZlx1MjAyNl18
XD9bXHd+YEAjJCVcXiYqKF89K3tbfD48XXzigKZbXHd+YEAjJCVcXiYqKF89K3tbPjxdLy50ZXN0
KHN0ci5zbGljZShpIC0gMSwgaSArIDEpKTsKLSAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICBy
ZXR1cm4gL1t+ISMlJiopPSt9XF1cXHxcIlwuPiw6O11bKHtbPF18LVteXC0/XC5cdTIwMTAtXHUy
MDFmXHUyMDI2XXxcP1tcd35gQCMkJVxeJiooXz0re1t8PjxdfOKApltcd35gQCMkJVxeJiooXz0r
e1s+PF0vLnRlc3Qoc3RyLnNsaWNlKGkgLSAxLCBpICsgMSkpOwogICAgIH07CiAKICAgdmFyIGtu
b3duU2Nyb2xsYmFyV2lkdGg7CkBAIC01ODc3LDcgKzU5MzYsNyBAQCB3aW5kb3cuQ29kZU1pcnJv
ciA9IChmdW5jdGlvbigpIHsKIAogICAvLyBUSEUgRU5ECiAKLSAgQ29kZU1pcnJvci52ZXJzaW9u
ID0gIjMuMTYuMSI7CisgIENvZGVNaXJyb3IudmVyc2lvbiA9ICIzLjIwLjAiOwogCiAgIHJldHVy
biBDb2RlTWlycm9yOwogfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29mZmVlc2NyaXB0LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2ZmZWVz
Y3JpcHQuanMKaW5kZXggYjcyMDNmMTI0Yjk4YTM1OTNiODhmZjQzZjE0MmViZmM1NGE3MTI3OC4u
ZThiZmU0OGEyNDhiY2E2YjY5MmIxZTA4NDhkOTYwM2M1YTE0M2MxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2Zm
ZWVzY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0
ZXJuYWwvQ29kZU1pcnJvci9jb2ZmZWVzY3JpcHQuanMKQEAgLTIsMzQ3ICsyLDM1MyBAQAogICog
TGluayB0byB0aGUgcHJvamVjdCdzIEdpdEh1YiBwYWdlOgogICogaHR0cHM6Ly9naXRodWIuY29t
L3BpY2toYXJkdC9jb2ZmZWVzY3JpcHQtY29kZW1pcnJvci1tb2RlCiAgKi8KLUNvZGVNaXJyb3Iu
ZGVmaW5lTW9kZSgnY29mZmVlc2NyaXB0JywgZnVuY3Rpb24oY29uZikgewotICAgIHZhciBFUlJP
UkNMQVNTID0gJ2Vycm9yJzsKLQotICAgIGZ1bmN0aW9uIHdvcmRSZWdleHAod29yZHMpIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoIl4oKCIgKyB3b3Jkcy5qb2luKCIpfCgiKSArICIpKVxc
YiIpOwotICAgIH0KLQotICAgIHZhciBzaW5nbGVPcGVyYXRvcnMgPSBuZXcgUmVnRXhwKCJeW1xc
K1xcLVxcKi8lJnxcXF5+PD4hXD9dIik7Ci0gICAgdmFyIHNpbmdsZURlbGltaXRlcnMgPSBuZXcg
UmVnRXhwKCdeW1xcKFxcKVxcW1xcXVxce1xcfSw6YD07XFwuXScpOwotICAgIHZhciBkb3VibGVP
cGVyYXRvcnMgPSBuZXcgUmVnRXhwKCJeKChcLT4pfChcPT4pfChcXCtcXCspfChcXCtcXD0pfChc
XC1cXC0pfChcXC1cXD0pfChcXCpcXCopfChcXCpcXD0pfChcXC9cXC8pfChcXC9cXD0pfCg9PSl8
KCE9KXwoPD0pfCg+PSl8KDw+KXwoPDwpfCg+Pil8KC8vKSkiKTsKLSAgICB2YXIgZG91YmxlRGVs
aW1pdGVycyA9IG5ldyBSZWdFeHAoIl4oKFxcLlxcLil8KFxcKz0pfChcXC09KXwoXFwqPSl8KCU9
KXwoLz0pfCgmPSl8KFxcfD0pfChcXF49KSkiKTsKLSAgICB2YXIgdHJpcGxlRGVsaW1pdGVycyA9
IG5ldyBSZWdFeHAoIl4oKFxcLlxcLlxcLil8KC8vPSl8KD4+PSl8KDw8PSl8KFxcKlxcKj0pKSIp
OwotICAgIHZhciBpZGVudGlmaWVycyA9IG5ldyBSZWdFeHAoIl5bX0EtWmEteiRdW19BLVphLXok
MC05XSoiKTsKLSAgICB2YXIgcHJvcGVydGllcyA9IG5ldyBSZWdFeHAoIl4oQHx0aGlzXC4pW19B
LVphLXokXVtfQS1aYS16JDAtOV0qIik7Ci0KLSAgICB2YXIgd29yZE9wZXJhdG9ycyA9IHdvcmRS
ZWdleHAoWydhbmQnLCAnb3InLCAnbm90JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdpcycsICdpc250JywgJ2luJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdpbnN0YW5jZW9mJywgJ3R5cGVvZiddKTsKLSAgICB2YXIgaW5kZW50S2V5d29yZHMg
PSBbJ2ZvcicsICd3aGlsZScsICdsb29wJywgJ2lmJywgJ3VubGVzcycsICdlbHNlJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcsICd0cnknLCAnY2F0Y2gnLCAnZmluYWxseScs
ICdjbGFzcyddOwotICAgIHZhciBjb21tb25LZXl3b3JkcyA9IFsnYnJlYWsnLCAnYnknLCAnY29u
dGludWUnLCAnZGVidWdnZXInLCAnZGVsZXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
J2RvJywgJ2luJywgJ29mJywgJ25ldycsICdyZXR1cm4nLCAndGhlbicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICd0aGlzJywgJ3Rocm93JywgJ3doZW4nLCAndW50aWwnXTsKLQotICAgIHZh
ciBrZXl3b3JkcyA9IHdvcmRSZWdleHAoaW5kZW50S2V5d29yZHMuY29uY2F0KGNvbW1vbktleXdv
cmRzKSk7Ci0KLSAgICBpbmRlbnRLZXl3b3JkcyA9IHdvcmRSZWdleHAoaW5kZW50S2V5d29yZHMp
OwotCi0KLSAgICB2YXIgc3RyaW5nUHJlZml4ZXMgPSBuZXcgUmVnRXhwKCJeKCd7M318XCJ7M318
WydcIl0pIik7Ci0gICAgdmFyIHJlZ2V4UHJlZml4ZXMgPSBuZXcgUmVnRXhwKCJeKC97M318Lyki
KTsKLSAgICB2YXIgY29tbW9uQ29uc3RhbnRzID0gWydJbmZpbml0eScsICdOYU4nLCAndW5kZWZp
bmVkJywgJ251bGwnLCAndHJ1ZScsICdmYWxzZScsICdvbicsICdvZmYnLCAneWVzJywgJ25vJ107
Ci0gICAgdmFyIGNvbnN0YW50cyA9IHdvcmRSZWdleHAoY29tbW9uQ29uc3RhbnRzKTsKLQotICAg
IC8vIFRva2VuaXplcnMKLSAgICBmdW5jdGlvbiB0b2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgewot
ICAgICAgICAvLyBIYW5kbGUgc2NvcGUgY2hhbmdlcwotICAgICAgICBpZiAoc3RyZWFtLnNvbCgp
KSB7Ci0gICAgICAgICAgICB2YXIgc2NvcGVPZmZzZXQgPSBzdGF0ZS5zY29wZXNbMF0ub2Zmc2V0
OwotICAgICAgICAgICAgaWYgKHN0cmVhbS5lYXRTcGFjZSgpKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIGxpbmVPZmZzZXQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKLSAgICAgICAgICAgICAgICBp
ZiAobGluZU9mZnNldCA+IHNjb3BlT2Zmc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biAnaW5kZW50JzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmVPZmZzZXQgPCBzY29w
ZU9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2RlZGVudCc7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoc2NvcGVPZmZzZXQgPiAwKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGRlZGVudChzdHJlYW0sIHN0YXRlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9CitDb2RlTWlycm9yLmRlZmluZU1vZGUoImNvZmZlZXNjcmlwdCIsIGZ1bmN0aW9u
KGNvbmYpIHsKKyAgdmFyIEVSUk9SQ0xBU1MgPSAiZXJyb3IiOworCisgIGZ1bmN0aW9uIHdvcmRS
ZWdleHAod29yZHMpIHsKKyAgICByZXR1cm4gbmV3IFJlZ0V4cCgiXigoIiArIHdvcmRzLmpvaW4o
Iil8KCIpICsgIikpXFxiIik7CisgIH0KKworICB2YXIgb3BlcmF0b3JzID0gL14oPzotPnw9Pnxc
K1srPV0/fC1bXC09XT98XCpbXCo9XT98XC9bXC89XT98Wz0hXT18PFs+PF0/PT98Pj4/PT98JT0/
fCY9P3xcfD0/fFxePT98XH58IXxcPykvOworICB2YXIgZGVsaW1pdGVycyA9IC9eKD86WygpXFtc
XXt9LDpgPTtdfFwuXC4/XC4/KS87CisgIHZhciBpZGVudGlmaWVycyA9IC9eW19BLVphLXokXVtf
QS1aYS16JDAtOV0qLzsKKyAgdmFyIHByb3BlcnRpZXMgPSAvXihAfHRoaXNcLilbX0EtWmEteiRd
W19BLVphLXokMC05XSovOworCisgIHZhciB3b3JkT3BlcmF0b3JzID0gd29yZFJlZ2V4cChbImFu
ZCIsICJvciIsICJub3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcyIs
ICJpc250IiwgImluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGFu
Y2VvZiIsICJ0eXBlb2YiXSk7CisgIHZhciBpbmRlbnRLZXl3b3JkcyA9IFsiZm9yIiwgIndoaWxl
IiwgImxvb3AiLCAiaWYiLCAidW5sZXNzIiwgImVsc2UiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgInN3aXRjaCIsICJ0cnkiLCAiY2F0Y2giLCAiZmluYWxseSIsICJjbGFzcyJdOworICB2YXIg
Y29tbW9uS2V5d29yZHMgPSBbImJyZWFrIiwgImJ5IiwgImNvbnRpbnVlIiwgImRlYnVnZ2VyIiwg
ImRlbGV0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZG8iLCAiaW4iLCAib2YiLCAibmV3
IiwgInJldHVybiIsICJ0aGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlzIiwgInRo
cm93IiwgIndoZW4iLCAidW50aWwiXTsKKworICB2YXIga2V5d29yZHMgPSB3b3JkUmVnZXhwKGlu
ZGVudEtleXdvcmRzLmNvbmNhdChjb21tb25LZXl3b3JkcykpOworCisgIGluZGVudEtleXdvcmRz
ID0gd29yZFJlZ2V4cChpbmRlbnRLZXl3b3Jkcyk7CisKKworICB2YXIgc3RyaW5nUHJlZml4ZXMg
PSAvXignezN9fFwiezN9fFsnXCJdKS87CisgIHZhciByZWdleFByZWZpeGVzID0gL14oXC97M318
XC8pLzsKKyAgdmFyIGNvbW1vbkNvbnN0YW50cyA9IFsiSW5maW5pdHkiLCAiTmFOIiwgInVuZGVm
aW5lZCIsICJudWxsIiwgInRydWUiLCAiZmFsc2UiLCAib24iLCAib2ZmIiwgInllcyIsICJubyJd
OworICB2YXIgY29uc3RhbnRzID0gd29yZFJlZ2V4cChjb21tb25Db25zdGFudHMpOworCisgIC8v
IFRva2VuaXplcnMKKyAgZnVuY3Rpb24gdG9rZW5CYXNlKHN0cmVhbSwgc3RhdGUpIHsKKyAgICAv
LyBIYW5kbGUgc2NvcGUgY2hhbmdlcworICAgIGlmIChzdHJlYW0uc29sKCkpIHsKKyAgICAgIGlm
IChzdGF0ZS5zY29wZS5hbGlnbiA9PT0gbnVsbCkgc3RhdGUuc2NvcGUuYWxpZ24gPSBmYWxzZTsK
KyAgICAgIHZhciBzY29wZU9mZnNldCA9IHN0YXRlLnNjb3BlLm9mZnNldDsKKyAgICAgIGlmIChz
dHJlYW0uZWF0U3BhY2UoKSkgeworICAgICAgICB2YXIgbGluZU9mZnNldCA9IHN0cmVhbS5pbmRl
bnRhdGlvbigpOworICAgICAgICBpZiAobGluZU9mZnNldCA+IHNjb3BlT2Zmc2V0ICYmIHN0YXRl
LnNjb3BlLnR5cGUgPT0gImNvZmZlZSIpIHsKKyAgICAgICAgICByZXR1cm4gImluZGVudCI7Cisg
ICAgICAgIH0gZWxzZSBpZiAobGluZU9mZnNldCA8IHNjb3BlT2Zmc2V0KSB7CisgICAgICAgICAg
cmV0dXJuICJkZWRlbnQiOwogICAgICAgICB9Ci0gICAgICAgIGlmIChzdHJlYW0uZWF0U3BhY2Uo
KSkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIg
Y2ggPSBzdHJlYW0ucGVlaygpOwotCi0gICAgICAgIC8vIEhhbmRsZSBkb2NjbyB0aXRsZSBjb21t
ZW50IChzaW5nbGUgbGluZSkKLSAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgiIyMjIyIpKSB7Ci0g
ICAgICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7Ci0gICAgICAgICAgICByZXR1cm4gJ2NvbW1l
bnQnOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxlIG11bHRpIGxpbmUgY29tbWVudHMK
LSAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgiIyMjIikpIHsKLSAgICAgICAgICAgIHN0YXRlLnRv
a2VuaXplID0gbG9uZ0NvbW1lbnQ7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUo
c3RyZWFtLCBzdGF0ZSk7CisgICAgICAgIHJldHVybiBudWxsOworICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgaWYgKHNjb3BlT2Zmc2V0ID4gMCkgeworICAgICAgICAgIGRlZGVudChzdHJlYW0sIHN0
YXRlKTsKICAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBpZiAoc3RyZWFtLmVhdFNwYWNl
KCkpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KIAotICAgICAgICAvLyBTaW5nbGUgbGlu
ZSBjb21tZW50Ci0gICAgICAgIGlmIChjaCA9PT0gJyMnKSB7Ci0gICAgICAgICAgICBzdHJlYW0u
c2tpcFRvRW5kKCk7Ci0gICAgICAgICAgICByZXR1cm4gJ2NvbW1lbnQnOwotICAgICAgICB9Cisg
ICAgdmFyIGNoID0gc3RyZWFtLnBlZWsoKTsKIAotICAgICAgICAvLyBIYW5kbGUgbnVtYmVyIGxp
dGVyYWxzCi0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2goL14tP1swLTlcLl0vLCBmYWxzZSkpIHsK
LSAgICAgICAgICAgIHZhciBmbG9hdExpdGVyYWwgPSBmYWxzZTsKLSAgICAgICAgICAgIC8vIEZs
b2F0cwotICAgICAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XGQqXC5cZCsoZVtcK1wtXT9c
ZCspPy9pKSkgewotICAgICAgICAgICAgICBmbG9hdExpdGVyYWwgPSB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XGQrXC5cZCovKSkgewotICAg
ICAgICAgICAgICBmbG9hdExpdGVyYWwgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XC5cZCsvKSkgewotICAgICAgICAgICAgICBmbG9hdExp
dGVyYWwgPSB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoZmxvYXRMaXRl
cmFsKSB7Ci0gICAgICAgICAgICAgICAgLy8gcHJldmVudCBmcm9tIGdldHRpbmcgZXh0cmEgLiBv
biAxLi4KLSAgICAgICAgICAgICAgICBpZiAoc3RyZWFtLnBlZWsoKSA9PSAiLiIpewotICAgICAg
ICAgICAgICAgICAgICBzdHJlYW0uYmFja1VwKDEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICByZXR1cm4gJ251bWJlcic7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAv
LyBJbnRlZ2VycwotICAgICAgICAgICAgdmFyIGludExpdGVyYWwgPSBmYWxzZTsKLSAgICAgICAg
ICAgIC8vIEhleAotICAgICAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/MHhbMC05YS1mXSsv
aSkpIHsKLSAgICAgICAgICAgICAgaW50TGl0ZXJhbCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAvLyBEZWNpbWFsCi0gICAgICAgICAgICBpZiAoc3RyZWFtLm1hdGNoKC9eLT9b
MS05XVxkKihlW1wrXC1dP1xkKyk/LykpIHsKLSAgICAgICAgICAgICAgICBpbnRMaXRlcmFsID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIFplcm8gYnkgaXRzZWxmIHdpdGgg
bm8gb3RoZXIgcGllY2Ugb2YgbnVtYmVyLgotICAgICAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgv
Xi0/MCg/IVtcZHhdKS9pKSkgewotICAgICAgICAgICAgICBpbnRMaXRlcmFsID0gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpbnRMaXRlcmFsKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuICdudW1iZXInOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgLy8gSGFu
ZGxlIGRvY2NvIHRpdGxlIGNvbW1lbnQgKHNpbmdsZSBsaW5lKQorICAgIGlmIChzdHJlYW0ubWF0
Y2goIiMjIyMiKSkgeworICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOworICAgICAgcmV0dXJuICJj
b21tZW50IjsKKyAgICB9CiAKLSAgICAgICAgLy8gSGFuZGxlIHN0cmluZ3MKLSAgICAgICAgaWYg
KHN0cmVhbS5tYXRjaChzdHJpbmdQcmVmaXhlcykpIHsKLSAgICAgICAgICAgIHN0YXRlLnRva2Vu
aXplID0gdG9rZW5GYWN0b3J5KHN0cmVhbS5jdXJyZW50KCksICdzdHJpbmcnKTsKLSAgICAgICAg
ICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKLSAgICAgICAgfQotICAg
ICAgICAvLyBIYW5kbGUgcmVnZXggbGl0ZXJhbHMKLSAgICAgICAgaWYgKHN0cmVhbS5tYXRjaChy
ZWdleFByZWZpeGVzKSkgewotICAgICAgICAgICAgaWYgKHN0cmVhbS5jdXJyZW50KCkgIT0gJy8n
IHx8IHN0cmVhbS5tYXRjaCgvXi4qXC8vLCBmYWxzZSkpIHsgLy8gcHJldmVudCBoaWdobGlnaHQg
b2YgZGl2aXNpb24KLSAgICAgICAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuRmFjdG9y
eShzdHJlYW0uY3VycmVudCgpLCAnc3RyaW5nLTInKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
c3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIHN0cmVhbS5iYWNrVXAoMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
KyAgICAvLyBIYW5kbGUgbXVsdGkgbGluZSBjb21tZW50cworICAgIGlmIChzdHJlYW0ubWF0Y2go
IiMjIyIpKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IGxvbmdDb21tZW50OworICAgICAgcmV0
dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgIH0KIAotICAgICAgICAvLyBI
YW5kbGUgb3BlcmF0b3JzIGFuZCBkZWxpbWl0ZXJzCi0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2go
dHJpcGxlRGVsaW1pdGVycykgfHwgc3RyZWFtLm1hdGNoKGRvdWJsZURlbGltaXRlcnMpKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gJ3B1bmN0dWF0aW9uJzsKLSAgICAgICAgfQotICAgICAgICBpZiAo
c3RyZWFtLm1hdGNoKGRvdWJsZU9wZXJhdG9ycykKLSAgICAgICAgICAgIHx8IHN0cmVhbS5tYXRj
aChzaW5nbGVPcGVyYXRvcnMpCi0gICAgICAgICAgICB8fCBzdHJlYW0ubWF0Y2god29yZE9wZXJh
dG9ycykpIHsKLSAgICAgICAgICAgIHJldHVybiAnb3BlcmF0b3InOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChzdHJlYW0ubWF0Y2goc2luZ2xlRGVsaW1pdGVycykpIHsKLSAgICAgICAgICAgIHJl
dHVybiAncHVuY3R1YXRpb24nOwotICAgICAgICB9CisgICAgLy8gU2luZ2xlIGxpbmUgY29tbWVu
dAorICAgIGlmIChjaCA9PT0gIiMiKSB7CisgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7CisgICAg
ICByZXR1cm4gImNvbW1lbnQiOworICAgIH0KIAotICAgICAgICBpZiAoc3RyZWFtLm1hdGNoKGNv
bnN0YW50cykpIHsKLSAgICAgICAgICAgIHJldHVybiAnYXRvbSc7CisgICAgLy8gSGFuZGxlIG51
bWJlciBsaXRlcmFscworICAgIGlmIChzdHJlYW0ubWF0Y2goL14tP1swLTlcLl0vLCBmYWxzZSkp
IHsKKyAgICAgIHZhciBmbG9hdExpdGVyYWwgPSBmYWxzZTsKKyAgICAgIC8vIEZsb2F0cworICAg
ICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XGQqXC5cZCsoZVtcK1wtXT9cZCspPy9pKSkgeworICAg
ICAgICBmbG9hdExpdGVyYWwgPSB0cnVlOworICAgICAgfQorICAgICAgaWYgKHN0cmVhbS5tYXRj
aCgvXi0/XGQrXC5cZCovKSkgeworICAgICAgICBmbG9hdExpdGVyYWwgPSB0cnVlOworICAgICAg
fQorICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XC5cZCsvKSkgeworICAgICAgICBmbG9hdExp
dGVyYWwgPSB0cnVlOworICAgICAgfQorCisgICAgICBpZiAoZmxvYXRMaXRlcmFsKSB7CisgICAg
ICAgIC8vIHByZXZlbnQgZnJvbSBnZXR0aW5nIGV4dHJhIC4gb24gMS4uCisgICAgICAgIGlmIChz
dHJlYW0ucGVlaygpID09ICIuIil7CisgICAgICAgICAgc3RyZWFtLmJhY2tVcCgxKTsKICAgICAg
ICAgfQorICAgICAgICByZXR1cm4gIm51bWJlciI7CisgICAgICB9CisgICAgICAvLyBJbnRlZ2Vy
cworICAgICAgdmFyIGludExpdGVyYWwgPSBmYWxzZTsKKyAgICAgIC8vIEhleAorICAgICAgaWYg
KHN0cmVhbS5tYXRjaCgvXi0/MHhbMC05YS1mXSsvaSkpIHsKKyAgICAgICAgaW50TGl0ZXJhbCA9
IHRydWU7CisgICAgICB9CisgICAgICAvLyBEZWNpbWFsCisgICAgICBpZiAoc3RyZWFtLm1hdGNo
KC9eLT9bMS05XVxkKihlW1wrXC1dP1xkKyk/LykpIHsKKyAgICAgICAgaW50TGl0ZXJhbCA9IHRy
dWU7CisgICAgICB9CisgICAgICAvLyBaZXJvIGJ5IGl0c2VsZiB3aXRoIG5vIG90aGVyIHBpZWNl
IG9mIG51bWJlci4KKyAgICAgIGlmIChzdHJlYW0ubWF0Y2goL14tPzAoPyFbXGR4XSkvaSkpIHsK
KyAgICAgICAgaW50TGl0ZXJhbCA9IHRydWU7CisgICAgICB9CisgICAgICBpZiAoaW50TGl0ZXJh
bCkgeworICAgICAgICByZXR1cm4gIm51bWJlciI7CisgICAgICB9CisgICAgfQogCi0gICAgICAg
IGlmIChzdHJlYW0ubWF0Y2goa2V5d29yZHMpKSB7Ci0gICAgICAgICAgICByZXR1cm4gJ2tleXdv
cmQnOwotICAgICAgICB9CisgICAgLy8gSGFuZGxlIHN0cmluZ3MKKyAgICBpZiAoc3RyZWFtLm1h
dGNoKHN0cmluZ1ByZWZpeGVzKSkgeworICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkZhY3Rv
cnkoc3RyZWFtLmN1cnJlbnQoKSwgInN0cmluZyIpOworICAgICAgcmV0dXJuIHN0YXRlLnRva2Vu
aXplKHN0cmVhbSwgc3RhdGUpOworICAgIH0KKyAgICAvLyBIYW5kbGUgcmVnZXggbGl0ZXJhbHMK
KyAgICBpZiAoc3RyZWFtLm1hdGNoKHJlZ2V4UHJlZml4ZXMpKSB7CisgICAgICBpZiAoc3RyZWFt
LmN1cnJlbnQoKSAhPSAiLyIgfHwgc3RyZWFtLm1hdGNoKC9eLipcLy8sIGZhbHNlKSkgeyAvLyBw
cmV2ZW50IGhpZ2hsaWdodCBvZiBkaXZpc2lvbgorICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRv
a2VuRmFjdG9yeShzdHJlYW0uY3VycmVudCgpLCAic3RyaW5nLTIiKTsKKyAgICAgICAgcmV0dXJu
IHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg
c3RyZWFtLmJhY2tVcCgxKTsKKyAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgaWYgKHN0cmVhbS5t
YXRjaChpZGVudGlmaWVycykpIHsKLSAgICAgICAgICAgIHJldHVybiAndmFyaWFibGUnOwotICAg
ICAgICB9CisgICAgLy8gSGFuZGxlIG9wZXJhdG9ycyBhbmQgZGVsaW1pdGVycworICAgIGlmIChz
dHJlYW0ubWF0Y2gob3BlcmF0b3JzKSB8fCBzdHJlYW0ubWF0Y2god29yZE9wZXJhdG9ycykpIHsK
KyAgICAgIHJldHVybiAib3BlcmF0b3IiOworICAgIH0KKyAgICBpZiAoc3RyZWFtLm1hdGNoKGRl
bGltaXRlcnMpKSB7CisgICAgICByZXR1cm4gInB1bmN0dWF0aW9uIjsKKyAgICB9CiAKLSAgICAg
ICAgaWYgKHN0cmVhbS5tYXRjaChwcm9wZXJ0aWVzKSkgewotICAgICAgICAgICAgcmV0dXJuICdw
cm9wZXJ0eSc7Ci0gICAgICAgIH0KKyAgICBpZiAoc3RyZWFtLm1hdGNoKGNvbnN0YW50cykpIHsK
KyAgICAgIHJldHVybiAiYXRvbSI7CisgICAgfQogCi0gICAgICAgIC8vIEhhbmRsZSBub24tZGV0
ZWN0ZWQgaXRlbXMKLSAgICAgICAgc3RyZWFtLm5leHQoKTsKLSAgICAgICAgcmV0dXJuIEVSUk9S
Q0xBU1M7CisgICAgaWYgKHN0cmVhbS5tYXRjaChrZXl3b3JkcykpIHsKKyAgICAgIHJldHVybiAi
a2V5d29yZCI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gdG9rZW5GYWN0b3J5KGRlbGltaXRlciwg
b3V0Y2xhc3MpIHsKLSAgICAgICAgdmFyIHNpbmdsZWxpbmUgPSBkZWxpbWl0ZXIubGVuZ3RoID09
IDE7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7Ci0gICAgICAgICAg
ICB3aGlsZSAoIXN0cmVhbS5lb2woKSkgewotICAgICAgICAgICAgICAgIHN0cmVhbS5lYXRXaGls
ZSgvW14nIlwvXFxdLyk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmVhbS5lYXQoJ1xcJykpIHsK
LSAgICAgICAgICAgICAgICAgICAgc3RyZWFtLm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHNpbmdsZWxpbmUgJiYgc3RyZWFtLmVvbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gb3V0Y2xhc3M7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHN0cmVhbS5tYXRjaChkZWxpbWl0ZXIpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gb3V0Y2xhc3M7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgc3RyZWFtLmVhdCgvWyciXC9dLyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHNpbmdsZWxpbmUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29u
Zi5tb2RlLnNpbmdsZUxpbmVTdHJpbmdFcnJvcnMpIHsKLSAgICAgICAgICAgICAgICAgICAgb3V0
Y2xhc3MgPSBFUlJPUkNMQVNTOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBvdXRjbGFzczsKLSAgICAgICAgfTsK
KyAgICBpZiAoc3RyZWFtLm1hdGNoKGlkZW50aWZpZXJzKSkgeworICAgICAgcmV0dXJuICJ2YXJp
YWJsZSI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gbG9uZ0NvbW1lbnQoc3RyZWFtLCBzdGF0ZSkg
ewotICAgICAgICB3aGlsZSAoIXN0cmVhbS5lb2woKSkgewotICAgICAgICAgICAgc3RyZWFtLmVh
dFdoaWxlKC9bXiNdLyk7Ci0gICAgICAgICAgICBpZiAoc3RyZWFtLm1hdGNoKCIjIyMiKSkgewot
ICAgICAgICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKCIj
Iik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJjb21tZW50IjsKKyAgICBpZiAoc3RyZWFt
Lm1hdGNoKHByb3BlcnRpZXMpKSB7CisgICAgICByZXR1cm4gInByb3BlcnR5IjsKICAgICB9CiAK
LSAgICBmdW5jdGlvbiBpbmRlbnQoc3RyZWFtLCBzdGF0ZSwgdHlwZSkgewotICAgICAgICB0eXBl
ID0gdHlwZSB8fCAnY29mZmVlJzsKLSAgICAgICAgdmFyIGluZGVudFVuaXQgPSAwOwotICAgICAg
ICBpZiAodHlwZSA9PT0gJ2NvZmZlZScpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc3RhdGUuc2NvcGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRl
LnNjb3Blc1tpXS50eXBlID09PSAnY29mZmVlJykgewotICAgICAgICAgICAgICAgICAgICBpbmRl
bnRVbml0ID0gc3RhdGUuc2NvcGVzW2ldLm9mZnNldCArIGNvbmYuaW5kZW50VW5pdDsKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQor
ICAgIC8vIEhhbmRsZSBub24tZGV0ZWN0ZWQgaXRlbXMKKyAgICBzdHJlYW0ubmV4dCgpOworICAg
IHJldHVybiBFUlJPUkNMQVNTOworICB9CisKKyAgZnVuY3Rpb24gdG9rZW5GYWN0b3J5KGRlbGlt
aXRlciwgb3V0Y2xhc3MpIHsKKyAgICB2YXIgc2luZ2xlbGluZSA9IGRlbGltaXRlci5sZW5ndGgg
PT0gMTsKKyAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgd2hpbGUg
KCFzdHJlYW0uZW9sKCkpIHsKKyAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXiciXC9cXF0vKTsK
KyAgICAgICAgaWYgKHN0cmVhbS5lYXQoIlxcIikpIHsKKyAgICAgICAgICBzdHJlYW0ubmV4dCgp
OworICAgICAgICAgIGlmIChzaW5nbGVsaW5lICYmIHN0cmVhbS5lb2woKSkgeworICAgICAgICAg
ICAgcmV0dXJuIG91dGNsYXNzOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzdHJl
YW0ubWF0Y2goZGVsaW1pdGVyKSkgeworICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5C
YXNlOworICAgICAgICAgIHJldHVybiBvdXRjbGFzczsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGluZGVudFVuaXQgPSBzdHJlYW0uY29sdW1uKCkgKyBzdHJlYW0uY3VycmVudCgpLmxl
bmd0aDsKKyAgICAgICAgICBzdHJlYW0uZWF0KC9bJyJcL10vKTsKICAgICAgICAgfQotICAgICAg
ICBzdGF0ZS5zY29wZXMudW5zaGlmdCh7Ci0gICAgICAgICAgICBvZmZzZXQ6IGluZGVudFVuaXQs
Ci0gICAgICAgICAgICB0eXBlOiB0eXBlCi0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGRlZGVudChzdHJlYW0sIHN0YXRlKSB7Ci0gICAgICAgIGlmIChzdGF0ZS5zY29wZXMubGVu
Z3RoID09IDEpIHJldHVybjsKLSAgICAgICAgaWYgKHN0YXRlLnNjb3Blc1swXS50eXBlID09PSAn
Y29mZmVlJykgewotICAgICAgICAgICAgdmFyIF9pbmRlbnQgPSBzdHJlYW0uaW5kZW50YXRpb24o
KTsKLSAgICAgICAgICAgIHZhciBfaW5kZW50X2luZGV4ID0gLTE7Ci0gICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHN0YXRlLnNjb3Blcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
ICAgIGlmIChfaW5kZW50ID09PSBzdGF0ZS5zY29wZXNbaV0ub2Zmc2V0KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIF9pbmRlbnRfaW5kZXggPSBpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoX2luZGVu
dF9pbmRleCA9PT0gLTEpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHdoaWxlIChzdGF0ZS5zY29wZXNbMF0ub2Zmc2V0ICE9PSBfaW5k
ZW50KSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUuc2NvcGVzLnNoaWZ0KCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBpZiAoc2luZ2xl
bGluZSkgeworICAgICAgICBpZiAoY29uZi5tb2RlLnNpbmdsZUxpbmVTdHJpbmdFcnJvcnMpIHsK
KyAgICAgICAgICBvdXRjbGFzcyA9IEVSUk9SQ0xBU1M7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBzdGF0ZS5zY29wZXMuc2hpZnQoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTsKICAgICAgICAgfQorICAgICAg
fQorICAgICAgcmV0dXJuIG91dGNsYXNzOworICAgIH07CisgIH0KKworICBmdW5jdGlvbiBsb25n
Q29tbWVudChzdHJlYW0sIHN0YXRlKSB7CisgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsKKyAg
ICAgIHN0cmVhbS5lYXRXaGlsZSgvW14jXS8pOworICAgICAgaWYgKHN0cmVhbS5tYXRjaCgiIyMj
IikpIHsKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7CisgICAgICAgIGJyZWFr
OworICAgICAgfQorICAgICAgc3RyZWFtLmVhdFdoaWxlKCIjIik7CiAgICAgfQotCi0gICAgZnVu
Y3Rpb24gdG9rZW5MZXhlcihzdHJlYW0sIHN0YXRlKSB7Ci0gICAgICAgIHZhciBzdHlsZSA9IHN0
YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOwotICAgICAgICB2YXIgY3VycmVudCA9IHN0cmVh
bS5jdXJyZW50KCk7Ci0KLSAgICAgICAgLy8gSGFuZGxlICcuJyBjb25uZWN0ZWQgaWRlbnRpZmll
cnMKLSAgICAgICAgaWYgKGN1cnJlbnQgPT09ICcuJykgewotICAgICAgICAgICAgc3R5bGUgPSBz
dGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKLSAgICAgICAgICAgIGN1cnJlbnQgPSBzdHJl
YW0uY3VycmVudCgpOwotICAgICAgICAgICAgaWYgKC9eXC5bXHckXSskLy50ZXN0KGN1cnJlbnQp
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICd2YXJpYWJsZSc7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUkNMQVNTOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxlIHNjb3BlIGNoYW5nZXMuCi0gICAgICAgIGlm
IChjdXJyZW50ID09PSAncmV0dXJuJykgewotICAgICAgICAgICAgc3RhdGUuZGVkZW50ICs9IDE7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCgoY3VycmVudCA9PT0gJy0+JyB8fCBjdXJyZW50ID09
PSAnPT4nKSAmJgotICAgICAgICAgICAgICAgICAgIXN0YXRlLmxhbWJkYSAmJgotICAgICAgICAg
ICAgICAgICAgc3RhdGUuc2NvcGVzWzBdLnR5cGUgPT0gJ2NvZmZlZScgJiYKLSAgICAgICAgICAg
ICAgICAgIHN0cmVhbS5wZWVrKCkgPT09ICcnKQotICAgICAgICAgICAgICAgfHwgc3R5bGUgPT09
ICdpbmRlbnQnKSB7Ci0gICAgICAgICAgICBpbmRlbnQoc3RyZWFtLCBzdGF0ZSk7Ci0gICAgICAg
IH0KLSAgICAgICAgdmFyIGRlbGltaXRlcl9pbmRleCA9ICdbKHsnLmluZGV4T2YoY3VycmVudCk7
Ci0gICAgICAgIGlmIChkZWxpbWl0ZXJfaW5kZXggIT09IC0xKSB7Ci0gICAgICAgICAgICBpbmRl
bnQoc3RyZWFtLCBzdGF0ZSwgJ10pfScuc2xpY2UoZGVsaW1pdGVyX2luZGV4LCBkZWxpbWl0ZXJf
aW5kZXgrMSkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbmRlbnRLZXl3b3Jkcy5leGVjKGN1
cnJlbnQpKXsKLSAgICAgICAgICAgIGluZGVudChzdHJlYW0sIHN0YXRlKTsKLSAgICAgICAgfQot
ICAgICAgICBpZiAoY3VycmVudCA9PSAndGhlbicpewotICAgICAgICAgICAgZGVkZW50KHN0cmVh
bSwgc3RhdGUpOwotICAgICAgICB9Ci0KLQotICAgICAgICBpZiAoc3R5bGUgPT09ICdkZWRlbnQn
KSB7Ci0gICAgICAgICAgICBpZiAoZGVkZW50KHN0cmVhbSwgc3RhdGUpKSB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIEVSUk9SQ0xBU1M7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgZGVsaW1pdGVyX2luZGV4ID0gJ10pfScuaW5kZXhPZihjdXJyZW50KTsKLSAgICAgICAgaWYg
KGRlbGltaXRlcl9pbmRleCAhPT0gLTEpIHsKLSAgICAgICAgICAgIGlmIChkZWRlbnQoc3RyZWFt
LCBzdGF0ZSkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JDTEFTUzsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoc3RhdGUuZGVkZW50ID4gMCAmJiBzdHJlYW0u
ZW9sKCkgJiYgc3RhdGUuc2NvcGVzWzBdLnR5cGUgPT0gJ2NvZmZlZScpIHsKLSAgICAgICAgICAg
IGlmIChzdGF0ZS5zY29wZXMubGVuZ3RoID4gMSkgc3RhdGUuc2NvcGVzLnNoaWZ0KCk7Ci0gICAg
ICAgICAgICBzdGF0ZS5kZWRlbnQgLT0gMTsKKyAgICByZXR1cm4gImNvbW1lbnQiOworICB9CisK
KyAgZnVuY3Rpb24gaW5kZW50KHN0cmVhbSwgc3RhdGUsIHR5cGUpIHsKKyAgICB0eXBlID0gdHlw
ZSB8fCAiY29mZmVlIjsKKyAgICB2YXIgb2Zmc2V0ID0gMCwgYWxpZ24gPSBmYWxzZSwgYWxpZ25P
ZmZzZXQgPSBudWxsOworICAgIGZvciAodmFyIHNjb3BlID0gc3RhdGUuc2NvcGU7IHNjb3BlOyBz
Y29wZSA9IHNjb3BlLnByZXYpIHsKKyAgICAgIGlmIChzY29wZS50eXBlID09PSAiY29mZmVlIikg
eworICAgICAgICBvZmZzZXQgPSBzY29wZS5vZmZzZXQgKyBjb25mLmluZGVudFVuaXQ7CisgICAg
ICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZiAodHlwZSAhPT0gImNvZmZlZSIpIHsK
KyAgICAgIGFsaWduID0gbnVsbDsKKyAgICAgIGFsaWduT2Zmc2V0ID0gc3RyZWFtLmNvbHVtbigp
ICsgc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGg7CisgICAgfSBlbHNlIGlmIChzdGF0ZS5zY29wZS5h
bGlnbikgeworICAgICAgc3RhdGUuc2NvcGUuYWxpZ24gPSBmYWxzZTsKKyAgICB9CisgICAgc3Rh
dGUuc2NvcGUgPSB7CisgICAgICBvZmZzZXQ6IG9mZnNldCwKKyAgICAgIHR5cGU6IHR5cGUsCisg
ICAgICBwcmV2OiBzdGF0ZS5zY29wZSwKKyAgICAgIGFsaWduOiBhbGlnbiwKKyAgICAgIGFsaWdu
T2Zmc2V0OiBhbGlnbk9mZnNldAorICAgIH07CisgIH0KKworICBmdW5jdGlvbiBkZWRlbnQoc3Ry
ZWFtLCBzdGF0ZSkgeworICAgIGlmICghc3RhdGUuc2NvcGUucHJldikgcmV0dXJuOworICAgIGlm
IChzdGF0ZS5zY29wZS50eXBlID09PSAiY29mZmVlIikgeworICAgICAgdmFyIF9pbmRlbnQgPSBz
dHJlYW0uaW5kZW50YXRpb24oKTsKKyAgICAgIHZhciBtYXRjaGVkID0gZmFsc2U7CisgICAgICBm
b3IgKHZhciBzY29wZSA9IHN0YXRlLnNjb3BlOyBzY29wZTsgc2NvcGUgPSBzY29wZS5wcmV2KSB7
CisgICAgICAgIGlmIChfaW5kZW50ID09PSBzY29wZS5vZmZzZXQpIHsKKyAgICAgICAgICBtYXRj
aGVkID0gdHJ1ZTsKKyAgICAgICAgICBicmVhazsKICAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biBzdHlsZTsKKyAgICAgIH0KKyAgICAgIGlmICghbWF0Y2hlZCkgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgIH0KKyAgICAgIHdoaWxlIChzdGF0ZS5zY29wZS5wcmV2ICYmIHN0YXRlLnNj
b3BlLm9mZnNldCAhPT0gX2luZGVudCkgeworICAgICAgICBzdGF0ZS5zY29wZSA9IHN0YXRlLnNj
b3BlLnByZXY7CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSBlbHNlIHsKKyAg
ICAgIHN0YXRlLnNjb3BlID0gc3RhdGUuc2NvcGUucHJldjsKKyAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgIH0KKworICBmdW5jdGlvbiB0b2tlbkxleGVyKHN0cmVhbSwgc3RhdGUpIHsKKyAg
ICB2YXIgc3R5bGUgPSBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKKyAgICB2YXIgY3Vy
cmVudCA9IHN0cmVhbS5jdXJyZW50KCk7CisKKyAgICAvLyBIYW5kbGUgIi4iIGNvbm5lY3RlZCBp
ZGVudGlmaWVycworICAgIGlmIChjdXJyZW50ID09PSAiLiIpIHsKKyAgICAgIHN0eWxlID0gc3Rh
dGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgICBjdXJyZW50ID0gc3RyZWFtLmN1cnJl
bnQoKTsKKyAgICAgIGlmICgvXlwuW1x3JF0rJC8udGVzdChjdXJyZW50KSkgeworICAgICAgICBy
ZXR1cm4gInZhcmlhYmxlIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBFUlJPUkNM
QVNTOworICAgICAgfQogICAgIH0KIAotICAgIHZhciBleHRlcm5hbCA9IHsKLSAgICAgICAgc3Rh
cnRTdGF0ZTogZnVuY3Rpb24oYmFzZWNvbHVtbikgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAg
ICAgICAgICAgICAgdG9rZW5pemU6IHRva2VuQmFzZSwKLSAgICAgICAgICAgICAgc2NvcGVzOiBb
e29mZnNldDpiYXNlY29sdW1uIHx8IDAsIHR5cGU6J2NvZmZlZSd9XSwKLSAgICAgICAgICAgICAg
bGFzdFRva2VuOiBudWxsLAotICAgICAgICAgICAgICBsYW1iZGE6IGZhbHNlLAotICAgICAgICAg
ICAgICBkZWRlbnQ6IDAKLSAgICAgICAgICB9OwotICAgICAgICB9LAotCi0gICAgICAgIHRva2Vu
OiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7Ci0gICAgICAgICAgICB2YXIgc3R5bGUgPSB0b2tl
bkxleGVyKHN0cmVhbSwgc3RhdGUpOwotCi0gICAgICAgICAgICBzdGF0ZS5sYXN0VG9rZW4gPSB7
c3R5bGU6c3R5bGUsIGNvbnRlbnQ6IHN0cmVhbS5jdXJyZW50KCl9OwotCi0gICAgICAgICAgICBp
ZiAoc3RyZWFtLmVvbCgpICYmIHN0cmVhbS5sYW1iZGEpIHsKLSAgICAgICAgICAgICAgICBzdGF0
ZS5sYW1iZGEgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHN0
eWxlOwotICAgICAgICB9LAorICAgIC8vIEhhbmRsZSBzY29wZSBjaGFuZ2VzLgorICAgIGlmIChj
dXJyZW50ID09PSAicmV0dXJuIikgeworICAgICAgc3RhdGUuZGVkZW50ICs9IDE7CisgICAgfQor
ICAgIGlmICgoKGN1cnJlbnQgPT09ICItPiIgfHwgY3VycmVudCA9PT0gIj0+IikgJiYKKyAgICAg
ICAgICFzdGF0ZS5sYW1iZGEgJiYKKyAgICAgICAgICFzdHJlYW0ucGVlaygpKQorICAgICAgICB8
fCBzdHlsZSA9PT0gImluZGVudCIpIHsKKyAgICAgIGluZGVudChzdHJlYW0sIHN0YXRlKTsKKyAg
ICB9CisgICAgdmFyIGRlbGltaXRlcl9pbmRleCA9ICJbKHsiLmluZGV4T2YoY3VycmVudCk7Cisg
ICAgaWYgKGRlbGltaXRlcl9pbmRleCAhPT0gLTEpIHsKKyAgICAgIGluZGVudChzdHJlYW0sIHN0
YXRlLCAiXSl9Ii5zbGljZShkZWxpbWl0ZXJfaW5kZXgsIGRlbGltaXRlcl9pbmRleCsxKSk7Cisg
ICAgfQorICAgIGlmIChpbmRlbnRLZXl3b3Jkcy5leGVjKGN1cnJlbnQpKXsKKyAgICAgIGluZGVu
dChzdHJlYW0sIHN0YXRlKTsKKyAgICB9CisgICAgaWYgKGN1cnJlbnQgPT0gInRoZW4iKXsKKyAg
ICAgIGRlZGVudChzdHJlYW0sIHN0YXRlKTsKKyAgICB9CiAKLSAgICAgICAgaW5kZW50OiBmdW5j
dGlvbihzdGF0ZSkgewotICAgICAgICAgICAgaWYgKHN0YXRlLnRva2VuaXplICE9IHRva2VuQmFz
ZSkgewotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICByZXR1cm4gc3RhdGUuc2NvcGVzWzBdLm9mZnNldDsKLSAgICAgICAgfSwKKyAgICBpZiAo
c3R5bGUgPT09ICJkZWRlbnQiKSB7CisgICAgICBpZiAoZGVkZW50KHN0cmVhbSwgc3RhdGUpKSB7
CisgICAgICAgIHJldHVybiBFUlJPUkNMQVNTOworICAgICAgfQorICAgIH0KKyAgICBkZWxpbWl0
ZXJfaW5kZXggPSAiXSl9Ii5pbmRleE9mKGN1cnJlbnQpOworICAgIGlmIChkZWxpbWl0ZXJfaW5k
ZXggIT09IC0xKSB7CisgICAgICB3aGlsZSAoc3RhdGUuc2NvcGUudHlwZSA9PSAiY29mZmVlIiAm
JiBzdGF0ZS5zY29wZS5wcmV2KQorICAgICAgICBzdGF0ZS5zY29wZSA9IHN0YXRlLnNjb3BlLnBy
ZXY7CisgICAgICBpZiAoc3RhdGUuc2NvcGUudHlwZSA9PSBjdXJyZW50KQorICAgICAgICBzdGF0
ZS5zY29wZSA9IHN0YXRlLnNjb3BlLnByZXY7CisgICAgfQorICAgIGlmIChzdGF0ZS5kZWRlbnQg
PiAwICYmIHN0cmVhbS5lb2woKSAmJiBzdGF0ZS5zY29wZS50eXBlID09ICJjb2ZmZWUiKSB7Cisg
ICAgICBpZiAoc3RhdGUuc2NvcGUucHJldikgc3RhdGUuc2NvcGUgPSBzdGF0ZS5zY29wZS5wcmV2
OworICAgICAgc3RhdGUuZGVkZW50IC09IDE7CisgICAgfQogCi0gICAgICAgIGxpbmVDb21tZW50
OiAiIyIsCi0gICAgICAgIGZvbGQ6ICJpbmRlbnQiCi0gICAgfTsKLSAgICByZXR1cm4gZXh0ZXJu
YWw7CisgICAgcmV0dXJuIHN0eWxlOworICB9CisKKyAgdmFyIGV4dGVybmFsID0geworICAgIHN0
YXJ0U3RhdGU6IGZ1bmN0aW9uKGJhc2Vjb2x1bW4pIHsKKyAgICAgIHJldHVybiB7CisgICAgICAg
IHRva2VuaXplOiB0b2tlbkJhc2UsCisgICAgICAgIHNjb3BlOiB7b2Zmc2V0OmJhc2Vjb2x1bW4g
fHwgMCwgdHlwZToiY29mZmVlIiwgcHJldjogbnVsbCwgYWxpZ246IGZhbHNlfSwKKyAgICAgICAg
bGFzdFRva2VuOiBudWxsLAorICAgICAgICBsYW1iZGE6IGZhbHNlLAorICAgICAgICBkZWRlbnQ6
IDAKKyAgICAgIH07CisgICAgfSwKKworICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRl
KSB7CisgICAgICB2YXIgZmlsbEFsaWduID0gc3RhdGUuc2NvcGUuYWxpZ24gPT09IG51bGwgJiYg
c3RhdGUuc2NvcGU7CisgICAgICBpZiAoZmlsbEFsaWduICYmIHN0cmVhbS5zb2woKSkgZmlsbEFs
aWduLmFsaWduID0gZmFsc2U7CisKKyAgICAgIHZhciBzdHlsZSA9IHRva2VuTGV4ZXIoc3RyZWFt
LCBzdGF0ZSk7CisgICAgICBpZiAoZmlsbEFsaWduICYmIHN0eWxlICYmIHN0eWxlICE9ICJjb21t
ZW50IikgZmlsbEFsaWduLmFsaWduID0gdHJ1ZTsKKworICAgICAgc3RhdGUubGFzdFRva2VuID0g
e3N0eWxlOnN0eWxlLCBjb250ZW50OiBzdHJlYW0uY3VycmVudCgpfTsKKworICAgICAgaWYgKHN0
cmVhbS5lb2woKSAmJiBzdHJlYW0ubGFtYmRhKSB7CisgICAgICAgIHN0YXRlLmxhbWJkYSA9IGZh
bHNlOworICAgICAgfQorCisgICAgICByZXR1cm4gc3R5bGU7CisgICAgfSwKKworICAgIGluZGVu
dDogZnVuY3Rpb24oc3RhdGUsIHRleHQpIHsKKyAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSAhPSB0
b2tlbkJhc2UpIHJldHVybiAwOworICAgICAgdmFyIHNjb3BlID0gc3RhdGUuc2NvcGU7CisgICAg
ICB2YXIgY2xvc2VyID0gdGV4dCAmJiAiXSl9Ii5pbmRleE9mKHRleHQuY2hhckF0KDApKSA+IC0x
OworICAgICAgaWYgKGNsb3Nlcikgd2hpbGUgKHNjb3BlLnR5cGUgPT0gImNvZmZlZSIgJiYgc2Nv
cGUucHJldikgc2NvcGUgPSBzY29wZS5wcmV2OworICAgICAgdmFyIGNsb3NlcyA9IGNsb3NlciAm
JiBzY29wZS50eXBlID09PSB0ZXh0LmNoYXJBdCgwKTsKKyAgICAgIGlmIChzY29wZS5hbGlnbikK
KyAgICAgICAgcmV0dXJuIHNjb3BlLmFsaWduT2Zmc2V0IC0gKGNsb3NlcyA/IDEgOiAwKTsKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIChjbG9zZXMgPyBzY29wZS5wcmV2IDogc2NvcGUpLm9m
ZnNldDsKKyAgICB9LAorCisgICAgbGluZUNvbW1lbnQ6ICIjIiwKKyAgICBmb2xkOiAiaW5kZW50
IgorICB9OworICByZXR1cm4gZXh0ZXJuYWw7CiB9KTsKIAotQ29kZU1pcnJvci5kZWZpbmVNSU1F
KCd0ZXh0L3gtY29mZmVlc2NyaXB0JywgJ2NvZmZlZXNjcmlwdCcpOworQ29kZU1pcnJvci5kZWZp
bmVNSU1FKCJ0ZXh0L3gtY29mZmVlc2NyaXB0IiwgImNvZmZlZXNjcmlwdCIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJv
ci9jc3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9D
b2RlTWlycm9yL2Nzcy5qcwppbmRleCAwODViMTE5ZGU0ZGZjODJmNWY3NDNjYTUyYTJmODA0NTkw
Y2E1ZjQxLi5kOGMzMGNmMzNkNmZlMWI1YjQ1MmYzOWU2ZmFhMGFhZTlhMzYxYWY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWly
cm9yL2Nzcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRl
cm5hbC9Db2RlTWlycm9yL2Nzcy5qcwpAQCAtMyw3ICszLDcgQEAgQ29kZU1pcnJvci5kZWZpbmVN
b2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogCiAgIGlmICghcGFy
c2VyQ29uZmlnLnByb3BlcnR5S2V5d29yZHMpIHBhcnNlckNvbmZpZyA9IENvZGVNaXJyb3IucmVz
b2x2ZU1vZGUoInRleHQvY3NzIik7CiAKLSAgdmFyIGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50
VW5pdCwKKyAgdmFyIGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50VW5pdCB8fCBjb25maWcudGFi
U2l6ZSB8fCAyLAogICAgICAgaG9va3MgPSBwYXJzZXJDb25maWcuaG9va3MgfHwge30sCiAgICAg
ICBhdE1lZGlhVHlwZXMgPSBwYXJzZXJDb25maWcuYXRNZWRpYVR5cGVzIHx8IHt9LAogICAgICAg
YXRNZWRpYUZlYXR1cmVzID0gcGFyc2VyQ29uZmlnLmF0TWVkaWFGZWF0dXJlcyB8fCB7fSwKQEAg
LTM3LDcgKzM3LDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MiLCBmdW5jdGlvbihjb25m
aWcsIHBhcnNlckNvbmZpZykgewogICAgICAgc3RyZWFtLm1hdGNoKC9eXHMqXHcqLyk7CiAgICAg
ICByZXR1cm4gcmV0KCJrZXl3b3JkIiwgImltcG9ydGFudCIpOwogICAgIH0KLSAgICBlbHNlIGlm
ICgvXGQvLnRlc3QoY2gpKSB7CisgICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSB8fCBjaCA9PSAi
LiIgJiYgc3RyZWFtLmVhdCgvXGQvKSkgewogICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHcuJV0v
KTsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJ1bml0Iik7CiAgICAgfQpAQCAtMjU5LDgg
KzI1OSwxMyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywg
cGFyc2VyQ29uZmlnKSB7CiAgICAgICB9CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJ9Iikgewog
ICAgICAgICBpZiAoY29udGV4dCA9PSAiaW50ZXJwb2xhdGlvbiIpIHN0eWxlID0gIm9wZXJhdG9y
IjsKLSAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7Ci0gICAgICAgIGlmIChjb250ZXh0ID09ICJw
cm9wZXJ0eVZhbHVlIikgc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICAgIC8vIFBvcCBvZmYgZW5k
IG9mIGFycmF5IHVudGlsIHsgaXMgcmVhY2hlZAorICAgICAgICB3aGlsZShzdGF0ZS5zdGFjay5s
ZW5ndGgpeworICAgICAgICAgIHZhciByZW1vdmVkID0gc3RhdGUuc3RhY2sucG9wKCk7CisgICAg
ICAgICAgaWYocmVtb3ZlZC5pbmRleE9mKCJ7IikgPiAtMSB8fCByZW1vdmVkID09ICJibG9jayIg
fHwgcmVtb3ZlZCA9PSAicnVsZSIpeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQor
ICAgICAgICB9CiAgICAgICB9CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJpbnRlcnBvbGF0aW9u
Iikgc3RhdGUuc3RhY2sucHVzaCgiaW50ZXJwb2xhdGlvbiIpOwogICAgICAgZWxzZSBpZiAodHlw
ZSA9PSAiQG1lZGlhIikgc3RhdGUuc3RhY2sucHVzaCgiQG1lZGlhIik7CkBAIC0yNzgsMTEgKzI4
MywxMyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFy
c2VyQ29uZmlnKSB7CiAgICAgICAgIGVsc2Ugc3RhdGUuc3RhY2sucHVzaCgiKCIpOwogICAgICAg
fQogICAgICAgZWxzZSBpZiAodHlwZSA9PSAiKSIpIHsKLSAgICAgICAgaWYgKGNvbnRleHQgPT0g
InByb3BlcnR5VmFsdWUiKSB7Ci0gICAgICAgICAgLy8gSW4gQG1lZGlhVHlwZSggd2l0aG91dCBj
bG9zaW5nIDsgYWZ0ZXIgcHJvcGVydHlWYWx1ZQotICAgICAgICAgIHN0YXRlLnN0YWNrLnBvcCgp
OworICAgICAgICAvLyBQb3Agb2ZmIGVuZCBvZiBhcnJheSB1bnRpbCAoIGlzIHJlYWNoZWQKKyAg
ICAgICAgd2hpbGUoc3RhdGUuc3RhY2subGVuZ3RoKXsKKyAgICAgICAgICB2YXIgcmVtb3ZlZCA9
IHN0YXRlLnN0YWNrLnBvcCgpOworICAgICAgICAgIGlmKHJlbW92ZWQuaW5kZXhPZigiKCIpID4g
LTEpeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IHN0YXRlLnN0YWNrLnBvcCgpOwogICAgICAgfQogICAgICAgZWxzZSBpZiAodHlwZSA9PSAiOiIg
JiYgc3RhdGUubGFzdFRva2VuID09ICJwcm9wZXJ0eSIpIHN0YXRlLnN0YWNrLnB1c2goInByb3Bl
cnR5VmFsdWUiKTsKICAgICAgIGVsc2UgaWYgKGNvbnRleHQgPT0gInByb3BlcnR5VmFsdWUiICYm
IHR5cGUgPT0gIjsiKSBzdGF0ZS5zdGFjay5wb3AoKTsKQEAgLTYwMiw2ICs2MDksMTEgQEAgQ29k
ZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykg
ewogICAgICAgICB9CiAgICAgICAgIHJldHVybiBbInZhcmlhYmxlIiwgInZhcmlhYmxlIl07CiAg
ICAgICB9LAorICAgICAgIiwiOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CisgICAgICAgIGlm
IChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGggLSAxXSA9PSAicHJvcGVydHlWYWx1ZSIg
JiYgc3RyZWFtLm1hdGNoKC9eICpcJC8sIGZhbHNlKSkgeworICAgICAgICAgIHJldHVybiBbIm9w
ZXJhdG9yIiwgIjsiXTsKKyAgICAgICAgfQorICAgICAgfSwKICAgICAgICIvIjogZnVuY3Rpb24o
c3RyZWFtLCBzdGF0ZSkgewogICAgICAgICBpZiAoc3RyZWFtLmVhdCgiLyIpKSB7CiAgICAgICAg
ICAgc3RyZWFtLnNraXBUb0VuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9odG1sbWl4ZWQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2h0bWxtaXhl
ZC5qcwppbmRleCBlYzBjMjFkMjRhZDhjMTk4Zjg0YTA2ZWFhY2MxZjdlNjcwMjNkYWNhLi5iNTll
ZjM3ZWRiZTEwMTM3ZDA2YTc5NWU4YjMzMDUwOTgzODhiNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2h0bWxtaXhl
ZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9D
b2RlTWlycm9yL2h0bWxtaXhlZC5qcwpAQCAtNDQsNyArNDQsNyBAQCBDb2RlTWlycm9yLmRlZmlu
ZU1vZGUoImh0bWxtaXhlZCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAg
aWYgKGNsb3NlID4gLTEpIHN0cmVhbS5iYWNrVXAoY3VyLmxlbmd0aCAtIGNsb3NlKTsKICAgICBl
bHNlIGlmIChtID0gY3VyLm1hdGNoKC88XC8/JC8pKSB7CiAgICAgICBzdHJlYW0uYmFja1VwKGN1
ci5sZW5ndGgpOwotICAgICAgaWYgKCFzdHJlYW0ubWF0Y2gocGF0LCBmYWxzZSkpIHN0cmVhbS5t
YXRjaChjdXJbMF0pOworICAgICAgaWYgKCFzdHJlYW0ubWF0Y2gocGF0LCBmYWxzZSkpIHN0cmVh
bS5tYXRjaChjdXIpOwogICAgIH0KICAgICByZXR1cm4gc3R5bGU7CiAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3Iv
amF2YXNjcmlwdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVy
bmFsL0NvZGVNaXJyb3IvamF2YXNjcmlwdC5qcwppbmRleCBlOGFjZTMyZDg5NmFjMWMwODNkNWFi
MzE1ZjE4NDc5MDk2ODNiMjY2Li5mMjdjMDYzNDZjNjNlZTkxMTgwNDhmMjUyMjY1OTdjZjFhNGIy
NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRl
cm5hbC9Db2RlTWlycm9yL2phdmFzY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9qYXZhc2NyaXB0LmpzCkBAIC0yMSw3
ICsyMSw4IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNv
bmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAiZm9yIjoga3coImZvciIpLCAic3dpdGNoIjog
a3coInN3aXRjaCIpLCAiY2FzZSI6IGt3KCJjYXNlIiksICJkZWZhdWx0Ijoga3coImRlZmF1bHQi
KSwKICAgICAgICJpbiI6IG9wZXJhdG9yLCAidHlwZW9mIjogb3BlcmF0b3IsICJpbnN0YW5jZW9m
Ijogb3BlcmF0b3IsCiAgICAgICAidHJ1ZSI6IGF0b20sICJmYWxzZSI6IGF0b20sICJudWxsIjog
YXRvbSwgInVuZGVmaW5lZCI6IGF0b20sICJOYU4iOiBhdG9tLCAiSW5maW5pdHkiOiBhdG9tLAot
ICAgICAgInRoaXMiOiBrdygidGhpcyIpCisgICAgICAidGhpcyI6IGt3KCJ0aGlzIiksICJtb2R1
bGUiOiBrdygibW9kdWxlIiksICJjbGFzcyI6IGt3KCJjbGFzcyIpLCAic3VwZXIiOiBrdygiYXRv
bSIpLAorICAgICAgInlpZWxkIjogQywgImV4cG9ydCI6IGt3KCJleHBvcnQiKSwgImltcG9ydCI6
IGt3KCJpbXBvcnQiKSwgImV4dGVuZHMiOiBDCiAgICAgfTsKIAogICAgIC8vIEV4dGVuZCB0aGUg
J25vcm1hbCcga2V5d29yZHMgd2l0aCB0aGUgVHlwZVNjcmlwdCBsYW5ndWFnZSBleHRlbnNpb25z
CkBAIC0zMCw3ICszMSw2IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1
bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICB2YXIgdHNLZXl3b3JkcyA9IHsK
ICAgICAgICAgLy8gb2JqZWN0LWxpa2UgdGhpbmdzCiAgICAgICAgICJpbnRlcmZhY2UiOiBrdygi
aW50ZXJmYWNlIiksCi0gICAgICAgICJjbGFzcyI6IGt3KCJjbGFzcyIpLAogICAgICAgICAiZXh0
ZW5kcyI6IGt3KCJleHRlbmRzIiksCiAgICAgICAgICJjb25zdHJ1Y3RvciI6IGt3KCJjb25zdHJ1
Y3RvciIpLAogCkBAIC00MCw4ICs0MCw2IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNj
cmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAgICJwcm90ZWN0
ZWQiOiBrdygicHJvdGVjdGVkIiksCiAgICAgICAgICJzdGF0aWMiOiBrdygic3RhdGljIiksCiAK
LSAgICAgICAgInN1cGVyIjoga3coInN1cGVyIiksCi0KICAgICAgICAgLy8gdHlwZXMKICAgICAg
ICAgInN0cmluZyI6IHR5cGUsICJudW1iZXIiOiB0eXBlLCAiYm9vbCI6IHR5cGUsICJhbnkiOiB0
eXBlCiAgICAgICB9OwpAQCAtNTYsMTEgKzU0LDYgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJq
YXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKIAogICB2YXIgaXNP
cGVyYXRvckNoYXIgPSAvWytcLSomJT08PiE/fH5eXS87CiAKLSAgZnVuY3Rpb24gY2hhaW4oc3Ry
ZWFtLCBzdGF0ZSwgZikgewotICAgIHN0YXRlLnRva2VuaXplID0gZjsKLSAgICByZXR1cm4gZihz
dHJlYW0sIHN0YXRlKTsKLSAgfQotCiAgIGZ1bmN0aW9uIG5leHRVbnRpbFVuZXNjYXBlZChzdHJl
YW0sIGVuZCkgewogICAgIHZhciBlc2NhcGVkID0gZmFsc2UsIG5leHQ7CiAgICAgd2hpbGUgKChu
ZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgewpAQCAtNzgsNTAgKzcxLDUxIEBAIENvZGVN
aXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29u
ZmlnKSB7CiAgICAgdHlwZSA9IHRwOyBjb250ZW50ID0gY29udDsKICAgICByZXR1cm4gc3R5bGU7
CiAgIH0KLSAgZnVuY3Rpb24ganNUb2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgeworICBmdW5jdGlv
biB0b2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgewogICAgIHZhciBjaCA9IHN0cmVhbS5uZXh0KCk7
Ci0gICAgaWYgKGNoID09ICciJyB8fCBjaCA9PSAiJyIpCi0gICAgICByZXR1cm4gY2hhaW4oc3Ry
ZWFtLCBzdGF0ZSwganNUb2tlblN0cmluZyhjaCkpOwotICAgIGVsc2UgaWYgKGNoID09ICIuIiAm
JiBzdHJlYW0ubWF0Y2goL15cZCsoPzpbZUVdWytcLV0/XGQrKT8vKSkKKyAgICBpZiAoY2ggPT0g
JyInIHx8IGNoID09ICInIikgeworICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlblN0cmluZyhj
aCk7CisgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgfSBl
bHNlIGlmIChjaCA9PSAiLiIgJiYgc3RyZWFtLm1hdGNoKC9eXGQrKD86W2VFXVsrXC1dP1xkKyk/
LykpIHsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJudW1iZXIiKTsKLSAgICBlbHNlIGlm
ICgvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGNoKSkKKyAgICB9IGVsc2UgaWYgKGNoID09ICIu
IiAmJiBzdHJlYW0ubWF0Y2goIi4uIikpIHsKKyAgICAgIHJldHVybiByZXQoInNwcmVhZCIsICJt
ZXRhIik7CisgICAgfSBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGNoKSkgewog
ICAgICAgcmV0dXJuIHJldChjaCk7Ci0gICAgZWxzZSBpZiAoY2ggPT0gIjAiICYmIHN0cmVhbS5l
YXQoL3gvaSkpIHsKKyAgICB9IGVsc2UgaWYgKGNoID09ICI9IiAmJiBzdHJlYW0uZWF0KCI+Iikp
IHsKKyAgICAgIHJldHVybiByZXQoIj0+Iik7CisgICAgfSBlbHNlIGlmIChjaCA9PSAiMCIgJiYg
c3RyZWFtLmVhdCgveC9pKSkgewogICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXGRhLWZdL2kpOwog
ICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgIm51bWJlciIpOwotICAgIH0KLSAgICBlbHNlIGlm
ICgvXGQvLnRlc3QoY2gpKSB7CisgICAgfSBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CiAgICAg
ICBzdHJlYW0ubWF0Y2goL15cZCooPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/Lyk7CiAgICAg
ICByZXR1cm4gcmV0KCJudW1iZXIiLCAibnVtYmVyIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKGNo
ID09ICIvIikgeworICAgIH0gZWxzZSBpZiAoY2ggPT0gIi8iKSB7CiAgICAgICBpZiAoc3RyZWFt
LmVhdCgiKiIpKSB7Ci0gICAgICAgIHJldHVybiBjaGFpbihzdHJlYW0sIHN0YXRlLCBqc1Rva2Vu
Q29tbWVudCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChzdHJlYW0uZWF0KCIvIikpIHsKKyAg
ICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkNvbW1lbnQ7CisgICAgICAgIHJldHVybiB0b2tl
bkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSk7CisgICAgICB9IGVsc2UgaWYgKHN0cmVhbS5lYXQoIi8i
KSkgewogICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7CiAgICAgICAgIHJldHVybiByZXQoImNv
bW1lbnQiLCAiY29tbWVudCIpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoc3RhdGUubGFzdFR5
cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5sYXN0VHlwZSA9PSAia2V5d29yZCBjIiB8fAotICAg
ICAgICAgICAgICAgL15bXFt7fVwoLDs6XSQvLnRlc3Qoc3RhdGUubGFzdFR5cGUpKSB7CisgICAg
ICB9IGVsc2UgaWYgKHN0YXRlLmxhc3RUeXBlID09ICJvcGVyYXRvciIgfHwgc3RhdGUubGFzdFR5
cGUgPT0gImtleXdvcmQgYyIgfHwKKyAgICAgICAgICAgICAgIHN0YXRlLmxhc3RUeXBlID09ICJz
b2YiIHx8IC9eW1xbe31cKCw7Ol0kLy50ZXN0KHN0YXRlLmxhc3RUeXBlKSkgewogICAgICAgICBu
ZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCAiLyIpOwogICAgICAgICBzdHJlYW0uZWF0V2hpbGUo
L1tnaW15XS8pOyAvLyAneScgaXMgInN0aWNreSIgb3B0aW9uIGluIE1vemlsbGEKICAgICAgICAg
cmV0dXJuIHJldCgicmVnZXhwIiwgInN0cmluZy0yIik7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsK
KyAgICAgIH0gZWxzZSB7CiAgICAgICAgIHN0cmVhbS5lYXRXaGlsZShpc09wZXJhdG9yQ2hhcik7
CiAgICAgICAgIHJldHVybiByZXQoIm9wZXJhdG9yIiwgbnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7
CiAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGNoID09ICIjIikgeworICAgIH0gZWxzZSBp
ZiAoY2ggPT0gImAiKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuUXVhc2k7CisgICAg
ICByZXR1cm4gdG9rZW5RdWFzaShzdHJlYW0sIHN0YXRlKTsKKyAgICB9IGVsc2UgaWYgKGNoID09
ICIjIikgewogICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOwogICAgICAgcmV0dXJuIHJldCgiZXJy
b3IiLCAiZXJyb3IiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoaXNPcGVyYXRvckNoYXIudGVzdChj
aCkpIHsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmF0b3JDaGFyLnRlc3QoY2gpKSB7CiAgICAgICBz
dHJlYW0uZWF0V2hpbGUoaXNPcGVyYXRvckNoYXIpOwogICAgICAgcmV0dXJuIHJldCgib3BlcmF0
b3IiLCBudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgfSBl
bHNlIHsKICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XCRfXS8pOwogICAgICAgdmFyIHdvcmQg
PSBzdHJlYW0uY3VycmVudCgpLCBrbm93biA9IGtleXdvcmRzLnByb3BlcnR5SXNFbnVtZXJhYmxl
KHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICAgcmV0dXJuIChrbm93biAmJiBzdGF0ZS5s
YXN0VHlwZSAhPSAiLiIpID8gcmV0KGtub3duLnR5cGUsIGtub3duLnN0eWxlLCB3b3JkKSA6CkBA
IC0xMjksMTkgKzEyMywxOSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBm
dW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIH0KICAgfQogCi0gIGZ1bmN0aW9u
IGpzVG9rZW5TdHJpbmcocXVvdGUpIHsKKyAgZnVuY3Rpb24gdG9rZW5TdHJpbmcocXVvdGUpIHsK
ICAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgewogICAgICAgaWYgKCFuZXh0VW50
aWxVbmVzY2FwZWQoc3RyZWFtLCBxdW90ZSkpCi0gICAgICAgIHN0YXRlLnRva2VuaXplID0ganNU
b2tlbkJhc2U7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOwogICAgICAgcmV0
dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIpOwogICAgIH07CiAgIH0KIAotICBmdW5jdGlvbiBq
c1Rva2VuQ29tbWVudChzdHJlYW0sIHN0YXRlKSB7CisgIGZ1bmN0aW9uIHRva2VuQ29tbWVudChz
dHJlYW0sIHN0YXRlKSB7CiAgICAgdmFyIG1heWJlRW5kID0gZmFsc2UsIGNoOwogICAgIHdoaWxl
IChjaCA9IHN0cmVhbS5uZXh0KCkpIHsKICAgICAgIGlmIChjaCA9PSAiLyIgJiYgbWF5YmVFbmQp
IHsKLSAgICAgICAgc3RhdGUudG9rZW5pemUgPSBqc1Rva2VuQmFzZTsKKyAgICAgICAgc3RhdGUu
dG9rZW5pemUgPSB0b2tlbkJhc2U7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgbWF5
YmVFbmQgPSAoY2ggPT0gIioiKTsKQEAgLTE0OSw2ICsxNDMsNTAgQEAgQ29kZU1pcnJvci5kZWZp
bmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAg
ICByZXR1cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQiKTsKICAgfQogCisgIGZ1bmN0aW9uIHRv
a2VuUXVhc2koc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBlc2NhcGVkID0gZmFsc2UsIG5leHQ7
CisgICAgd2hpbGUgKChuZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgeworICAgICAgaWYg
KCFlc2NhcGVkICYmIChuZXh0ID09ICJgIiB8fCBuZXh0ID09ICIkIiAmJiBzdHJlYW0uZWF0KCJ7
IikpKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOworICAgICAgICBicmVh
azsKKyAgICAgIH0KKyAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBuZXh0ID09ICJcXCI7Cisg
ICAgfQorICAgIHJldHVybiByZXQoInF1YXNpIiwgInN0cmluZy0yIiwgc3RyZWFtLmN1cnJlbnQo
KSk7CisgIH0KKworICB2YXIgYnJhY2tldHMgPSAiKFt7fV0pIjsKKyAgLy8gVGhpcyBpcyBhIGNy
dWRlIGxvb2thaGVhZCB0cmljayB0byB0cnkgYW5kIG5vdGljZSB0aGF0IHdlJ3JlCisgIC8vIHBh
cnNpbmcgdGhlIGFyZ3VtZW50IHBhdHRlcm5zIGZvciBhIGZhdC1hcnJvdyBmdW5jdGlvbiBiZWZv
cmUgd2UKKyAgLy8gYWN0dWFsbHkgaGl0IHRoZSBhcnJvdyB0b2tlbi4gSXQgb25seSB3b3JrcyBp
ZiB0aGUgYXJyb3cgaXMgb24KKyAgLy8gdGhlIHNhbWUgbGluZSBhcyB0aGUgYXJndW1lbnRzIGFu
ZCB0aGVyZSdzIG5vIHN0cmFuZ2Ugbm9pc2UKKyAgLy8gKGNvbW1lbnRzKSBpbiBiZXR3ZWVuLiBG
YWxsYmFjayBpcyB0byBvbmx5IG5vdGljZSB3aGVuIHdlIGhpdCB0aGUKKyAgLy8gYXJyb3csIGFu
ZCBub3QgZGVjbGFyZSB0aGUgYXJndW1lbnRzIGFzIGxvY2FscyBmb3IgdGhlIGFycm93CisgIC8v
IGJvZHkuCisgIGZ1bmN0aW9uIGZpbmRGYXRBcnJvdyhzdHJlYW0sIHN0YXRlKSB7CisgICAgaWYg
KHN0YXRlLmZhdEFycm93QXQpIHN0YXRlLmZhdEFycm93QXQgPSBudWxsOworICAgIHZhciBhcnJv
dyA9IHN0cmVhbS5zdHJpbmcuaW5kZXhPZigiPT4iLCBzdHJlYW0uc3RhcnQpOworICAgIGlmIChh
cnJvdyA8IDApIHJldHVybjsKKworICAgIHZhciBkZXB0aCA9IDAsIHNhd1NvbWV0aGluZyA9IGZh
bHNlOworICAgIGZvciAodmFyIHBvcyA9IGFycm93IC0gMTsgcG9zID49IDA7IC0tcG9zKSB7Cisg
ICAgICB2YXIgY2ggPSBzdHJlYW0uc3RyaW5nLmNoYXJBdChwb3MpOworICAgICAgdmFyIGJyYWNr
ZXQgPSBicmFja2V0cy5pbmRleE9mKGNoKTsKKyAgICAgIGlmIChicmFja2V0ID49IDAgJiYgYnJh
Y2tldCA8IDMpIHsKKyAgICAgICAgaWYgKCFkZXB0aCkgeyArK3BvczsgYnJlYWs7IH0KKyAgICAg
ICAgaWYgKC0tZGVwdGggPT0gMCkgYnJlYWs7CisgICAgICB9IGVsc2UgaWYgKGJyYWNrZXQgPj0g
MyAmJiBicmFja2V0IDwgNikgeworICAgICAgICArK2RlcHRoOworICAgICAgfSBlbHNlIGlmICgv
WyRcd10vLnRlc3QoY2gpKSB7CisgICAgICAgIHNhd1NvbWV0aGluZyA9IHRydWU7CisgICAgICB9
IGVsc2UgaWYgKHNhd1NvbWV0aGluZyAmJiAhZGVwdGgpIHsKKyAgICAgICAgKytwb3M7CisgICAg
ICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZiAoc2F3U29tZXRoaW5nICYmICFkZXB0
aCkgc3RhdGUuZmF0QXJyb3dBdCA9IHBvczsKKyAgfQorCiAgIC8vIFBhcnNlcgogCiAgIHZhciBh
dG9taWNUeXBlcyA9IHsiYXRvbSI6IHRydWUsICJudW1iZXIiOiB0cnVlLCAidmFyaWFibGUiOiB0
cnVlLCAic3RyaW5nIjogdHJ1ZSwgInJlZ2V4cCI6IHRydWUsICJ0aGlzIjogdHJ1ZX07CkBAIC0x
NjUsNiArMjAzLDEwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0
aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgIGZ1bmN0aW9uIGluU2NvcGUoc3RhdGUsIHZh
cm5hbWUpIHsKICAgICBmb3IgKHZhciB2ID0gc3RhdGUubG9jYWxWYXJzOyB2OyB2ID0gdi5uZXh0
KQogICAgICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKHZh
ciBjeCA9IHN0YXRlLmNvbnRleHQ7IGN4OyBjeCA9IGN4LnByZXYpIHsKKyAgICAgIGZvciAodmFy
IHYgPSBjeC52YXJzOyB2OyB2ID0gdi5uZXh0KQorICAgICAgICBpZiAodi5uYW1lID09IHZhcm5h
bWUpIHJldHVybiB0cnVlOworICAgIH0KICAgfQogCiAgIGZ1bmN0aW9uIHBhcnNlSlMoc3RhdGUs
IHN0eWxlLCB0eXBlLCBjb250ZW50LCBzdHJlYW0pIHsKQEAgLTIxMSw3ICsyNTMsOCBAQCBDb2Rl
TWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNv
bmZpZykgewogICAgICAgc3RhdGUubG9jYWxWYXJzID0ge25hbWU6IHZhcm5hbWUsIG5leHQ6IHN0
YXRlLmxvY2FsVmFyc307CiAgICAgfSBlbHNlIHsKICAgICAgIGlmIChpbkxpc3Qoc3RhdGUuZ2xv
YmFsVmFycykpIHJldHVybjsKLSAgICAgIHN0YXRlLmdsb2JhbFZhcnMgPSB7bmFtZTogdmFybmFt
ZSwgbmV4dDogc3RhdGUuZ2xvYmFsVmFyc307CisgICAgICBpZiAocGFyc2VyQ29uZmlnLmdsb2Jh
bFZhcnMpCisgICAgICAgIHN0YXRlLmdsb2JhbFZhcnMgPSB7bmFtZTogdmFybmFtZSwgbmV4dDog
c3RhdGUuZ2xvYmFsVmFyc307CiAgICAgfQogICB9CiAKQEAgLTI1MywxNiArMjk2LDE1IEBAIENv
ZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2Vy
Q29uZmlnKSB7CiAgICAgfTsKICAgfQogCi0gIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlKSB7Ci0g
ICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVybiBjb250KHB1c2hsZXgoInZhcmRlZiIpLCB2YXJk
ZWYxLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKKyAgZnVuY3Rpb24gc3RhdGVtZW50KHR5cGUsIHZh
bHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVybiBjb250KHB1c2hsZXgoInZhcmRl
ZiIsIHZhbHVlLmxlbmd0aCksIHZhcmRlZiwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgICAgaWYg
KHR5cGUgPT0gImtleXdvcmQgYSIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVz
c2lvbiwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgIGlmICh0eXBlID09ICJrZXl3b3JkIGIiKSBy
ZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICBpZiAo
dHlwZSA9PSAieyIpIHJldHVybiBjb250KHB1c2hsZXgoIn0iKSwgYmxvY2ssIHBvcGxleCk7CiAg
ICAgaWYgKHR5cGUgPT0gIjsiKSByZXR1cm4gY29udCgpOwogICAgIGlmICh0eXBlID09ICJpZiIp
IHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBwb3Bs
ZXgsIG1heWJlZWxzZSk7CiAgICAgaWYgKHR5cGUgPT0gImZ1bmN0aW9uIikgcmV0dXJuIGNvbnQo
ZnVuY3Rpb25kZWYpOwotICAgIGlmICh0eXBlID09ICJmb3IiKSByZXR1cm4gY29udChwdXNobGV4
KCJmb3JtIiksIGV4cGVjdCgiKCIpLCBwdXNobGV4KCIpIiksIGZvcnNwZWMxLCBleHBlY3QoIiki
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9wbGV4LCBzdGF0ZW1lbnQs
IHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gImZvciIpIHJldHVybiBjb250KHB1c2hsZXgoImZv
cm0iKSwgZm9yc3BlYywgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgaWYgKHR5cGUg
PT0gInZhcmlhYmxlIikgcmV0dXJuIGNvbnQocHVzaGxleCgic3RhdCIpLCBtYXliZWxhYmVsKTsK
ICAgICBpZiAodHlwZSA9PSAic3dpdGNoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiZm9ybSIpLCBl
eHByZXNzaW9uLCBwdXNobGV4KCJ9IiwgInN3aXRjaCIpLCBleHBlY3QoInsiKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssIHBvcGxleCwgcG9wbGV4KTsKQEAg
LTI3MCw2ICszMTIsMTAgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVu
Y3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICBpZiAodHlwZSA9PSAiZGVmYXVsdCIp
IHJldHVybiBjb250KGV4cGVjdCgiOiIpKTsKICAgICBpZiAodHlwZSA9PSAiY2F0Y2giKSByZXR1
cm4gY29udChwdXNobGV4KCJmb3JtIiksIHB1c2hjb250ZXh0LCBleHBlY3QoIigiKSwgZnVuYXJn
LCBleHBlY3QoIikiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZW1lbnQsIHBvcGxleCwgcG9wY29udGV4dCk7CisgICAgaWYgKHR5cGUgPT0gIm1vZHVsZSIpIHJl
dHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgcHVzaGNvbnRleHQsIGFmdGVyTW9kdWxlLCBwb3Bj
b250ZXh0LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJjbGFzcyIpIHJldHVybiBjb250KHB1
c2hsZXgoImZvcm0iKSwgY2xhc3NOYW1lLCBvYmpsaXQsIHBvcGxleCk7CisgICAgaWYgKHR5cGUg
PT0gImV4cG9ydCIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgYWZ0ZXJFeHBvcnQsIHBv
cGxleCk7CisgICAgaWYgKHR5cGUgPT0gImltcG9ydCIpIHJldHVybiBjb250KHB1c2hsZXgoImZv
cm0iKSwgYWZ0ZXJJbXBvcnQsIHBvcGxleCk7CiAgICAgcmV0dXJuIHBhc3MocHVzaGxleCgic3Rh
dCIpLCBleHByZXNzaW9uLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKICAgfQogICBmdW5jdGlvbiBl
eHByZXNzaW9uKHR5cGUpIHsKQEAgLTI3OSwxNCArMzI1LDIwIEBAIENvZGVNaXJyb3IuZGVmaW5l
TW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAg
cmV0dXJuIGV4cHJlc3Npb25Jbm5lcih0eXBlLCB0cnVlKTsKICAgfQogICBmdW5jdGlvbiBleHBy
ZXNzaW9uSW5uZXIodHlwZSwgbm9Db21tYSkgeworICAgIGlmIChjeC5zdGF0ZS5mYXRBcnJvd0F0
ID09IGN4LnN0cmVhbS5zdGFydCkgeworICAgICAgdmFyIGJvZHkgPSBub0NvbW1hID8gYXJyb3dC
b2R5Tm9Db21tYSA6IGFycm93Qm9keTsKKyAgICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIGNv
bnQocHVzaGNvbnRleHQsIGNvbW1hc2VwKHBhdHRlcm4sICIpIiksIGV4cGVjdCgiPT4iKSwgYm9k
eSwgcG9wY29udGV4dCk7CisgICAgICBlbHNlIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJldHVy
biBwYXNzKHB1c2hjb250ZXh0LCBwYXR0ZXJuLCBleHBlY3QoIj0+IiksIGJvZHksIHBvcGNvbnRl
eHQpOworICAgIH0KKwogICAgIHZhciBtYXliZW9wID0gbm9Db21tYSA/IG1heWJlb3BlcmF0b3JO
b0NvbW1hIDogbWF5YmVvcGVyYXRvckNvbW1hOwogICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Q
cm9wZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQobWF5YmVvcCk7CiAgICAgaWYgKHR5cGUgPT0gImZ1
bmN0aW9uIikgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgIGlmICh0eXBlID09ICJrZXl3
b3JkIGMiKSByZXR1cm4gY29udChub0NvbW1hID8gbWF5YmVleHByZXNzaW9uTm9Db21tYSA6IG1h
eWJlZXhwcmVzc2lvbik7Ci0gICAgaWYgKHR5cGUgPT0gIigiKSByZXR1cm4gY29udChwdXNobGV4
KCIpIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0KCIpIiksIHBvcGxleCwgbWF5YmVvcCk7Ci0g
ICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgcmV0dXJuIGNvbnQobm9Db21tYSA/IGV4cHJlc3Np
b25Ob0NvbW1hIDogZXhwcmVzc2lvbik7Ci0gICAgaWYgKHR5cGUgPT0gIlsiKSByZXR1cm4gY29u
dChwdXNobGV4KCJdIiksIGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCAiXSIpLCBwb3BsZXgs
IG1heWJlb3ApOwotICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQocHVzaGxleCgifSIp
LCBjb21tYXNlcChvYmpwcm9wLCAifSIpLCBwb3BsZXgsIG1heWJlb3ApOworICAgIGlmICh0eXBl
ID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIpLCBtYXliZWV4cHJlc3Npb24sIGNvbXBy
ZWhlbnNpb24sIGV4cGVjdCgiKSIpLCBwb3BsZXgsIG1heWJlb3ApOworICAgIGlmICh0eXBlID09
ICJvcGVyYXRvciIgfHwgdHlwZSA9PSAic3ByZWFkIikgcmV0dXJuIGNvbnQobm9Db21tYSA/IGV4
cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7CisgICAgaWYgKHR5cGUgPT0gIlsiKSByZXR1
cm4gY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb25Ob0NvbW1hLCBtYXliZUFycmF5Q29tcHJl
aGVuc2lvbiwgcG9wbGV4LCBtYXliZW9wKTsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBj
b250KGNvbW1hc2VwKG9ianByb3AsICJ9IiksIG1heWJlb3ApOwogICAgIHJldHVybiBjb250KCk7
CiAgIH0KICAgZnVuY3Rpb24gbWF5YmVleHByZXNzaW9uKHR5cGUpIHsKQEAgLTMwNSwxNiArMzU3
LDQwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZp
ZywgcGFyc2VyQ29uZmlnKSB7CiAgIGZ1bmN0aW9uIG1heWJlb3BlcmF0b3JOb0NvbW1hKHR5cGUs
IHZhbHVlLCBub0NvbW1hKSB7CiAgICAgdmFyIG1lID0gbm9Db21tYSA9PSBmYWxzZSA/IG1heWJl
b3BlcmF0b3JDb21tYSA6IG1heWJlb3BlcmF0b3JOb0NvbW1hOwogICAgIHZhciBleHByID0gbm9D
b21tYSA9PSBmYWxzZSA/IGV4cHJlc3Npb24gOiBleHByZXNzaW9uTm9Db21tYTsKKyAgICBpZiAo
dmFsdWUgPT0gIj0+IikgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIG5vQ29tbWEgPyBhcnJvd0Jv
ZHlOb0NvbW1hIDogYXJyb3dCb2R5LCBwb3Bjb250ZXh0KTsKICAgICBpZiAodHlwZSA9PSAib3Bl
cmF0b3IiKSB7CiAgICAgICBpZiAoL1wrXCt8LS0vLnRlc3QodmFsdWUpKSByZXR1cm4gY29udCht
ZSk7CiAgICAgICBpZiAodmFsdWUgPT0gIj8iKSByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBl
Y3QoIjoiKSwgZXhwcik7CiAgICAgICByZXR1cm4gY29udChleHByKTsKICAgICB9CisgICAgaWYg
KHR5cGUgPT0gInF1YXNpIikgeyBjeC5jYy5wdXNoKG1lKTsgcmV0dXJuIHF1YXNpKHZhbHVlKTsg
fQogICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuOwotICAgIGlmICh0eXBlID09ICIoIikgcmV0
dXJuIGNvbnQocHVzaGxleCgiKSIsICJjYWxsIiksIGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1h
LCAiKSIpLCBwb3BsZXgsIG1lKTsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KGNv
bW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCAiKSIsICJjYWxsIiksIG1lKTsKICAgICBpZiAodHlw
ZSA9PSAiLiIpIHJldHVybiBjb250KHByb3BlcnR5LCBtZSk7CiAgICAgaWYgKHR5cGUgPT0gIlsi
KSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0KCJdIiks
IHBvcGxleCwgbWUpOwogICB9CisgIGZ1bmN0aW9uIHF1YXNpKHZhbHVlKSB7CisgICAgaWYgKCF2
YWx1ZSkgZGVidWdnZXI7CisgICAgaWYgKHZhbHVlLnNsaWNlKHZhbHVlLmxlbmd0aCAtIDIpICE9
ICIkeyIpIHJldHVybiBjb250KCk7CisgICAgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgY29udGlu
dWVRdWFzaSk7CisgIH0KKyAgZnVuY3Rpb24gY29udGludWVRdWFzaSh0eXBlKSB7CisgICAgaWYg
KHR5cGUgPT0gIn0iKSB7CisgICAgICBjeC5tYXJrZWQgPSAic3RyaW5nLTIiOworICAgICAgY3gu
c3RhdGUudG9rZW5pemUgPSB0b2tlblF1YXNpOworICAgICAgcmV0dXJuIGNvbnQoKTsKKyAgICB9
CisgIH0KKyAgZnVuY3Rpb24gYXJyb3dCb2R5KHR5cGUpIHsKKyAgICBmaW5kRmF0QXJyb3coY3gu
c3RyZWFtLCBjeC5zdGF0ZSk7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gcGFzcyhzdGF0
ZW1lbnQpOworICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24pOworICB9CisgIGZ1bmN0aW9uIGFy
cm93Qm9keU5vQ29tbWEodHlwZSkgeworICAgIGZpbmRGYXRBcnJvdyhjeC5zdHJlYW0sIGN4LnN0
YXRlKTsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBwYXNzKHN0YXRlbWVudCk7CisgICAg
cmV0dXJuIHBhc3MoZXhwcmVzc2lvbk5vQ29tbWEpOworICB9CiAgIGZ1bmN0aW9uIG1heWJlbGFi
ZWwodHlwZSkgewogICAgIGlmICh0eXBlID09ICI6IikgcmV0dXJuIGNvbnQocG9wbGV4LCBzdGF0
ZW1lbnQpOwogICAgIHJldHVybiBwYXNzKG1heWJlb3BlcmF0b3JDb21tYSwgZXhwZWN0KCI7Iiks
IHBvcGxleCk7CkBAIC0zMjgsMTYgKzQwNCwyMSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImph
dmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgaWYgKHZh
bHVlID09ICJnZXQiIHx8IHZhbHVlID09ICJzZXQiKSByZXR1cm4gY29udChnZXR0ZXJTZXR0ZXIp
OwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAibnVtYmVyIiB8fCB0eXBlID09ICJzdHJpbmciKSB7
CiAgICAgICBjeC5tYXJrZWQgPSB0eXBlICsgIiBwcm9wZXJ0eSI7CisgICAgfSBlbHNlIGlmICh0
eXBlID09ICJbIikgeworICAgICAgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0KCJdIiks
IGFmdGVycHJvcCk7CiAgICAgfQotICAgIGlmIChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0
eXBlKSkgcmV0dXJuIGNvbnQoZXhwZWN0KCI6IiksIGV4cHJlc3Npb25Ob0NvbW1hKTsKKyAgICBp
ZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIHJldHVybiBjb250KGFmdGVycHJv
cCk7CiAgIH0KICAgZnVuY3Rpb24gZ2V0dGVyU2V0dGVyKHR5cGUpIHsKLSAgICBpZiAodHlwZSA9
PSAiOiIpIHJldHVybiBjb250KGV4cHJlc3Npb24pOwotICAgIGlmICh0eXBlICE9ICJ2YXJpYWJs
ZSIpIHJldHVybiBjb250KGV4cGVjdCgiOiIpLCBleHByZXNzaW9uKTsKKyAgICBpZiAodHlwZSAh
PSAidmFyaWFibGUiKSByZXR1cm4gcGFzcyhhZnRlcnByb3ApOwogICAgIGN4Lm1hcmtlZCA9ICJw
cm9wZXJ0eSI7CiAgICAgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOwogICB9Ci0gIGZ1bmN0aW9u
IGNvbW1hc2VwKHdoYXQsIGVuZCkgeworICBmdW5jdGlvbiBhZnRlcnByb3AodHlwZSkgeworICAg
IGlmICh0eXBlID09ICI6IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbk5vQ29tbWEpOworICAgIGlm
ICh0eXBlID09ICIoIikgcmV0dXJuIHBhc3MoZnVuY3Rpb25kZWYpOworICB9CisgIGZ1bmN0aW9u
IGNvbW1hc2VwKHdoYXQsIGVuZCwgaW5mbykgewogICAgIGZ1bmN0aW9uIHByb2NlZWQodHlwZSkg
ewogICAgICAgaWYgKHR5cGUgPT0gIiwiKSB7CiAgICAgICAgIHZhciBsZXggPSBjeC5zdGF0ZS5s
ZXhpY2FsOwpAQCAtMzQ5LDcgKzQzMCw4IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNj
cmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgfQogICAgIHJldHVy
biBmdW5jdGlvbih0eXBlKSB7CiAgICAgICBpZiAodHlwZSA9PSBlbmQpIHJldHVybiBjb250KCk7
Ci0gICAgICBlbHNlIHJldHVybiBwYXNzKHdoYXQsIHByb2NlZWQpOworICAgICAgaWYgKGluZm8g
PT09IGZhbHNlKSByZXR1cm4gcGFzcyh3aGF0LCBwcm9jZWVkKTsKKyAgICAgIHJldHVybiBwYXNz
KHB1c2hsZXgoZW5kLCBpbmZvKSwgd2hhdCwgcHJvY2VlZCwgcG9wbGV4KTsKICAgICB9OwogICB9
CiAgIGZ1bmN0aW9uIGJsb2NrKHR5cGUpIHsKQEAgLTM1Nyw2NyArNDM5LDEyMSBAQCBDb2RlTWly
cm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZp
ZykgewogICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgYmxvY2spOwogICB9CiAgIGZ1bmN0aW9u
IG1heWJldHlwZSh0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0gIjoiKSByZXR1cm4gY29udCh0eXBl
ZGVmKTsKLSAgICByZXR1cm4gcGFzcygpOworICAgIGlmIChpc1RTICYmIHR5cGUgPT0gIjoiKSBy
ZXR1cm4gY29udCh0eXBlZGVmKTsKICAgfQogICBmdW5jdGlvbiB0eXBlZGVmKHR5cGUpIHsKICAg
ICBpZiAodHlwZSA9PSAidmFyaWFibGUiKXtjeC5tYXJrZWQgPSAidmFyaWFibGUtMyI7IHJldHVy
biBjb250KCk7fQotICAgIHJldHVybiBwYXNzKCk7CiAgIH0KLSAgZnVuY3Rpb24gdmFyZGVmMSh0
eXBlLCB2YWx1ZSkgewotICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHsKKyAgZnVuY3Rpb24g
dmFyZGVmKCkgeworICAgIHJldHVybiBwYXNzKHBhdHRlcm4sIG1heWJldHlwZSwgbWF5YmVBc3Np
Z24sIHZhcmRlZkNvbnQpOworICB9CisgIGZ1bmN0aW9uIHBhdHRlcm4odHlwZSwgdmFsdWUpIHsK
KyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7IHJlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNv
bnQoKTsgfQorICAgIGlmICh0eXBlID09ICJbIikgcmV0dXJuIGNvbnQoY29tbWFzZXAocGF0dGVy
biwgIl0iKSk7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gY29udChjb21tYXNlcChwcm9w
cGF0dGVybiwgIn0iKSk7CisgIH0KKyAgZnVuY3Rpb24gcHJvcHBhdHRlcm4odHlwZSwgdmFsdWUp
IHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiICYmICFjeC5zdHJlYW0ubWF0Y2goL15ccyo6
LywgZmFsc2UpKSB7CiAgICAgICByZWdpc3Rlcih2YWx1ZSk7Ci0gICAgICByZXR1cm4gaXNUUyA/
IGNvbnQobWF5YmV0eXBlLCB2YXJkZWYyKSA6IGNvbnQodmFyZGVmMik7CisgICAgICByZXR1cm4g
Y29udChtYXliZUFzc2lnbik7CiAgICAgfQotICAgIHJldHVybiBwYXNzKCk7CisgICAgaWYgKHR5
cGUgPT0gInZhcmlhYmxlIikgY3gubWFya2VkID0gInByb3BlcnR5IjsKKyAgICByZXR1cm4gY29u
dChleHBlY3QoIjoiKSwgcGF0dGVybiwgbWF5YmVBc3NpZ24pOworICB9CisgIGZ1bmN0aW9uIG1h
eWJlQXNzaWduKF90eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9PSAiPSIpIHJldHVybiBj
b250KGV4cHJlc3Npb25Ob0NvbW1hKTsKICAgfQotICBmdW5jdGlvbiB2YXJkZWYyKHR5cGUsIHZh
bHVlKSB7Ci0gICAgaWYgKHZhbHVlID09ICI9IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbk5vQ29t
bWEsIHZhcmRlZjIpOwotICAgIGlmICh0eXBlID09ICIsIikgcmV0dXJuIGNvbnQodmFyZGVmMSk7
CisgIGZ1bmN0aW9uIHZhcmRlZkNvbnQodHlwZSkgeworICAgIGlmICh0eXBlID09ICIsIikgcmV0
dXJuIGNvbnQodmFyZGVmKTsKICAgfQogICBmdW5jdGlvbiBtYXliZWVsc2UodHlwZSwgdmFsdWUp
IHsKICAgICBpZiAodHlwZSA9PSAia2V5d29yZCBiIiAmJiB2YWx1ZSA9PSAiZWxzZSIpIHJldHVy
biBjb250KHB1c2hsZXgoImZvcm0iKSwgc3RhdGVtZW50LCBwb3BsZXgpOwogICB9CisgIGZ1bmN0
aW9uIGZvcnNwZWModHlwZSkgeworICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVz
aGxleCgiKSIpLCBmb3JzcGVjMSwgZXhwZWN0KCIpIikpOworICB9CiAgIGZ1bmN0aW9uIGZvcnNw
ZWMxKHR5cGUpIHsKLSAgICBpZiAodHlwZSA9PSAidmFyIikgcmV0dXJuIGNvbnQodmFyZGVmMSwg
ZXhwZWN0KCI7IiksIGZvcnNwZWMyKTsKKyAgICBpZiAodHlwZSA9PSAidmFyIikgcmV0dXJuIGNv
bnQodmFyZGVmLCBleHBlY3QoIjsiKSwgZm9yc3BlYzIpOwogICAgIGlmICh0eXBlID09ICI7Iikg
cmV0dXJuIGNvbnQoZm9yc3BlYzIpOwotICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJldHVy
biBjb250KGZvcm1heWJlaW4pOworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJldHVybiBj
b250KGZvcm1heWJlaW5vZik7CiAgICAgcmV0dXJuIHBhc3MoZXhwcmVzc2lvbiwgZXhwZWN0KCI7
IiksIGZvcnNwZWMyKTsKICAgfQotICBmdW5jdGlvbiBmb3JtYXliZWluKF90eXBlLCB2YWx1ZSkg
ewotICAgIGlmICh2YWx1ZSA9PSAiaW4iKSByZXR1cm4gY29udChleHByZXNzaW9uKTsKKyAgZnVu
Y3Rpb24gZm9ybWF5YmVpbm9mKF90eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9PSAiaW4i
IHx8IHZhbHVlID09ICJvZiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4gY29udChl
eHByZXNzaW9uKTsgfQogICAgIHJldHVybiBjb250KG1heWJlb3BlcmF0b3JDb21tYSwgZm9yc3Bl
YzIpOwogICB9CiAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVlKSB7CiAgICAgaWYgKHR5
cGUgPT0gIjsiKSByZXR1cm4gY29udChmb3JzcGVjMyk7Ci0gICAgaWYgKHZhbHVlID09ICJpbiIp
IHJldHVybiBjb250KGV4cHJlc3Npb24pOworICAgIGlmICh2YWx1ZSA9PSAiaW4iIHx8IHZhbHVl
ID09ICJvZiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4gY29udChleHByZXNzaW9u
KTsgfQogICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBmb3JzcGVjMyk7
CiAgIH0KICAgZnVuY3Rpb24gZm9yc3BlYzModHlwZSkgewogICAgIGlmICh0eXBlICE9ICIpIikg
Y29udChleHByZXNzaW9uKTsKICAgfQogICBmdW5jdGlvbiBmdW5jdGlvbmRlZih0eXBlLCB2YWx1
ZSkgeworICAgIGlmICh2YWx1ZSA9PSAiKiIpIHtjeC5tYXJrZWQgPSAia2V5d29yZCI7IHJldHVy
biBjb250KGZ1bmN0aW9uZGVmKTt9CiAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikge3JlZ2lz
dGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpO30KLSAgICBpZiAodHlwZSA9PSAi
KCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiKSwgcHVzaGNvbnRleHQsIGNvbW1hc2VwKGZ1bmFy
ZywgIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGNvbnRleHQpOworICAgIGlmICh0eXBlID09
ICIoIikgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIGNvbW1hc2VwKGZ1bmFyZywgIikiKSwgc3Rh
dGVtZW50LCBwb3Bjb250ZXh0KTsKKyAgfQorICBmdW5jdGlvbiBmdW5hcmcodHlwZSkgeworICAg
IGlmICh0eXBlID09ICJzcHJlYWQiKSByZXR1cm4gY29udChmdW5hcmcpOworICAgIHJldHVybiBw
YXNzKHBhdHRlcm4sIG1heWJldHlwZSk7CisgIH0KKyAgZnVuY3Rpb24gY2xhc3NOYW1lKHR5cGUs
IHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikge3JlZ2lzdGVyKHZhbHVlKTsg
cmV0dXJuIGNvbnQoY2xhc3NOYW1lQWZ0ZXIpO30KKyAgfQorICBmdW5jdGlvbiBjbGFzc05hbWVB
ZnRlcihfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gImV4dGVuZHMiKSByZXR1cm4g
Y29udChleHByZXNzaW9uKTsKKyAgfQorICBmdW5jdGlvbiBvYmpsaXQodHlwZSkgeworICAgIGlm
ICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQoY29tbWFzZXAob2JqcHJvcCwgIn0iKSk7CisgIH0K
KyAgZnVuY3Rpb24gYWZ0ZXJNb2R1bGUodHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAi
c3RyaW5nIikgcmV0dXJuIGNvbnQoc3RhdGVtZW50KTsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFi
bGUiKSB7IHJlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQobWF5YmVGcm9tKTsgfQorICB9Cisg
IGZ1bmN0aW9uIGFmdGVyRXhwb3J0KF90eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9PSAi
KiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4gY29udChtYXliZUZyb20sIGV4cGVj
dCgiOyIpKTsgfQorICAgIGlmICh2YWx1ZSA9PSAiZGVmYXVsdCIpIHsgY3gubWFya2VkID0gImtl
eXdvcmQiOyByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoIjsiKSk7IH0KKyAgICByZXR1
cm4gcGFzcyhzdGF0ZW1lbnQpOworICB9CisgIGZ1bmN0aW9uIGFmdGVySW1wb3J0KHR5cGUpIHsK
KyAgICBpZiAodHlwZSA9PSAic3RyaW5nIikgcmV0dXJuIGNvbnQoKTsKKyAgICByZXR1cm4gcGFz
cyhpbXBvcnRTcGVjLCBtYXliZUZyb20pOworICB9CisgIGZ1bmN0aW9uIGltcG9ydFNwZWModHlw
ZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250KGNvbW1hc2VwKGlt
cG9ydFNwZWMsICJ9IikpOworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJlZ2lzdGVyKHZh
bHVlKTsKKyAgICByZXR1cm4gY29udCgpOworICB9CisgIGZ1bmN0aW9uIG1heWJlRnJvbShfdHlw
ZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gImZyb20iKSB7IGN4Lm1hcmtlZCA9ICJrZXl3
b3JkIjsgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7IH0KKyAgfQorICBmdW5jdGlvbiBtYXliZUFy
cmF5Q29tcHJlaGVuc2lvbih0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gImZvciIpIHJldHVybiBw
YXNzKGNvbXByZWhlbnNpb24pOworICAgIGlmICh0eXBlID09ICIsIikgcmV0dXJuIGNvbnQoY29t
bWFzZXAoZXhwcmVzc2lvbk5vQ29tbWEsICJdIiwgZmFsc2UpKTsKKyAgICByZXR1cm4gcGFzcyhj
b21tYXNlcChleHByZXNzaW9uTm9Db21tYSwgIl0iLCBmYWxzZSkpOwogICB9Ci0gIGZ1bmN0aW9u
IGZ1bmFyZyh0eXBlLCB2YWx1ZSkgewotICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHtyZWdp
c3Rlcih2YWx1ZSk7IHJldHVybiBpc1RTID8gY29udChtYXliZXR5cGUpIDogY29udCgpO30KKyAg
ZnVuY3Rpb24gY29tcHJlaGVuc2lvbih0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gImZvciIpIHJl
dHVybiBjb250KGZvcnNwZWMsIGNvbXByZWhlbnNpb24pOworICAgIGlmICh0eXBlID09ICJpZiIp
IHJldHVybiBjb250KGV4cHJlc3Npb24sIGNvbXByZWhlbnNpb24pOwogICB9CiAKICAgLy8gSW50
ZXJmYWNlCiAKICAgcmV0dXJuIHsKICAgICBzdGFydFN0YXRlOiBmdW5jdGlvbihiYXNlY29sdW1u
KSB7Ci0gICAgICByZXR1cm4gewotICAgICAgICB0b2tlbml6ZToganNUb2tlbkJhc2UsCi0gICAg
ICAgIGxhc3RUeXBlOiBudWxsLAorICAgICAgdmFyIHN0YXRlID0geworICAgICAgICB0b2tlbml6
ZTogdG9rZW5CYXNlLAorICAgICAgICBsYXN0VHlwZTogInNvZiIsCiAgICAgICAgIGNjOiBbXSwK
ICAgICAgICAgbGV4aWNhbDogbmV3IEpTTGV4aWNhbCgoYmFzZWNvbHVtbiB8fCAwKSAtIGluZGVu
dFVuaXQsIDAsICJibG9jayIsIGZhbHNlKSwKICAgICAgICAgbG9jYWxWYXJzOiBwYXJzZXJDb25m
aWcubG9jYWxWYXJzLAotICAgICAgICBnbG9iYWxWYXJzOiBwYXJzZXJDb25maWcuZ2xvYmFsVmFy
cywKICAgICAgICAgY29udGV4dDogcGFyc2VyQ29uZmlnLmxvY2FsVmFycyAmJiB7dmFyczogcGFy
c2VyQ29uZmlnLmxvY2FsVmFyc30sCiAgICAgICAgIGluZGVudGVkOiAwCiAgICAgICB9OworICAg
ICAgaWYgKHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzKSBzdGF0ZS5nbG9iYWxWYXJzID0gcGFyc2Vy
Q29uZmlnLmdsb2JhbFZhcnM7CisgICAgICByZXR1cm4gc3RhdGU7CiAgICAgfSwKIAogICAgIHRv
a2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CkBAIC00MjUsOCArNTYxLDkgQEAgQ29kZU1p
cnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25m
aWcpIHsKICAgICAgICAgaWYgKCFzdGF0ZS5sZXhpY2FsLmhhc093blByb3BlcnR5KCJhbGlnbiIp
KQogICAgICAgICAgIHN0YXRlLmxleGljYWwuYWxpZ24gPSBmYWxzZTsKICAgICAgICAgc3RhdGUu
aW5kZW50ZWQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKKyAgICAgICAgZmluZEZhdEFycm93KHN0
cmVhbSwgc3RhdGUpOwogICAgICAgfQotICAgICAgaWYgKHN0YXRlLnRva2VuaXplICE9IGpzVG9r
ZW5Db21tZW50ICYmIHN0cmVhbS5lYXRTcGFjZSgpKSByZXR1cm4gbnVsbDsKKyAgICAgIGlmIChz
dGF0ZS50b2tlbml6ZSAhPSB0b2tlbkNvbW1lbnQgJiYgc3RyZWFtLmVhdFNwYWNlKCkpIHJldHVy
biBudWxsOwogICAgICAgdmFyIHN0eWxlID0gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7
CiAgICAgICBpZiAodHlwZSA9PSAiY29tbWVudCIpIHJldHVybiBzdHlsZTsKICAgICAgIHN0YXRl
Lmxhc3RUeXBlID0gdHlwZSA9PSAib3BlcmF0b3IiICYmIChjb250ZW50ID09ICIrKyIgfHwgY29u
dGVudCA9PSAiLS0iKSA/ICJpbmNkZWMiIDogdHlwZTsKQEAgLTQzNCwyMSArNTcxLDIxIEBAIENv
ZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2Vy
Q29uZmlnKSB7CiAgICAgfSwKIAogICAgIGluZGVudDogZnVuY3Rpb24oc3RhdGUsIHRleHRBZnRl
cikgewotICAgICAgaWYgKHN0YXRlLnRva2VuaXplID09IGpzVG9rZW5Db21tZW50KSByZXR1cm4g
Q29kZU1pcnJvci5QYXNzOwotICAgICAgaWYgKHN0YXRlLnRva2VuaXplICE9IGpzVG9rZW5CYXNl
KSByZXR1cm4gMDsKKyAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSA9PSB0b2tlbkNvbW1lbnQpIHJl
dHVybiBDb2RlTWlycm9yLlBhc3M7CisgICAgICBpZiAoc3RhdGUudG9rZW5pemUgIT0gdG9rZW5C
YXNlKSByZXR1cm4gMDsKICAgICAgIHZhciBmaXJzdENoYXIgPSB0ZXh0QWZ0ZXIgJiYgdGV4dEFm
dGVyLmNoYXJBdCgwKSwgbGV4aWNhbCA9IHN0YXRlLmxleGljYWw7CiAgICAgICAvLyBLbHVkZ2Ug
dG8gcHJldmVudCAnbWF5YmVsc2UnIGZyb20gYmxvY2tpbmcgbGV4aWNhbCBzY29wZSBwb3BzCiAg
ICAgICBmb3IgKHZhciBpID0gc3RhdGUuY2MubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAg
ICAgICAgdmFyIGMgPSBzdGF0ZS5jY1tpXTsKICAgICAgICAgaWYgKGMgPT0gcG9wbGV4KSBsZXhp
Y2FsID0gbGV4aWNhbC5wcmV2OwotICAgICAgICBlbHNlIGlmIChjICE9IG1heWJlZWxzZSB8fCAv
XmVsc2VcYi8udGVzdCh0ZXh0QWZ0ZXIpKSBicmVhazsKKyAgICAgICAgZWxzZSBpZiAoYyAhPSBt
YXliZWVsc2UpIGJyZWFrOwogICAgICAgfQogICAgICAgaWYgKGxleGljYWwudHlwZSA9PSAic3Rh
dCIgJiYgZmlyc3RDaGFyID09ICJ9IikgbGV4aWNhbCA9IGxleGljYWwucHJldjsKICAgICAgIGlm
IChzdGF0ZW1lbnRJbmRlbnQgJiYgbGV4aWNhbC50eXBlID09ICIpIiAmJiBsZXhpY2FsLnByZXYu
dHlwZSA9PSAic3RhdCIpCiAgICAgICAgIGxleGljYWwgPSBsZXhpY2FsLnByZXY7CiAgICAgICB2
YXIgdHlwZSA9IGxleGljYWwudHlwZSwgY2xvc2luZyA9IGZpcnN0Q2hhciA9PSB0eXBlOwogCi0g
ICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyAoc3Rh
dGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5sYXN0VHlwZSA9PSAiLCIgPyA0IDog
MCk7CisgICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQg
KyAoc3RhdGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5sYXN0VHlwZSA9PSAiLCIg
PyBsZXhpY2FsLmluZm8gKyAxIDogMCk7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJmb3JtIiAm
JiBmaXJzdENoYXIgPT0gInsiKSByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZDsKICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gImZvcm0iKSByZXR1cm4gbGV4aWNhbC5pbmRlbnRlZCArIGluZGVudFVuaXQ7
CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbGVzcy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbGVz
cy5qcwppbmRleCA4Mzg0YjNjZDc2YjMxYTllMzYyMjY2NDZiOTkxZGRmMDBhNzY1ODYxLi5kYTM5
MDc0ODUxODgwMGFiYzhmM2Y2Y2RjYTkyMDIzM2RmN2EyZWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2xlc3MuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1p
cnJvci9sZXNzLmpzCkBAIC0zMiw5ICszMiw5IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgibGVz
cyIsIGZ1bmN0aW9uKGNvbmZpZykgewogICAgICAgICByZXR1cm4gdG9rZW5TQ29tbWVudChzdHJl
YW0sIHN0YXRlKTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGlmKHR5cGUgPT0gInN0cmluZyIg
fHwgdHlwZSA9PSAiKCIpIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsKLSAgICAgICAg
aWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICE9IHVuZGVmaW5lZCkgcmV0dXJu
IHJldChudWxsLCBjaCk7CisgICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0
aC0xXSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcmV0KG51bGwsIGNoKTsKICAgICAgICAgc3RyZWFt
LmVhdFdoaWxlKC9bXGEtekEtWjAtOVwtXy5cc10vKTsKLSAgICAgICAgaWYoIC9cL3xcKXwjLy50
ZXN0KHN0cmVhbS5wZWVrKCkgfHwgKHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0cmVhbS5wZWVrKCkg
PT0gIikiKSkgIHx8IHN0cmVhbS5lb2woKSApcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIp
OyAvLyBsZXQgdXJsKC9pbWFnZXMvbG9nby5wbmcpIHdpdGhvdXQgcXVvdGVzIHJldHVybiBhcyBz
dHJpbmcKKyAgICAgICAgaWYoIC9cL3xcKXwjLy50ZXN0KHN0cmVhbS5wZWVrKCkgfHwgKHN0cmVh
bS5lYXRTcGFjZSgpICYmIHN0cmVhbS5wZWVrKCkgPT09ICIpIikpICB8fCBzdHJlYW0uZW9sKCkg
KXJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsgLy8gbGV0IHVybCgvaW1hZ2VzL2xvZ28u
cG5nKSB3aXRob3V0IHF1b3RlcyByZXR1cm4gYXMgc3RyaW5nCiAgICAgICB9CiAgICAgfSBlbHNl
IGlmIChjaCA9PSAiISIpIHsKICAgICAgIHN0cmVhbS5tYXRjaCgvXlxzKlx3Ki8pOwpAQCAtNjYs
MTAgKzY2LDEzIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgibGVzcyIsIGZ1bmN0aW9uKGNvbmZp
ZykgewogICAgICAgICByZXR1cm4gcmV0KG51bGwsIGNoKTsKICAgICAgIH0KICAgICB9IGVsc2Ug
aWYgKGNoID09ICIuIikgewotICAgICAgaWYodHlwZSA9PSAiKCIgfHwgdHlwZSA9PSAic3RyaW5n
IilyZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7IC8vIGFsbG93IHVybCguLi9pbWFnZS5w
bmcpCisgICAgICBpZih0eXBlID09ICIoIilyZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7
IC8vIGFsbG93IHVybCguLi9pbWFnZS5wbmcpCiAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcYS16
QS1aMC05XC1fXS8pOwotICAgICAgaWYoc3RyZWFtLnBlZWsoKSA9PSAiICIpc3RyZWFtLmVhdFNw
YWNlKCk7Ci0gICAgICBpZihzdHJlYW0ucGVlaygpID09ICIpIilyZXR1cm4gcmV0KCJudW1iZXIi
LCAidW5pdCIpOy8vcmdiYSgwLDAsMCwuMjUpOworICAgICAgaWYoc3RyZWFtLnBlZWsoKSA9PT0g
IiAiKXN0cmVhbS5lYXRTcGFjZSgpOworICAgICAgaWYoc3RyZWFtLnBlZWsoKSA9PT0gIikiIHx8
IHR5cGUgPT09ICI6IilyZXR1cm4gcmV0KCJudW1iZXIiLCAidW5pdCIpOy8vcmdiYSgwLDAsMCwu
MjUpOworICAgICAgZWxzZSBpZihzdHJlYW0uY3VycmVudCgpLmxlbmd0aCA+MSl7CisgICAgICAg
IGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInJ1bGUiICYmIHN0cmVh
bS5wZWVrKCkubWF0Y2goL3t8LHxcK3xcKC8pID09PSBudWxsKXJldHVybiByZXQoIm51bWJlciIs
ICJ1bml0Iik7CisgICAgICB9CiAgICAgICByZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CiAgICAg
fSBlbHNlIGlmIChjaCA9PSAiIyIpIHsKICAgICAgIC8vd2UgZG9uJ3QgZWF0IHdoaXRlLXNwYWNl
LCB3ZSB3YW50IHRoZSBoZXggY29sb3IgYW5kIG9yIGlkIG9ubHkKQEAgLTgyLDIxICs4NSwyNCBA
QCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImxlc3MiLCBmdW5jdGlvbihjb25maWcpIHsKICAgICAg
ICAgICAvL2VhdCB3aGl0ZS1zcGFjZQogICAgICAgICAgIHN0cmVhbS5lYXRTcGFjZSgpOwogICAg
ICAgICAgIC8vd2hlbiBoZXggdmFsdWUgZGVjbGFyYXRpb24gZG9lc24ndCBlbmQgd2l0aCBbOyxd
IGJ1dCBpcyBkb2VzIHdpdGggYSBzbGFzaC9jYyBjb21tZW50IHRyZWF0IGl0IGFzIGFuIGlkLCBq
dXN0IGxpa2UgdGhlIG90aGVyIGhleCB2YWx1ZXMgdGhhdCBkb24ndCBlbmQgd2l0aFs7LF0KLSAg
ICAgICAgICBpZiggL1tcLzw+LigpeyEkJV4mKl9cLVxcPz0rXHwjJ35gXS8udGVzdChzdHJlYW0u
cGVlaygpKSApcmV0dXJuIHJldCgiYXRvbSIsICJ0YWciKTsKKyAgICAgICAgICBpZiggL1tcLzw+
LigpeyEkJV4mKl9cLVxcPz0rXHwjJ35gXS8udGVzdChzdHJlYW0ucGVlaygpKSApeworICAgICAg
ICAgICAgaWYodHlwZSA9PT0gInNlbGVjdC1vcCIpcmV0dXJuIHJldCgibnVtYmVyIiwgInVuaXQi
KTsgZWxzZSByZXR1cm4gcmV0KCJhdG9tIiwgInRhZyIpOworICAgICAgICAgIH0KICAgICAgICAg
ICAvLyN0aW1lIHsgY29sb3I6ICNhYWEgfQogICAgICAgICAgIGVsc2UgaWYoc3RyZWFtLnBlZWso
KSA9PSAifSIgKXJldHVybiByZXQoIm51bWJlciIsICJ1bml0Iik7CiAgICAgICAgICAgLy93ZSBo
YXZlIGEgdmFsaWQgaGV4IGNvbG9yIHZhbHVlLCBwYXJzZSBhcyBpZCB3aGVuZXZlciBhbiBlbGVt
ZW50L2NsYXNzIGlzIGRlZmluZWQgYWZ0ZXIgdGhlIGhleChpZCkgdmFsdWUgZS5nLiAjZWVlIGFh
YSB8fCAjZWVlIC5hYWEKLSAgICAgICAgICAgIGVsc2UgaWYoIC9bYS16QS1aXFxdLy50ZXN0KHN0
cmVhbS5wZWVrKCkpIClyZXR1cm4gcmV0KCJhdG9tIiwgInRhZyIpOworICAgICAgICAgIGVsc2Ug
aWYoIC9bYS16QS1aXFxdLy50ZXN0KHN0cmVhbS5wZWVrKCkpIClyZXR1cm4gcmV0KCJhdG9tIiwg
InRhZyIpOwogICAgICAgICAgIC8vd2hlbiBhIGhleCB2YWx1ZSBpcyBvbiB0aGUgZW5kIG9mIGEg
bGluZSwgcGFyc2UgYXMgaWQKLSAgICAgICAgICAgICAgZWxzZSBpZihzdHJlYW0uZW9sKCkpcmV0
dXJuIHJldCgiYXRvbSIsICJ0YWciKTsKKyAgICAgICAgICBlbHNlIGlmKHN0cmVhbS5lb2woKSly
ZXR1cm4gcmV0KCJhdG9tIiwgInRhZyIpOwogICAgICAgICAgIC8vZGVmYXVsdAotICAgICAgICAg
ICAgICAgIGVsc2UgcmV0dXJuIHJldCgibnVtYmVyIiwgInVuaXQiKTsKKyAgICAgICAgICBlbHNl
IHJldHVybiByZXQoIm51bWJlciIsICJ1bml0Iik7CiAgICAgICAgIH0gZWxzZSB7Ly93aGVuIG5v
dCBhIHZhbGlkIGhleHZhbHVlIGluIHRoZSBjdXJyZW50IHN0cmVhbSBlLmcuICNmb290ZXIKICAg
ICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1dLyk7Ci0gICAgICAgICAgcmV0dXJuIHJl
dCgiYXRvbSIsICJ0YWciKTsKKyAgICAgICAgICByZXR1cm4gcmV0KCJhdG9tIiwgc3RyZWFtLmN1
cnJlbnQoKSk7CiAgICAgICAgIH0KICAgICAgIH0gZWxzZSB7Ly93aGVuIG5vdCBhIHZhbGlkIGhl
eHZhbHVlIGxlbmd0aAogICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1dLyk7CisgICAg
ICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInJ1bGUiKXJldHVy
biByZXQoImF0b20iLCBzdHJlYW0uY3VycmVudCgpKTtyZXR1cm4gcmV0KCJhdG9tIiwgc3RyZWFt
LmN1cnJlbnQoKSk7CiAgICAgICAgIHJldHVybiByZXQoImF0b20iLCAidGFnIik7CiAgICAgICB9
CiAgICAgfSBlbHNlIGlmIChjaCA9PSAiJiIpIHsKQEAgLTEwNCwxNyArMTEwLDMzIEBAIENvZGVN
aXJyb3IuZGVmaW5lTW9kZSgibGVzcyIsIGZ1bmN0aW9uKGNvbmZpZykgewogICAgICAgcmV0dXJu
IHJldChudWxsLCBjaCk7CiAgICAgfSBlbHNlIHsKICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3
XFxcLV8lLntdLyk7Ci0gICAgICBpZih0eXBlID09ICJzdHJpbmciKXsKLSAgICAgICAgcmV0dXJu
IHJldCgic3RyaW5nIiwgInN0cmluZyIpOworICAgICAgaWYoc3RyZWFtLmN1cnJlbnQoKS5tYXRj
aCgvXFwvKSAhPT0gbnVsbCl7CisgICAgICAgIGlmKHN0cmVhbS5jdXJyZW50KCkuY2hhckF0KHN0
cmVhbS5jdXJyZW50KCkubGVuZ3RoLTEpID09PSAiXFwiKXsKKyAgICAgICAgICBzdHJlYW0uZWF0
KC9cJ3xcInxcKXxcKC8pOworICAgICAgICAgIHdoaWxlKHN0cmVhbS5lYXRXaGlsZSgvW1x3XFxc
LV8lLntdLykpeworICAgICAgICAgICAgc3RyZWFtLmVhdCgvXCd8XCJ8XCl8XCgvKTsKKyAgICAg
ICAgICB9CisgICAgICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgc3RyZWFtLmN1cnJlbnQoKSk7
CisgICAgICAgIH0KKyAgICAgIH0gLy9lbHNlIGlmKHR5cGUgPT09ICJ0YWciKXJldHVybiByZXQo
InRhZyIsICJ0YWciKTsKKyAgICAgICAgZWxzZSBpZih0eXBlID09ICJzdHJpbmciKXsKKyAgICAg
ICAgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAieyIgJiYgc3RyZWFt
LnBlZWsoKSA9PT0gIjoiKXJldHVybiByZXQoInZhcmlhYmxlIiwgInZhcmlhYmxlIik7CisgICAg
ICAgIGlmKHN0cmVhbS5wZWVrKCkgPT09ICIvIilzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1fJS57
OlwvXS8pOworICAgICAgICByZXR1cm4gcmV0KHR5cGUsIHN0cmVhbS5jdXJyZW50KCkpOwogICAg
ICAgfSBlbHNlIGlmKHN0cmVhbS5jdXJyZW50KCkubWF0Y2goLyheaHR0cCR8Xmh0dHBzJCkvKSAh
PSBudWxsKXsKICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHdcXFwtXyUuezpcL10vKTsKKyAg
ICAgICAgaWYoc3RyZWFtLnBlZWsoKSA9PT0gIi8iKXN0cmVhbS5lYXRXaGlsZSgvW1x3XFxcLV8l
Lns6XC9dLyk7CiAgICAgICAgIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsKICAgICAg
IH0gZWxzZSBpZihzdHJlYW0ucGVlaygpID09ICI8IiB8fCBzdHJlYW0ucGVlaygpID09ICI+IiB8
fCBzdHJlYW0ucGVlaygpID09ICIrIil7CisgICAgICAgIGlmKHR5cGUgPT09ICIoIiAmJiAoc3Ry
ZWFtLmN1cnJlbnQoKSA9PT0gIm4iIHx8IHN0cmVhbS5jdXJyZW50KCkgPT09ICItbiIpKXJldHVy
biByZXQoInN0cmluZyIsIHN0cmVhbS5jdXJyZW50KCkpOwogICAgICAgICByZXR1cm4gcmV0KCJ0
YWciLCAidGFnIik7CiAgICAgICB9IGVsc2UgaWYoIC9cKC8udGVzdChzdHJlYW0ucGVlaygpKSAp
eworICAgICAgICBpZihzdHJlYW0uY3VycmVudCgpID09PSAid2hlbiIpcmV0dXJuIHJldCgidmFy
aWFibGUiLCJ2YXJpYWJsZSIpOworICAgICAgICBlbHNlIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0
YWNrLmxlbmd0aC0xXSA9PT0gIkBtZWRpYSIgJiYgc3RyZWFtLmN1cnJlbnQoKSA9PT0gImFuZCIp
cmV0dXJuIHJldCgidmFyaWFibGUiLHN0cmVhbS5jdXJyZW50KCkpOwogICAgICAgICByZXR1cm4g
cmV0KG51bGwsIGNoKTsKLSAgICAgIH0gZWxzZSBpZiAoc3RyZWFtLnBlZWsoKSA9PSAiLyIgJiYg
c3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICE9IHVuZGVmaW5lZCl7IC8vIHVybChk
aXIvY2VudGVyL2ltYWdlLnBuZykKLSAgICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmlu
ZyIpOworICAgICAgfSBlbHNlIGlmIChzdHJlYW0ucGVlaygpID09ICIvIiAmJiBzdGF0ZS5zdGFj
a1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gIT09IHVuZGVmaW5lZCl7IC8vIHVybChkaXIvY2VudGVy
L2ltYWdlLnBuZykKKyAgICAgICAgaWYoc3RyZWFtLnBlZWsoKSA9PT0gIi8iKXN0cmVhbS5lYXRX
aGlsZSgvW1x3XFxcLV8lLns6XC9dLyk7CisgICAgICAgIHJldHVybiByZXQoInN0cmluZyIsIHN0
cmVhbS5jdXJyZW50KCkpOwogICAgICAgfSBlbHNlIGlmKCBzdHJlYW0uY3VycmVudCgpLm1hdGNo
KC9cLVxkfFwtLlxkLykgKXsgLy8gbWF0Y2ggZS5nLjogLTVweCAtMC40IGV0Yy4uLiBvbmx5IGNv
bG9yaXplIHRoZSBtaW51cyBzaWduCiAgICAgICAgIC8vY29tbW1lbnQgb3V0IHRoZXNlIDIgY29t
bWVudCBpZiB5b3Ugd2FudCB0aGUgbWludXMgc2lnbiB0byBiZSBwYXJzZWQgYXMgbnVsbCAtNTAw
cHgKICAgICAgICAgLy9zdHJlYW0uYmFja1VwKHN0cmVhbS5jdXJyZW50KCkubGVuZ3RoLTEpOwpA
QCAtMTI5LDE0ICsxNTEsMzMgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJsZXNzIiwgZnVuY3Rp
b24oY29uZmlnKSB7CiAgICAgICAgIGlmKCAvW3s8Pi5hLXpBLVpcL10vLnRlc3Qoc3RyZWFtLnBl
ZWsoKSkgIHx8IHN0cmVhbS5lb2woKSApcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOyAvLyBlLmcu
IGJ1dHRvbi5pY29uLXBsdXMKICAgICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIp
OyAvLyBsZXQgdXJsKC9pbWFnZXMvbG9nby5wbmcpIHdpdGhvdXQgcXVvdGVzIHJldHVybiBhcyBz
dHJpbmcKICAgICAgIH0gZWxzZSBpZiggc3RyZWFtLmVvbCgpIHx8IHN0cmVhbS5wZWVrKCkgPT0g
IlsiIHx8IHN0cmVhbS5wZWVrKCkgPT0gIiMiIHx8IHR5cGUgPT0gInRhZyIgKXsKKwogICAgICAg
ICBpZihzdHJlYW0uY3VycmVudCgpLnN1YnN0cmluZyhzdHJlYW0uY3VycmVudCgpLmxlbmd0aC0x
LHN0cmVhbS5jdXJyZW50KCkubGVuZ3RoKSA9PSAieyIpc3RyZWFtLmJhY2tVcCgxKTsKKyAgICAg
ICAgZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJib3JkZXIt
Y29sb3IiIHx8IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gImJhY2tncm91
bmQtcG9zaXRpb24iIHx8IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gImZv
bnQtZmFtaWx5IilyZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOworICAgICAgICBl
bHNlIGlmKHR5cGUgPT09ICJ0YWciKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKKyAgICAgICAg
ZWxzZSBpZigodHlwZSA9PT0gIjoiIHx8IHR5cGUgPT09ICJ1bml0IikgJiYgc3RhdGUuc3RhY2tb
c3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAicnVsZSIpcmV0dXJuIHJldChudWxsLCBzdHJlYW0u
Y3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGgtMV0gPT09ICJydWxlIiAmJiB0eXBlID09PSAidGFnIilyZXR1cm4gcmV0KCJzdHJpbmciLCBz
dHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFj
ay5sZW5ndGgtMV0gPT09ICI7IiAmJiB0eXBlID09PSAiOiIpcmV0dXJuIHJldChudWxsLCBzdHJl
YW0uY3VycmVudCgpKTsKKyAgICAgICAgLy9lbHNlIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNr
Lmxlbmd0aC0xXSA9PT0gIjsiIHx8IHR5cGUgPT09ICIiKXJldHVybiByZXQoInZhcmlhYmxlIiwg
c3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIGVsc2UgaWYoc3RyZWFtLnBlZWsoKSA9PT0gIiMi
ICYmIHR5cGUgIT09IHVuZGVmaW5lZCAmJiB0eXBlLm1hdGNoKC9cK3wsfHRhZ3xzZWxlY3RcLW9w
fH18e3w7L2cpID09PSBudWxsKXJldHVybiByZXQoInN0cmluZyIsIHN0cmVhbS5jdXJyZW50KCkp
OworICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICJ2YXJpYWJsZSIpcmV0dXJuIHJldChudWxsLCBz
dHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFj
ay5sZW5ndGgtMV0gPT09ICJ7IiAmJiB0eXBlID09PSAiY29tbWVudCIpcmV0dXJuIHJldCgidmFy
aWFibGUiLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFjay5s
ZW5ndGggPT09IDAgJiYgKHR5cGUgPT09ICI7IiB8fCB0eXBlID09PSAiY29tbWVudCIpKXJldHVy
biByZXQoInRhZyIsIHN0cmVhbS5jdXJyZW50KCkpOworICAgICAgICBlbHNlIGlmKChzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJ7IiB8fCB0eXBlID09PSAiOyIpICYmIHN0
YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSAhPT0gIkBtZWRpYXsiKXJldHVybiByZXQo
InZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIGVsc2UgaWYoc3RhdGUuc3Rh
Y2tbc3RhdGUuc3RhY2subGVuZ3RoLTJdID09PSAieyIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3Rh
Y2subGVuZ3RoLTFdID09PSAiOyIpcmV0dXJuIHJldCgidmFyaWFibGUiLCBzdHJlYW0uY3VycmVu
dCgpKTsKKwogICAgICAgICByZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CiAgICAgICB9IGVsc2Ug
aWYodHlwZSA9PSAiY29tcGFyZSIgfHwgdHlwZSA9PSAiYSIgfHwgdHlwZSA9PSAiKCIpewogICAg
ICAgICByZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7CiAgICAgICB9IGVsc2UgaWYodHlw
ZSA9PSAifCIgfHwgc3RyZWFtLmN1cnJlbnQoKSA9PSAiLSIgfHwgdHlwZSA9PSAiWyIpewotICAg
ICAgICBpZih0eXBlID09ICJ8IiApcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOworICAgICAgICBp
Zih0eXBlID09ICJ8IiAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC9cXXw9fFx+LykgIT09IG51bGwp
cmV0dXJuIHJldCgibnVtYmVyIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIGVsc2UgaWYo
dHlwZSA9PSAifCIgKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKKyAgICAgICAgZWxzZSBpZih0
eXBlID09ICJbIil7CisgICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9cd1wtLyk7CisgICAgICAg
ICAgcmV0dXJuIHJldCgibnVtYmVyIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHJldChudWxsLCBjaCk7Ci0gICAgICB9IGVsc2UgaWYoc3RyZWFtLnBlZWso
KSA9PSAiOiIpIHsKKyAgICAgIH0gZWxzZSBpZigoc3RyZWFtLnBlZWsoKSA9PSAiOiIpIHx8ICgg
c3RyZWFtLmVhdFNwYWNlKCkgJiYgc3RyZWFtLnBlZWsoKSA9PSAiOiIpKSB7CiAgICAgICAgIHN0
cmVhbS5uZXh0KCk7CiAgICAgICAgIHZhciB0X3YgPSBzdHJlYW0ucGVlaygpID09ICI6IiA/IHRy
dWUgOiBmYWxzZTsKICAgICAgICAgaWYoIXRfdil7CkBAIC0xNTIsMTEgKzE5Myw1MCBAQCBDb2Rl
TWlycm9yLmRlZmluZU1vZGUoImxlc3MiLCBmdW5jdGlvbihjb25maWcpIHsKICAgICAgICAgICBz
dHJlYW0uYmFja1VwKDEpOwogICAgICAgICB9CiAgICAgICAgIGlmKHRfdilyZXR1cm4gcmV0KCJ0
YWciLCAidGFnIik7IGVsc2UgcmV0dXJuIHJldCgidmFyaWFibGUiLCAidmFyaWFibGUiKTsKLSAg
ICAgIH0gZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gID09PSAiZm9u
dC1mYW1pbHkiKXsKKyAgICAgIH0gZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGgtMV0gID09PSAiZm9udC1mYW1pbHkiIHx8IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0
aC0xXSAgPT09ICJiYWNrZ3JvdW5kLXBvc2l0aW9uIiB8fCBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFj
ay5sZW5ndGgtMV0gID09PSAiYm9yZGVyLWNvbG9yIil7CiAgICAgICAgIHJldHVybiByZXQobnVs
bCwgbnVsbCk7CiAgICAgICB9IGVsc2UgewotICAgICAgICBpZihzdGF0ZS5zdGFja1tzdGF0ZS5z
dGFjay5sZW5ndGgtMV0gPT09ICJ7IiB8fCB0eXBlID09PSAic2VsZWN0LW9wIiAgfHwgKHN0YXRl
LnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInJ1bGUiICYmIHR5cGUgPT09ICIsIikg
KXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKLSAgICAgICAgcmV0dXJuIHJldCgidmFyaWFibGUi
LCAidmFyaWFibGUiKTsKKworICAgICAgICBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGgtMV0gPT09IG51bGwgJiYgdHlwZSA9PT0gIjoiKXJldHVybiByZXQobnVsbCwgc3RyZWFtLmN1
cnJlbnQoKSk7CisKKyAgICAgICAgLy9lbHNlIGlmKCh0eXBlID09PSAiKSIgJiYgc3RhdGUuc3Rh
Y2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAicnVsZSIpIHx8IChzdGF0ZS5zdGFja1tzdGF0
ZS5zdGFjay5sZW5ndGgtMl0gPT09ICJ7IiAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGgtMV0gPT09ICJydWxlIiAmJiB0eXBlID09PSAidmFyaWFibGUiKSlyZXR1cm4gcmV0KG51bGws
IHN0cmVhbS5jdXJyZW50KCkpOworCisgICAgICAgIGVsc2UgaWYoL1xefFwkLy50ZXN0KHN0cmVh
bS5jdXJyZW50KCkpICYmIHN0cmVhbS5wZWVrKCkubWF0Y2goL1x+fD0vKSAhPT0gbnVsbClyZXR1
cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7Ly9hdHRePXZhbAorCisgICAgICAgIGVsc2UgaWYo
dHlwZSA9PT0gInVuaXQiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0g
InJ1bGUiKXJldHVybiByZXQobnVsbCwgInVuaXQiKTsKKyAgICAgICAgZWxzZSBpZih0eXBlID09
PSAidW5pdCIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAiOyIpcmV0
dXJuIHJldChudWxsLCAidW5pdCIpOworICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICIpIiAmJiBz
dGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4gcmV0KG51
bGwsICJ1bml0Iik7CisgICAgICAgIGVsc2UgaWYodHlwZSAmJiB0eXBlLm1hdGNoKCJAIikgIT09
IG51bGwgICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInJ1bGUiKXJl
dHVybiByZXQobnVsbCwgInVuaXQiKTsKKyAgICAgICAgLy9lbHNlIGlmKHR5cGUgPT09ICJ1bml0
IiAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4g
cmV0KG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOworCisgICAgICAgIGVsc2UgaWYoKHR5cGUgPT09
ICI7IiB8fCB0eXBlID09PSAifSIgfHwgdHlwZSA9PT0gIiwiKSAmJiBzdGF0ZS5zdGFja1tzdGF0
ZS5zdGFjay5sZW5ndGgtMV0gPT09ICI7IilyZXR1cm4gcmV0KCJ0YWciLCBzdHJlYW0uY3VycmVu
dCgpKTsKKyAgICAgICAgZWxzZSBpZigodHlwZSA9PT0gIjsiICYmIHN0cmVhbS5wZWVrKCkgIT09
IHVuZGVmaW5lZCAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC97fC4vKSA9PT0gbnVsbCkgfHwgKHR5
cGUgPT09ICI7IiAmJiBzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC97
fC4vKSA9PT0gbnVsbCkpcmV0dXJuIHJldCgidmFyaWFibGUiLCBzdHJlYW0uY3VycmVudCgpKTsK
KyAgICAgICAgZWxzZSBpZigodHlwZSA9PT0gIkBtZWRpYSIgJiYgc3RhdGUuc3RhY2tbc3RhdGUu
c3RhY2subGVuZ3RoLTFdID09PSAiQG1lZGlhIikgfHwgdHlwZSA9PT0gIkBuYW1lc3BhY2UiKXJl
dHVybiByZXQoInRhZyIsIHN0cmVhbS5jdXJyZW50KCkpOworCisgICAgICAgIGVsc2UgaWYodHlw
ZSA9PT0gInsiICAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICI7IiAm
JiBzdHJlYW0ucGVlaygpID09PSAieyIpcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOworICAgICAg
ICBlbHNlIGlmKCh0eXBlID09PSAieyIgfHwgdHlwZSA9PT0gIjoiKSAmJiBzdGF0ZS5zdGFja1tz
dGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICI7IilyZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJy
ZW50KCkpOworICAgICAgICBlbHNlIGlmKChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgt
MV0gPT09ICJ7IiAmJiBzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC8u
fCMvKSA9PT0gbnVsbCkgfHwgdHlwZSA9PT0gInNlbGVjdC1vcCIgIHx8IChzdGF0ZS5zdGFja1tz
dGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIiAmJiB0eXBlID09PSAiLCIpIClyZXR1cm4g
cmV0KCJ0YWciLCAidGFnIik7CisgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gInZhcmlhYmxlIiAm
JiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4gcmV0
KCJ0YWciLCAidGFnIik7CisgICAgICAgIGVsc2UgaWYoKHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0
cmVhbS5wZWVrKCkgPT09ICJ7IikgfHwgc3RyZWFtLmVvbCgpIHx8IHN0cmVhbS5wZWVrKCkgPT09
ICJ7IilyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CisgICAgICAgIC8vdGhpcyBvbmUgbWVzc2Vz
IHVwIGluZGVudGF0aW9uCisgICAgICAgIC8vZWxzZSBpZigodHlwZSA9PT0gIn0iICYmIHN0cmVh
bS5wZWVrKCkgIT09ICI6IikgfHwgKHR5cGUgPT09ICJ9IiAmJiBzdHJlYW0uZWF0U3BhY2UoKSAm
JiBzdHJlYW0ucGVlaygpICE9PSAiOiIpKXJldHVybih0eXBlLCAidGFnIik7CisKKyAgICAgICAg
ZWxzZSBpZih0eXBlID09PSAiKSIgJiYgKHN0cmVhbS5jdXJyZW50KCkgPT0gImFuZCIgfHwgc3Ry
ZWFtLmN1cnJlbnQoKSA9PSAiYW5kICIpKXJldHVybiByZXQoInZhcmlhYmxlIiwgInZhcmlhYmxl
Iik7CisgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIikiICYmIChzdHJlYW0uY3VycmVudCgpID09
ICJ3aGVuIiB8fCBzdHJlYW0uY3VycmVudCgpID09ICJ3aGVuICIpKXJldHVybiByZXQoInZhcmlh
YmxlIiwgInZhcmlhYmxlIik7CisgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIikiIHx8IHR5cGUg
PT09ICJjb21tZW50IiB8fCB0eXBlID09PSAieyIpcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwor
ICAgICAgICBlbHNlIGlmKHN0cmVhbS5zb2woKSlyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Cisg
ICAgICAgIGVsc2UgaWYoKHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0cmVhbS5wZWVrKCkgPT09ICIj
IikgfHwgc3RyZWFtLnBlZWsoKSA9PT0gIiMiKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKKyAg
ICAgICAgZWxzZSBpZihzdGF0ZS5zdGFjay5sZW5ndGggPT09IDApcmV0dXJuIHJldCgidGFnIiwg
InRhZyIpOworICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICI7IiAmJiBzdHJlYW0ucGVlaygpICE9
PSB1bmRlZmluZWQgJiYgc3RyZWFtLnBlZWsoKS5tYXRjaCgvXlsufFwjXS9nKSAhPT0gbnVsbCly
ZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CisKKyAgICAgICAgZWxzZSBpZih0eXBlID09PSAiOiIp
e3N0cmVhbS5lYXRTcGFjZSgpO3JldHVybiByZXQobnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7fQor
CisgICAgICAgIGVsc2UgaWYoc3RyZWFtLmN1cnJlbnQoKSA9PT0gImFuZCAiIHx8IHN0cmVhbS5j
dXJyZW50KCkgPT09ICJhbmQiKXJldHVybiByZXQoInZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQo
KSk7CisgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIjsiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0
YWNrLmxlbmd0aC0xXSA9PT0gInsiKXJldHVybiByZXQoInZhcmlhYmxlIiwgc3RyZWFtLmN1cnJl
bnQoKSk7CisKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgt
MV0gPT09ICJydWxlIilyZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOworCisgICAg
ICAgIHJldHVybiByZXQoInRhZyIsIHN0cmVhbS5jdXJyZW50KCkpOwogICAgICAgfQogICAgIH0K
ICAgfQpAQCAtMjM0LDIwICszMTQsMzAgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJsZXNzIiwg
ZnVuY3Rpb24oY29uZmlnKSB7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJ9Iikgc3RhdGUuc3Rh
Y2sucG9wKCk7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJAbWVkaWEiKSBzdGF0ZS5zdGFjay5w
dXNoKCJAbWVkaWEiKTsKICAgICAgIGVsc2UgaWYgKHN0cmVhbS5jdXJyZW50KCkgPT09ICJmb250
LWZhbWlseSIpIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9ICJmb250LWZhbWls
eSI7CisgICAgICBlbHNlIGlmIChzdHJlYW0uY3VycmVudCgpID09PSAiYmFja2dyb3VuZC1wb3Np
dGlvbiIpIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9ICJiYWNrZ3JvdW5kLXBv
c2l0aW9uIjsKKyAgICAgIGVsc2UgaWYgKHN0cmVhbS5jdXJyZW50KCkgPT09ICJib3JkZXItY29s
b3IiKSBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPSAiYm9yZGVyLWNvbG9yIjsK
ICAgICAgIGVsc2UgaWYgKGNvbnRleHQgPT0gInsiICYmIHR5cGUgIT0gImNvbW1lbnQiICYmIHR5
cGUgIT09ICJ0YWciKSBzdGF0ZS5zdGFjay5wdXNoKCJydWxlIik7CiAgICAgICBlbHNlIGlmIChz
dHJlYW0ucGVlaygpID09PSAiOiIgJiYgc3RyZWFtLmN1cnJlbnQoKS5tYXRjaCgvQHwjLykgPT09
IG51bGwpIHN0eWxlID0gdHlwZTsKKyAgICAgIGlmKHR5cGUgPT09ICI7IiAmJiAoc3RhdGUuc3Rh
Y2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09ICJmb250LWZhbWlseSIgfHwgc3RhdGUuc3RhY2tb
c3RhdGUuc3RhY2subGVuZ3RoLTFdID09ICJiYWNrZ3JvdW5kLXBvc2l0aW9uIiB8fCBzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT0gImJvcmRlci1jb2xvciIpKXN0YXRlLnN0YWNr
W3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9IHN0cmVhbS5jdXJyZW50KCk7CisgICAgICBlbHNlIGlm
KHR5cGUgPT09ICJ0YWciICYmIHN0cmVhbS5wZWVrKCkgPT09ICIpIiAmJiBzdHJlYW0uY3VycmVu
dCgpLm1hdGNoKC9cOi8pID09PSBudWxsKXt0eXBlID0gbnVsbDsgc3R5bGUgPSBudWxsO30KKyAg
ICAgIC8vID8/Pz8KKyAgICAgIGVsc2UgaWYoKHR5cGUgPT09ICJ2YXJpYWJsZSIgJiYgc3RyZWFt
LnBlZWsoKSA9PT0gIikiKSB8fCAodHlwZSA9PT0gInZhcmlhYmxlIiAmJiBzdHJlYW0uZWF0U3Bh
Y2UoKSAmJiBzdHJlYW0ucGVlaygpID09PSAiKSIpKXJldHVybiByZXQobnVsbCxzdHJlYW0uY3Vy
cmVudCgpKTsKICAgICAgIHJldHVybiBzdHlsZTsKICAgICB9LAogCiAgICAgaW5kZW50OiBmdW5j
dGlvbihzdGF0ZSwgdGV4dEFmdGVyKSB7CiAgICAgICB2YXIgbiA9IHN0YXRlLnN0YWNrLmxlbmd0
aDsKLQogICAgICAgaWYgKC9eXH0vLnRlc3QodGV4dEFmdGVyKSkKLSAgICAgICAgbiAtPSBzdGF0
ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT0gInJ1bGUiID8gMiA6IDE7CisgICAgICAg
IG4gLT0gc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAicnVsZSIgPyAyIDog
MTsKKyAgICAgIGVsc2UgaWYgKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0yXSA9PT0g
InsiKQorICAgICAgICBuIC09IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0g
InJ1bGUiID8gMSA6IDA7CiAgICAgICByZXR1cm4gc3RhdGUuYmFzZUluZGVudCArIG4gKiBpbmRl
bnRVbml0OwogICAgIH0sCiAKLSAgICBlbGVjdHJpY0NoYXJzOiAifSIKKyAgICBlbGVjdHJpY0No
YXJzOiAifSIsCisgICAgYmxvY2tDb21tZW50U3RhcnQ6ICIvKiIsCisgICAgYmxvY2tDb21tZW50
RW5kOiAiKi8iLAorICAgIGxpbmVDb21tZW50OiAiLy8iCiAgIH07CiB9KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJv
ci9tYXRjaGJyYWNrZXRzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RXh0ZXJuYWwvQ29kZU1pcnJvci9tYXRjaGJyYWNrZXRzLmpzCmluZGV4IDEzMWZlODMxZmRjNzY2
MmJiNmYyNTlkNDM2NzVkZWZiMTlmZTc2ZWQuLjlkOWIzODgyZjdjNWRhNDcxMDdhMWQ5YTdkOTZi
ZWQwOWFjNjIwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbWF0Y2hicmFja2V0cy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL21hdGNoYnJhY2tl
dHMuanMKQEAgLTgsNiArOCw3IEBACiAgIGZ1bmN0aW9uIGZpbmRNYXRjaGluZ0JyYWNrZXQoY20s
IHdoZXJlLCBzdHJpY3QpIHsKICAgICB2YXIgc3RhdGUgPSBjbS5zdGF0ZS5tYXRjaEJyYWNrZXRz
OwogICAgIHZhciBtYXhTY2FuTGVuID0gKHN0YXRlICYmIHN0YXRlLm1heFNjYW5MaW5lTGVuZ3Ro
KSB8fCAxMDAwMDsKKyAgICB2YXIgbWF4U2NhbkxpbmVzID0gKHN0YXRlICYmIHN0YXRlLm1heFNj
YW5MaW5lcykgfHwgMTAwOwogCiAgICAgdmFyIGN1ciA9IHdoZXJlIHx8IGNtLmdldEN1cnNvcigp
LCBsaW5lID0gY20uZ2V0TGluZUhhbmRsZShjdXIubGluZSksIHBvcyA9IGN1ci5jaCAtIDE7CiAg
ICAgdmFyIG1hdGNoID0gKHBvcyA+PSAwICYmIG1hdGNoaW5nW2xpbmUudGV4dC5jaGFyQXQocG9z
KV0pIHx8IG1hdGNoaW5nW2xpbmUudGV4dC5jaGFyQXQoKytwb3MpXTsKQEAgLTMyLDcgKzMzLDcg
QEAKICAgICAgICAgfQogICAgICAgfQogICAgIH0KLSAgICBmb3IgKHZhciBpID0gY3VyLmxpbmUs
IGZvdW5kLCBlID0gZm9yd2FyZCA/IE1hdGgubWluKGkgKyAxMDAsIGNtLmxpbmVDb3VudCgpKSA6
IE1hdGgubWF4KC0xLCBpIC0gMTAwKTsgaSAhPSBlOyBpKz1kKSB7CisgICAgZm9yICh2YXIgaSA9
IGN1ci5saW5lLCBmb3VuZCwgZSA9IGZvcndhcmQgPyBNYXRoLm1pbihpICsgbWF4U2NhbkxpbmVz
LCBjbS5saW5lQ291bnQoKSkgOiBNYXRoLm1heCgtMSwgaSAtIG1heFNjYW5MaW5lcyk7IGkgIT0g
ZTsgaSs9ZCkgewogICAgICAgaWYgKGkgPT0gY3VyLmxpbmUpIGZvdW5kID0gc2NhbihsaW5lLCBp
LCBwb3MpOwogICAgICAgZWxzZSBmb3VuZCA9IHNjYW4oY20uZ2V0TGluZUhhbmRsZShpKSwgaSk7
CiAgICAgICBpZiAoZm91bmQpIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9wbGFjZWhvbGRlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvcGxh
Y2Vob2xkZXIuanMKaW5kZXggMThmOWRmZjNhYmEwZDExNGQwNjFjNDcwYjMxYTYyNmQyMTUyYWVm
ZS4uNzQ4YWZlNzI3NWE2YzhhNjdiMTQxM2JiYWYyZTk0NjNlMTc5ZGExZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9w
bGFjZWhvbGRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9F
eHRlcm5hbC9Db2RlTWlycm9yL3BsYWNlaG9sZGVyLmpzCkBAIC0yLDEyICsyLDEwIEBACiAgIENv
ZGVNaXJyb3IuZGVmaW5lT3B0aW9uKCJwbGFjZWhvbGRlciIsICIiLCBmdW5jdGlvbihjbSwgdmFs
LCBvbGQpIHsKICAgICB2YXIgcHJldiA9IG9sZCAmJiBvbGQgIT0gQ29kZU1pcnJvci5Jbml0Owog
ICAgIGlmICh2YWwgJiYgIXByZXYpIHsKLSAgICAgIGNtLm9uKCJmb2N1cyIsIG9uRm9jdXMpOwog
ICAgICAgY20ub24oImJsdXIiLCBvbkJsdXIpOwogICAgICAgY20ub24oImNoYW5nZSIsIG9uQ2hh
bmdlKTsKICAgICAgIG9uQ2hhbmdlKGNtKTsKICAgICB9IGVsc2UgaWYgKCF2YWwgJiYgcHJldikg
ewotICAgICAgY20ub2ZmKCJmb2N1cyIsIG9uRm9jdXMpOwogICAgICAgY20ub2ZmKCJibHVyIiwg
b25CbHVyKTsKICAgICAgIGNtLm9mZigiY2hhbmdlIiwgb25DaGFuZ2UpOwogICAgICAgY2xlYXJQ
bGFjZWhvbGRlcihjbSk7CkBAIC0zMyw5ICszMSw2IEBACiAgICAgY20uZGlzcGxheS5saW5lU3Bh
Y2UuaW5zZXJ0QmVmb3JlKGVsdCwgY20uZGlzcGxheS5saW5lU3BhY2UuZmlyc3RDaGlsZCk7CiAg
IH0KIAotICBmdW5jdGlvbiBvbkZvY3VzKGNtKSB7Ci0gICAgY2xlYXJQbGFjZWhvbGRlcihjbSk7
Ci0gIH0KICAgZnVuY3Rpb24gb25CbHVyKGNtKSB7CiAgICAgaWYgKGlzRW1wdHkoY20pKSBzZXRQ
bGFjZWhvbGRlcihjbSk7CiAgIH0KQEAgLTQzLDcgKzM4LDYgQEAKICAgICB2YXIgd3JhcHBlciA9
IGNtLmdldFdyYXBwZXJFbGVtZW50KCksIGVtcHR5ID0gaXNFbXB0eShjbSk7CiAgICAgd3JhcHBl
ci5jbGFzc05hbWUgPSB3cmFwcGVyLmNsYXNzTmFtZS5yZXBsYWNlKCIgQ29kZU1pcnJvci1lbXB0
eSIsICIiKSArIChlbXB0eSA/ICIgQ29kZU1pcnJvci1lbXB0eSIgOiAiIik7CiAKLSAgICBpZiAo
Y20uaGFzRm9jdXMoKSkgcmV0dXJuOwogICAgIGlmIChlbXB0eSkgc2V0UGxhY2Vob2xkZXIoY20p
OwogICAgIGVsc2UgY2xlYXJQbGFjZWhvbGRlcihjbSk7CiAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvcnVubW9k
ZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVN
aXJyb3IvcnVubW9kZS5qcwppbmRleCBhN2RhNmQ3MThmY2IxMmNkODM4MTNlYzJhZTZiZGU2N2E5
M2IyNWEyLi43YWFmYTJhZDhmNGMwMGJiYmFlNjU0OTkzNzA0M2NmNjAxNDgyNmE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWly
cm9yL3J1bm1vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RXh0ZXJuYWwvQ29kZU1pcnJvci9ydW5tb2RlLmpzCkBAIC00OSw3ICs0OSw3IEBAIENvZGVNaXJy
b3IucnVuTW9kZSA9IGZ1bmN0aW9uKHN0cmluZywgbW9kZXNwZWMsIGNhbGxiYWNrLCBvcHRpb25z
KSB7CiAgICAgdmFyIHN0cmVhbSA9IG5ldyBDb2RlTWlycm9yLlN0cmluZ1N0cmVhbShsaW5lc1tp
XSk7CiAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsKICAgICAgIHZhciBzdHlsZSA9IG1vZGUu
dG9rZW4oc3RyZWFtLCBzdGF0ZSk7Ci0gICAgICBjYWxsYmFjayhzdHJlYW0uY3VycmVudCgpLCBz
dHlsZSwgaSwgc3RyZWFtLnN0YXJ0KTsKKyAgICAgIGNhbGxiYWNrKHN0cmVhbS5jdXJyZW50KCks
IHN0eWxlLCBpLCBzdHJlYW0uc3RhcnQsIHN0YXRlKTsKICAgICAgIHN0cmVhbS5zdGFydCA9IHN0
cmVhbS5wb3M7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NlYXJjaGN1cnNvci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3Ivc2VhcmNo
Y3Vyc29yLmpzCmluZGV4IDNkYTNmMDRlOGZlNzNmNDhkYzhkMTEyNmEwMzViNmIwYTgzZjA2ZDcu
LmMwMzRkNTg2NWI5MjA1NjkyMmViNTY0MWRlNzVhZDJlZWUwNTRiYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3Ivc2Vh
cmNoY3Vyc29yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4
dGVybmFsL0NvZGVNaXJyb3Ivc2VhcmNoY3Vyc29yLmpzCkBAIC02OSw4ICs2OSw4IEBACiAgICAg
ICAgIHRoaXMubWF0Y2hlcyA9IGZ1bmN0aW9uKHJldmVyc2UsIHBvcykgewogICAgICAgICAgIHZh
ciBsbiA9IHBvcy5saW5lLCBpZHggPSAocmV2ZXJzZSA/IHRhcmdldC5sZW5ndGggLSAxIDogMCks
IG1hdGNoID0gdGFyZ2V0W2lkeF0sIGxpbmUgPSBmb2xkKGRvYy5nZXRMaW5lKGxuKSk7CiAgICAg
ICAgICAgdmFyIG9mZnNldEEgPSAocmV2ZXJzZSA/IGxpbmUuaW5kZXhPZihtYXRjaCkgKyBtYXRj
aC5sZW5ndGggOiBsaW5lLmxhc3RJbmRleE9mKG1hdGNoKSk7Ci0gICAgICAgICAgaWYgKHJldmVy
c2UgPyBvZmZzZXRBID49IHBvcy5jaCB8fCBvZmZzZXRBICE9IG1hdGNoLmxlbmd0aAotICAgICAg
ICAgICAgICA6IG9mZnNldEEgPD0gcG9zLmNoIHx8IG9mZnNldEEgIT0gbGluZS5sZW5ndGggLSBt
YXRjaC5sZW5ndGgpCisgICAgICAgICAgaWYgKHJldmVyc2UgPyBvZmZzZXRBID4gcG9zLmNoIHx8
IG9mZnNldEEgIT0gbWF0Y2gubGVuZ3RoCisgICAgICAgICAgICAgIDogb2Zmc2V0QSA8IHBvcy5j
aCB8fCBvZmZzZXRBICE9IGxpbmUubGVuZ3RoIC0gbWF0Y2gubGVuZ3RoKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgIGlmIChyZXZlcnNlID8g
IWxuIDogbG4gPT0gZG9jLmxpbmVDb3VudCgpIC0gMSkgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9zcWwu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWly
cm9yL3NxbC5qcwppbmRleCBlOWRjYjdmZDc1NDBjM2Q1MWVkNzJlOTBlZTViMmU1NWNmNzExNTYx
Li4zYmU2OGNhYTFhMmEwYTQ2OTBkNmY3MDdmNjgzMzRhOGJhNDE2NjMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3Nx
bC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9D
b2RlTWlycm9yL3NxbC5qcwpAQCAtMjYyLDExICsyNjIsMjQgQEAgQ29kZU1pcnJvci5kZWZpbmVN
b2RlKCJzcWwiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIHN1cHBvcnQ6
IHNldCgiT0RCQ2RvdFRhYmxlIGRvdWJsZVF1b3RlIGJpbmFyeU51bWJlciBoZXhOdW1iZXIiKQog
ICB9KTsKIAorICBDb2RlTWlycm9yLmRlZmluZU1JTUUoInRleHQveC1tc3NxbCIsIHsKKyAgICBu
YW1lOiAic3FsIiwKKyAgICBjbGllbnQ6IHNldCgiY2hhcnNldCBjbGVhciBjb25uZWN0IGVkaXQg
ZWdvIGV4aXQgZ28gaGVscCBub3BhZ2VyIG5vdGVlIG5vd2FybmluZyBwYWdlciBwcmludCBwcm9t
cHQgcXVpdCByZWhhc2ggc291cmNlIHN0YXR1cyBzeXN0ZW0gdGVlIiksCisgICAga2V5d29yZHM6
IHNldChzcWxLZXl3b3JkcyArICJiZWdpbiB0cmlnZ2VyIHByb2MgdmlldyBpbmRleCBmb3IgYWRk
IGNvbnN0cmFpbnQga2V5IHByaW1hcnkgZm9yZWlnbiBjb2xsYXRlIGNsdXN0ZXJlZCBub25jbHVz
dGVyZWQiKSwKKyAgICBidWlsdGluOiBzZXQoImJpZ2ludCBudW1lcmljIGJpdCBzbWFsbGludCBk
ZWNpbWFsIHNtYWxsbW9uZXkgaW50IHRpbnlpbnQgbW9uZXkgZmxvYXQgcmVhbCBjaGFyIHZhcmNo
YXIgdGV4dCBuY2hhciBudmFyY2hhciBudGV4dCBiaW5hcnkgdmFyYmluYXJ5IGltYWdlIGN1cnNv
ciB0aW1lc3RhbXAgaGllcmFyY2h5aWQgdW5pcXVlaWRlbnRpZmllciBzcWxfdmFyaWFudCB4bWwg
dGFibGUgIiksCisgICAgYXRvbXM6IHNldCgiZmFsc2UgdHJ1ZSBudWxsIHVua25vd24iKSwKKyAg
ICBvcGVyYXRvckNoYXJzOiAvXlsqK1wtJTw+IT1dLywKKyAgICBkYXRlU1FMOiBzZXQoImRhdGUg
ZGF0ZXRpbWVvZmZzZXQgZGF0ZXRpbWUyIHNtYWxsZGF0ZXRpbWUgZGF0ZXRpbWUgdGltZSIpLAor
ICAgIGhvb2tzOiB7CisgICAgICAiQCI6ICAgaG9va1ZhcgorICAgIH0KKyAgfSk7CisKICAgQ29k
ZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L3gtbXlzcWwiLCB7CiAgICAgbmFtZTogInNxbCIsCiAg
ICAgY2xpZW50OiBzZXQoImNoYXJzZXQgY2xlYXIgY29ubmVjdCBlZGl0IGVnbyBleGl0IGdvIGhl
bHAgbm9wYWdlciBub3RlZSBub3dhcm5pbmcgcGFnZXIgcHJpbnQgcHJvbXB0IHF1aXQgcmVoYXNo
IHNvdXJjZSBzdGF0dXMgc3lzdGVtIHRlZSIpLAotICAgIGtleXdvcmRzOiBzZXQoc3FsS2V5d29y
ZHMgKyAiYWNjZXNzaWJsZSBhY3Rpb24gYWRkIGFmdGVyIGFsZ29yaXRobSBhbGwgYW5hbHl6ZSBh
c2Vuc2l0aXZlIGF0IGF1dGhvcnMgYXV0b19pbmNyZW1lbnQgYXV0b2NvbW1pdCBhdmcgYXZnX3Jv
d19sZW5ndGggYmVmb3JlIGJpbmFyeSBiaW5sb2cgYm90aCBidHJlZSBjYWNoZSBjYWxsIGNhc2Nh
ZGUgY2FzY2FkZWQgY2FzZSBjYXRhbG9nX25hbWUgY2hhaW4gY2hhbmdlIGNoYW5nZWQgY2hhcmFj
dGVyIGNoZWNrIGNoZWNrcG9pbnQgY2hlY2tzdW0gY2xhc3Nfb3JpZ2luIGNsaWVudF9zdGF0aXN0
aWNzIGNsb3NlIGNvYWxlc2NlIGNvZGUgY29sbGF0ZSBjb2xsYXRpb24gY29sbGF0aW9ucyBjb2x1
bW4gY29sdW1ucyBjb21tZW50IGNvbW1pdCBjb21taXR0ZWQgY29tcGxldGlvbiBjb25jdXJyZW50
IGNvbmRpdGlvbiBjb25uZWN0aW9uIGNvbnNpc3RlbnQgY29uc3RyYWludCBjb250YWlucyBjb250
aW51ZSBjb250cmlidXRvcnMgY29udmVydCBjcm9zcyBjdXJyZW50X2RhdGUgY3VycmVudF90aW1l
IGN1cnJlbnRfdGltZXN0YW1wIGN1cnJlbnRfdXNlciBjdXJzb3IgZGF0YSBkYXRhYmFzZSBkYXRh
YmFzZXMgZGF5X2hvdXIgZGF5X21pY3Jvc2Vjb25kIGRheV9taW51dGUgZGF5X3NlY29uZCBkZWFs
bG9jYXRlIGRlYyBkZWNsYXJlIGRlZmF1bHQgZGVsYXlfa2V5X3dyaXRlIGRlbGF5ZWQgZGVsaW1p
dGVyIGRlc19rZXlfZmlsZSBkZXNjcmliZSBkZXRlcm1pbmlzdGljIGRldl9wb3AgZGV2X3NhbXAg
ZGV2aWFuY2UgZGlyZWN0b3J5IGRpc2FibGUgZGlzY2FyZCBkaXN0aW5jdHJvdyBkaXYgZHVhbCBk
dW1wZmlsZSBlYWNoIGVsc2VpZiBlbmFibGUgZW5jbG9zZWQgZW5kIGVuZHMgZW5naW5lIGVuZ2lu
ZXMgZW51bSBlcnJvcnMgZXNjYXBlIGVzY2FwZWQgZXZlbiBldmVudCBldmVudHMgZXZlcnkgZXhl
Y3V0ZSBleGlzdHMgZXhpdCBleHBsYWluIGV4dGVuZGVkIGZhc3QgZmV0Y2ggZmllbGQgZmllbGRz
IGZpcnN0IGZsdXNoIGZvciBmb3JjZSBmb3JlaWduIGZvdW5kX3Jvd3MgZnVsbCBmdWxsdGV4dCBm
dW5jdGlvbiBnZW5lcmFsIGdsb2JhbCBncmFudCBncmFudHMgZ3JvdXAgZ3JvdXBieV9jb25jYXQg
aGFuZGxlciBoYXNoIGhlbHAgaGlnaF9wcmlvcml0eSBob3N0cyBob3VyX21pY3Jvc2Vjb25kIGhv
dXJfbWludXRlIGhvdXJfc2Vjb25kIGlmIGlnbm9yZSBpZ25vcmVfc2VydmVyX2lkcyBpbXBvcnQg
aW5kZXggaW5kZXhfc3RhdGlzdGljcyBpbmZpbGUgaW5uZXIgaW5ub2RiIGlub3V0IGluc2Vuc2l0
aXZlIGluc2VydF9tZXRob2QgaW5zdGFsbCBpbnRlcnZhbCBpbnZva2VyIGlzb2xhdGlvbiBpdGVy
YXRlIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFzdCBsZWFkaW5nIGxlYXZlIGxlZnQgbGV2ZWwg
bGltaXQgbGluZWFyIGxpbmVzIGxpc3QgbG9hZCBsb2NhbCBsb2NhbHRpbWUgbG9jYWx0aW1lc3Rh
bXAgbG9jayBsb2dzIGxvd19wcmlvcml0eSBtYXN0ZXIgbWFzdGVyX2hlYXJ0YmVhdF9wZXJpb2Qg
bWFzdGVyX3NzbF92ZXJpZnlfc2VydmVyX2NlcnQgbWFzdGVycyBtYXRjaCBtYXggbWF4X3Jvd3Mg
bWF4dmFsdWUgbWVzc2FnZV90ZXh0IG1pZGRsZWludCBtaWdyYXRlIG1pbiBtaW5fcm93cyBtaW51
dGVfbWljcm9zZWNvbmQgbWludXRlX3NlY29uZCBtb2QgbW9kZSBtb2RpZmllcyBtb2RpZnkgbXV0
ZXggbXlzcWxfZXJybm8gbmF0dXJhbCBuZXh0IG5vIG5vX3dyaXRlX3RvX2JpbmxvZyBvZmZsaW5l
IG9mZnNldCBvbmUgb25saW5lIG9wZW4gb3B0aW1pemUgb3B0aW9uIG9wdGlvbmFsbHkgb3V0IG91
dGVyIG91dGZpbGUgcGFja19rZXlzIHBhcnNlciBwYXJ0aXRpb24gcGFydGl0aW9ucyBwYXNzd29y
ZCBwaGFzZSBwbHVnaW4gcGx1Z2lucyBwcmVwYXJlIHByZXNlcnZlIHByZXYgcHJpbWFyeSBwcml2
aWxlZ2VzIHByb2NlZHVyZSBwcm9jZXNzbGlzdCBwcm9maWxlIHByb2ZpbGVzIHB1cmdlIHF1ZXJ5
IHF1aWNrIHJhbmdlIHJlYWQgcmVhZF93cml0ZSByZWFkcyByZWFsIHJlYnVpbGQgcmVjb3ZlciBy
ZWZlcmVuY2VzIHJlZ2V4cCByZWxheWxvZyByZWxlYXNlIHJlbW92ZSByZW5hbWUgcmVvcmdhbml6
ZSByZXBhaXIgcmVwZWF0YWJsZSByZXBsYWNlIHJlcXVpcmUgcmVzaWduYWwgcmVzdHJpY3QgcmVz
dW1lIHJldHVybiByZXR1cm5zIHJldm9rZSByaWdodCBybGlrZSByb2xsYmFjayByb2xsdXAgcm93
IHJvd19mb3JtYXQgcnRyZWUgc2F2ZXBvaW50IHNjaGVkdWxlIHNjaGVtYSBzY2hlbWFfbmFtZSBz
Y2hlbWFzIHNlY29uZF9taWNyb3NlY29uZCBzZWN1cml0eSBzZW5zaXRpdmUgc2VwYXJhdG9yIHNl
cmlhbGl6YWJsZSBzZXJ2ZXIgc2Vzc2lvbiBzaGFyZSBzaG93IHNpZ25hbCBzbGF2ZSBzbG93IHNt
YWxsaW50IHNuYXBzaG90IHNvbmFtZSBzcGF0aWFsIHNwZWNpZmljIHNxbCBzcWxfYmlnX3Jlc3Vs
dCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3FsX2NhbGNfZm91bmRfcm93cyBzcWxfbm9f
Y2FjaGUgc3FsX3NtYWxsX3Jlc3VsdCBzcWxleGNlcHRpb24gc3Fsc3RhdGUgc3Fsd2FybmluZyBz
c2wgc3RhcnQgc3RhcnRpbmcgc3RhcnRzIHN0YXR1cyBzdGQgc3RkZGV2IHN0ZGRldl9wb3Agc3Rk
ZGV2X3NhbXAgc3RvcmFnZSBzdHJhaWdodF9qb2luIHN1YmNsYXNzX29yaWdpbiBzdW0gc3VzcGVu
ZCB0YWJsZV9uYW1lIHRhYmxlX3N0YXRpc3RpY3MgdGFibGVzIHRhYmxlc3BhY2UgdGVtcG9yYXJ5
IHRlcm1pbmF0ZWQgdG8gdHJhaWxpbmcgdHJhbnNhY3Rpb24gdHJpZ2dlciB0cmlnZ2VycyB0cnVu
Y2F0ZSB1bmNvbW1pdHRlZCB1bmRvIHVuaW5zdGFsbCB1bmlxdWUgdW5sb2NrIHVwZ3JhZGUgdXNh
Z2UgdXNlIHVzZV9mcm0gdXNlciB1c2VyX3Jlc291cmNlcyB1c2VyX3N0YXRpc3RpY3MgdXNpbmcg
dXRjX2RhdGUgdXRjX3RpbWUgdXRjX3RpbWVzdGFtcCB2YWx1ZSB2YXJpYWJsZXMgdmFyeWluZyB2
aWV3IHZpZXdzIHdhcm5pbmdzIHdoZW4gd2hpbGUgd2l0aCB3b3JrIHdyaXRlIHhhIHhvciB5ZWFy
X21vbnRoIHplcm9maWxsIGJlZ2luIGRvIHRoZW4gZWxzZSBsb29wIHJlcGVhdCIpLAotICAgIGJ1
aWx0aW46IHNldCgiYm9vbCBib29sZWFuIGJpdCBibG9iIGRlY2ltYWwgZG91YmxlIGVudW0gZmxv
YXQgbG9uZyBsb25nYmxvYiBsb25ndGV4dCBtZWRpdW0gbWVkaXVtYmxvYiBtZWRpdW1pbnQgbWVk
aXVtdGV4dCB0aW1lIHRpbWVzdGFtcCB0aW55YmxvYiB0aW55aW50IHRpbnl0ZXh0IHRleHQgYmln
aW50IGludCBpbnQxIGludDIgaW50MyBpbnQ0IGludDggaW50ZWdlciBmbG9hdCBmbG9hdDQgZmxv
YXQ4IGRvdWJsZSBjaGFyIHZhcmJpbmFyeSB2YXJjaGFyIHZhcmNoYXJhY3RlciBwcmVjaXNpb24g
ZGF0ZSBkYXRldGltZSB5ZWFyIHVuc2lnbmVkIHNpZ25lZCBudW1lcmljIiksCisgICAga2V5d29y
ZHM6IHNldChzcWxLZXl3b3JkcyArICJhY2Nlc3NpYmxlIGFjdGlvbiBhZGQgYWZ0ZXIgYWxnb3Jp
dGhtIGFsbCBhbmFseXplIGFzZW5zaXRpdmUgYXQgYXV0aG9ycyBhdXRvX2luY3JlbWVudCBhdXRv
Y29tbWl0IGF2ZyBhdmdfcm93X2xlbmd0aCBiZWZvcmUgYmluYXJ5IGJpbmxvZyBib3RoIGJ0cmVl
IGNhY2hlIGNhbGwgY2FzY2FkZSBjYXNjYWRlZCBjYXNlIGNhdGFsb2dfbmFtZSBjaGFpbiBjaGFu
Z2UgY2hhbmdlZCBjaGFyYWN0ZXIgY2hlY2sgY2hlY2twb2ludCBjaGVja3N1bSBjbGFzc19vcmln
aW4gY2xpZW50X3N0YXRpc3RpY3MgY2xvc2UgY29hbGVzY2UgY29kZSBjb2xsYXRlIGNvbGxhdGlv
biBjb2xsYXRpb25zIGNvbHVtbiBjb2x1bW5zIGNvbW1lbnQgY29tbWl0IGNvbW1pdHRlZCBjb21w
bGV0aW9uIGNvbmN1cnJlbnQgY29uZGl0aW9uIGNvbm5lY3Rpb24gY29uc2lzdGVudCBjb25zdHJh
aW50IGNvbnRhaW5zIGNvbnRpbnVlIGNvbnRyaWJ1dG9ycyBjb252ZXJ0IGNyb3NzIGN1cnJlbnQg
Y3VycmVudF9kYXRlIGN1cnJlbnRfdGltZSBjdXJyZW50X3RpbWVzdGFtcCBjdXJyZW50X3VzZXIg
Y3Vyc29yIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRheV9ob3VyIGRheV9taWNyb3NlY29uZCBk
YXlfbWludXRlIGRheV9zZWNvbmQgZGVhbGxvY2F0ZSBkZWMgZGVjbGFyZSBkZWZhdWx0IGRlbGF5
X2tleV93cml0ZSBkZWxheWVkIGRlbGltaXRlciBkZXNfa2V5X2ZpbGUgZGVzY3JpYmUgZGV0ZXJt
aW5pc3RpYyBkZXZfcG9wIGRldl9zYW1wIGRldmlhbmNlIGRpYWdub3N0aWNzIGRpcmVjdG9yeSBk
aXNhYmxlIGRpc2NhcmQgZGlzdGluY3Ryb3cgZGl2IGR1YWwgZHVtcGZpbGUgZWFjaCBlbHNlaWYg
ZW5hYmxlIGVuY2xvc2VkIGVuZCBlbmRzIGVuZ2luZSBlbmdpbmVzIGVudW0gZXJyb3JzIGVzY2Fw
ZSBlc2NhcGVkIGV2ZW4gZXZlbnQgZXZlbnRzIGV2ZXJ5IGV4ZWN1dGUgZXhpc3RzIGV4aXQgZXhw
bGFpbiBleHRlbmRlZCBmYXN0IGZldGNoIGZpZWxkIGZpZWxkcyBmaXJzdCBmbHVzaCBmb3IgZm9y
Y2UgZm9yZWlnbiBmb3VuZF9yb3dzIGZ1bGwgZnVsbHRleHQgZnVuY3Rpb24gZ2VuZXJhbCBnZXQg
Z2xvYmFsIGdyYW50IGdyYW50cyBncm91cCBncm91cGJ5X2NvbmNhdCBoYW5kbGVyIGhhc2ggaGVs
cCBoaWdoX3ByaW9yaXR5IGhvc3RzIGhvdXJfbWljcm9zZWNvbmQgaG91cl9taW51dGUgaG91cl9z
ZWNvbmQgaWYgaWdub3JlIGlnbm9yZV9zZXJ2ZXJfaWRzIGltcG9ydCBpbmRleCBpbmRleF9zdGF0
aXN0aWNzIGluZmlsZSBpbm5lciBpbm5vZGIgaW5vdXQgaW5zZW5zaXRpdmUgaW5zZXJ0X21ldGhv
ZCBpbnN0YWxsIGludGVydmFsIGludm9rZXIgaXNvbGF0aW9uIGl0ZXJhdGUga2V5IGtleXMga2ls
bCBsYW5ndWFnZSBsYXN0IGxlYWRpbmcgbGVhdmUgbGVmdCBsZXZlbCBsaW1pdCBsaW5lYXIgbGlu
ZXMgbGlzdCBsb2FkIGxvY2FsIGxvY2FsdGltZSBsb2NhbHRpbWVzdGFtcCBsb2NrIGxvZ3MgbG93
X3ByaW9yaXR5IG1hc3RlciBtYXN0ZXJfaGVhcnRiZWF0X3BlcmlvZCBtYXN0ZXJfc3NsX3Zlcmlm
eV9zZXJ2ZXJfY2VydCBtYXN0ZXJzIG1hdGNoIG1heCBtYXhfcm93cyBtYXh2YWx1ZSBtZXNzYWdl
X3RleHQgbWlkZGxlaW50IG1pZ3JhdGUgbWluIG1pbl9yb3dzIG1pbnV0ZV9taWNyb3NlY29uZCBt
aW51dGVfc2Vjb25kIG1vZCBtb2RlIG1vZGlmaWVzIG1vZGlmeSBtdXRleCBteXNxbF9lcnJubyBu
YXR1cmFsIG5leHQgbm8gbm9fd3JpdGVfdG9fYmlubG9nIG9mZmxpbmUgb2Zmc2V0IG9uZSBvbmxp
bmUgb3BlbiBvcHRpbWl6ZSBvcHRpb24gb3B0aW9uYWxseSBvdXQgb3V0ZXIgb3V0ZmlsZSBwYWNr
X2tleXMgcGFyc2VyIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc3N3b3JkIHBoYXNlIHBsdWdpbiBw
bHVnaW5zIHByZXBhcmUgcHJlc2VydmUgcHJldiBwcmltYXJ5IHByaXZpbGVnZXMgcHJvY2VkdXJl
IHByb2Nlc3NsaXN0IHByb2ZpbGUgcHJvZmlsZXMgcHVyZ2UgcXVlcnkgcXVpY2sgcmFuZ2UgcmVh
ZCByZWFkX3dyaXRlIHJlYWRzIHJlYWwgcmVidWlsZCByZWNvdmVyIHJlZmVyZW5jZXMgcmVnZXhw
IHJlbGF5bG9nIHJlbGVhc2UgcmVtb3ZlIHJlbmFtZSByZW9yZ2FuaXplIHJlcGFpciByZXBlYXRh
YmxlIHJlcGxhY2UgcmVxdWlyZSByZXNpZ25hbCByZXN0cmljdCByZXN1bWUgcmV0dXJuIHJldHVy
bnMgcmV2b2tlIHJpZ2h0IHJsaWtlIHJvbGxiYWNrIHJvbGx1cCByb3cgcm93X2Zvcm1hdCBydHJl
ZSBzYXZlcG9pbnQgc2NoZWR1bGUgc2NoZW1hIHNjaGVtYV9uYW1lIHNjaGVtYXMgc2Vjb25kX21p
Y3Jvc2Vjb25kIHNlY3VyaXR5IHNlbnNpdGl2ZSBzZXBhcmF0b3Igc2VyaWFsaXphYmxlIHNlcnZl
ciBzZXNzaW9uIHNoYXJlIHNob3cgc2lnbmFsIHNsYXZlIHNsb3cgc21hbGxpbnQgc25hcHNob3Qg
c29uYW1lIHNwYXRpYWwgc3BlY2lmaWMgc3FsIHNxbF9iaWdfcmVzdWx0IHNxbF9idWZmZXJfcmVz
dWx0IHNxbF9jYWNoZSBzcWxfY2FsY19mb3VuZF9yb3dzIHNxbF9ub19jYWNoZSBzcWxfc21hbGxf
cmVzdWx0IHNxbGV4Y2VwdGlvbiBzcWxzdGF0ZSBzcWx3YXJuaW5nIHNzbCBzdGFydCBzdGFydGlu
ZyBzdGFydHMgc3RhdHVzIHN0ZCBzdGRkZXYgc3RkZGV2X3BvcCBzdGRkZXZfc2FtcCBzdG9yYWdl
IHN0cmFpZ2h0X2pvaW4gc3ViY2xhc3Nfb3JpZ2luIHN1bSBzdXNwZW5kIHRhYmxlX25hbWUgdGFi
bGVfc3RhdGlzdGljcyB0YWJsZXMgdGFibGVzcGFjZSB0ZW1wb3JhcnkgdGVybWluYXRlZCB0byB0
cmFpbGluZyB0cmFuc2FjdGlvbiB0cmlnZ2VyIHRyaWdnZXJzIHRydW5jYXRlIHVuY29tbWl0dGVk
IHVuZG8gdW5pbnN0YWxsIHVuaXF1ZSB1bmxvY2sgdXBncmFkZSB1c2FnZSB1c2UgdXNlX2ZybSB1
c2VyIHVzZXJfcmVzb3VyY2VzIHVzZXJfc3RhdGlzdGljcyB1c2luZyB1dGNfZGF0ZSB1dGNfdGlt
ZSB1dGNfdGltZXN0YW1wIHZhbHVlIHZhcmlhYmxlcyB2YXJ5aW5nIHZpZXcgdmlld3Mgd2Fybmlu
Z3Mgd2hlbiB3aGlsZSB3aXRoIHdvcmsgd3JpdGUgeGEgeG9yIHllYXJfbW9udGggemVyb2ZpbGwg
YmVnaW4gZG8gdGhlbiBlbHNlIGxvb3AgcmVwZWF0IiksCisgICAgYnVpbHRpbjogc2V0KCJib29s
IGJvb2xlYW4gYml0IGJsb2IgZGVjaW1hbCBkb3VibGUgZmxvYXQgbG9uZyBsb25nYmxvYiBsb25n
dGV4dCBtZWRpdW0gbWVkaXVtYmxvYiBtZWRpdW1pbnQgbWVkaXVtdGV4dCB0aW1lIHRpbWVzdGFt
cCB0aW55YmxvYiB0aW55aW50IHRpbnl0ZXh0IHRleHQgYmlnaW50IGludCBpbnQxIGludDIgaW50
MyBpbnQ0IGludDggaW50ZWdlciBmbG9hdCBmbG9hdDQgZmxvYXQ4IGRvdWJsZSBjaGFyIHZhcmJp
bmFyeSB2YXJjaGFyIHZhcmNoYXJhY3RlciBwcmVjaXNpb24gZGF0ZSBkYXRldGltZSB5ZWFyIHVu
c2lnbmVkIHNpZ25lZCBudW1lcmljIiksCiAgICAgYXRvbXM6IHNldCgiZmFsc2UgdHJ1ZSBudWxs
IHVua25vd24iKSwKICAgICBvcGVyYXRvckNoYXJzOiAvXlsqK1wtJTw+IT0mfF5dLywKICAgICBk
YXRlU1FMOiBzZXQoImRhdGUgdGltZSB0aW1lc3RhbXAiKSwKQEAgLTI4MSw4ICsyOTQsOCBAQCBD
b2RlTWlycm9yLmRlZmluZU1vZGUoInNxbCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmln
KSB7CiAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC94LW1hcmlhZGIiLCB7CiAgICAgbmFt
ZTogInNxbCIsCiAgICAgY2xpZW50OiBzZXQoImNoYXJzZXQgY2xlYXIgY29ubmVjdCBlZGl0IGVn
byBleGl0IGdvIGhlbHAgbm9wYWdlciBub3RlZSBub3dhcm5pbmcgcGFnZXIgcHJpbnQgcHJvbXB0
IHF1aXQgcmVoYXNoIHNvdXJjZSBzdGF0dXMgc3lzdGVtIHRlZSIpLAotICAgIGtleXdvcmRzOiBz
ZXQoc3FsS2V5d29yZHMgKyAiYWNjZXNzaWJsZSBhY3Rpb24gYWRkIGFmdGVyIGFsZ29yaXRobSBh
bGwgYWx3YXlzIGFuYWx5emUgYXNlbnNpdGl2ZSBhdCBhdXRob3JzIGF1dG9faW5jcmVtZW50IGF1
dG9jb21taXQgYXZnIGF2Z19yb3dfbGVuZ3RoIGJlZm9yZSBiaW5hcnkgYmlubG9nIGJvdGggYnRy
ZWUgY2FjaGUgY2FsbCBjYXNjYWRlIGNhc2NhZGVkIGNhc2UgY2F0YWxvZ19uYW1lIGNoYWluIGNo
YW5nZSBjaGFuZ2VkIGNoYXJhY3RlciBjaGVjayBjaGVja3BvaW50IGNoZWNrc3VtIGNsYXNzX29y
aWdpbiBjbGllbnRfc3RhdGlzdGljcyBjbG9zZSBjb2FsZXNjZSBjb2RlIGNvbGxhdGUgY29sbGF0
aW9uIGNvbGxhdGlvbnMgY29sdW1uIGNvbHVtbnMgY29tbWVudCBjb21taXQgY29tbWl0dGVkIGNv
bXBsZXRpb24gY29uY3VycmVudCBjb25kaXRpb24gY29ubmVjdGlvbiBjb25zaXN0ZW50IGNvbnN0
cmFpbnQgY29udGFpbnMgY29udGludWUgY29udHJpYnV0b3JzIGNvbnZlcnQgY3Jvc3MgY3VycmVu
dF9kYXRlIGN1cnJlbnRfdGltZSBjdXJyZW50X3RpbWVzdGFtcCBjdXJyZW50X3VzZXIgY3Vyc29y
IGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRheV9ob3VyIGRheV9taWNyb3NlY29uZCBkYXlfbWlu
dXRlIGRheV9zZWNvbmQgZGVhbGxvY2F0ZSBkZWMgZGVjbGFyZSBkZWZhdWx0IGRlbGF5X2tleV93
cml0ZSBkZWxheWVkIGRlbGltaXRlciBkZXNfa2V5X2ZpbGUgZGVzY3JpYmUgZGV0ZXJtaW5pc3Rp
YyBkZXZfcG9wIGRldl9zYW1wIGRldmlhbmNlIGRpcmVjdG9yeSBkaXNhYmxlIGRpc2NhcmQgZGlz
dGluY3Ryb3cgZGl2IGR1YWwgZHVtcGZpbGUgZWFjaCBlbHNlaWYgZW5hYmxlIGVuY2xvc2VkIGVu
ZCBlbmRzIGVuZ2luZSBlbmdpbmVzIGVudW0gZXJyb3JzIGVzY2FwZSBlc2NhcGVkIGV2ZW4gZXZl
bnQgZXZlbnRzIGV2ZXJ5IGV4ZWN1dGUgZXhpc3RzIGV4aXQgZXhwbGFpbiBleHRlbmRlZCBmYXN0
IGZldGNoIGZpZWxkIGZpZWxkcyBmaXJzdCBmbHVzaCBmb3IgZm9yY2UgZm9yZWlnbiBmb3VuZF9y
b3dzIGZ1bGwgZnVsbHRleHQgZnVuY3Rpb24gZ2VuZXJhbCBnZW5lcmF0ZWQgZ2xvYmFsIGdyYW50
IGdyYW50cyBncm91cCBncm91cGJ5X2NvbmNhdCBoYW5kbGVyIGhhcmQgaGFzaCBoZWxwIGhpZ2hf
cHJpb3JpdHkgaG9zdHMgaG91cl9taWNyb3NlY29uZCBob3VyX21pbnV0ZSBob3VyX3NlY29uZCBp
ZiBpZ25vcmUgaWdub3JlX3NlcnZlcl9pZHMgaW1wb3J0IGluZGV4IGluZGV4X3N0YXRpc3RpY3Mg
aW5maWxlIGlubmVyIGlubm9kYiBpbm91dCBpbnNlbnNpdGl2ZSBpbnNlcnRfbWV0aG9kIGluc3Rh
bGwgaW50ZXJ2YWwgaW52b2tlciBpc29sYXRpb24gaXRlcmF0ZSBrZXkga2V5cyBraWxsIGxhbmd1
YWdlIGxhc3QgbGVhZGluZyBsZWF2ZSBsZWZ0IGxldmVsIGxpbWl0IGxpbmVhciBsaW5lcyBsaXN0
IGxvYWQgbG9jYWwgbG9jYWx0aW1lIGxvY2FsdGltZXN0YW1wIGxvY2sgbG9ncyBsb3dfcHJpb3Jp
dHkgbWFzdGVyIG1hc3Rlcl9oZWFydGJlYXRfcGVyaW9kIG1hc3Rlcl9zc2xfdmVyaWZ5X3NlcnZl
cl9jZXJ0IG1hc3RlcnMgbWF0Y2ggbWF4IG1heF9yb3dzIG1heHZhbHVlIG1lc3NhZ2VfdGV4dCBt
aWRkbGVpbnQgbWlncmF0ZSBtaW4gbWluX3Jvd3MgbWludXRlX21pY3Jvc2Vjb25kIG1pbnV0ZV9z
ZWNvbmQgbW9kIG1vZGUgbW9kaWZpZXMgbW9kaWZ5IG11dGV4IG15c3FsX2Vycm5vIG5hdHVyYWwg
bmV4dCBubyBub193cml0ZV90b19iaW5sb2cgb2ZmbGluZSBvZmZzZXQgb25lIG9ubGluZSBvcGVu
IG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG91dCBvdXRlciBvdXRmaWxlIHBhY2tfa2V5cyBw
YXJzZXIgcGFydGl0aW9uIHBhcnRpdGlvbnMgcGFzc3dvcmQgcGVyc2lzdGVudCBwaGFzZSBwbHVn
aW4gcGx1Z2lucyBwcmVwYXJlIHByZXNlcnZlIHByZXYgcHJpbWFyeSBwcml2aWxlZ2VzIHByb2Nl
ZHVyZSBwcm9jZXNzbGlzdCBwcm9maWxlIHByb2ZpbGVzIHB1cmdlIHF1ZXJ5IHF1aWNrIHJhbmdl
IHJlYWQgcmVhZF93cml0ZSByZWFkcyByZWFsIHJlYnVpbGQgcmVjb3ZlciByZWZlcmVuY2VzIHJl
Z2V4cCByZWxheWxvZyByZWxlYXNlIHJlbW92ZSByZW5hbWUgcmVvcmdhbml6ZSByZXBhaXIgcmVw
ZWF0YWJsZSByZXBsYWNlIHJlcXVpcmUgcmVzaWduYWwgcmVzdHJpY3QgcmVzdW1lIHJldHVybiBy
ZXR1cm5zIHJldm9rZSByaWdodCBybGlrZSByb2xsYmFjayByb2xsdXAgcm93IHJvd19mb3JtYXQg
cnRyZWUgc2F2ZXBvaW50IHNjaGVkdWxlIHNjaGVtYSBzY2hlbWFfbmFtZSBzY2hlbWFzIHNlY29u
ZF9taWNyb3NlY29uZCBzZWN1cml0eSBzZW5zaXRpdmUgc2VwYXJhdG9yIHNlcmlhbGl6YWJsZSBz
ZXJ2ZXIgc2Vzc2lvbiBzaGFyZSBzaG93IHNpZ25hbCBzbGF2ZSBzbG93IHNtYWxsaW50IHNuYXBz
aG90IHNvZnQgc29uYW1lIHNwYXRpYWwgc3BlY2lmaWMgc3FsIHNxbF9iaWdfcmVzdWx0IHNxbF9i
dWZmZXJfcmVzdWx0IHNxbF9jYWNoZSBzcWxfY2FsY19mb3VuZF9yb3dzIHNxbF9ub19jYWNoZSBz
cWxfc21hbGxfcmVzdWx0IHNxbGV4Y2VwdGlvbiBzcWxzdGF0ZSBzcWx3YXJuaW5nIHNzbCBzdGFy
dCBzdGFydGluZyBzdGFydHMgc3RhdHVzIHN0ZCBzdGRkZXYgc3RkZGV2X3BvcCBzdGRkZXZfc2Ft
cCBzdG9yYWdlIHN0cmFpZ2h0X2pvaW4gc3ViY2xhc3Nfb3JpZ2luIHN1bSBzdXNwZW5kIHRhYmxl
X25hbWUgdGFibGVfc3RhdGlzdGljcyB0YWJsZXMgdGFibGVzcGFjZSB0ZW1wb3JhcnkgdGVybWlu
YXRlZCB0byB0cmFpbGluZyB0cmFuc2FjdGlvbiB0cmlnZ2VyIHRyaWdnZXJzIHRydW5jYXRlIHVu
Y29tbWl0dGVkIHVuZG8gdW5pbnN0YWxsIHVuaXF1ZSB1bmxvY2sgdXBncmFkZSB1c2FnZSB1c2Ug
dXNlX2ZybSB1c2VyIHVzZXJfcmVzb3VyY2VzIHVzZXJfc3RhdGlzdGljcyB1c2luZyB1dGNfZGF0
ZSB1dGNfdGltZSB1dGNfdGltZXN0YW1wIHZhbHVlIHZhcmlhYmxlcyB2YXJ5aW5nIHZpZXcgdmll
d3MgdmlydHVhbCB3YXJuaW5ncyB3aGVuIHdoaWxlIHdpdGggd29yayB3cml0ZSB4YSB4b3IgeWVh
cl9tb250aCB6ZXJvZmlsbCBiZWdpbiBkbyB0aGVuIGVsc2UgbG9vcCByZXBlYXQiKSwKLSAgICBi
dWlsdGluOiBzZXQoImJvb2wgYm9vbGVhbiBiaXQgYmxvYiBkZWNpbWFsIGRvdWJsZSBlbnVtIGZs
b2F0IGxvbmcgbG9uZ2Jsb2IgbG9uZ3RleHQgbWVkaXVtIG1lZGl1bWJsb2IgbWVkaXVtaW50IG1l
ZGl1bXRleHQgdGltZSB0aW1lc3RhbXAgdGlueWJsb2IgdGlueWludCB0aW55dGV4dCB0ZXh0IGJp
Z2ludCBpbnQgaW50MSBpbnQyIGludDMgaW50NCBpbnQ4IGludGVnZXIgZmxvYXQgZmxvYXQ0IGZs
b2F0OCBkb3VibGUgY2hhciB2YXJiaW5hcnkgdmFyY2hhciB2YXJjaGFyYWN0ZXIgcHJlY2lzaW9u
IGRhdGUgZGF0ZXRpbWUgeWVhciB1bnNpZ25lZCBzaWduZWQgbnVtZXJpYyIpLAorICAgIGtleXdv
cmRzOiBzZXQoc3FsS2V5d29yZHMgKyAiYWNjZXNzaWJsZSBhY3Rpb24gYWRkIGFmdGVyIGFsZ29y
aXRobSBhbGwgYWx3YXlzIGFuYWx5emUgYXNlbnNpdGl2ZSBhdCBhdXRob3JzIGF1dG9faW5jcmVt
ZW50IGF1dG9jb21taXQgYXZnIGF2Z19yb3dfbGVuZ3RoIGJlZm9yZSBiaW5hcnkgYmlubG9nIGJv
dGggYnRyZWUgY2FjaGUgY2FsbCBjYXNjYWRlIGNhc2NhZGVkIGNhc2UgY2F0YWxvZ19uYW1lIGNo
YWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJhY3RlciBjaGVjayBjaGVja3BvaW50IGNoZWNrc3VtIGNs
YXNzX29yaWdpbiBjbGllbnRfc3RhdGlzdGljcyBjbG9zZSBjb2FsZXNjZSBjb2RlIGNvbGxhdGUg
Y29sbGF0aW9uIGNvbGxhdGlvbnMgY29sdW1uIGNvbHVtbnMgY29tbWVudCBjb21taXQgY29tbWl0
dGVkIGNvbXBsZXRpb24gY29uY3VycmVudCBjb25kaXRpb24gY29ubmVjdGlvbiBjb25zaXN0ZW50
IGNvbnN0cmFpbnQgY29udGFpbnMgY29udGludWUgY29udHJpYnV0b3JzIGNvbnZlcnQgY3Jvc3Mg
Y3VycmVudCBjdXJyZW50X2RhdGUgY3VycmVudF90aW1lIGN1cnJlbnRfdGltZXN0YW1wIGN1cnJl
bnRfdXNlciBjdXJzb3IgZGF0YSBkYXRhYmFzZSBkYXRhYmFzZXMgZGF5X2hvdXIgZGF5X21pY3Jv
c2Vjb25kIGRheV9taW51dGUgZGF5X3NlY29uZCBkZWFsbG9jYXRlIGRlYyBkZWNsYXJlIGRlZmF1
bHQgZGVsYXlfa2V5X3dyaXRlIGRlbGF5ZWQgZGVsaW1pdGVyIGRlc19rZXlfZmlsZSBkZXNjcmli
ZSBkZXRlcm1pbmlzdGljIGRldl9wb3AgZGV2X3NhbXAgZGV2aWFuY2UgZGlhZ25vc3RpY3MgZGly
ZWN0b3J5IGRpc2FibGUgZGlzY2FyZCBkaXN0aW5jdHJvdyBkaXYgZHVhbCBkdW1wZmlsZSBlYWNo
IGVsc2VpZiBlbmFibGUgZW5jbG9zZWQgZW5kIGVuZHMgZW5naW5lIGVuZ2luZXMgZW51bSBlcnJv
cnMgZXNjYXBlIGVzY2FwZWQgZXZlbiBldmVudCBldmVudHMgZXZlcnkgZXhlY3V0ZSBleGlzdHMg
ZXhpdCBleHBsYWluIGV4dGVuZGVkIGZhc3QgZmV0Y2ggZmllbGQgZmllbGRzIGZpcnN0IGZsdXNo
IGZvciBmb3JjZSBmb3JlaWduIGZvdW5kX3Jvd3MgZnVsbCBmdWxsdGV4dCBmdW5jdGlvbiBnZW5l
cmFsIGdlbmVyYXRlZCBnZXQgZ2xvYmFsIGdyYW50IGdyYW50cyBncm91cCBncm91cGJ5X2NvbmNh
dCBoYW5kbGVyIGhhcmQgaGFzaCBoZWxwIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91cl9taWNyb3Nl
Y29uZCBob3VyX21pbnV0ZSBob3VyX3NlY29uZCBpZiBpZ25vcmUgaWdub3JlX3NlcnZlcl9pZHMg
aW1wb3J0IGluZGV4IGluZGV4X3N0YXRpc3RpY3MgaW5maWxlIGlubmVyIGlubm9kYiBpbm91dCBp
bnNlbnNpdGl2ZSBpbnNlcnRfbWV0aG9kIGluc3RhbGwgaW50ZXJ2YWwgaW52b2tlciBpc29sYXRp
b24gaXRlcmF0ZSBrZXkga2V5cyBraWxsIGxhbmd1YWdlIGxhc3QgbGVhZGluZyBsZWF2ZSBsZWZ0
IGxldmVsIGxpbWl0IGxpbmVhciBsaW5lcyBsaXN0IGxvYWQgbG9jYWwgbG9jYWx0aW1lIGxvY2Fs
dGltZXN0YW1wIGxvY2sgbG9ncyBsb3dfcHJpb3JpdHkgbWFzdGVyIG1hc3Rlcl9oZWFydGJlYXRf
cGVyaW9kIG1hc3Rlcl9zc2xfdmVyaWZ5X3NlcnZlcl9jZXJ0IG1hc3RlcnMgbWF0Y2ggbWF4IG1h
eF9yb3dzIG1heHZhbHVlIG1lc3NhZ2VfdGV4dCBtaWRkbGVpbnQgbWlncmF0ZSBtaW4gbWluX3Jv
d3MgbWludXRlX21pY3Jvc2Vjb25kIG1pbnV0ZV9zZWNvbmQgbW9kIG1vZGUgbW9kaWZpZXMgbW9k
aWZ5IG11dGV4IG15c3FsX2Vycm5vIG5hdHVyYWwgbmV4dCBubyBub193cml0ZV90b19iaW5sb2cg
b2ZmbGluZSBvZmZzZXQgb25lIG9ubGluZSBvcGVuIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5
IG91dCBvdXRlciBvdXRmaWxlIHBhY2tfa2V5cyBwYXJzZXIgcGFydGl0aW9uIHBhcnRpdGlvbnMg
cGFzc3dvcmQgcGVyc2lzdGVudCBwaGFzZSBwbHVnaW4gcGx1Z2lucyBwcmVwYXJlIHByZXNlcnZl
IHByZXYgcHJpbWFyeSBwcml2aWxlZ2VzIHByb2NlZHVyZSBwcm9jZXNzbGlzdCBwcm9maWxlIHBy
b2ZpbGVzIHB1cmdlIHF1ZXJ5IHF1aWNrIHJhbmdlIHJlYWQgcmVhZF93cml0ZSByZWFkcyByZWFs
IHJlYnVpbGQgcmVjb3ZlciByZWZlcmVuY2VzIHJlZ2V4cCByZWxheWxvZyByZWxlYXNlIHJlbW92
ZSByZW5hbWUgcmVvcmdhbml6ZSByZXBhaXIgcmVwZWF0YWJsZSByZXBsYWNlIHJlcXVpcmUgcmVz
aWduYWwgcmVzdHJpY3QgcmVzdW1lIHJldHVybiByZXR1cm5zIHJldm9rZSByaWdodCBybGlrZSBy
b2xsYmFjayByb2xsdXAgcm93IHJvd19mb3JtYXQgcnRyZWUgc2F2ZXBvaW50IHNjaGVkdWxlIHNj
aGVtYSBzY2hlbWFfbmFtZSBzY2hlbWFzIHNlY29uZF9taWNyb3NlY29uZCBzZWN1cml0eSBzZW5z
aXRpdmUgc2VwYXJhdG9yIHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2Vzc2lvbiBzaGFyZSBzaG93IHNo
dXRkb3duIHNpZ25hbCBzbGF2ZSBzbG93IHNtYWxsaW50IHNuYXBzaG90IHNvZnQgc29uYW1lIHNw
YXRpYWwgc3BlY2lmaWMgc3FsIHNxbF9iaWdfcmVzdWx0IHNxbF9idWZmZXJfcmVzdWx0IHNxbF9j
YWNoZSBzcWxfY2FsY19mb3VuZF9yb3dzIHNxbF9ub19jYWNoZSBzcWxfc21hbGxfcmVzdWx0IHNx
bGV4Y2VwdGlvbiBzcWxzdGF0ZSBzcWx3YXJuaW5nIHNzbCBzdGFydCBzdGFydGluZyBzdGFydHMg
c3RhdHVzIHN0ZCBzdGRkZXYgc3RkZGV2X3BvcCBzdGRkZXZfc2FtcCBzdG9yYWdlIHN0cmFpZ2h0
X2pvaW4gc3ViY2xhc3Nfb3JpZ2luIHN1bSBzdXNwZW5kIHRhYmxlX25hbWUgdGFibGVfc3RhdGlz
dGljcyB0YWJsZXMgdGFibGVzcGFjZSB0ZW1wb3JhcnkgdGVybWluYXRlZCB0byB0cmFpbGluZyB0
cmFuc2FjdGlvbiB0cmlnZ2VyIHRyaWdnZXJzIHRydW5jYXRlIHVuY29tbWl0dGVkIHVuZG8gdW5p
bnN0YWxsIHVuaXF1ZSB1bmxvY2sgdXBncmFkZSB1c2FnZSB1c2UgdXNlX2ZybSB1c2VyIHVzZXJf
cmVzb3VyY2VzIHVzZXJfc3RhdGlzdGljcyB1c2luZyB1dGNfZGF0ZSB1dGNfdGltZSB1dGNfdGlt
ZXN0YW1wIHZhbHVlIHZhcmlhYmxlcyB2YXJ5aW5nIHZpZXcgdmlld3MgdmlydHVhbCB3YXJuaW5n
cyB3aGVuIHdoaWxlIHdpdGggd29yayB3cml0ZSB4YSB4b3IgeWVhcl9tb250aCB6ZXJvZmlsbCBi
ZWdpbiBkbyB0aGVuIGVsc2UgbG9vcCByZXBlYXQiKSwKKyAgICBidWlsdGluOiBzZXQoImJvb2wg
Ym9vbGVhbiBiaXQgYmxvYiBkZWNpbWFsIGRvdWJsZSBmbG9hdCBsb25nIGxvbmdibG9iIGxvbmd0
ZXh0IG1lZGl1bSBtZWRpdW1ibG9iIG1lZGl1bWludCBtZWRpdW10ZXh0IHRpbWUgdGltZXN0YW1w
IHRpbnlibG9iIHRpbnlpbnQgdGlueXRleHQgdGV4dCBiaWdpbnQgaW50IGludDEgaW50MiBpbnQz
IGludDQgaW50OCBpbnRlZ2VyIGZsb2F0IGZsb2F0NCBmbG9hdDggZG91YmxlIGNoYXIgdmFyYmlu
YXJ5IHZhcmNoYXIgdmFyY2hhcmFjdGVyIHByZWNpc2lvbiBkYXRlIGRhdGV0aW1lIHllYXIgdW5z
aWduZWQgc2lnbmVkIG51bWVyaWMiKSwKICAgICBhdG9tczogc2V0KCJmYWxzZSB0cnVlIG51bGwg
dW5rbm93biIpLAogICAgIG9wZXJhdG9yQ2hhcnM6IC9eWyorXC0lPD4hPSZ8Xl0vLAogICAgIGRh
dGVTUUw6IHNldCgiZGF0ZSB0aW1lIHRpbWVzdGFtcCIpLApAQCAtMzEzLDggKzMyNiw3IEBAIENv
ZGVNaXJyb3IuZGVmaW5lTW9kZSgic3FsIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcp
IHsKICAgICBuYW1lOiAgICAgICAic3FsIiwKICAgICBjbGllbnQ6ICAgICBzZXQoImFwcGluZm8g
YXJyYXlzaXplIGF1dG9jb21taXQgYXV0b3ByaW50IGF1dG9yZWNvdmVyeSBhdXRvdHJhY2UgYmxv
Y2t0ZXJtaW5hdG9yIGJyZWFrIGJ0aXRsZSBjbWRzZXAgY29sc2VwIGNvbXBhdGliaWxpdHkgY29t
cHV0ZSBjb25jYXQgY29weWNvbW1pdCBjb3B5dHlwZWNoZWNrIGRlZmluZSBkZXNjcmliZSBlY2hv
IGVkaXRmaWxlIGVtYmVkZGVkIGVzY2FwZSBleGVjIGV4ZWN1dGUgZmVlZGJhY2sgZmxhZ2dlciBm
bHVzaCBoZWFkaW5nIGhlYWRzZXAgaW5zdGFuY2UgbGluZXNpemUgbG5vIGxvYm9mZnNldCBsb2dz
b3VyY2UgbG9uZyBsb25nY2h1bmtzaXplIG1hcmt1cCBuYXRpdmUgbmV3cGFnZSBudW1mb3JtYXQg
bnVtd2lkdGggcGFnZXNpemUgcGF1c2UgcG5vIHJlY3NlcCByZWNzZXBjaGFyIHJlbGVhc2UgcmVw
Zm9vdGVyIHJlcGhlYWRlciBzZXJ2ZXJvdXRwdXQgc2hpZnRpbm91dCBzaG93IHNob3dtb2RlIHNp
emUgc3Bvb2wgc3FsYmxhbmtsaW5lcyBzcWxjYXNlIHNxbGNvZGUgc3FsY29udGludWUgc3FsbnVt
YmVyIHNxbHBsdXNjb21wYXRpYmlsaXR5IHNxbHByZWZpeCBzcWxwcm9tcHQgc3FsdGVybWluYXRv
ciBzdWZmaXggdGFiIHRlcm0gdGVybW91dCB0aW1lIHRpbWluZyB0cmltb3V0IHRyaW1zcG9vbCB0
dGl0bGUgdW5kZXJsaW5lIHZlcmlmeSB2ZXJzaW9uIHdyYXAiKSwKICAgICBrZXl3b3JkczogICBz
ZXQoImFib3J0IGFjY2VwdCBhY2Nlc3MgYWRkIGFsbCBhbHRlciBhbmQgYW55IGFycmF5IGFycmF5
bGVuIGFzIGFzYyBhc3NlcnQgYXNzaWduIGF0IGF0dHJpYnV0ZXMgYXVkaXQgYXV0aG9yaXphdGlv
biBhdmcgYmFzZV90YWJsZSBiZWdpbiBiZXR3ZWVuIGJpbmFyeV9pbnRlZ2VyIGJvZHkgYm9vbGVh
biBieSBjYXNlIGNhc3QgY2hhciBjaGFyX2Jhc2UgY2hlY2sgY2xvc2UgY2x1c3RlciBjbHVzdGVy
cyBjb2xhdXRoIGNvbHVtbiBjb21tZW50IGNvbW1pdCBjb21wcmVzcyBjb25uZWN0IGNvbm5lY3Rl
ZCBjb25zdGFudCBjb25zdHJhaW50IGNyYXNoIGNyZWF0ZSBjdXJyZW50IGN1cnJ2YWwgY3Vyc29y
IGRhdGFfYmFzZSBkYXRhYmFzZSBkYXRlIGRiYSBkZWFsbG9jYXRlIGRlYnVnb2ZmIGRlYnVnb24g
ZGVjaW1hbCBkZWNsYXJlIGRlZmF1bHQgZGVmaW5pdGlvbiBkZWxheSBkZWxldGUgZGVzYyBkaWdp
dHMgZGlzcG9zZSBkaXN0aW5jdCBkbyBkcm9wIGVsc2UgZWxzaWYgZW5hYmxlIGVuZCBlbnRyeSBl
c2NhcGUgZXhjZXB0aW9uIGV4Y2VwdGlvbl9pbml0IGV4Y2hhbmdlIGV4Y2x1c2l2ZSBleGlzdHMg
ZXhpdCBleHRlcm5hbCBmYXN0IGZldGNoIGZpbGUgZm9yIGZvcmNlIGZvcm0gZnJvbSBmdW5jdGlv
biBnZW5lcmljIGdvdG8gZ3JhbnQgZ3JvdXAgaGF2aW5nIGlkZW50aWZpZWQgaWYgaW1tZWRpYXRl
IGluIGluY3JlbWVudCBpbmRleCBpbmRleGVzIGluZGljYXRvciBpbml0aWFsIGluaXRyYW5zIGlu
c2VydCBpbnRlcmZhY2UgaW50ZXJzZWN0IGludG8gaXMga2V5IGxldmVsIGxpYnJhcnkgbGlrZSBs
aW1pdGVkIGxvY2FsIGxvY2sgbG9nIGxvZ2dpbmcgbG9uZyBsb29wIG1hc3RlciBtYXhleHRlbnRz
IG1heHRyYW5zIG1lbWJlciBtaW5leHRlbnRzIG1pbnVzIG1pc2xhYmVsIG1vZGUgbW9kaWZ5IG11
bHRpc2V0IG5ldyBuZXh0IG5vIG5vYXVkaXQgbm9jb21wcmVzcyBub2xvZ2dpbmcgbm9wYXJhbGxl
bCBub3Qgbm93YWl0IG51bWJlcl9iYXNlIG9iamVjdCBvZiBvZmYgb2ZmbGluZSBvbiBvbmxpbmUg
b25seSBvcGVuIG9wdGlvbiBvciBvcmRlciBvdXQgcGFja2FnZSBwYXJhbGxlbCBwYXJ0aXRpb24g
cGN0ZnJlZSBwY3RpbmNyZWFzZSBwY3R1c2VkIHBsc19pbnRlZ2VyIHBvc2l0aXZlIHBvc2l0aXZl
biBwcmFnbWEgcHJpbWFyeSBwcmlvciBwcml2YXRlIHByaXZpbGVnZXMgcHJvY2VkdXJlIHB1Ymxp
YyByYWlzZSByYW5nZSByYXcgcmVhZCByZWJ1aWxkIHJlY29yZCByZWYgcmVmZXJlbmNlcyByZWZy
ZXNoIHJlbGVhc2UgcmVuYW1lIHJlcGxhY2UgcmVzb3VyY2UgcmVzdHJpY3QgcmV0dXJuIHJldHVy
bmluZyByZXZlcnNlIHJldm9rZSByb2xsYmFjayByb3cgcm93aWQgcm93bGFiZWwgcm93bnVtIHJv
d3MgcnVuIHNhdmVwb2ludCBzY2hlbWEgc2VnbWVudCBzZWxlY3Qgc2VwYXJhdGUgc2Vzc2lvbiBz
ZXQgc2hhcmUgc25hcHNob3Qgc29tZSBzcGFjZSBzcGxpdCBzcWwgc3RhcnQgc3RhdGVtZW50IHN0
b3JhZ2Ugc3VidHlwZSBzdWNjZXNzZnVsIHN5bm9ueW0gdGFiYXV0aCB0YWJsZSB0YWJsZXMgdGFi
bGVzcGFjZSB0YXNrIHRlcm1pbmF0ZSB0aGVuIHRvIHRyaWdnZXIgdHJ1bmNhdGUgdHlwZSB1bmlv
biB1bmlxdWUgdW5saW1pdGVkIHVucmVjb3ZlcmFibGUgdW51c2FibGUgdXBkYXRlIHVzZSB1c2lu
ZyB2YWxpZGF0ZSB2YWx1ZSB2YWx1ZXMgdmFyaWFibGUgdmlldyB2aWV3cyB3aGVuIHdoZW5ldmVy
IHdoZXJlIHdoaWxlIHdpdGggd29yayIpLAotICAgIGZ1bmN0aW9uczogIHNldCgiYWJzIGFjb3Mg
YWRkX21vbnRocyBhc2NpaSBhc2luIGF0YW4gYXRhbjIgYXZlcmFnZSBiZmlsZW5hbWUgY2VpbCBj
aGFydG9yb3dpZCBjaHIgY29uY2F0IGNvbnZlcnQgY29zIGNvc2ggY291bnQgZGVjb2RlIGRlcmVm
IGR1YWwgZHVtcCBkdXBfdmFsX29uX2luZGV4IGVtcHR5IGVycm9yIGV4cCBmYWxzZSBmbG9vciBm
b3VuZCBnbGIgZ3JlYXRlc3QgaGV4dG9yYXcgaW5pdGNhcCBpbnN0ciBpbnN0cmIgaXNvcGVuIGxh
c3RfZGF5IGxlYXN0IGxlbmdodCBsZW5naHRiIGxuIGxvd2VyIGxwYWQgbHRyaW0gbHViIG1ha2Vf
cmVmIG1heCBtaW4gbW9kIG1vbnRoc19iZXR3ZWVuIG5ld190aW1lIG5leHRfZGF5IG5leHR2YWwg
bmxzX2NoYXJzZXRfZGVjbF9sZW4gbmxzX2NoYXJzZXRfaWQgbmxzX2NoYXJzZXRfbmFtZSBubHNf
aW5pdGNhcCBubHNfbG93ZXIgbmxzX3NvcnQgbmxzX3VwcGVyIG5sc3NvcnQgbm9fZGF0YV9mb3Vu
ZCBub3Rmb3VuZCBudWxsIG52bCBvdGhlcnMgcG93ZXIgcmF3dG9oZXggcmVmdG9oZXggcm91bmQg
cm93Y291bnQgcm93aWR0b2NoYXIgcnBhZCBydHJpbSBzaWduIHNpbiBzaW5oIHNvdW5kZXggc3Fs
Y29kZSBzcWxlcnJtIHNxcnQgc3RkZGV2IHN1YnN0ciBzdWJzdHJiIHN1bSBzeXNkYXRlIHRhbiB0
YW5oIHRvX2NoYXIgdG9fZGF0ZSB0b19sYWJlbCB0b19tdWx0aV9ieXRlIHRvX251bWJlciB0b19z
aW5nbGVfYnl0ZSB0cmFuc2xhdGUgdHJ1ZSB0cnVuYyB1aWQgdXBwZXIgdXNlciB1c2VyZW52IHZh
cmlhbmNlIHZzaXplIiksCi0gICAgYnVpbHRpbjogICAgc2V0KCJiZmlsZSBibG9iIGNoYXJhY3Rl
ciBjbG9iIGRlYyBmbG9hdCBpbnQgaW50ZWdlciBtbHNsYWJlbCBuYXR1cmFsIG5hdHVyYWxuIG5j
aGFyIG5jbG9iIG51bWJlciBudW1lcmljIG52YXJjaGFyMiByZWFsIHJvd3R5cGUgc2lnbnR5cGUg
c21hbGxpbnQgc3RyaW5nIHZhcmNoYXIgdmFyY2hhcjIiKSwKKyAgICBidWlsdGluOiAgICBzZXQo
ImJmaWxlIGJsb2IgY2hhcmFjdGVyIGNsb2IgZGVjIGZsb2F0IGludCBpbnRlZ2VyIG1sc2xhYmVs
IG5hdHVyYWwgbmF0dXJhbG4gbmNoYXIgbmNsb2IgbnVtYmVyIG51bWVyaWMgbnZhcmNoYXIyIHJl
YWwgcm93dHlwZSBzaWdudHlwZSBzbWFsbGludCBzdHJpbmcgdmFyY2hhciB2YXJjaGFyMiBhYnMg
YWNvcyBhZGRfbW9udGhzIGFzY2lpIGFzaW4gYXRhbiBhdGFuMiBhdmVyYWdlIGJmaWxlbmFtZSBj
ZWlsIGNoYXJ0b3Jvd2lkIGNociBjb25jYXQgY29udmVydCBjb3MgY29zaCBjb3VudCBkZWNvZGUg
ZGVyZWYgZHVhbCBkdW1wIGR1cF92YWxfb25faW5kZXggZW1wdHkgZXJyb3IgZXhwIGZhbHNlIGZs
b29yIGZvdW5kIGdsYiBncmVhdGVzdCBoZXh0b3JhdyBpbml0Y2FwIGluc3RyIGluc3RyYiBpc29w
ZW4gbGFzdF9kYXkgbGVhc3QgbGVuZ2h0IGxlbmdodGIgbG4gbG93ZXIgbHBhZCBsdHJpbSBsdWIg
bWFrZV9yZWYgbWF4IG1pbiBtb2QgbW9udGhzX2JldHdlZW4gbmV3X3RpbWUgbmV4dF9kYXkgbmV4
dHZhbCBubHNfY2hhcnNldF9kZWNsX2xlbiBubHNfY2hhcnNldF9pZCBubHNfY2hhcnNldF9uYW1l
IG5sc19pbml0Y2FwIG5sc19sb3dlciBubHNfc29ydCBubHNfdXBwZXIgbmxzc29ydCBub19kYXRh
X2ZvdW5kIG5vdGZvdW5kIG51bGwgbnZsIG90aGVycyBwb3dlciByYXd0b2hleCByZWZ0b2hleCBy
b3VuZCByb3djb3VudCByb3dpZHRvY2hhciBycGFkIHJ0cmltIHNpZ24gc2luIHNpbmggc291bmRl
eCBzcWxjb2RlIHNxbGVycm0gc3FydCBzdGRkZXYgc3Vic3RyIHN1YnN0cmIgc3VtIHN5c2RhdGUg
dGFuIHRhbmggdG9fY2hhciB0b19kYXRlIHRvX2xhYmVsIHRvX211bHRpX2J5dGUgdG9fbnVtYmVy
IHRvX3NpbmdsZV9ieXRlIHRyYW5zbGF0ZSB0cnVlIHRydW5jIHVpZCB1cHBlciB1c2VyIHVzZXJl
bnYgdmFyaWFuY2UgdnNpemUiKSwKICAgICBvcGVyYXRvckNoYXJzOiAvXlsqK1wtJTw+IT1+XS8s
CiAgICAgZGF0ZVNRTDogICAgc2V0KCJkYXRlIHRpbWUgdGltZXN0YW1wIiksCiAgICAgc3VwcG9y
dDogICAgc2V0KCJkb3VibGVRdW90ZSBuQ2hhckNhc3QgemVyb2xlc3NGbG9hdCBiaW5hcnlOdW1i
ZXIgaGV4TnVtYmVyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IveG1sLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwuanMKaW5kZXggNTMyODVjODQ4
YzZkNjA3YTRhNWFkZjllZWVhYWY0NGIwMGU3YTYzMy4uNGY0OWUwN2ZhZjVlNDVjN2RiZjRlYWY3
MzZjOWQ3OTgzNDhiM2FjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwuanMKQEAgLTc2LDcg
Kzc2LDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJ4bWwiLCBmdW5jdGlvbihjb25maWcsIHBh
cnNlckNvbmZpZykgewogICAgICAgICB0YWdOYW1lID0gIiI7CiAgICAgICAgIHZhciBjOwogICAg
ICAgICB3aGlsZSAoKGMgPSBzdHJlYW0uZWF0KC9bXlxzXHUwMGEwPTw+XCJcJ1wvP10vKSkpIHRh
Z05hbWUgKz0gYzsKLSAgICAgICAgaWYgKCF0YWdOYW1lKSByZXR1cm4gImVycm9yIjsKKyAgICAg
ICAgaWYgKCF0YWdOYW1lKSByZXR1cm4gInRhZyBlcnJvciI7CiAgICAgICAgIHR5cGUgPSBpc0Ns
b3NlID8gImNsb3NlVGFnIiA6ICJvcGVuVGFnIjsKICAgICAgICAgc3RhdGUudG9rZW5pemUgPSBp
blRhZzsKICAgICAgICAgcmV0dXJuICJ0YWciOwpAQCAtMTA5LDcgKzEwOSw5IEBAIENvZGVNaXJy
b3IuZGVmaW5lTW9kZSgieG1sIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAg
ICAgIHR5cGUgPSAiZXF1YWxzIjsKICAgICAgIHJldHVybiBudWxsOwogICAgIH0gZWxzZSBpZiAo
Y2ggPT0gIjwiKSB7Ci0gICAgICByZXR1cm4gImVycm9yIjsKKyAgICAgIHN0YXRlLnRva2VuaXpl
ID0gaW5UZXh0OworICAgICAgdmFyIG5leHQgPSBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRl
KTsKKyAgICAgIHJldHVybiBuZXh0ID8gbmV4dCArICIgZXJyb3IiIDogImVycm9yIjsKICAgICB9
IGVsc2UgaWYgKC9bXCdcIl0vLnRlc3QoY2gpKSB7CiAgICAgICBzdGF0ZS50b2tlbml6ZSA9IGlu
QXR0cmlidXRlKGNoKTsKICAgICAgIHN0YXRlLnN0cmluZ1N0YXJ0Q29sID0gc3RyZWFtLmNvbHVt
bigpOwpAQCAtMjk4LDcgKzMwMCw5IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgieG1sIiwgZnVu
Y3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgICAgfQogICAgICAgfQogICAgICAg
c3RhdGUuc3RhcnRPZkxpbmUgPSBmYWxzZTsKLSAgICAgIHJldHVybiBzZXRTdHlsZSB8fCBzdHls
ZTsKKyAgICAgIGlmIChzZXRTdHlsZSkKKyAgICAgICAgc3R5bGUgPSBzZXRTdHlsZSA9PSAiZXJy
b3IiID8gc3R5bGUgKyAiIGVycm9yIiA6IHNldFN0eWxlOworICAgICAgcmV0dXJuIHN0eWxlOwog
ICAgIH0sCiAKICAgICBpbmRlbnQ6IGZ1bmN0aW9uKHN0YXRlLCB0ZXh0QWZ0ZXIsIGZ1bGxMaW5l
KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218969</attachid>
            <date>2013-12-11 08:47:50 -0800</date>
            <delta_ts>2013-12-11 11:50:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122868-20131211174747.patch</filename>
            <type>text/plain</type>
            <size>167086</size>
            <attacher name="Laszlo Vidacs">lvidacs.u-szeged</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
MjEzYzc1NTUxMzVhMzJjYTFkNWIxZTkxNDJhNmY2Mzc0NGJlMGVhLi5mMjVmNzMzZjNhZGNmZjg2
MWJlYzVmYzUyMTY2MmVjYmVhZGZjMzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxMy0xMi0xMSAgTGFzemxvIFZpZGFjcyAgPGxhY0BpbmYudS1zemVnZWQu
aHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRVM2OiBKYXZhU2NyaXB0IHN5bnRheCBoaWdo
bGlnaHRpbmcgYW5kIHJlY29nbml0aW9uIG9mIGZvci4ub2YKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjg2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0byBDb2RlTWlycm9yIDMuMjAgaW5j
bHVkaW5nIGphdmFzY3JpcHQgRVM2IHVwZGF0ZXMuCisKKyAgICAgICAgKiBUb29scy9QcmV0dHlQ
cmludGluZy9jb2RlbWlycm9yLmNzczoKKyAgICAgICAgKiBUb29scy9QcmV0dHlQcmludGluZy9j
b2RlbWlycm9yLmpzOiBNaW5vciBsb2NhbCBjaGFuZ2UgZHVlIHRvIGVycm9yIGZyb20ganNtaW4u
cHkKKyAgICAgICAgKiBUb29scy9QcmV0dHlQcmludGluZy9jc3MuanM6CisgICAgICAgICogVG9v
bHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5jc3M6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZmZlZXNjcmlwdC5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY3NzLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9odG1sbWl4ZWQuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2phdmFzY3JpcHQuanM6CisgICAgICAgICog
VXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2xlc3MuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL21hdGNoYnJhY2tldHMuanM6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3BsYWNlaG9sZGVyLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9ydW5tb2RlLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9zZWFyY2hjdXJzb3IuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NxbC5qczoKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IveG1sLmpzOgorCiAyMDEz
LTEyLTA1ICBTZW9ranUgS3dvbiAgPHNlb2tqdUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IFJlbW92ZSAnY29va2llc1N0cmluZycgb3V0cHV0IGZyb20gUGFnZS5nZXRDb29r
aWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRp
bmcvY29kZW1pcnJvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJp
bnRpbmcvY29kZW1pcnJvci5jc3MKaW5kZXggNGUzMDBiMmJlMmU5MGNjMzA2NjhlYmVjMDNjMGNm
YWJjNWEwNTc2Zi4uMjNlYWY3NGQ0NDliY2Q1Y2RiNGU5NTJlNWIyODQ2NDI4ZThlYmI3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2NvZGVt
aXJyb3IuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGlu
Zy9jb2RlbWlycm9yLmNzcwpAQCAtNzQsNyArNzQsNiBAQAogLmNtLXMtZGVmYXVsdCAuY20tc3Ry
aW5nIHtjb2xvcjogI2ExMTt9CiAuY20tcy1kZWZhdWx0IC5jbS1zdHJpbmctMiB7Y29sb3I6ICNm
NTA7fQogLmNtLXMtZGVmYXVsdCAuY20tbWV0YSB7Y29sb3I6ICM1NTU7fQotLmNtLXMtZGVmYXVs
dCAuY20tZXJyb3Ige2NvbG9yOiAjZjAwO30KIC5jbS1zLWRlZmF1bHQgLmNtLXF1YWxpZmllciB7
Y29sb3I6ICM1NTU7fQogLmNtLXMtZGVmYXVsdCAuY20tYnVpbHRpbiB7Y29sb3I6ICMzMGE7fQog
LmNtLXMtZGVmYXVsdCAuY20tYnJhY2tldCB7Y29sb3I6ICM5OTc7fQpAQCAtOTEsNiArOTAsNyBA
QAogLmNtLWVtIHtmb250LXN0eWxlOiBpdGFsaWM7fQogLmNtLWxpbmsge3RleHQtZGVjb3JhdGlv
bjogdW5kZXJsaW5lO30KIAorLmNtLXMtZGVmYXVsdCAuY20tZXJyb3Ige2NvbG9yOiAjZjAwO30K
IC5jbS1pbnZhbGlkY2hhciB7Y29sb3I6ICNmMDA7fQogCiBkaXYuQ29kZU1pcnJvciBzcGFuLkNv
ZGVNaXJyb3ItbWF0Y2hpbmdicmFja2V0IHtjb2xvcjogIzBmMDt9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jb2RlbWlycm9yLmpzCmlu
ZGV4IDgxNzcxZTk5YjEyYWFhZGRlZmY2ZTQyNWUyOTRlZDM1OWU5YWI3N2EuLjQ2MzczYmZiNzcx
MWI1MDA3MWZkY2NjMDY5OGE4OTA0NDE4MDg5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jb2RlbWlycm9yLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jb2RlbWlycm9yLmpzCkBAIC03LDkg
KzcsMTMgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIC8vIENydWRlLCBi
dXQgbmVjZXNzYXJ5IHRvIGhhbmRsZSBhIG51bWJlciBvZiBoYXJkLXRvLWZlYXR1cmUtZGV0ZWN0
CiAgIC8vIGJ1Z3MgYW5kIGJlaGF2aW9yIGRpZmZlcmVuY2VzLgogICB2YXIgZ2Vja28gPSAvZ2Vj
a29cL1xkL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKKyAgLy8gSUUxMSBjdXJyZW50bHkg
ZG9lc24ndCBjb3VudCBhcyAnaWUnLCBzaW5jZSBpdCBoYXMgYWxtb3N0IG5vbmUgb2YKKyAgLy8g
dGhlIHNhbWUgYnVncyBhcyBlYXJsaWVyIHZlcnNpb25zLiBVc2UgaWVfZ3QxMCB0byBoYW5kbGUK
KyAgLy8gaW5jb21wYXRpYmlsaXRpZXMgaW4gdGhhdCB2ZXJzaW9uLgogICB2YXIgaWUgPSAvTVNJ
RSBcZC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKICAgdmFyIGllX2x0OCA9IGllICYmIChk
b2N1bWVudC5kb2N1bWVudE1vZGUgPT0gbnVsbCB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCA4
KTsKICAgdmFyIGllX2x0OSA9IGllICYmIChkb2N1bWVudC5kb2N1bWVudE1vZGUgPT0gbnVsbCB8
fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCA5KTsKKyAgdmFyIGllX2d0MTAgPSAvVHJpZGVudFwv
KFs3LTldfFxkezIsfSlcLi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKICAgdmFyIHdlYmtp
dCA9IC9XZWJLaXRcLy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKICAgdmFyIHF0d2Via2l0
ID0gd2Via2l0ICYmIC9RdFwvXGQrXC5cZCsvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CiAg
IHZhciBjaHJvbWUgPSAvQ2hyb21lXC8vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CkBAIC0z
MDksNyArMzEzLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICBv
cHRpb25zLmd1dHRlcnMgPSBvcHRpb25zLmd1dHRlcnMuY29uY2F0KFsiQ29kZU1pcnJvci1saW5l
bnVtYmVycyJdKTsKICAgICB9IGVsc2UgaWYgKGZvdW5kID4gLTEgJiYgIW9wdGlvbnMubGluZU51
bWJlcnMpIHsKICAgICAgIG9wdGlvbnMuZ3V0dGVycyA9IG9wdGlvbnMuZ3V0dGVycy5zbGljZSgw
KTsKLSAgICAgIG9wdGlvbnMuZ3V0dGVycy5zcGxpY2UoaSwgMSk7CisgICAgICBvcHRpb25zLmd1
dHRlcnMuc3BsaWNlKGZvdW5kLCAxKTsKICAgICB9CiAgIH0KIApAQCAtMzUzLDggKzM1NywxMCBA
QCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIGQuZ3V0dGVyRmlsbGVy
LnN0eWxlLndpZHRoID0gZC5ndXR0ZXJzLm9mZnNldFdpZHRoICsgInB4IjsKICAgICB9IGVsc2Ug
ZC5ndXR0ZXJGaWxsZXIuc3R5bGUuZGlzcGxheSA9ICIiOwogCi0gICAgaWYgKG1hY19nZUxpb24g
JiYgc2Nyb2xsYmFyV2lkdGgoZC5tZWFzdXJlKSA9PT0gMCkKKyAgICBpZiAobWFjX2dlTGlvbiAm
JiBzY3JvbGxiYXJXaWR0aChkLm1lYXN1cmUpID09PSAwKSB7CiAgICAgICBkLnNjcm9sbGJhclYu
c3R5bGUubWluV2lkdGggPSBkLnNjcm9sbGJhckguc3R5bGUubWluSGVpZ2h0ID0gbWFjX2dlTW91
bnRhaW5MaW9uID8gIjE4cHgiIDogIjEycHgiOworICAgICAgZC5zY3JvbGxiYXJWLnN0eWxlLnBv
aW50ZXJFdmVudHMgPSBkLnNjcm9sbGJhckguc3R5bGUucG9pbnRlckV2ZW50cyA9ICJub25lIjsK
KyAgICB9CiAgIH0KIAogICBmdW5jdGlvbiB2aXNpYmxlTGluZXMoZGlzcGxheSwgZG9jLCB2aWV3
UG9ydCkgewpAQCAtNDA5LDE0ICs0MTUsMTQgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rp
b24oKSB7CiAgIGZ1bmN0aW9uIHVwZGF0ZURpc3BsYXkoY20sIGNoYW5nZXMsIHZpZXdQb3J0LCBm
b3JjZWQpIHsKICAgICB2YXIgb2xkRnJvbSA9IGNtLmRpc3BsYXkuc2hvd2luZ0Zyb20sIG9sZFRv
ID0gY20uZGlzcGxheS5zaG93aW5nVG8sIHVwZGF0ZWQ7CiAgICAgdmFyIHZpc2libGUgPSB2aXNp
YmxlTGluZXMoY20uZGlzcGxheSwgY20uZG9jLCB2aWV3UG9ydCk7Ci0gICAgZm9yICg7Oykgewor
ICAgIGZvciAodmFyIGZpcnN0ID0gdHJ1ZTs7IGZpcnN0ID0gZmFsc2UpIHsKICAgICAgIHZhciBv
bGRXaWR0aCA9IGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGg7CiAgICAgICBpZiAoIXVw
ZGF0ZURpc3BsYXlJbm5lcihjbSwgY2hhbmdlcywgdmlzaWJsZSwgZm9yY2VkKSkgYnJlYWs7CiAg
ICAgICB1cGRhdGVkID0gdHJ1ZTsKICAgICAgIGNoYW5nZXMgPSBbXTsKICAgICAgIHVwZGF0ZVNl
bGVjdGlvbihjbSk7CiAgICAgICB1cGRhdGVTY3JvbGxiYXJzKGNtKTsKLSAgICAgIGlmIChjbS5v
cHRpb25zLmxpbmVXcmFwcGluZyAmJiBvbGRXaWR0aCAhPSBjbS5kaXNwbGF5LnNjcm9sbGVyLmNs
aWVudFdpZHRoKSB7CisgICAgICBpZiAoZmlyc3QgJiYgY20ub3B0aW9ucy5saW5lV3JhcHBpbmcg
JiYgb2xkV2lkdGggIT0gY20uZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCkgewogICAgICAg
ICBmb3JjZWQgPSB0cnVlOwogICAgICAgICBjb250aW51ZTsKICAgICAgIH0KQEAgLTkwNCw3ICs5
MTAsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICBkb2MuaXRlcihk
b2MuZnJvbnRpZXIsIE1hdGgubWluKGRvYy5maXJzdCArIGRvYy5zaXplLCBjbS5kaXNwbGF5LnNo
b3dpbmdUbyArIDUwMCksIGZ1bmN0aW9uKGxpbmUpIHsKICAgICAgIGlmIChkb2MuZnJvbnRpZXIg
Pj0gY20uZGlzcGxheS5zaG93aW5nRnJvbSkgeyAvLyBWaXNpYmxlCiAgICAgICAgIHZhciBvbGRT
dHlsZXMgPSBsaW5lLnN0eWxlczsKLSAgICAgICAgbGluZS5zdHlsZXMgPSBoaWdobGlnaHRMaW5l
KGNtLCBsaW5lLCBzdGF0ZSk7CisgICAgICAgIGxpbmUuc3R5bGVzID0gaGlnaGxpZ2h0TGluZShj
bSwgbGluZSwgc3RhdGUsIHRydWUpOwogICAgICAgICB2YXIgaXNjaGFuZ2UgPSAhb2xkU3R5bGVz
IHx8IG9sZFN0eWxlcy5sZW5ndGggIT0gbGluZS5zdHlsZXMubGVuZ3RoOwogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgIWlzY2hhbmdlICYmIGkgPCBvbGRTdHlsZXMubGVuZ3RoOyArK2kpIGlzY2hh
bmdlID0gb2xkU3R5bGVzW2ldICE9IGxpbmUuc3R5bGVzW2ldOwogICAgICAgICBpZiAoaXNjaGFu
Z2UpIHsKQEAgLTkxMyw3ICs5MTksNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigp
IHsKICAgICAgICAgfQogICAgICAgICBsaW5lLnN0YXRlQWZ0ZXIgPSBjb3B5U3RhdGUoZG9jLm1v
ZGUsIHN0YXRlKTsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHByb2Nlc3NMaW5lKGNtLCBsaW5l
LCBzdGF0ZSk7CisgICAgICAgIHByb2Nlc3NMaW5lKGNtLCBsaW5lLnRleHQsIHN0YXRlKTsKICAg
ICAgICAgbGluZS5zdGF0ZUFmdGVyID0gZG9jLmZyb250aWVyICUgNSA9PSAwID8gY29weVN0YXRl
KGRvYy5tb2RlLCBzdGF0ZSkgOiBudWxsOwogICAgICAgfQogICAgICAgKytkb2MuZnJvbnRpZXI7
CkBAIC05MzUsOCArOTQxLDkgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAg
IC8vIHNtYWxsZXN0IGluZGVudGF0aW9uLCB3aGljaCB0ZW5kcyB0byBuZWVkIHRoZSBsZWFzdCBj
b250ZXh0IHRvCiAgIC8vIHBhcnNlIGNvcnJlY3RseS4KICAgZnVuY3Rpb24gZmluZFN0YXJ0TGlu
ZShjbSwgbiwgcHJlY2lzZSkgewotICAgIHZhciBtaW5pbmRlbnQsIG1pbmxpbmUsIGRvYyA9IGNt
LmRvYywgbWF4U2NhbiA9IGNtLmRvYy5tb2RlLmlubmVyTW9kZSA/IDEwMDAgOiAxMDA7Ci0gICAg
Zm9yICh2YXIgc2VhcmNoID0gbiwgbGltID0gbiAtIG1heFNjYW47IHNlYXJjaCA+IGxpbTsgLS1z
ZWFyY2gpIHsKKyAgICB2YXIgbWluaW5kZW50LCBtaW5saW5lLCBkb2MgPSBjbS5kb2M7CisgICAg
dmFyIGxpbSA9IHByZWNpc2UgPyAtMSA6IG4gLSAoY20uZG9jLm1vZGUuaW5uZXJNb2RlID8gMTAw
MCA6IDEwMCk7CisgICAgZm9yICh2YXIgc2VhcmNoID0gbjsgc2VhcmNoID4gbGltOyAtLXNlYXJj
aCkgewogICAgICAgaWYgKHNlYXJjaCA8PSBkb2MuZmlyc3QpIHJldHVybiBkb2MuZmlyc3Q7CiAg
ICAgICB2YXIgbGluZSA9IGdldExpbmUoZG9jLCBzZWFyY2ggLSAxKTsKICAgICAgIGlmIChsaW5l
LnN0YXRlQWZ0ZXIgJiYgKCFwcmVjaXNlIHx8IHNlYXJjaCA8PSBkb2MuZnJvbnRpZXIpKSByZXR1
cm4gc2VhcmNoOwpAQCAtOTU2LDExICs5NjMsMTIgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAgICAgaWYgKCFzdGF0ZSkgc3RhdGUgPSBzdGFydFN0YXRlKGRvYy5tb2RlKTsK
ICAgICBlbHNlIHN0YXRlID0gY29weVN0YXRlKGRvYy5tb2RlLCBzdGF0ZSk7CiAgICAgZG9jLml0
ZXIocG9zLCBuLCBmdW5jdGlvbihsaW5lKSB7Ci0gICAgICBwcm9jZXNzTGluZShjbSwgbGluZSwg
c3RhdGUpOworICAgICAgcHJvY2Vzc0xpbmUoY20sIGxpbmUudGV4dCwgc3RhdGUpOwogICAgICAg
dmFyIHNhdmUgPSBwb3MgPT0gbiAtIDEgfHwgcG9zICUgNSA9PSAwIHx8IHBvcyA+PSBkaXNwbGF5
LnNob3dpbmdGcm9tICYmIHBvcyA8IGRpc3BsYXkuc2hvd2luZ1RvOwogICAgICAgbGluZS5zdGF0
ZUFmdGVyID0gc2F2ZSA/IGNvcHlTdGF0ZShkb2MubW9kZSwgc3RhdGUpIDogbnVsbDsKICAgICAg
ICsrcG9zOwogICAgIH0pOworICAgIGlmIChwcmVjaXNlKSBkb2MuZnJvbnRpZXIgPSBwb3M7CiAg
ICAgcmV0dXJuIHN0YXRlOwogICB9CiAKQEAgLTEwMDEsNyArMTAwOSw3IEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgdmFyIG1lbW8gPSBjYWNoZVtpXTsKICAgICAg
IGlmIChtZW1vLnRleHQgPT0gbGluZS50ZXh0ICYmIG1lbW8ubWFya2VkU3BhbnMgPT0gbGluZS5t
YXJrZWRTcGFucyAmJgogICAgICAgICAgIGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGgg
PT0gbWVtby53aWR0aCAmJgotICAgICAgICAgIG1lbW8uY2xhc3NlcyA9PSBsaW5lLnRleHRDbGFz
cyArICJ8IiArIGxpbmUuYmdDbGFzcyArICJ8IiArIGxpbmUud3JhcENsYXNzKQorICAgICAgICAg
IG1lbW8uY2xhc3NlcyA9PSBsaW5lLnRleHRDbGFzcyArICJ8IiArIGxpbmUud3JhcENsYXNzKQog
ICAgICAgICByZXR1cm4gbWVtbzsKICAgICB9CiAgIH0KQEAgLTEwMjEsNyArMTAyOSw3IEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIHZhciBjYWNoZSA9IGNtLmRpc3Bs
YXkubWVhc3VyZUxpbmVDYWNoZTsKICAgICB2YXIgbWVtbyA9IHt0ZXh0OiBsaW5lLnRleHQsIHdp
ZHRoOiBjbS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoLAogICAgICAgICAgICAgICAgIG1h
cmtlZFNwYW5zOiBsaW5lLm1hcmtlZFNwYW5zLCBtZWFzdXJlOiBtZWFzdXJlLAotICAgICAgICAg
ICAgICAgIGNsYXNzZXM6IGxpbmUudGV4dENsYXNzICsgInwiICsgbGluZS5iZ0NsYXNzICsgInwi
ICsgbGluZS53cmFwQ2xhc3N9OworICAgICAgICAgICAgICAgIGNsYXNzZXM6IGxpbmUudGV4dENs
YXNzICsgInwiICsgbGluZS53cmFwQ2xhc3N9OwogICAgIGlmIChjYWNoZS5sZW5ndGggPT0gMTYp
IGNhY2hlWysrY20uZGlzcGxheS5tZWFzdXJlTGluZUNhY2hlUG9zICUgMTZdID0gbWVtbzsKICAg
ICBlbHNlIGNhY2hlLnB1c2gobWVtbyk7CiAgICAgcmV0dXJuIG1lYXN1cmU7CkBAIC0xMzc5LDEx
ICsxMzg3LDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIH0KICAg
ICBpZiAoIXVwZGF0ZWQgJiYgb3Auc2VsZWN0aW9uQ2hhbmdlZCkgdXBkYXRlU2VsZWN0aW9uKGNt
KTsKICAgICBpZiAob3AudXBkYXRlU2Nyb2xsUG9zKSB7Ci0gICAgICBkaXNwbGF5LnNjcm9sbGVy
LnNjcm9sbFRvcCA9IGRpc3BsYXkuc2Nyb2xsYmFyVi5zY3JvbGxUb3AgPSBkb2Muc2Nyb2xsVG9w
ID0gbmV3U2Nyb2xsUG9zLnNjcm9sbFRvcDsKLSAgICAgIGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xs
TGVmdCA9IGRpc3BsYXkuc2Nyb2xsYmFySC5zY3JvbGxMZWZ0ID0gZG9jLnNjcm9sbExlZnQgPSBu
ZXdTY3JvbGxQb3Muc2Nyb2xsTGVmdDsKKyAgICAgIHZhciB0b3AgPSBNYXRoLm1heCgwLCBNYXRo
Lm1pbihkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbEhlaWdodCAtIGRpc3BsYXkuc2Nyb2xsZXIuY2xp
ZW50SGVpZ2h0LCBuZXdTY3JvbGxQb3Muc2Nyb2xsVG9wKSk7CisgICAgICB2YXIgbGVmdCA9IE1h
dGgubWF4KDAsIE1hdGgubWluKGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsV2lkdGggLSBkaXNwbGF5
LnNjcm9sbGVyLmNsaWVudFdpZHRoLCBuZXdTY3JvbGxQb3Muc2Nyb2xsTGVmdCkpOworICAgICAg
ZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AgPSBkaXNwbGF5LnNjcm9sbGJhclYuc2Nyb2xsVG9w
ID0gZG9jLnNjcm9sbFRvcCA9IHRvcDsKKyAgICAgIGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsTGVm
dCA9IGRpc3BsYXkuc2Nyb2xsYmFySC5zY3JvbGxMZWZ0ID0gZG9jLnNjcm9sbExlZnQgPSBsZWZ0
OwogICAgICAgYWxpZ25Ib3Jpem9udGFsbHkoY20pOwogICAgICAgaWYgKG9wLnNjcm9sbFRvUG9z
KQotICAgICAgICBzY3JvbGxQb3NJbnRvVmlldyhjbSwgY2xpcFBvcyhjbS5kb2MsIG9wLnNjcm9s
bFRvUG9zKSwgb3Auc2Nyb2xsVG9Qb3NNYXJnaW4pOworICAgICAgICBzY3JvbGxQb3NJbnRvVmll
dyhjbSwgY2xpcFBvcyhjbS5kb2MsIG9wLnNjcm9sbFRvUG9zLmZyb20pLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGlwUG9zKGNtLmRvYywgb3Auc2Nyb2xsVG9Qb3MudG8pLCBvcC5zY3Jv
bGxUb1Bvcy5tYXJnaW4pOwogICAgIH0gZWxzZSBpZiAobmV3U2Nyb2xsUG9zKSB7CiAgICAgICBz
Y3JvbGxDdXJzb3JJbnRvVmlldyhjbSk7CiAgICAgfQpAQCAtMTYwNSw3ICsxNjE2LDEwIEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgaWYgKHNpZ25hbERPTUV2ZW50
KGNtLCBlKSB8fCBjbS5vcHRpb25zLm9uS2V5RXZlbnQgJiYgY20ub3B0aW9ucy5vbktleUV2ZW50
KGNtLCBhZGRTdG9wKGUpKSkgcmV0dXJuOwogICAgICAgaWYgKGUua2V5Q29kZSA9PSAxNikgY20u
ZG9jLnNlbC5zaGlmdCA9IGZhbHNlOwogICAgIH0pKTsKLSAgICBvbihkLmlucHV0LCAiaW5wdXQi
LCBiaW5kKGZhc3RQb2xsLCBjbSkpOworICAgIG9uKGQuaW5wdXQsICJpbnB1dCIsIGZ1bmN0aW9u
KCkgeworICAgICAgaWYgKGllICYmICFpZV9sdDkgJiYgY20uZGlzcGxheS5pbnB1dEhhc1NlbGVj
dGlvbikgY20uZGlzcGxheS5pbnB1dEhhc1NlbGVjdGlvbiA9IG51bGw7CisgICAgICBmYXN0UG9s
bChjbSk7CisgICAgfSk7CiAgICAgb24oZC5pbnB1dCwgImtleWRvd24iLCBvcGVyYXRpb24oY20s
IG9uS2V5RG93bikpOwogICAgIG9uKGQuaW5wdXQsICJrZXlwcmVzcyIsIG9wZXJhdGlvbihjbSwg
b25LZXlQcmVzcykpOwogICAgIG9uKGQuaW5wdXQsICJmb2N1cyIsIGJpbmQob25Gb2N1cywgY20p
KTsKQEAgLTE4OTUsNyArMTkwOSw2IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICAgICAgICAgIGlmIChjbS5zdGF0ZS5kcmFnZ2luZ1RleHQpIHJlcGxhY2VSYW5nZShjbS5k
b2MsICIiLCBjdXJGcm9tLCBjdXJUbywgInBhc3RlIik7CiAgICAgICAgICAgY20ucmVwbGFjZVNl
bGVjdGlvbih0ZXh0LCBudWxsLCAicGFzdGUiKTsKICAgICAgICAgICBmb2N1c0lucHV0KGNtKTsK
LSAgICAgICAgICBvbkZvY3VzKGNtKTsKICAgICAgICAgfQogICAgICAgfQogICAgICAgY2F0Y2go
ZSl7fQpAQCAtMjE3Niw3ICsyMTg5LDExIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9u
KCkgewogCiAgICAgdmFyIHBvcyA9IHBvc0Zyb21Nb3VzZShjbSwgZSksIHNjcm9sbFBvcyA9IGRp
c3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wOwogICAgIGlmICghcG9zIHx8IG9wZXJhKSByZXR1cm47
IC8vIE9wZXJhIGlzIGRpZmZpY3VsdC4KLSAgICBpZiAocG9zRXEoc2VsLmZyb20sIHNlbC50bykg
fHwgcG9zTGVzcyhwb3MsIHNlbC5mcm9tKSB8fCAhcG9zTGVzcyhwb3MsIHNlbC50bykpCisKKyAg
ICAvLyBSZXNldCB0aGUgY3VycmVudCB0ZXh0IHNlbGVjdGlvbiBvbmx5IGlmIHRoZSBjbGljayBp
cyBkb25lIG91dHNpZGUgb2YgdGhlIHNlbGVjdGlvbgorICAgIC8vIGFuZCAncmVzZXRTZWxlY3Rp
b25PbkNvbnRleHRNZW51JyBvcHRpb24gaXMgdHJ1ZS4KKyAgICB2YXIgcmVzZXQgPSBjbS5vcHRp
b25zLnJlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudTsKKyAgICBpZiAocmVzZXQgJiYgKHBvc0Vx
KHNlbC5mcm9tLCBzZWwudG8pIHx8IHBvc0xlc3MocG9zLCBzZWwuZnJvbSkgfHwgIXBvc0xlc3Mo
cG9zLCBzZWwudG8pKSkKICAgICAgIG9wZXJhdGlvbihjbSwgc2V0U2VsZWN0aW9uKShjbS5kb2Ms
IHBvcywgcG9zKTsKIAogICAgIHZhciBvbGRDU1MgPSBkaXNwbGF5LmlucHV0LnN0eWxlLmNzc1Rl
eHQ7CkBAIC0yMzI2LDYgKzIzNDMsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigp
IHsKICAgfQogCiAgIGZ1bmN0aW9uIG1ha2VDaGFuZ2VOb1JlYWRvbmx5KGRvYywgY2hhbmdlLCBz
ZWxVcGRhdGUpIHsKKyAgICBpZiAoY2hhbmdlLnRleHQubGVuZ3RoID09IDEgJiYgY2hhbmdlLnRl
eHRbMF0gPT0gIiIgJiYgcG9zRXEoY2hhbmdlLmZyb20sIGNoYW5nZS50bykpIHJldHVybjsKICAg
ICB2YXIgc2VsQWZ0ZXIgPSBjb21wdXRlU2VsQWZ0ZXJDaGFuZ2UoZG9jLCBjaGFuZ2UsIHNlbFVw
ZGF0ZSk7CiAgICAgYWRkVG9IaXN0b3J5KGRvYywgY2hhbmdlLCBzZWxBZnRlciwgZG9jLmNtID8g
ZG9jLmNtLmN1ck9wLmlkIDogTmFOKTsKIApAQCAtMjYyNiw3ICsyNjQ0LDcgQEAgd2luZG93LkNv
ZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIC8vIFNDUk9MTElORwogCiAgIGZ1bmN0aW9uIHNj
cm9sbEN1cnNvckludG9WaWV3KGNtKSB7Ci0gICAgdmFyIGNvb3JkcyA9IHNjcm9sbFBvc0ludG9W
aWV3KGNtLCBjbS5kb2Muc2VsLmhlYWQsIGNtLm9wdGlvbnMuY3Vyc29yU2Nyb2xsTWFyZ2luKTsK
KyAgICB2YXIgY29vcmRzID0gc2Nyb2xsUG9zSW50b1ZpZXcoY20sIGNtLmRvYy5zZWwuaGVhZCwg
bnVsbCwgY20ub3B0aW9ucy5jdXJzb3JTY3JvbGxNYXJnaW4pOwogICAgIGlmICghY20uc3RhdGUu
Zm9jdXNlZCkgcmV0dXJuOwogICAgIHZhciBkaXNwbGF5ID0gY20uZGlzcGxheSwgYm94ID0gZ2V0
UmVjdChkaXNwbGF5LnNpemVyKSwgZG9TY3JvbGwgPSBudWxsOwogICAgIGlmIChjb29yZHMudG9w
ICsgYm94LnRvcCA8IDApIGRvU2Nyb2xsID0gdHJ1ZTsKQEAgLTI2NDMsMTEgKzI2NjEsMTUgQEAg
d2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgfQogICB9CiAKLSAgZnVuY3Rp
b24gc2Nyb2xsUG9zSW50b1ZpZXcoY20sIHBvcywgbWFyZ2luKSB7CisgIGZ1bmN0aW9uIHNjcm9s
bFBvc0ludG9WaWV3KGNtLCBwb3MsIGVuZCwgbWFyZ2luKSB7CiAgICAgaWYgKG1hcmdpbiA9PSBu
dWxsKSBtYXJnaW4gPSAwOwogICAgIGZvciAoOzspIHsKICAgICAgIHZhciBjaGFuZ2VkID0gZmFs
c2UsIGNvb3JkcyA9IGN1cnNvckNvb3JkcyhjbSwgcG9zKTsKLSAgICAgIHZhciBzY3JvbGxQb3Mg
PSBjYWxjdWxhdGVTY3JvbGxQb3MoY20sIGNvb3Jkcy5sZWZ0LCBjb29yZHMudG9wIC0gbWFyZ2lu
LCBjb29yZHMubGVmdCwgY29vcmRzLmJvdHRvbSArIG1hcmdpbik7CisgICAgICB2YXIgZW5kQ29v
cmRzID0gIWVuZCB8fCBlbmQgPT0gcG9zID8gY29vcmRzIDogY3Vyc29yQ29vcmRzKGNtLCBlbmQp
OworICAgICAgdmFyIHNjcm9sbFBvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyhjbSwgTWF0aC5taW4o
Y29vcmRzLmxlZnQsIGVuZENvb3Jkcy5sZWZ0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWF0aC5taW4oY29vcmRzLnRvcCwgZW5kQ29vcmRzLnRvcCkgLSBtYXJn
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KGNv
b3Jkcy5sZWZ0LCBlbmRDb29yZHMubGVmdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE1hdGgubWF4KGNvb3Jkcy5ib3R0b20sIGVuZENvb3Jkcy5ib3R0b20pICsg
bWFyZ2luKTsKICAgICAgIHZhciBzdGFydFRvcCA9IGNtLmRvYy5zY3JvbGxUb3AsIHN0YXJ0TGVm
dCA9IGNtLmRvYy5zY3JvbGxMZWZ0OwogICAgICAgaWYgKHNjcm9sbFBvcy5zY3JvbGxUb3AgIT0g
bnVsbCkgewogICAgICAgICBzZXRTY3JvbGxUb3AoY20sIHNjcm9sbFBvcy5zY3JvbGxUb3ApOwpA
QCAtMjc0NCw2ICsyNzY2LDggQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAK
ICAgICBpZiAoaW5kZW50U3RyaW5nICE9IGN1clNwYWNlU3RyaW5nKQogICAgICAgcmVwbGFjZVJh
bmdlKGNtLmRvYywgaW5kZW50U3RyaW5nLCBQb3MobiwgMCksIFBvcyhuLCBjdXJTcGFjZVN0cmlu
Zy5sZW5ndGgpLCAiK2lucHV0Iik7CisgICAgZWxzZSBpZiAoZG9jLnNlbC5oZWFkLmxpbmUgPT0g
biAmJiBkb2Muc2VsLmhlYWQuY2ggPCBjdXJTcGFjZVN0cmluZy5sZW5ndGgpCisgICAgICBzZXRT
ZWxlY3Rpb24oZG9jLCBQb3MobiwgY3VyU3BhY2VTdHJpbmcubGVuZ3RoKSwgUG9zKG4sIGN1clNw
YWNlU3RyaW5nLmxlbmd0aCksIDEpOwogICAgIGxpbmUuc3RhdGVBZnRlciA9IG51bGw7CiAgIH0K
IApAQCAtMjg0NCw3ICsyODY4LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7
CiAKICAgQ29kZU1pcnJvci5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0b3I6IENvZGVNaXJy
b3IsCi0gICAgZm9jdXM6IGZ1bmN0aW9uKCl7d2luZG93LmZvY3VzKCk7IGZvY3VzSW5wdXQodGhp
cyk7IG9uRm9jdXModGhpcyk7IGZhc3RQb2xsKHRoaXMpO30sCisgICAgZm9jdXM6IGZ1bmN0aW9u
KCl7d2luZG93LmZvY3VzKCk7IGZvY3VzSW5wdXQodGhpcyk7IGZhc3RQb2xsKHRoaXMpO30sCiAK
ICAgICBzZXRPcHRpb246IGZ1bmN0aW9uKG9wdGlvbiwgdmFsdWUpIHsKICAgICAgIHZhciBvcHRp
b25zID0gdGhpcy5vcHRpb25zLCBvbGQgPSBvcHRpb25zW29wdGlvbl07CkBAIC0zMTY1LDE3ICsz
MTg5LDIzIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICBjbGllbnRIZWlnaHQ6IHNjcm9sbGVyLmNsaWVudEhlaWdodCAtIGNvLCBjbGllbnRXaWR0aDog
c2Nyb2xsZXIuY2xpZW50V2lkdGggLSBjb307CiAgICAgfSwKIAotICAgIHNjcm9sbEludG9WaWV3
OiBvcGVyYXRpb24obnVsbCwgZnVuY3Rpb24ocG9zLCBtYXJnaW4pIHsKLSAgICAgIGlmICh0eXBl
b2YgcG9zID09ICJudW1iZXIiKSBwb3MgPSBQb3MocG9zLCAwKTsKKyAgICBzY3JvbGxJbnRvVmll
dzogb3BlcmF0aW9uKG51bGwsIGZ1bmN0aW9uKHJhbmdlLCBtYXJnaW4pIHsKKyAgICAgIGlmIChy
YW5nZSA9PSBudWxsKSByYW5nZSA9IHtmcm9tOiB0aGlzLmRvYy5zZWwuaGVhZCwgdG86IG51bGx9
OworICAgICAgZWxzZSBpZiAodHlwZW9mIHJhbmdlID09ICJudW1iZXIiKSByYW5nZSA9IHtmcm9t
OiBQb3MocmFuZ2UsIDApLCB0bzogbnVsbH07CisgICAgICBlbHNlIGlmIChyYW5nZS5mcm9tID09
IG51bGwpIHJhbmdlID0ge2Zyb206IHJhbmdlLCB0bzogbnVsbH07CisgICAgICBpZiAoIXJhbmdl
LnRvKSByYW5nZS50byA9IHJhbmdlLmZyb207CiAgICAgICBpZiAoIW1hcmdpbikgbWFyZ2luID0g
MDsKLSAgICAgIHZhciBjb29yZHMgPSBwb3M7CiAKLSAgICAgIGlmICghcG9zIHx8IHBvcy5saW5l
ICE9IG51bGwpIHsKLSAgICAgICAgdGhpcy5jdXJPcC5zY3JvbGxUb1BvcyA9IHBvcyA/IGNsaXBQ
b3ModGhpcy5kb2MsIHBvcykgOiB0aGlzLmRvYy5zZWwuaGVhZDsKLSAgICAgICAgdGhpcy5jdXJP
cC5zY3JvbGxUb1Bvc01hcmdpbiA9IG1hcmdpbjsKLSAgICAgICAgY29vcmRzID0gY3Vyc29yQ29v
cmRzKHRoaXMsIHRoaXMuY3VyT3Auc2Nyb2xsVG9Qb3MpOworICAgICAgdmFyIGNvb3JkcyA9IHJh
bmdlOworICAgICAgaWYgKHJhbmdlLmZyb20ubGluZSAhPSBudWxsKSB7CisgICAgICAgIHRoaXMu
Y3VyT3Auc2Nyb2xsVG9Qb3MgPSB7ZnJvbTogcmFuZ2UuZnJvbSwgdG86IHJhbmdlLnRvLCBtYXJn
aW46IG1hcmdpbn07CisgICAgICAgIGNvb3JkcyA9IHtmcm9tOiBjdXJzb3JDb29yZHModGhpcywg
cmFuZ2UuZnJvbSksCisgICAgICAgICAgICAgICAgICB0bzogY3Vyc29yQ29vcmRzKHRoaXMsIHJh
bmdlLnRvKX07CiAgICAgICB9Ci0gICAgICB2YXIgc1BvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyh0
aGlzLCBjb29yZHMubGVmdCwgY29vcmRzLnRvcCAtIG1hcmdpbiwgY29vcmRzLnJpZ2h0LCBjb29y
ZHMuYm90dG9tICsgbWFyZ2luKTsKKyAgICAgIHZhciBzUG9zID0gY2FsY3VsYXRlU2Nyb2xsUG9z
KHRoaXMsIE1hdGgubWluKGNvb3Jkcy5mcm9tLmxlZnQsIGNvb3Jkcy50by5sZWZ0KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWluKGNvb3Jkcy5mcm9tLnRvcCwg
Y29vcmRzLnRvLnRvcCkgLSBtYXJnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNYXRoLm1heChjb29yZHMuZnJvbS5yaWdodCwgY29vcmRzLnRvLnJpZ2h0KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KGNvb3Jkcy5mcm9tLmJvdHRv
bSwgY29vcmRzLnRvLmJvdHRvbSkgKyBtYXJnaW4pOwogICAgICAgdXBkYXRlU2Nyb2xsUG9zKHRo
aXMsIHNQb3Muc2Nyb2xsTGVmdCwgc1Bvcy5zY3JvbGxUb3ApOwogICAgIH0pLAogCkBAIC0zMjA3
LDYgKzMyMzcsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIGNs
ZWFyQ2FjaGVzKHRoaXMpOwogICAgICAgcmVzZXRJbnB1dCh0aGlzLCB0cnVlKTsKICAgICAgIHVw
ZGF0ZVNjcm9sbFBvcyh0aGlzLCBkb2Muc2Nyb2xsTGVmdCwgZG9jLnNjcm9sbFRvcCk7CisgICAg
ICBzaWduYWxMYXRlcih0aGlzLCAic3dhcERvYyIsIHRoaXMsIG9sZCk7CiAgICAgICByZXR1cm4g
b2xkOwogICAgIH0pLAogCkBAIC0zMjUwLDggKzMyODEsMTQgQEAgd2luZG93LkNvZGVNaXJyb3Ig
PSAoZnVuY3Rpb24oKSB7CiAgICAgY2xlYXJDYWNoZXMoY20pOwogICAgIHJlZ0NoYW5nZShjbSk7
CiAgIH0sIHRydWUpOworICBvcHRpb24oInNwZWNpYWxDaGFycyIsIC9bXHRcdTAwMDAtXHUwMDE5
XHUwMGFkXHUyMDBiXHUyMDI4XHUyMDI5XHVmZWZmXS9nLCBmdW5jdGlvbihjbSwgdmFsKSB7Cisg
ICAgY20ub3B0aW9ucy5zcGVjaWFsQ2hhcnMgPSBuZXcgUmVnRXhwKHZhbC5zb3VyY2UgKyAodmFs
LnRlc3QoIlx0IikgPyAiIiA6ICJ8XHQiKSwgImciKTsKKyAgICBjbS5yZWZyZXNoKCk7CisgIH0s
IHRydWUpOworICBvcHRpb24oInNwZWNpYWxDaGFyUGxhY2Vob2xkZXIiLCBkZWZhdWx0U3BlY2lh
bENoYXJQbGFjZWhvbGRlciwgZnVuY3Rpb24oY20pIHtjbS5yZWZyZXNoKCk7fSwgdHJ1ZSk7CiAg
IG9wdGlvbigiZWxlY3RyaWNDaGFycyIsIHRydWUpOwogICBvcHRpb24oInJ0bE1vdmVWaXN1YWxs
eSIsICF3aW5kb3dzKTsKKyAgb3B0aW9uKCJ3aG9sZUxpbmVVcGRhdGVCZWZvcmUiLCB0cnVlKTsK
IAogICBvcHRpb24oInRoZW1lIiwgImRlZmF1bHQiLCBmdW5jdGlvbihjbSkgewogICAgIHRoZW1l
Q2hhbmdlZChjbSk7CkBAIC0zMjgxLDkgKzMzMTgsMTcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAo
ZnVuY3Rpb24oKSB7CiAgIG9wdGlvbigibGluZU51bWJlckZvcm1hdHRlciIsIGZ1bmN0aW9uKGlu
dGVnZXIpIHtyZXR1cm4gaW50ZWdlcjt9LCBndXR0ZXJzQ2hhbmdlZCwgdHJ1ZSk7CiAgIG9wdGlv
bigic2hvd0N1cnNvcldoZW5TZWxlY3RpbmciLCBmYWxzZSwgdXBkYXRlU2VsZWN0aW9uLCB0cnVl
KTsKIAorICBvcHRpb24oInJlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudSIsIHRydWUpOworCiAg
IG9wdGlvbigicmVhZE9ubHkiLCBmYWxzZSwgZnVuY3Rpb24oY20sIHZhbCkgewotICAgIGlmICh2
YWwgPT0gIm5vY3Vyc29yIikge29uQmx1cihjbSk7IGNtLmRpc3BsYXkuaW5wdXQuYmx1cigpO30K
LSAgICBlbHNlIGlmICghdmFsKSByZXNldElucHV0KGNtLCB0cnVlKTsKKyAgICBpZiAodmFsID09
ICJub2N1cnNvciIpIHsKKyAgICAgIG9uQmx1cihjbSk7CisgICAgICBjbS5kaXNwbGF5LmlucHV0
LmJsdXIoKTsKKyAgICAgIGNtLmRpc3BsYXkuZGlzYWJsZWQgPSB0cnVlOworICAgIH0gZWxzZSB7
CisgICAgICBjbS5kaXNwbGF5LmRpc2FibGVkID0gZmFsc2U7CisgICAgICBpZiAoIXZhbCkgcmVz
ZXRJbnB1dChjbSwgdHJ1ZSk7CisgICAgfQogICB9KTsKICAgb3B0aW9uKCJkcmFnRHJvcCIsIHRy
dWUpOwogCkBAIC0zNTE3LDcgKzM1NjIsOCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlv
bigpIHsKICAga2V5TWFwLmJhc2ljID0gewogICAgICJMZWZ0IjogImdvQ2hhckxlZnQiLCAiUmln
aHQiOiAiZ29DaGFyUmlnaHQiLCAiVXAiOiAiZ29MaW5lVXAiLCAiRG93biI6ICJnb0xpbmVEb3du
IiwKICAgICAiRW5kIjogImdvTGluZUVuZCIsICJIb21lIjogImdvTGluZVN0YXJ0U21hcnQiLCAi
UGFnZVVwIjogImdvUGFnZVVwIiwgIlBhZ2VEb3duIjogImdvUGFnZURvd24iLAotICAgICJEZWxl
dGUiOiAiZGVsQ2hhckFmdGVyIiwgIkJhY2tzcGFjZSI6ICJkZWxDaGFyQmVmb3JlIiwgIlRhYiI6
ICJkZWZhdWx0VGFiIiwgIlNoaWZ0LVRhYiI6ICJpbmRlbnRBdXRvIiwKKyAgICAiRGVsZXRlIjog
ImRlbENoYXJBZnRlciIsICJCYWNrc3BhY2UiOiAiZGVsQ2hhckJlZm9yZSIsICJTaGlmdC1CYWNr
c3BhY2UiOiAiZGVsQ2hhckJlZm9yZSIsCisgICAgIlRhYiI6ICJkZWZhdWx0VGFiIiwgIlNoaWZ0
LVRhYiI6ICJpbmRlbnRBdXRvIiwKICAgICAiRW50ZXIiOiAibmV3bGluZUFuZEluZGVudCIsICJJ
bnNlcnQiOiAidG9nZ2xlT3ZlcndyaXRlIgogICB9OwogICAvLyBOb3RlIHRoYXQgdGhlIHNhdmUg
YW5kIGZpbmQtcmVsYXRlZCBjb21tYW5kcyBhcmVuJ3QgZGVmaW5lZCBieQpAQCAtMzgyMyw3ICsz
ODY5LDkgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgaWYgKGRvYy5j
bSAmJiAhZG9jLmNtLmN1ck9wKSByZXR1cm4gb3BlcmF0aW9uKGRvYy5jbSwgbWFya1RleHQpKGRv
YywgZnJvbSwgdG8sIG9wdGlvbnMsIHR5cGUpOwogCiAgICAgdmFyIG1hcmtlciA9IG5ldyBUZXh0
TWFya2VyKGRvYywgdHlwZSk7Ci0gICAgaWYgKHR5cGUgPT0gInJhbmdlIiAmJiAhcG9zTGVzcyhm
cm9tLCB0bykpIHJldHVybiBtYXJrZXI7CisgICAgaWYgKHBvc0xlc3ModG8sIGZyb20pIHx8IHBv
c0VxKGZyb20sIHRvKSAmJiB0eXBlID09ICJyYW5nZSIgJiYKKyAgICAgICAgIShvcHRpb25zLmlu
Y2x1c2l2ZUxlZnQgJiYgb3B0aW9ucy5pbmNsdXNpdmVSaWdodCkpCisgICAgICByZXR1cm4gbWFy
a2VyOwogICAgIGlmIChvcHRpb25zKSBjb3B5T2JqKG9wdGlvbnMsIG1hcmtlcik7CiAgICAgaWYg
KG1hcmtlci5yZXBsYWNlZFdpdGgpIHsKICAgICAgIG1hcmtlci5jb2xsYXBzZWQgPSB0cnVlOwpA
QCAtMzkzOSw3ICszOTg3LDkgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAg
ICAgaWYgKG9sZCkgZm9yICh2YXIgaSA9IDAsIG53OyBpIDwgb2xkLmxlbmd0aDsgKytpKSB7CiAg
ICAgICB2YXIgc3BhbiA9IG9sZFtpXSwgbWFya2VyID0gc3Bhbi5tYXJrZXI7CiAgICAgICB2YXIg
c3RhcnRzQmVmb3JlID0gc3Bhbi5mcm9tID09IG51bGwgfHwgKG1hcmtlci5pbmNsdXNpdmVMZWZ0
ID8gc3Bhbi5mcm9tIDw9IHN0YXJ0Q2ggOiBzcGFuLmZyb20gPCBzdGFydENoKTsKLSAgICAgIGlm
IChzdGFydHNCZWZvcmUgfHwgbWFya2VyLnR5cGUgPT0gImJvb2ttYXJrIiAmJiBzcGFuLmZyb20g
PT0gc3RhcnRDaCAmJiAoIWlzSW5zZXJ0IHx8ICFzcGFuLm1hcmtlci5pbnNlcnRMZWZ0KSkgewor
ICAgICAgaWYgKHN0YXJ0c0JlZm9yZSB8fAorICAgICAgICAgIChtYXJrZXIuaW5jbHVzaXZlTGVm
dCAmJiBtYXJrZXIuaW5jbHVzaXZlUmlnaHQgfHwgbWFya2VyLnR5cGUgPT0gImJvb2ttYXJrIikg
JiYKKyAgICAgICAgICBzcGFuLmZyb20gPT0gc3RhcnRDaCAmJiAoIWlzSW5zZXJ0IHx8ICFzcGFu
Lm1hcmtlci5pbnNlcnRMZWZ0KSkgewogICAgICAgICB2YXIgZW5kc0FmdGVyID0gc3Bhbi50byA9
PSBudWxsIHx8IChtYXJrZXIuaW5jbHVzaXZlUmlnaHQgPyBzcGFuLnRvID49IHN0YXJ0Q2ggOiBz
cGFuLnRvID4gc3RhcnRDaCk7CiAgICAgICAgIChudyB8fCAobncgPSBbXSkpLnB1c2goe2Zyb206
IHNwYW4uZnJvbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG86IGVuZHNBZnRl
ciA/IG51bGwgOiBzcGFuLnRvLApAQCAtNDIxMiw2ICs0MjYyLDcgQEAgd2luZG93LkNvZGVNaXJy
b3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgdGhpcy5oZWlnaHQgPSBlc3RpbWF0ZUhlaWdodCA/IGVz
dGltYXRlSGVpZ2h0KHRoaXMpIDogMTsKICAgfTsKICAgZXZlbnRNaXhpbihMaW5lKTsKKyAgTGlu
ZS5wcm90b3R5cGUubGluZU5vID0gZnVuY3Rpb24oKSB7IHJldHVybiBsaW5lTm8odGhpcyk7IH07
CiAKICAgZnVuY3Rpb24gdXBkYXRlTGluZShsaW5lLCB0ZXh0LCBtYXJrZWRTcGFucywgZXN0aW1h
dGVIZWlnaHQpIHsKICAgICBsaW5lLnRleHQgPSB0ZXh0OwpAQCAtNDIzMiw3ICs0MjgzLDcgQEAg
d2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIC8vIFJ1biB0aGUgZ2l2ZW4gbW9k
ZSdzIHBhcnNlciBvdmVyIGEgbGluZSwgdXBkYXRlIHRoZSBzdHlsZXMKICAgLy8gYXJyYXksIHdo
aWNoIGNvbnRhaW5zIGFsdGVybmF0aW5nIGZyYWdtZW50cyBvZiB0ZXh0IGFuZCBDU1MKICAgLy8g
Y2xhc3Nlcy4KLSAgZnVuY3Rpb24gcnVuTW9kZShjbSwgdGV4dCwgbW9kZSwgc3RhdGUsIGYpIHsK
KyAgZnVuY3Rpb24gcnVuTW9kZShjbSwgdGV4dCwgbW9kZSwgc3RhdGUsIGYsIGZvcmNlVG9FbmQp
IHsKICAgICB2YXIgZmxhdHRlblNwYW5zID0gbW9kZS5mbGF0dGVuU3BhbnM7CiAgICAgaWYgKGZs
YXR0ZW5TcGFucyA9PSBudWxsKSBmbGF0dGVuU3BhbnMgPSBjbS5vcHRpb25zLmZsYXR0ZW5TcGFu
czsKICAgICB2YXIgY3VyU3RhcnQgPSAwLCBjdXJTdHlsZSA9IG51bGw7CkBAIC00MjQxLDYgKzQy
OTIsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB3aGlsZSAoIXN0
cmVhbS5lb2woKSkgewogICAgICAgaWYgKHN0cmVhbS5wb3MgPiBjbS5vcHRpb25zLm1heEhpZ2hs
aWdodExlbmd0aCkgewogICAgICAgICBmbGF0dGVuU3BhbnMgPSBmYWxzZTsKKyAgICAgICAgaWYg
KGZvcmNlVG9FbmQpIHByb2Nlc3NMaW5lKGNtLCB0ZXh0LCBzdGF0ZSwgc3RyZWFtLnBvcyk7CiAg
ICAgICAgIHN0cmVhbS5wb3MgPSB0ZXh0Lmxlbmd0aDsKICAgICAgICAgc3R5bGUgPSBudWxsOwog
ICAgICAgfSBlbHNlIHsKQEAgLTQyNjAsMTIgKzQzMTIsMTQgQEAgd2luZG93LkNvZGVNaXJyb3Ig
PSAoZnVuY3Rpb24oKSB7CiAgICAgfQogICB9CiAKLSAgZnVuY3Rpb24gaGlnaGxpZ2h0TGluZShj
bSwgbGluZSwgc3RhdGUpIHsKKyAgZnVuY3Rpb24gaGlnaGxpZ2h0TGluZShjbSwgbGluZSwgc3Rh
dGUsIGZvcmNlVG9FbmQpIHsKICAgICAvLyBBIHN0eWxlcyBhcnJheSBhbHdheXMgc3RhcnRzIHdp
dGggYSBudW1iZXIgaWRlbnRpZnlpbmcgdGhlCiAgICAgLy8gbW9kZS9vdmVybGF5cyB0aGF0IGl0
IGlzIGJhc2VkIG9uIChmb3IgZWFzeSBpbnZhbGlkYXRpb24pLgogICAgIHZhciBzdCA9IFtjbS5z
dGF0ZS5tb2RlR2VuXTsKICAgICAvLyBDb21wdXRlIHRoZSBiYXNlIGFycmF5IG9mIHN0eWxlcwot
ICAgIHJ1bk1vZGUoY20sIGxpbmUudGV4dCwgY20uZG9jLm1vZGUsIHN0YXRlLCBmdW5jdGlvbihl
bmQsIHN0eWxlKSB7c3QucHVzaChlbmQsIHN0eWxlKTt9KTsKKyAgICBydW5Nb2RlKGNtLCBsaW5l
LnRleHQsIGNtLmRvYy5tb2RlLCBzdGF0ZSwgZnVuY3Rpb24oZW5kLCBzdHlsZSkgeworICAgICAg
c3QucHVzaChlbmQsIHN0eWxlKTsKKyAgICB9LCBmb3JjZVRvRW5kKTsKIAogICAgIC8vIFJ1biBv
dmVybGF5cywgYWRqdXN0IHN0eWxlIGFycmF5LgogICAgIGZvciAodmFyIG8gPSAwOyBvIDwgY20u
c3RhdGUub3ZlcmxheXMubGVuZ3RoOyArK28pIHsKQEAgLTQzMDQsMTAgKzQzNTgsMTEgQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAKICAgLy8gTGlnaHR3ZWlnaHQgZm9ybSBv
ZiBoaWdobGlnaHQgLS0gcHJvY2VlZCBvdmVyIHRoaXMgbGluZSBhbmQKICAgLy8gdXBkYXRlIHN0
YXRlLCBidXQgZG9uJ3Qgc2F2ZSBhIHN0eWxlIGFycmF5LgotICBmdW5jdGlvbiBwcm9jZXNzTGlu
ZShjbSwgbGluZSwgc3RhdGUpIHsKKyAgZnVuY3Rpb24gcHJvY2Vzc0xpbmUoY20sIHRleHQsIHN0
YXRlLCBzdGFydEF0KSB7CiAgICAgdmFyIG1vZGUgPSBjbS5kb2MubW9kZTsKLSAgICB2YXIgc3Ry
ZWFtID0gbmV3IFN0cmluZ1N0cmVhbShsaW5lLnRleHQsIGNtLm9wdGlvbnMudGFiU2l6ZSk7Ci0g
ICAgaWYgKGxpbmUudGV4dCA9PSAiIiAmJiBtb2RlLmJsYW5rTGluZSkgbW9kZS5ibGFua0xpbmUo
c3RhdGUpOworICAgIHZhciBzdHJlYW0gPSBuZXcgU3RyaW5nU3RyZWFtKHRleHQsIGNtLm9wdGlv
bnMudGFiU2l6ZSk7CisgICAgc3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBvcyA9IHN0YXJ0QXQgfHwg
MDsKKyAgICBpZiAodGV4dCA9PSAiIiAmJiBtb2RlLmJsYW5rTGluZSkgbW9kZS5ibGFua0xpbmUo
c3RhdGUpOwogICAgIHdoaWxlICghc3RyZWFtLmVvbCgpICYmIHN0cmVhbS5wb3MgPD0gY20ub3B0
aW9ucy5tYXhIaWdobGlnaHRMZW5ndGgpIHsKICAgICAgIG1vZGUudG9rZW4oc3RyZWFtLCBzdGF0
ZSk7CiAgICAgICBzdHJlYW0uc3RhcnQgPSBzdHJlYW0ucG9zOwpAQCAtNDM2NCw3ICs0NDE5LDcg
QEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgLy8gV29yayBhcm91bmQg
cHJvYmxlbSB3aXRoIHRoZSByZXBvcnRlZCBkaW1lbnNpb25zIG9mIHNpbmdsZS1jaGFyCiAgICAg
Ly8gZGlyZWN0aW9uIHNwYW5zIG9uIElFIChpc3N1ZSAjMTEyOSkuIFNlZSBhbHNvIHRoZSBjb21t
ZW50IGluCiAgICAgLy8gY3Vyc29yQ29vcmRzLgotICAgIGlmIChtZWFzdXJlICYmIGllICYmIChv
cmRlciA9IGdldE9yZGVyKGxpbmUpKSkgeworICAgIGlmIChtZWFzdXJlICYmIChpZSB8fCBpZV9n
dDEwKSAmJiAob3JkZXIgPSBnZXRPcmRlcihsaW5lKSkpIHsKICAgICAgIHZhciBsID0gb3JkZXIu
bGVuZ3RoIC0gMTsKICAgICAgIGlmIChvcmRlcltsXS5mcm9tID09IG9yZGVyW2xdLnRvKSAtLWw7
CiAgICAgICB2YXIgbGFzdCA9IG9yZGVyW2xdLCBwcmV2ID0gb3JkZXJbbCAtIDFdOwpAQCAtNDM4
MiwxNyArNDQzNywyMyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICBy
ZXR1cm4gYnVpbGRlcjsKICAgfQogCi0gIHZhciB0b2tlblNwZWNpYWxDaGFycyA9IC9bXHRcdTAw
MDAtXHUwMDE5XHUwMGFkXHUyMDBiXHUyMDI4XHUyMDI5XHVGRUZGXS9nOworICBmdW5jdGlvbiBk
ZWZhdWx0U3BlY2lhbENoYXJQbGFjZWhvbGRlcihjaCkgeworICAgIHZhciB0b2tlbiA9IGVsdCgi
c3BhbiIsICJcdTIwMjIiLCAiY20taW52YWxpZGNoYXIiKTsKKyAgICB0b2tlbi50aXRsZSA9ICJc
XHUiICsgY2guY2hhckNvZGVBdCgwKS50b1N0cmluZygxNik7CisgICAgcmV0dXJuIHRva2VuOwor
ICB9CisKICAgZnVuY3Rpb24gYnVpbGRUb2tlbihidWlsZGVyLCB0ZXh0LCBzdHlsZSwgc3RhcnRT
dHlsZSwgZW5kU3R5bGUsIHRpdGxlKSB7CiAgICAgaWYgKCF0ZXh0KSByZXR1cm47Ci0gICAgaWYg
KCF0b2tlblNwZWNpYWxDaGFycy50ZXN0KHRleHQpKSB7CisgICAgdmFyIHNwZWNpYWwgPSBidWls
ZGVyLmNtLm9wdGlvbnMuc3BlY2lhbENoYXJzOworICAgIGlmICghc3BlY2lhbC50ZXN0KHRleHQp
KSB7CiAgICAgICBidWlsZGVyLmNvbCArPSB0ZXh0Lmxlbmd0aDsKICAgICAgIHZhciBjb250ZW50
ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7CiAgICAgfSBlbHNlIHsKICAgICAgIHZh
ciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLCBwb3MgPSAwOwog
ICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgdG9rZW5TcGVjaWFsQ2hhcnMubGFzdEluZGV4
ID0gcG9zOwotICAgICAgICB2YXIgbSA9IHRva2VuU3BlY2lhbENoYXJzLmV4ZWModGV4dCk7Cisg
ICAgICAgIHNwZWNpYWwubGFzdEluZGV4ID0gcG9zOworICAgICAgICB2YXIgbSA9IHNwZWNpYWwu
ZXhlYyh0ZXh0KTsKICAgICAgICAgdmFyIHNraXBwZWQgPSBtID8gbS5pbmRleCAtIHBvcyA6IHRl
eHQubGVuZ3RoIC0gcG9zOwogICAgICAgICBpZiAoc2tpcHBlZCkgewogICAgICAgICAgIGNvbnRl
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dC5zbGljZShwb3MsIHBv
cyArIHNraXBwZWQpKSk7CkBAIC00NDA1LDggKzQ0NjYsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGVsdCgic3BhbiIs
IHNwYWNlU3RyKHRhYldpZHRoKSwgImNtLXRhYiIpKTsKICAgICAgICAgICBidWlsZGVyLmNvbCAr
PSB0YWJXaWR0aDsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB2YXIgdG9rZW4gPSBlbHQo
InNwYW4iLCAiXHUyMDIyIiwgImNtLWludmFsaWRjaGFyIik7Ci0gICAgICAgICAgdG9rZW4udGl0
bGUgPSAiXFx1IiArIG1bMF0uY2hhckNvZGVBdCgwKS50b1N0cmluZygxNik7CisgICAgICAgICAg
dmFyIHRva2VuID0gYnVpbGRlci5jbS5vcHRpb25zLnNwZWNpYWxDaGFyUGxhY2Vob2xkZXIobVsw
XSk7CiAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0b2tlbik7CiAgICAgICAgICAgYnVp
bGRlci5jb2wgKz0gMTsKICAgICAgICAgfQpAQCAtNDQ1Nyw3ICs0NTE3LDcgQEAgd2luZG93LkNv
ZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICByZXR1cm4gb3V0OwogICAgIH0KICAgICBy
ZXR1cm4gZnVuY3Rpb24oYnVpbGRlciwgdGV4dCwgc3R5bGUsIHN0YXJ0U3R5bGUsIGVuZFN0eWxl
LCB0aXRsZSkgewotICAgICAgcmV0dXJuIGlubmVyKGJ1aWxkZXIsIHRleHQucmVwbGFjZSgvIHsz
LH0vLCBzcGxpdCksIHN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgdGl0bGUpOworICAgICAg
cmV0dXJuIGlubmVyKGJ1aWxkZXIsIHRleHQucmVwbGFjZSgvIHszLH0vZywgc3BsaXQpLCBzdHls
ZSwgc3RhcnRTdHlsZSwgZW5kU3R5bGUsIHRpdGxlKTsKICAgICB9OwogICB9CiAKQEAgLTQ1NTks
NyArNDYxOSw4IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIHZhciBs
YXN0VGV4dCA9IGxzdCh0ZXh0KSwgbGFzdFNwYW5zID0gc3BhbnNGb3IodGV4dC5sZW5ndGggLSAx
KSwgbmxpbmVzID0gdG8ubGluZSAtIGZyb20ubGluZTsKIAogICAgIC8vIEZpcnN0IGFkanVzdCB0
aGUgbGluZSBzdHJ1Y3R1cmUKLSAgICBpZiAoZnJvbS5jaCA9PSAwICYmIHRvLmNoID09IDAgJiYg
bGFzdFRleHQgPT0gIiIpIHsKKyAgICBpZiAoZnJvbS5jaCA9PSAwICYmIHRvLmNoID09IDAgJiYg
bGFzdFRleHQgPT0gIiIgJiYKKyAgICAgICAgKCFkb2MuY20gfHwgZG9jLmNtLm9wdGlvbnMud2hv
bGVMaW5lVXBkYXRlQmVmb3JlKSkgewogICAgICAgLy8gVGhpcyBpcyBhIHdob2xlLWxpbmUgcmVw
bGFjZS4gVHJlYXRlZCBzcGVjaWFsbHkgdG8gbWFrZQogICAgICAgLy8gc3VyZSBsaW5lIG9iamVj
dHMgbW92ZSB0aGUgd2F5IHRoZXkgYXJlIHN1cHBvc2VkIHRvLgogICAgICAgZm9yICh2YXIgaSA9
IDAsIGUgPSB0ZXh0Lmxlbmd0aCAtIDEsIGFkZGVkID0gW107IGkgPCBlOyArK2kpCkBAIC01NDQ2
LDcgKzU1MDcsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICByZXR1
cm4gdHJ1ZTsKICAgfQogCi0gIHZhciBpc0V4dGVuZGluZ0NoYXIgPSAvW1x1MDMwMC1cdTAzNkZc
dTA0ODMtXHUwNDg3XHUwNDg4LVx1MDQ4OVx1MDU5MS1cdTA1QkRcdTA1QkZcdTA1QzEtXHUwNUMy
XHUwNUM0LVx1MDVDNVx1MDVDN1x1MDYxMC1cdTA2MUFcdTA2NEItXHUwNjVGXHUwNjcwXHUwNkQ2
LVx1MDZEQ1x1MDZERi1cdTA2RTRcdTA2RTctXHUwNkU4XHUwNkVBLVx1MDZFRFx1QTY2Rlx1QTY3
MC1cdUE2NzJcdUE2NzQtXHVBNjdEXHVBNjlGXHVkYzAwLVx1ZGZmZl0vOworICB2YXIgaXNFeHRl
bmRpbmdDaGFyID0gL1tcdTAzMDAtXHUwMzZGXHUwNDgzLVx1MDQ4N1x1MDQ4OC1cdTA0ODlcdTA1
OTEtXHUwNUJEXHUwNUJGXHUwNUMxLVx1MDVDMlx1MDVDNC1cdTA1QzVcdTA1QzdcdTA2MTAtXHUw
NjFBXHUwNjRCLVx1MDY1Rlx1MDY3MFx1MDZENi1cdTA2RENcdTA2REYtXHUwNkU0XHUwNkU3LVx1
MDZFOFx1MDZFQS1cdTA2RURcdUE2NkZcdTFEQzDigJNcdTFERkZcdTIwRDDigJNcdTIwRkZcdUE2
NzAtXHVBNjcyXHVBNjc0LVx1QTY3RFx1QTY5Rlx1ZGMwMC1cdWRmZmZcdUZFMjDigJNcdUZFMkZd
LzsKIAogICAvLyBET00gVVRJTElUSUVTCiAKQEAgLTU1MjAsNyArNTU4MSw3IEBAIHdpbmRvdy5D
b2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgICBpZiAoL1x3Ly50ZXN0KHN0ci5jaGFy
QXQoaSAtIDIpKSAmJiAvW15cLT9cLl0vLnRlc3Qoc3RyLmNoYXJBdChpKSkpIHJldHVybiB0cnVl
OwogICAgICAgICBpZiAoaSA+IDIgJiYgL1tcZFwuLF0vLnRlc3Qoc3RyLmNoYXJBdChpIC0gMikp
ICYmIC9bXGRcLixdLy50ZXN0KHN0ci5jaGFyQXQoaSkpKSByZXR1cm4gZmFsc2U7CiAgICAgICB9
Ci0gICAgICB2YXIgcmVzdWx0ID0gL1t+ISMlJiopPSt9XF18XCJcLj4sOjtdWyh7WzxdfC1bXlwt
P1wuXHUyMDEwLVx1MjAxZlx1MjAyNl18XD9bXHd+YEAjJCVcXiYqKF89K3tbfD48XXzigKZbXHd+
YEAjJCVcXiYqKF89K3tbPjxdLy50ZXN0KHN0ci5zbGljZShpIC0gMSwgaSArIDEpKTsKKyAgICAg
IHZhciByZXN1bHQgPSAvW34hIyUmKik9K31cXVxcfFwiXC4+LDo7XVsoe1s8XXwtW15cLT9cLlx1
MjAxMC1cdTIwMWZcdTIwMjZdfFw/W1x3fmBAIyQlXF4mKihfPSt7W3w+PF184oCmW1x3fmBAIyQl
XF4mKihfPSt7Wz48XS8udGVzdChzdHIuc2xpY2UoaSAtIDEsIGkgKyAxKSk7CiAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH07CiAKQEAgLTU4NzcsNyArNTkzOCw3IEBAIHdpbmRvdy5Db2RlTWly
cm9yID0gKGZ1bmN0aW9uKCkgewogCiAgIC8vIFRIRSBFTkQKIAotICBDb2RlTWlycm9yLnZlcnNp
b24gPSAiMy4xNi4xIjsKKyAgQ29kZU1pcnJvci52ZXJzaW9uID0gIjMuMjAuMCI7CiAKICAgcmV0
dXJuIENvZGVNaXJyb3I7CiB9KSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1Rvb2xzL1ByZXR0eVByaW50aW5nL2Nzcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29s
cy9QcmV0dHlQcmludGluZy9jc3MuanMKaW5kZXggMDg1YjExOWRlNGRmYzgyZjVmNzQzY2E1MmEy
ZjgwNDU5MGNhNWY0MS4uZDhjMzBjZjMzZDZmZTFiNWI0NTJmMzllNmZhYTBhYWU5YTM2MWFmNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2Nz
cy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY3Nz
LmpzCkBAIC0zLDcgKzMsNyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9u
KGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAKICAgaWYgKCFwYXJzZXJDb25maWcucHJvcGVydHlL
ZXl3b3JkcykgcGFyc2VyQ29uZmlnID0gQ29kZU1pcnJvci5yZXNvbHZlTW9kZSgidGV4dC9jc3Mi
KTsKIAotICB2YXIgaW5kZW50VW5pdCA9IGNvbmZpZy5pbmRlbnRVbml0LAorICB2YXIgaW5kZW50
VW5pdCA9IGNvbmZpZy5pbmRlbnRVbml0IHx8IGNvbmZpZy50YWJTaXplIHx8IDIsCiAgICAgICBo
b29rcyA9IHBhcnNlckNvbmZpZy5ob29rcyB8fCB7fSwKICAgICAgIGF0TWVkaWFUeXBlcyA9IHBh
cnNlckNvbmZpZy5hdE1lZGlhVHlwZXMgfHwge30sCiAgICAgICBhdE1lZGlhRmVhdHVyZXMgPSBw
YXJzZXJDb25maWcuYXRNZWRpYUZlYXR1cmVzIHx8IHt9LApAQCAtMzcsNyArMzcsNyBAQCBDb2Rl
TWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7
CiAgICAgICBzdHJlYW0ubWF0Y2goL15ccypcdyovKTsKICAgICAgIHJldHVybiByZXQoImtleXdv
cmQiLCAiaW1wb3J0YW50Iik7CiAgICAgfQotICAgIGVsc2UgaWYgKC9cZC8udGVzdChjaCkpIHsK
KyAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpIHx8IGNoID09ICIuIiAmJiBzdHJlYW0uZWF0KC9c
ZC8pKSB7CiAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcdy4lXS8pOwogICAgICAgcmV0dXJuIHJl
dCgibnVtYmVyIiwgInVuaXQiKTsKICAgICB9CkBAIC0yNTksOCArMjU5LDEzIEBAIENvZGVNaXJy
b3IuZGVmaW5lTW9kZSgiY3NzIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAg
ICAgIH0KICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIn0iKSB7CiAgICAgICAgIGlmIChjb250ZXh0
ID09ICJpbnRlcnBvbGF0aW9uIikgc3R5bGUgPSAib3BlcmF0b3IiOwotICAgICAgICBzdGF0ZS5z
dGFjay5wb3AoKTsKLSAgICAgICAgaWYgKGNvbnRleHQgPT0gInByb3BlcnR5VmFsdWUiKSBzdGF0
ZS5zdGFjay5wb3AoKTsKKyAgICAgICAgLy8gUG9wIG9mZiBlbmQgb2YgYXJyYXkgdW50aWwgeyBp
cyByZWFjaGVkCisgICAgICAgIHdoaWxlKHN0YXRlLnN0YWNrLmxlbmd0aCl7CisgICAgICAgICAg
dmFyIHJlbW92ZWQgPSBzdGF0ZS5zdGFjay5wb3AoKTsKKyAgICAgICAgICBpZihyZW1vdmVkLmlu
ZGV4T2YoInsiKSA+IC0xIHx8IHJlbW92ZWQgPT0gImJsb2NrIiB8fCByZW1vdmVkID09ICJydWxl
Iil7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgIH0K
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImludGVycG9sYXRpb24iKSBzdGF0ZS5zdGFjay5wdXNo
KCJpbnRlcnBvbGF0aW9uIik7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJAbWVkaWEiKSBzdGF0
ZS5zdGFjay5wdXNoKCJAbWVkaWEiKTsKQEAgLTI3OCwxMSArMjgzLDEzIEBAIENvZGVNaXJyb3Iu
ZGVmaW5lTW9kZSgiY3NzIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAg
ICAgZWxzZSBzdGF0ZS5zdGFjay5wdXNoKCIoIik7CiAgICAgICB9CiAgICAgICBlbHNlIGlmICh0
eXBlID09ICIpIikgewotICAgICAgICBpZiAoY29udGV4dCA9PSAicHJvcGVydHlWYWx1ZSIpIHsK
LSAgICAgICAgICAvLyBJbiBAbWVkaWFUeXBlKCB3aXRob3V0IGNsb3NpbmcgOyBhZnRlciBwcm9w
ZXJ0eVZhbHVlCi0gICAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICAgIC8vIFBvcCBv
ZmYgZW5kIG9mIGFycmF5IHVudGlsICggaXMgcmVhY2hlZAorICAgICAgICB3aGlsZShzdGF0ZS5z
dGFjay5sZW5ndGgpeworICAgICAgICAgIHZhciByZW1vdmVkID0gc3RhdGUuc3RhY2sucG9wKCk7
CisgICAgICAgICAgaWYocmVtb3ZlZC5pbmRleE9mKCIoIikgPiAtMSl7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7
CiAgICAgICB9CiAgICAgICBlbHNlIGlmICh0eXBlID09ICI6IiAmJiBzdGF0ZS5sYXN0VG9rZW4g
PT0gInByb3BlcnR5Iikgc3RhdGUuc3RhY2sucHVzaCgicHJvcGVydHlWYWx1ZSIpOwogICAgICAg
ZWxzZSBpZiAoY29udGV4dCA9PSAicHJvcGVydHlWYWx1ZSIgJiYgdHlwZSA9PSAiOyIpIHN0YXRl
LnN0YWNrLnBvcCgpOwpAQCAtNjAyLDYgKzYwOSwxMSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUo
ImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIFsidmFyaWFibGUiLCAidmFyaWFibGUiXTsKICAgICAgIH0sCisgICAgICAiLCI6
IGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUpIHsKKyAgICAgICAgaWYgKHN0YXRlLnN0YWNrW3N0YXRl
LnN0YWNrLmxlbmd0aCAtIDFdID09ICJwcm9wZXJ0eVZhbHVlIiAmJiBzdHJlYW0ubWF0Y2goL14g
KlwkLywgZmFsc2UpKSB7CisgICAgICAgICAgcmV0dXJuIFsib3BlcmF0b3IiLCAiOyJdOworICAg
ICAgICB9CisgICAgICB9LAogICAgICAgIi8iOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CiAg
ICAgICAgIGlmIChzdHJlYW0uZWF0KCIvIikpIHsKICAgICAgICAgICBzdHJlYW0uc2tpcFRvRW5k
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRp
bmcvamF2YXNjcmlwdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmlu
dGluZy9qYXZhc2NyaXB0LmpzCmluZGV4IGU4YWNlMzJkODk2YWMxYzA4M2Q1YWIzMTVmMTg0Nzkw
OTY4M2IyNjYuLmYyN2MwNjM0NmM2M2VlOTExODA0OGYyNTIyNjU5N2NmMWE0YjI2YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9qYXZhc2Ny
aXB0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9q
YXZhc2NyaXB0LmpzCkBAIC0yMSw3ICsyMSw4IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2
YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAiZm9yIjog
a3coImZvciIpLCAic3dpdGNoIjoga3coInN3aXRjaCIpLCAiY2FzZSI6IGt3KCJjYXNlIiksICJk
ZWZhdWx0Ijoga3coImRlZmF1bHQiKSwKICAgICAgICJpbiI6IG9wZXJhdG9yLCAidHlwZW9mIjog
b3BlcmF0b3IsICJpbnN0YW5jZW9mIjogb3BlcmF0b3IsCiAgICAgICAidHJ1ZSI6IGF0b20sICJm
YWxzZSI6IGF0b20sICJudWxsIjogYXRvbSwgInVuZGVmaW5lZCI6IGF0b20sICJOYU4iOiBhdG9t
LCAiSW5maW5pdHkiOiBhdG9tLAotICAgICAgInRoaXMiOiBrdygidGhpcyIpCisgICAgICAidGhp
cyI6IGt3KCJ0aGlzIiksICJtb2R1bGUiOiBrdygibW9kdWxlIiksICJjbGFzcyI6IGt3KCJjbGFz
cyIpLCAic3VwZXIiOiBrdygiYXRvbSIpLAorICAgICAgInlpZWxkIjogQywgImV4cG9ydCI6IGt3
KCJleHBvcnQiKSwgImltcG9ydCI6IGt3KCJpbXBvcnQiKSwgImV4dGVuZHMiOiBDCiAgICAgfTsK
IAogICAgIC8vIEV4dGVuZCB0aGUgJ25vcm1hbCcga2V5d29yZHMgd2l0aCB0aGUgVHlwZVNjcmlw
dCBsYW5ndWFnZSBleHRlbnNpb25zCkBAIC0zMCw3ICszMSw2IEBAIENvZGVNaXJyb3IuZGVmaW5l
TW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAg
ICB2YXIgdHNLZXl3b3JkcyA9IHsKICAgICAgICAgLy8gb2JqZWN0LWxpa2UgdGhpbmdzCiAgICAg
ICAgICJpbnRlcmZhY2UiOiBrdygiaW50ZXJmYWNlIiksCi0gICAgICAgICJjbGFzcyI6IGt3KCJj
bGFzcyIpLAogICAgICAgICAiZXh0ZW5kcyI6IGt3KCJleHRlbmRzIiksCiAgICAgICAgICJjb25z
dHJ1Y3RvciI6IGt3KCJjb25zdHJ1Y3RvciIpLAogCkBAIC00MCw4ICs0MCw2IEBAIENvZGVNaXJy
b3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmln
KSB7CiAgICAgICAgICJwcm90ZWN0ZWQiOiBrdygicHJvdGVjdGVkIiksCiAgICAgICAgICJzdGF0
aWMiOiBrdygic3RhdGljIiksCiAKLSAgICAgICAgInN1cGVyIjoga3coInN1cGVyIiksCi0KICAg
ICAgICAgLy8gdHlwZXMKICAgICAgICAgInN0cmluZyI6IHR5cGUsICJudW1iZXIiOiB0eXBlLCAi
Ym9vbCI6IHR5cGUsICJhbnkiOiB0eXBlCiAgICAgICB9OwpAQCAtNTYsMTEgKzU0LDYgQEAgQ29k
ZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJD
b25maWcpIHsKIAogICB2YXIgaXNPcGVyYXRvckNoYXIgPSAvWytcLSomJT08PiE/fH5eXS87CiAK
LSAgZnVuY3Rpb24gY2hhaW4oc3RyZWFtLCBzdGF0ZSwgZikgewotICAgIHN0YXRlLnRva2VuaXpl
ID0gZjsKLSAgICByZXR1cm4gZihzdHJlYW0sIHN0YXRlKTsKLSAgfQotCiAgIGZ1bmN0aW9uIG5l
eHRVbnRpbFVuZXNjYXBlZChzdHJlYW0sIGVuZCkgewogICAgIHZhciBlc2NhcGVkID0gZmFsc2Us
IG5leHQ7CiAgICAgd2hpbGUgKChuZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgewpAQCAt
NzgsNTAgKzcxLDUxIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0
aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgdHlwZSA9IHRwOyBjb250ZW50ID0gY29u
dDsKICAgICByZXR1cm4gc3R5bGU7CiAgIH0KLSAgZnVuY3Rpb24ganNUb2tlbkJhc2Uoc3RyZWFt
LCBzdGF0ZSkgeworICBmdW5jdGlvbiB0b2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgewogICAgIHZh
ciBjaCA9IHN0cmVhbS5uZXh0KCk7Ci0gICAgaWYgKGNoID09ICciJyB8fCBjaCA9PSAiJyIpCi0g
ICAgICByZXR1cm4gY2hhaW4oc3RyZWFtLCBzdGF0ZSwganNUb2tlblN0cmluZyhjaCkpOwotICAg
IGVsc2UgaWYgKGNoID09ICIuIiAmJiBzdHJlYW0ubWF0Y2goL15cZCsoPzpbZUVdWytcLV0/XGQr
KT8vKSkKKyAgICBpZiAoY2ggPT0gJyInIHx8IGNoID09ICInIikgeworICAgICAgc3RhdGUudG9r
ZW5pemUgPSB0b2tlblN0cmluZyhjaCk7CisgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3Ry
ZWFtLCBzdGF0ZSk7CisgICAgfSBlbHNlIGlmIChjaCA9PSAiLiIgJiYgc3RyZWFtLm1hdGNoKC9e
XGQrKD86W2VFXVsrXC1dP1xkKyk/LykpIHsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJu
dW1iZXIiKTsKLSAgICBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGNoKSkKKyAg
ICB9IGVsc2UgaWYgKGNoID09ICIuIiAmJiBzdHJlYW0ubWF0Y2goIi4uIikpIHsKKyAgICAgIHJl
dHVybiByZXQoInNwcmVhZCIsICJtZXRhIik7CisgICAgfSBlbHNlIGlmICgvW1xbXF17fVwoXCks
O1w6XC5dLy50ZXN0KGNoKSkgewogICAgICAgcmV0dXJuIHJldChjaCk7Ci0gICAgZWxzZSBpZiAo
Y2ggPT0gIjAiICYmIHN0cmVhbS5lYXQoL3gvaSkpIHsKKyAgICB9IGVsc2UgaWYgKGNoID09ICI9
IiAmJiBzdHJlYW0uZWF0KCI+IikpIHsKKyAgICAgIHJldHVybiByZXQoIj0+Iik7CisgICAgfSBl
bHNlIGlmIChjaCA9PSAiMCIgJiYgc3RyZWFtLmVhdCgveC9pKSkgewogICAgICAgc3RyZWFtLmVh
dFdoaWxlKC9bXGRhLWZdL2kpOwogICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgIm51bWJlciIp
OwotICAgIH0KLSAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CisgICAgfSBlbHNlIGlmICgv
XGQvLnRlc3QoY2gpKSB7CiAgICAgICBzdHJlYW0ubWF0Y2goL15cZCooPzpcLlxkKik/KD86W2VF
XVsrXC1dP1xkKyk/Lyk7CiAgICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAibnVtYmVyIik7Ci0g
ICAgfQotICAgIGVsc2UgaWYgKGNoID09ICIvIikgeworICAgIH0gZWxzZSBpZiAoY2ggPT0gIi8i
KSB7CiAgICAgICBpZiAoc3RyZWFtLmVhdCgiKiIpKSB7Ci0gICAgICAgIHJldHVybiBjaGFpbihz
dHJlYW0sIHN0YXRlLCBqc1Rva2VuQ29tbWVudCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChz
dHJlYW0uZWF0KCIvIikpIHsKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkNvbW1lbnQ7
CisgICAgICAgIHJldHVybiB0b2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSk7CisgICAgICB9IGVs
c2UgaWYgKHN0cmVhbS5lYXQoIi8iKSkgewogICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7CiAg
ICAgICAgIHJldHVybiByZXQoImNvbW1lbnQiLCAiY29tbWVudCIpOwotICAgICAgfQotICAgICAg
ZWxzZSBpZiAoc3RhdGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5sYXN0VHlwZSA9
PSAia2V5d29yZCBjIiB8fAotICAgICAgICAgICAgICAgL15bXFt7fVwoLDs6XSQvLnRlc3Qoc3Rh
dGUubGFzdFR5cGUpKSB7CisgICAgICB9IGVsc2UgaWYgKHN0YXRlLmxhc3RUeXBlID09ICJvcGVy
YXRvciIgfHwgc3RhdGUubGFzdFR5cGUgPT0gImtleXdvcmQgYyIgfHwKKyAgICAgICAgICAgICAg
IHN0YXRlLmxhc3RUeXBlID09ICJzb2YiIHx8IC9eW1xbe31cKCw7Ol0kLy50ZXN0KHN0YXRlLmxh
c3RUeXBlKSkgewogICAgICAgICBuZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCAiLyIpOwogICAg
ICAgICBzdHJlYW0uZWF0V2hpbGUoL1tnaW15XS8pOyAvLyAneScgaXMgInN0aWNreSIgb3B0aW9u
IGluIE1vemlsbGEKICAgICAgICAgcmV0dXJuIHJldCgicmVnZXhwIiwgInN0cmluZy0yIik7Ci0g
ICAgICB9Ci0gICAgICBlbHNlIHsKKyAgICAgIH0gZWxzZSB7CiAgICAgICAgIHN0cmVhbS5lYXRX
aGlsZShpc09wZXJhdG9yQ2hhcik7CiAgICAgICAgIHJldHVybiByZXQoIm9wZXJhdG9yIiwgbnVs
bCwgc3RyZWFtLmN1cnJlbnQoKSk7CiAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGNoID09
ICIjIikgeworICAgIH0gZWxzZSBpZiAoY2ggPT0gImAiKSB7CisgICAgICBzdGF0ZS50b2tlbml6
ZSA9IHRva2VuUXVhc2k7CisgICAgICByZXR1cm4gdG9rZW5RdWFzaShzdHJlYW0sIHN0YXRlKTsK
KyAgICB9IGVsc2UgaWYgKGNoID09ICIjIikgewogICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOwog
ICAgICAgcmV0dXJuIHJldCgiZXJyb3IiLCAiZXJyb3IiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAo
aXNPcGVyYXRvckNoYXIudGVzdChjaCkpIHsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmF0b3JDaGFy
LnRlc3QoY2gpKSB7CiAgICAgICBzdHJlYW0uZWF0V2hpbGUoaXNPcGVyYXRvckNoYXIpOwogICAg
ICAgcmV0dXJuIHJldCgib3BlcmF0b3IiLCBudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKLSAgICB9
Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XCRf
XS8pOwogICAgICAgdmFyIHdvcmQgPSBzdHJlYW0uY3VycmVudCgpLCBrbm93biA9IGtleXdvcmRz
LnByb3BlcnR5SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICAgcmV0
dXJuIChrbm93biAmJiBzdGF0ZS5sYXN0VHlwZSAhPSAiLiIpID8gcmV0KGtub3duLnR5cGUsIGtu
b3duLnN0eWxlLCB3b3JkKSA6CkBAIC0xMjksMTkgKzEyMywxOSBAQCBDb2RlTWlycm9yLmRlZmlu
ZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAg
IH0KICAgfQogCi0gIGZ1bmN0aW9uIGpzVG9rZW5TdHJpbmcocXVvdGUpIHsKKyAgZnVuY3Rpb24g
dG9rZW5TdHJpbmcocXVvdGUpIHsKICAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkg
ewogICAgICAgaWYgKCFuZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCBxdW90ZSkpCi0gICAgICAg
IHN0YXRlLnRva2VuaXplID0ganNUb2tlbkJhc2U7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0g
dG9rZW5CYXNlOwogICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIpOwogICAgIH07
CiAgIH0KIAotICBmdW5jdGlvbiBqc1Rva2VuQ29tbWVudChzdHJlYW0sIHN0YXRlKSB7CisgIGZ1
bmN0aW9uIHRva2VuQ29tbWVudChzdHJlYW0sIHN0YXRlKSB7CiAgICAgdmFyIG1heWJlRW5kID0g
ZmFsc2UsIGNoOwogICAgIHdoaWxlIChjaCA9IHN0cmVhbS5uZXh0KCkpIHsKICAgICAgIGlmIChj
aCA9PSAiLyIgJiYgbWF5YmVFbmQpIHsKLSAgICAgICAgc3RhdGUudG9rZW5pemUgPSBqc1Rva2Vu
QmFzZTsKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7CiAgICAgICAgIGJyZWFr
OwogICAgICAgfQogICAgICAgbWF5YmVFbmQgPSAoY2ggPT0gIioiKTsKQEAgLTE0OSw2ICsxNDMs
NTAgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKICAgICByZXR1cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQiKTsK
ICAgfQogCisgIGZ1bmN0aW9uIHRva2VuUXVhc2koc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBl
c2NhcGVkID0gZmFsc2UsIG5leHQ7CisgICAgd2hpbGUgKChuZXh0ID0gc3RyZWFtLm5leHQoKSkg
IT0gbnVsbCkgeworICAgICAgaWYgKCFlc2NhcGVkICYmIChuZXh0ID09ICJgIiB8fCBuZXh0ID09
ICIkIiAmJiBzdHJlYW0uZWF0KCJ7IikpKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9r
ZW5CYXNlOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGVzY2FwZWQgPSAhZXNjYXBl
ZCAmJiBuZXh0ID09ICJcXCI7CisgICAgfQorICAgIHJldHVybiByZXQoInF1YXNpIiwgInN0cmlu
Zy0yIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisgIH0KKworICB2YXIgYnJhY2tldHMgPSAiKFt7fV0p
IjsKKyAgLy8gVGhpcyBpcyBhIGNydWRlIGxvb2thaGVhZCB0cmljayB0byB0cnkgYW5kIG5vdGlj
ZSB0aGF0IHdlJ3JlCisgIC8vIHBhcnNpbmcgdGhlIGFyZ3VtZW50IHBhdHRlcm5zIGZvciBhIGZh
dC1hcnJvdyBmdW5jdGlvbiBiZWZvcmUgd2UKKyAgLy8gYWN0dWFsbHkgaGl0IHRoZSBhcnJvdyB0
b2tlbi4gSXQgb25seSB3b3JrcyBpZiB0aGUgYXJyb3cgaXMgb24KKyAgLy8gdGhlIHNhbWUgbGlu
ZSBhcyB0aGUgYXJndW1lbnRzIGFuZCB0aGVyZSdzIG5vIHN0cmFuZ2Ugbm9pc2UKKyAgLy8gKGNv
bW1lbnRzKSBpbiBiZXR3ZWVuLiBGYWxsYmFjayBpcyB0byBvbmx5IG5vdGljZSB3aGVuIHdlIGhp
dCB0aGUKKyAgLy8gYXJyb3csIGFuZCBub3QgZGVjbGFyZSB0aGUgYXJndW1lbnRzIGFzIGxvY2Fs
cyBmb3IgdGhlIGFycm93CisgIC8vIGJvZHkuCisgIGZ1bmN0aW9uIGZpbmRGYXRBcnJvdyhzdHJl
YW0sIHN0YXRlKSB7CisgICAgaWYgKHN0YXRlLmZhdEFycm93QXQpIHN0YXRlLmZhdEFycm93QXQg
PSBudWxsOworICAgIHZhciBhcnJvdyA9IHN0cmVhbS5zdHJpbmcuaW5kZXhPZigiPT4iLCBzdHJl
YW0uc3RhcnQpOworICAgIGlmIChhcnJvdyA8IDApIHJldHVybjsKKworICAgIHZhciBkZXB0aCA9
IDAsIHNhd1NvbWV0aGluZyA9IGZhbHNlOworICAgIGZvciAodmFyIHBvcyA9IGFycm93IC0gMTsg
cG9zID49IDA7IC0tcG9zKSB7CisgICAgICB2YXIgY2ggPSBzdHJlYW0uc3RyaW5nLmNoYXJBdChw
b3MpOworICAgICAgdmFyIGJyYWNrZXQgPSBicmFja2V0cy5pbmRleE9mKGNoKTsKKyAgICAgIGlm
IChicmFja2V0ID49IDAgJiYgYnJhY2tldCA8IDMpIHsKKyAgICAgICAgaWYgKCFkZXB0aCkgeyAr
K3BvczsgYnJlYWs7IH0KKyAgICAgICAgaWYgKC0tZGVwdGggPT0gMCkgYnJlYWs7CisgICAgICB9
IGVsc2UgaWYgKGJyYWNrZXQgPj0gMyAmJiBicmFja2V0IDwgNikgeworICAgICAgICArK2RlcHRo
OworICAgICAgfSBlbHNlIGlmICgvWyRcd10vLnRlc3QoY2gpKSB7CisgICAgICAgIHNhd1NvbWV0
aGluZyA9IHRydWU7CisgICAgICB9IGVsc2UgaWYgKHNhd1NvbWV0aGluZyAmJiAhZGVwdGgpIHsK
KyAgICAgICAgKytwb3M7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZiAo
c2F3U29tZXRoaW5nICYmICFkZXB0aCkgc3RhdGUuZmF0QXJyb3dBdCA9IHBvczsKKyAgfQorCiAg
IC8vIFBhcnNlcgogCiAgIHZhciBhdG9taWNUeXBlcyA9IHsiYXRvbSI6IHRydWUsICJudW1iZXIi
OiB0cnVlLCAidmFyaWFibGUiOiB0cnVlLCAic3RyaW5nIjogdHJ1ZSwgInJlZ2V4cCI6IHRydWUs
ICJ0aGlzIjogdHJ1ZX07CkBAIC0xNjUsNiArMjAzLDEwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9k
ZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgIGZ1bmN0
aW9uIGluU2NvcGUoc3RhdGUsIHZhcm5hbWUpIHsKICAgICBmb3IgKHZhciB2ID0gc3RhdGUubG9j
YWxWYXJzOyB2OyB2ID0gdi5uZXh0KQogICAgICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1
cm4gdHJ1ZTsKKyAgICBmb3IgKHZhciBjeCA9IHN0YXRlLmNvbnRleHQ7IGN4OyBjeCA9IGN4LnBy
ZXYpIHsKKyAgICAgIGZvciAodmFyIHYgPSBjeC52YXJzOyB2OyB2ID0gdi5uZXh0KQorICAgICAg
ICBpZiAodi5uYW1lID09IHZhcm5hbWUpIHJldHVybiB0cnVlOworICAgIH0KICAgfQogCiAgIGZ1
bmN0aW9uIHBhcnNlSlMoc3RhdGUsIHN0eWxlLCB0eXBlLCBjb250ZW50LCBzdHJlYW0pIHsKQEAg
LTIxMSw3ICsyNTMsOCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5j
dGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgc3RhdGUubG9jYWxWYXJzID0ge25h
bWU6IHZhcm5hbWUsIG5leHQ6IHN0YXRlLmxvY2FsVmFyc307CiAgICAgfSBlbHNlIHsKICAgICAg
IGlmIChpbkxpc3Qoc3RhdGUuZ2xvYmFsVmFycykpIHJldHVybjsKLSAgICAgIHN0YXRlLmdsb2Jh
bFZhcnMgPSB7bmFtZTogdmFybmFtZSwgbmV4dDogc3RhdGUuZ2xvYmFsVmFyc307CisgICAgICBp
ZiAocGFyc2VyQ29uZmlnLmdsb2JhbFZhcnMpCisgICAgICAgIHN0YXRlLmdsb2JhbFZhcnMgPSB7
bmFtZTogdmFybmFtZSwgbmV4dDogc3RhdGUuZ2xvYmFsVmFyc307CiAgICAgfQogICB9CiAKQEAg
LTI1MywxNiArMjk2LDE1IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1
bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgfTsKICAgfQogCi0gIGZ1bmN0aW9u
IHN0YXRlbWVudCh0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVybiBjb250KHB1
c2hsZXgoInZhcmRlZiIpLCB2YXJkZWYxLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKKyAgZnVuY3Rp
b24gc3RhdGVtZW50KHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVy
biBjb250KHB1c2hsZXgoInZhcmRlZiIsIHZhbHVlLmxlbmd0aCksIHZhcmRlZiwgZXhwZWN0KCI7
IiksIHBvcGxleCk7CiAgICAgaWYgKHR5cGUgPT0gImtleXdvcmQgYSIpIHJldHVybiBjb250KHB1
c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgIGlmICh0
eXBlID09ICJrZXl3b3JkIGIiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHN0YXRlbWVu
dCwgcG9wbGV4KTsKICAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250KHB1c2hsZXgoIn0i
KSwgYmxvY2ssIHBvcGxleCk7CiAgICAgaWYgKHR5cGUgPT0gIjsiKSByZXR1cm4gY29udCgpOwog
ICAgIGlmICh0eXBlID09ICJpZiIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVz
c2lvbiwgc3RhdGVtZW50LCBwb3BsZXgsIG1heWJlZWxzZSk7CiAgICAgaWYgKHR5cGUgPT0gImZ1
bmN0aW9uIikgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOwotICAgIGlmICh0eXBlID09ICJmb3Ii
KSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIGV4cGVjdCgiKCIpLCBwdXNobGV4KCIpIiks
IGZvcnNwZWMxLCBleHBlY3QoIikiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gImZvciIpIHJl
dHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgZm9yc3BlYywgcG9wbGV4LCBzdGF0ZW1lbnQsIHBv
cGxleCk7CiAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgcmV0dXJuIGNvbnQocHVzaGxleCgi
c3RhdCIpLCBtYXliZWxhYmVsKTsKICAgICBpZiAodHlwZSA9PSAic3dpdGNoIikgcmV0dXJuIGNv
bnQocHVzaGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBwdXNobGV4KCJ9IiwgInN3aXRjaCIpLCBl
eHBlY3QoInsiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ss
IHBvcGxleCwgcG9wbGV4KTsKQEAgLTI3MCw2ICszMTIsMTAgQEAgQ29kZU1pcnJvci5kZWZpbmVN
b2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICBp
ZiAodHlwZSA9PSAiZGVmYXVsdCIpIHJldHVybiBjb250KGV4cGVjdCgiOiIpKTsKICAgICBpZiAo
dHlwZSA9PSAiY2F0Y2giKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHB1c2hjb250ZXh0
LCBleHBlY3QoIigiKSwgZnVuYXJnLCBleHBlY3QoIikiKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQsIHBvcGxleCwgcG9wY29udGV4dCk7CisgICAgaWYg
KHR5cGUgPT0gIm1vZHVsZSIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgcHVzaGNvbnRl
eHQsIGFmdGVyTW9kdWxlLCBwb3Bjb250ZXh0LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJj
bGFzcyIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgY2xhc3NOYW1lLCBvYmpsaXQsIHBv
cGxleCk7CisgICAgaWYgKHR5cGUgPT0gImV4cG9ydCIpIHJldHVybiBjb250KHB1c2hsZXgoImZv
cm0iKSwgYWZ0ZXJFeHBvcnQsIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gImltcG9ydCIpIHJl
dHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgYWZ0ZXJJbXBvcnQsIHBvcGxleCk7CiAgICAgcmV0
dXJuIHBhc3MocHVzaGxleCgic3RhdCIpLCBleHByZXNzaW9uLCBleHBlY3QoIjsiKSwgcG9wbGV4
KTsKICAgfQogICBmdW5jdGlvbiBleHByZXNzaW9uKHR5cGUpIHsKQEAgLTI3OSwxNCArMzI1LDIw
IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywg
cGFyc2VyQ29uZmlnKSB7CiAgICAgcmV0dXJuIGV4cHJlc3Npb25Jbm5lcih0eXBlLCB0cnVlKTsK
ICAgfQogICBmdW5jdGlvbiBleHByZXNzaW9uSW5uZXIodHlwZSwgbm9Db21tYSkgeworICAgIGlm
IChjeC5zdGF0ZS5mYXRBcnJvd0F0ID09IGN4LnN0cmVhbS5zdGFydCkgeworICAgICAgdmFyIGJv
ZHkgPSBub0NvbW1hID8gYXJyb3dCb2R5Tm9Db21tYSA6IGFycm93Qm9keTsKKyAgICAgIGlmICh0
eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIGNvbW1hc2VwKHBhdHRlcm4sICIp
IiksIGV4cGVjdCgiPT4iKSwgYm9keSwgcG9wY29udGV4dCk7CisgICAgICBlbHNlIGlmICh0eXBl
ID09ICJ2YXJpYWJsZSIpIHJldHVybiBwYXNzKHB1c2hjb250ZXh0LCBwYXR0ZXJuLCBleHBlY3Qo
Ij0+IiksIGJvZHksIHBvcGNvbnRleHQpOworICAgIH0KKwogICAgIHZhciBtYXliZW9wID0gbm9D
b21tYSA/IG1heWJlb3BlcmF0b3JOb0NvbW1hIDogbWF5YmVvcGVyYXRvckNvbW1hOwogICAgIGlm
IChhdG9taWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQobWF5YmVvcCk7
CiAgICAgaWYgKHR5cGUgPT0gImZ1bmN0aW9uIikgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOwog
ICAgIGlmICh0eXBlID09ICJrZXl3b3JkIGMiKSByZXR1cm4gY29udChub0NvbW1hID8gbWF5YmVl
eHByZXNzaW9uTm9Db21tYSA6IG1heWJlZXhwcmVzc2lvbik7Ci0gICAgaWYgKHR5cGUgPT0gIigi
KSByZXR1cm4gY29udChwdXNobGV4KCIpIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0KCIpIiks
IHBvcGxleCwgbWF5YmVvcCk7Ci0gICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgcmV0dXJuIGNv
bnQobm9Db21tYSA/IGV4cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7Ci0gICAgaWYgKHR5
cGUgPT0gIlsiKSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIGNvbW1hc2VwKGV4cHJlc3Npb25O
b0NvbW1hLCAiXSIpLCBwb3BsZXgsIG1heWJlb3ApOwotICAgIGlmICh0eXBlID09ICJ7IikgcmV0
dXJuIGNvbnQocHVzaGxleCgifSIpLCBjb21tYXNlcChvYmpwcm9wLCAifSIpLCBwb3BsZXgsIG1h
eWJlb3ApOworICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIpLCBt
YXliZWV4cHJlc3Npb24sIGNvbXByZWhlbnNpb24sIGV4cGVjdCgiKSIpLCBwb3BsZXgsIG1heWJl
b3ApOworICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIgfHwgdHlwZSA9PSAic3ByZWFkIikgcmV0
dXJuIGNvbnQobm9Db21tYSA/IGV4cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7CisgICAg
aWYgKHR5cGUgPT0gIlsiKSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb25Ob0Nv
bW1hLCBtYXliZUFycmF5Q29tcHJlaGVuc2lvbiwgcG9wbGV4LCBtYXliZW9wKTsKKyAgICBpZiAo
dHlwZSA9PSAieyIpIHJldHVybiBjb250KGNvbW1hc2VwKG9ianByb3AsICJ9IiksIG1heWJlb3Ap
OwogICAgIHJldHVybiBjb250KCk7CiAgIH0KICAgZnVuY3Rpb24gbWF5YmVleHByZXNzaW9uKHR5
cGUpIHsKQEAgLTMwNSwxNiArMzU3LDQwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNj
cmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgIGZ1bmN0aW9uIG1heWJl
b3BlcmF0b3JOb0NvbW1hKHR5cGUsIHZhbHVlLCBub0NvbW1hKSB7CiAgICAgdmFyIG1lID0gbm9D
b21tYSA9PSBmYWxzZSA/IG1heWJlb3BlcmF0b3JDb21tYSA6IG1heWJlb3BlcmF0b3JOb0NvbW1h
OwogICAgIHZhciBleHByID0gbm9Db21tYSA9PSBmYWxzZSA/IGV4cHJlc3Npb24gOiBleHByZXNz
aW9uTm9Db21tYTsKKyAgICBpZiAodmFsdWUgPT0gIj0+IikgcmV0dXJuIGNvbnQocHVzaGNvbnRl
eHQsIG5vQ29tbWEgPyBhcnJvd0JvZHlOb0NvbW1hIDogYXJyb3dCb2R5LCBwb3Bjb250ZXh0KTsK
ICAgICBpZiAodHlwZSA9PSAib3BlcmF0b3IiKSB7CiAgICAgICBpZiAoL1wrXCt8LS0vLnRlc3Qo
dmFsdWUpKSByZXR1cm4gY29udChtZSk7CiAgICAgICBpZiAodmFsdWUgPT0gIj8iKSByZXR1cm4g
Y29udChleHByZXNzaW9uLCBleHBlY3QoIjoiKSwgZXhwcik7CiAgICAgICByZXR1cm4gY29udChl
eHByKTsKICAgICB9CisgICAgaWYgKHR5cGUgPT0gInF1YXNpIikgeyBjeC5jYy5wdXNoKG1lKTsg
cmV0dXJuIHF1YXNpKHZhbHVlKTsgfQogICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuOwotICAg
IGlmICh0eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIsICJjYWxsIiksIGNvbW1h
c2VwKGV4cHJlc3Npb25Ob0NvbW1hLCAiKSIpLCBwb3BsZXgsIG1lKTsKKyAgICBpZiAodHlwZSA9
PSAiKCIpIHJldHVybiBjb250KGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCAiKSIsICJjYWxs
IiksIG1lKTsKICAgICBpZiAodHlwZSA9PSAiLiIpIHJldHVybiBjb250KHByb3BlcnR5LCBtZSk7
CiAgICAgaWYgKHR5cGUgPT0gIlsiKSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIG1heWJlZXhw
cmVzc2lvbiwgZXhwZWN0KCJdIiksIHBvcGxleCwgbWUpOwogICB9CisgIGZ1bmN0aW9uIHF1YXNp
KHZhbHVlKSB7CisgICAgaWYgKCF2YWx1ZSkgZGVidWdnZXI7CisgICAgaWYgKHZhbHVlLnNsaWNl
KHZhbHVlLmxlbmd0aCAtIDIpICE9ICIkeyIpIHJldHVybiBjb250KCk7CisgICAgcmV0dXJuIGNv
bnQoZXhwcmVzc2lvbiwgY29udGludWVRdWFzaSk7CisgIH0KKyAgZnVuY3Rpb24gY29udGludWVR
dWFzaSh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gIn0iKSB7CisgICAgICBjeC5tYXJrZWQgPSAi
c3RyaW5nLTIiOworICAgICAgY3guc3RhdGUudG9rZW5pemUgPSB0b2tlblF1YXNpOworICAgICAg
cmV0dXJuIGNvbnQoKTsKKyAgICB9CisgIH0KKyAgZnVuY3Rpb24gYXJyb3dCb2R5KHR5cGUpIHsK
KyAgICBmaW5kRmF0QXJyb3coY3guc3RyZWFtLCBjeC5zdGF0ZSk7CisgICAgaWYgKHR5cGUgPT0g
InsiKSByZXR1cm4gcGFzcyhzdGF0ZW1lbnQpOworICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24p
OworICB9CisgIGZ1bmN0aW9uIGFycm93Qm9keU5vQ29tbWEodHlwZSkgeworICAgIGZpbmRGYXRB
cnJvdyhjeC5zdHJlYW0sIGN4LnN0YXRlKTsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBw
YXNzKHN0YXRlbWVudCk7CisgICAgcmV0dXJuIHBhc3MoZXhwcmVzc2lvbk5vQ29tbWEpOworICB9
CiAgIGZ1bmN0aW9uIG1heWJlbGFiZWwodHlwZSkgewogICAgIGlmICh0eXBlID09ICI6IikgcmV0
dXJuIGNvbnQocG9wbGV4LCBzdGF0ZW1lbnQpOwogICAgIHJldHVybiBwYXNzKG1heWJlb3BlcmF0
b3JDb21tYSwgZXhwZWN0KCI7IiksIHBvcGxleCk7CkBAIC0zMjgsMTYgKzQwNCwyMSBAQCBDb2Rl
TWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNv
bmZpZykgewogICAgICAgaWYgKHZhbHVlID09ICJnZXQiIHx8IHZhbHVlID09ICJzZXQiKSByZXR1
cm4gY29udChnZXR0ZXJTZXR0ZXIpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAibnVtYmVyIiB8
fCB0eXBlID09ICJzdHJpbmciKSB7CiAgICAgICBjeC5tYXJrZWQgPSB0eXBlICsgIiBwcm9wZXJ0
eSI7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICJbIikgeworICAgICAgcmV0dXJuIGNvbnQoZXhw
cmVzc2lvbiwgZXhwZWN0KCJdIiksIGFmdGVycHJvcCk7CiAgICAgfQotICAgIGlmIChhdG9taWNU
eXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQoZXhwZWN0KCI6IiksIGV4cHJl
c3Npb25Ob0NvbW1hKTsKKyAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkp
IHJldHVybiBjb250KGFmdGVycHJvcCk7CiAgIH0KICAgZnVuY3Rpb24gZ2V0dGVyU2V0dGVyKHR5
cGUpIHsKLSAgICBpZiAodHlwZSA9PSAiOiIpIHJldHVybiBjb250KGV4cHJlc3Npb24pOwotICAg
IGlmICh0eXBlICE9ICJ2YXJpYWJsZSIpIHJldHVybiBjb250KGV4cGVjdCgiOiIpLCBleHByZXNz
aW9uKTsKKyAgICBpZiAodHlwZSAhPSAidmFyaWFibGUiKSByZXR1cm4gcGFzcyhhZnRlcnByb3Ap
OwogICAgIGN4Lm1hcmtlZCA9ICJwcm9wZXJ0eSI7CiAgICAgcmV0dXJuIGNvbnQoZnVuY3Rpb25k
ZWYpOwogICB9Ci0gIGZ1bmN0aW9uIGNvbW1hc2VwKHdoYXQsIGVuZCkgeworICBmdW5jdGlvbiBh
ZnRlcnByb3AodHlwZSkgeworICAgIGlmICh0eXBlID09ICI6IikgcmV0dXJuIGNvbnQoZXhwcmVz
c2lvbk5vQ29tbWEpOworICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIHBhc3MoZnVuY3Rpb25k
ZWYpOworICB9CisgIGZ1bmN0aW9uIGNvbW1hc2VwKHdoYXQsIGVuZCwgaW5mbykgewogICAgIGZ1
bmN0aW9uIHByb2NlZWQodHlwZSkgewogICAgICAgaWYgKHR5cGUgPT0gIiwiKSB7CiAgICAgICAg
IHZhciBsZXggPSBjeC5zdGF0ZS5sZXhpY2FsOwpAQCAtMzQ5LDcgKzQzMCw4IEBAIENvZGVNaXJy
b3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmln
KSB7CiAgICAgfQogICAgIHJldHVybiBmdW5jdGlvbih0eXBlKSB7CiAgICAgICBpZiAodHlwZSA9
PSBlbmQpIHJldHVybiBjb250KCk7Ci0gICAgICBlbHNlIHJldHVybiBwYXNzKHdoYXQsIHByb2Nl
ZWQpOworICAgICAgaWYgKGluZm8gPT09IGZhbHNlKSByZXR1cm4gcGFzcyh3aGF0LCBwcm9jZWVk
KTsKKyAgICAgIHJldHVybiBwYXNzKHB1c2hsZXgoZW5kLCBpbmZvKSwgd2hhdCwgcHJvY2VlZCwg
cG9wbGV4KTsKICAgICB9OwogICB9CiAgIGZ1bmN0aW9uIGJsb2NrKHR5cGUpIHsKQEAgLTM1Nyw2
NyArNDM5LDEyMSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlv
bihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgYmxv
Y2spOwogICB9CiAgIGZ1bmN0aW9uIG1heWJldHlwZSh0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0g
IjoiKSByZXR1cm4gY29udCh0eXBlZGVmKTsKLSAgICByZXR1cm4gcGFzcygpOworICAgIGlmIChp
c1RTICYmIHR5cGUgPT0gIjoiKSByZXR1cm4gY29udCh0eXBlZGVmKTsKICAgfQogICBmdW5jdGlv
biB0eXBlZGVmKHR5cGUpIHsKICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKXtjeC5tYXJrZWQg
PSAidmFyaWFibGUtMyI7IHJldHVybiBjb250KCk7fQotICAgIHJldHVybiBwYXNzKCk7CiAgIH0K
LSAgZnVuY3Rpb24gdmFyZGVmMSh0eXBlLCB2YWx1ZSkgewotICAgIGlmICh0eXBlID09ICJ2YXJp
YWJsZSIpIHsKKyAgZnVuY3Rpb24gdmFyZGVmKCkgeworICAgIHJldHVybiBwYXNzKHBhdHRlcm4s
IG1heWJldHlwZSwgbWF5YmVBc3NpZ24sIHZhcmRlZkNvbnQpOworICB9CisgIGZ1bmN0aW9uIHBh
dHRlcm4odHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7IHJlZ2lz
dGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoKTsgfQorICAgIGlmICh0eXBlID09ICJbIikgcmV0dXJu
IGNvbnQoY29tbWFzZXAocGF0dGVybiwgIl0iKSk7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1
cm4gY29udChjb21tYXNlcChwcm9wcGF0dGVybiwgIn0iKSk7CisgIH0KKyAgZnVuY3Rpb24gcHJv
cHBhdHRlcm4odHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiICYmICFj
eC5zdHJlYW0ubWF0Y2goL15ccyo6LywgZmFsc2UpKSB7CiAgICAgICByZWdpc3Rlcih2YWx1ZSk7
Ci0gICAgICByZXR1cm4gaXNUUyA/IGNvbnQobWF5YmV0eXBlLCB2YXJkZWYyKSA6IGNvbnQodmFy
ZGVmMik7CisgICAgICByZXR1cm4gY29udChtYXliZUFzc2lnbik7CiAgICAgfQotICAgIHJldHVy
biBwYXNzKCk7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY3gubWFya2VkID0gInByb3Bl
cnR5IjsKKyAgICByZXR1cm4gY29udChleHBlY3QoIjoiKSwgcGF0dGVybiwgbWF5YmVBc3NpZ24p
OworICB9CisgIGZ1bmN0aW9uIG1heWJlQXNzaWduKF90eXBlLCB2YWx1ZSkgeworICAgIGlmICh2
YWx1ZSA9PSAiPSIpIHJldHVybiBjb250KGV4cHJlc3Npb25Ob0NvbW1hKTsKICAgfQotICBmdW5j
dGlvbiB2YXJkZWYyKHR5cGUsIHZhbHVlKSB7Ci0gICAgaWYgKHZhbHVlID09ICI9IikgcmV0dXJu
IGNvbnQoZXhwcmVzc2lvbk5vQ29tbWEsIHZhcmRlZjIpOwotICAgIGlmICh0eXBlID09ICIsIikg
cmV0dXJuIGNvbnQodmFyZGVmMSk7CisgIGZ1bmN0aW9uIHZhcmRlZkNvbnQodHlwZSkgeworICAg
IGlmICh0eXBlID09ICIsIikgcmV0dXJuIGNvbnQodmFyZGVmKTsKICAgfQogICBmdW5jdGlvbiBt
YXliZWVsc2UodHlwZSwgdmFsdWUpIHsKICAgICBpZiAodHlwZSA9PSAia2V5d29yZCBiIiAmJiB2
YWx1ZSA9PSAiZWxzZSIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgc3RhdGVtZW50LCBw
b3BsZXgpOwogICB9CisgIGZ1bmN0aW9uIGZvcnNwZWModHlwZSkgeworICAgIGlmICh0eXBlID09
ICIoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIpLCBmb3JzcGVjMSwgZXhwZWN0KCIpIikpOwor
ICB9CiAgIGZ1bmN0aW9uIGZvcnNwZWMxKHR5cGUpIHsKLSAgICBpZiAodHlwZSA9PSAidmFyIikg
cmV0dXJuIGNvbnQodmFyZGVmMSwgZXhwZWN0KCI7IiksIGZvcnNwZWMyKTsKKyAgICBpZiAodHlw
ZSA9PSAidmFyIikgcmV0dXJuIGNvbnQodmFyZGVmLCBleHBlY3QoIjsiKSwgZm9yc3BlYzIpOwog
ICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuIGNvbnQoZm9yc3BlYzIpOwotICAgIGlmICh0eXBl
ID09ICJ2YXJpYWJsZSIpIHJldHVybiBjb250KGZvcm1heWJlaW4pOworICAgIGlmICh0eXBlID09
ICJ2YXJpYWJsZSIpIHJldHVybiBjb250KGZvcm1heWJlaW5vZik7CiAgICAgcmV0dXJuIHBhc3Mo
ZXhwcmVzc2lvbiwgZXhwZWN0KCI7IiksIGZvcnNwZWMyKTsKICAgfQotICBmdW5jdGlvbiBmb3Jt
YXliZWluKF90eXBlLCB2YWx1ZSkgewotICAgIGlmICh2YWx1ZSA9PSAiaW4iKSByZXR1cm4gY29u
dChleHByZXNzaW9uKTsKKyAgZnVuY3Rpb24gZm9ybWF5YmVpbm9mKF90eXBlLCB2YWx1ZSkgewor
ICAgIGlmICh2YWx1ZSA9PSAiaW4iIHx8IHZhbHVlID09ICJvZiIpIHsgY3gubWFya2VkID0gImtl
eXdvcmQiOyByZXR1cm4gY29udChleHByZXNzaW9uKTsgfQogICAgIHJldHVybiBjb250KG1heWJl
b3BlcmF0b3JDb21tYSwgZm9yc3BlYzIpOwogICB9CiAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUs
IHZhbHVlKSB7CiAgICAgaWYgKHR5cGUgPT0gIjsiKSByZXR1cm4gY29udChmb3JzcGVjMyk7Ci0g
ICAgaWYgKHZhbHVlID09ICJpbiIpIHJldHVybiBjb250KGV4cHJlc3Npb24pOworICAgIGlmICh2
YWx1ZSA9PSAiaW4iIHx8IHZhbHVlID09ICJvZiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyBy
ZXR1cm4gY29udChleHByZXNzaW9uKTsgfQogICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24sIGV4
cGVjdCgiOyIpLCBmb3JzcGVjMyk7CiAgIH0KICAgZnVuY3Rpb24gZm9yc3BlYzModHlwZSkgewog
ICAgIGlmICh0eXBlICE9ICIpIikgY29udChleHByZXNzaW9uKTsKICAgfQogICBmdW5jdGlvbiBm
dW5jdGlvbmRlZih0eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9PSAiKiIpIHtjeC5tYXJr
ZWQgPSAia2V5d29yZCI7IHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTt9CiAgICAgaWYgKHR5cGUg
PT0gInZhcmlhYmxlIikge3JlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYp
O30KLSAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiKSwgcHVzaGNv
bnRleHQsIGNvbW1hc2VwKGZ1bmFyZywgIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGNvbnRl
eHQpOworICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIGNvbW1h
c2VwKGZ1bmFyZywgIikiKSwgc3RhdGVtZW50LCBwb3Bjb250ZXh0KTsKKyAgfQorICBmdW5jdGlv
biBmdW5hcmcodHlwZSkgeworICAgIGlmICh0eXBlID09ICJzcHJlYWQiKSByZXR1cm4gY29udChm
dW5hcmcpOworICAgIHJldHVybiBwYXNzKHBhdHRlcm4sIG1heWJldHlwZSk7CisgIH0KKyAgZnVu
Y3Rpb24gY2xhc3NOYW1lKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxl
Iikge3JlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoY2xhc3NOYW1lQWZ0ZXIpO30KKyAgfQor
ICBmdW5jdGlvbiBjbGFzc05hbWVBZnRlcihfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUg
PT0gImV4dGVuZHMiKSByZXR1cm4gY29udChleHByZXNzaW9uKTsKKyAgfQorICBmdW5jdGlvbiBv
YmpsaXQodHlwZSkgeworICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQoY29tbWFzZXAo
b2JqcHJvcCwgIn0iKSk7CisgIH0KKyAgZnVuY3Rpb24gYWZ0ZXJNb2R1bGUodHlwZSwgdmFsdWUp
IHsKKyAgICBpZiAodHlwZSA9PSAic3RyaW5nIikgcmV0dXJuIGNvbnQoc3RhdGVtZW50KTsKKyAg
ICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7IHJlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQo
bWF5YmVGcm9tKTsgfQorICB9CisgIGZ1bmN0aW9uIGFmdGVyRXhwb3J0KF90eXBlLCB2YWx1ZSkg
eworICAgIGlmICh2YWx1ZSA9PSAiKiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4g
Y29udChtYXliZUZyb20sIGV4cGVjdCgiOyIpKTsgfQorICAgIGlmICh2YWx1ZSA9PSAiZGVmYXVs
dCIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBl
Y3QoIjsiKSk7IH0KKyAgICByZXR1cm4gcGFzcyhzdGF0ZW1lbnQpOworICB9CisgIGZ1bmN0aW9u
IGFmdGVySW1wb3J0KHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAic3RyaW5nIikgcmV0dXJuIGNv
bnQoKTsKKyAgICByZXR1cm4gcGFzcyhpbXBvcnRTcGVjLCBtYXliZUZyb20pOworICB9CisgIGZ1
bmN0aW9uIGltcG9ydFNwZWModHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJl
dHVybiBjb250KGNvbW1hc2VwKGltcG9ydFNwZWMsICJ9IikpOworICAgIGlmICh0eXBlID09ICJ2
YXJpYWJsZSIpIHJlZ2lzdGVyKHZhbHVlKTsKKyAgICByZXR1cm4gY29udCgpOworICB9CisgIGZ1
bmN0aW9uIG1heWJlRnJvbShfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gImZyb20i
KSB7IGN4Lm1hcmtlZCA9ICJrZXl3b3JkIjsgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7IH0KKyAg
fQorICBmdW5jdGlvbiBtYXliZUFycmF5Q29tcHJlaGVuc2lvbih0eXBlKSB7CisgICAgaWYgKHR5
cGUgPT0gImZvciIpIHJldHVybiBwYXNzKGNvbXByZWhlbnNpb24pOworICAgIGlmICh0eXBlID09
ICIsIikgcmV0dXJuIGNvbnQoY29tbWFzZXAoZXhwcmVzc2lvbk5vQ29tbWEsICJdIiwgZmFsc2Up
KTsKKyAgICByZXR1cm4gcGFzcyhjb21tYXNlcChleHByZXNzaW9uTm9Db21tYSwgIl0iLCBmYWxz
ZSkpOwogICB9Ci0gIGZ1bmN0aW9uIGZ1bmFyZyh0eXBlLCB2YWx1ZSkgewotICAgIGlmICh0eXBl
ID09ICJ2YXJpYWJsZSIpIHtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBpc1RTID8gY29udChtYXli
ZXR5cGUpIDogY29udCgpO30KKyAgZnVuY3Rpb24gY29tcHJlaGVuc2lvbih0eXBlKSB7CisgICAg
aWYgKHR5cGUgPT0gImZvciIpIHJldHVybiBjb250KGZvcnNwZWMsIGNvbXByZWhlbnNpb24pOwor
ICAgIGlmICh0eXBlID09ICJpZiIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGNvbXByZWhlbnNp
b24pOwogICB9CiAKICAgLy8gSW50ZXJmYWNlCiAKICAgcmV0dXJuIHsKICAgICBzdGFydFN0YXRl
OiBmdW5jdGlvbihiYXNlY29sdW1uKSB7Ci0gICAgICByZXR1cm4gewotICAgICAgICB0b2tlbml6
ZToganNUb2tlbkJhc2UsCi0gICAgICAgIGxhc3RUeXBlOiBudWxsLAorICAgICAgdmFyIHN0YXRl
ID0geworICAgICAgICB0b2tlbml6ZTogdG9rZW5CYXNlLAorICAgICAgICBsYXN0VHlwZTogInNv
ZiIsCiAgICAgICAgIGNjOiBbXSwKICAgICAgICAgbGV4aWNhbDogbmV3IEpTTGV4aWNhbCgoYmFz
ZWNvbHVtbiB8fCAwKSAtIGluZGVudFVuaXQsIDAsICJibG9jayIsIGZhbHNlKSwKICAgICAgICAg
bG9jYWxWYXJzOiBwYXJzZXJDb25maWcubG9jYWxWYXJzLAotICAgICAgICBnbG9iYWxWYXJzOiBw
YXJzZXJDb25maWcuZ2xvYmFsVmFycywKICAgICAgICAgY29udGV4dDogcGFyc2VyQ29uZmlnLmxv
Y2FsVmFycyAmJiB7dmFyczogcGFyc2VyQ29uZmlnLmxvY2FsVmFyc30sCiAgICAgICAgIGluZGVu
dGVkOiAwCiAgICAgICB9OworICAgICAgaWYgKHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzKSBzdGF0
ZS5nbG9iYWxWYXJzID0gcGFyc2VyQ29uZmlnLmdsb2JhbFZhcnM7CisgICAgICByZXR1cm4gc3Rh
dGU7CiAgICAgfSwKIAogICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CkBAIC00
MjUsOCArNTYxLDkgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rp
b24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgICAgaWYgKCFzdGF0ZS5sZXhpY2FsLmhh
c093blByb3BlcnR5KCJhbGlnbiIpKQogICAgICAgICAgIHN0YXRlLmxleGljYWwuYWxpZ24gPSBm
YWxzZTsKICAgICAgICAgc3RhdGUuaW5kZW50ZWQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKKyAg
ICAgICAgZmluZEZhdEFycm93KHN0cmVhbSwgc3RhdGUpOwogICAgICAgfQotICAgICAgaWYgKHN0
YXRlLnRva2VuaXplICE9IGpzVG9rZW5Db21tZW50ICYmIHN0cmVhbS5lYXRTcGFjZSgpKSByZXR1
cm4gbnVsbDsKKyAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSAhPSB0b2tlbkNvbW1lbnQgJiYgc3Ry
ZWFtLmVhdFNwYWNlKCkpIHJldHVybiBudWxsOwogICAgICAgdmFyIHN0eWxlID0gc3RhdGUudG9r
ZW5pemUoc3RyZWFtLCBzdGF0ZSk7CiAgICAgICBpZiAodHlwZSA9PSAiY29tbWVudCIpIHJldHVy
biBzdHlsZTsKICAgICAgIHN0YXRlLmxhc3RUeXBlID0gdHlwZSA9PSAib3BlcmF0b3IiICYmIChj
b250ZW50ID09ICIrKyIgfHwgY29udGVudCA9PSAiLS0iKSA/ICJpbmNkZWMiIDogdHlwZTsKQEAg
LTQzNCwyMSArNTcxLDIxIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1
bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgfSwKIAogICAgIGluZGVudDogZnVu
Y3Rpb24oc3RhdGUsIHRleHRBZnRlcikgewotICAgICAgaWYgKHN0YXRlLnRva2VuaXplID09IGpz
VG9rZW5Db21tZW50KSByZXR1cm4gQ29kZU1pcnJvci5QYXNzOwotICAgICAgaWYgKHN0YXRlLnRv
a2VuaXplICE9IGpzVG9rZW5CYXNlKSByZXR1cm4gMDsKKyAgICAgIGlmIChzdGF0ZS50b2tlbml6
ZSA9PSB0b2tlbkNvbW1lbnQpIHJldHVybiBDb2RlTWlycm9yLlBhc3M7CisgICAgICBpZiAoc3Rh
dGUudG9rZW5pemUgIT0gdG9rZW5CYXNlKSByZXR1cm4gMDsKICAgICAgIHZhciBmaXJzdENoYXIg
PSB0ZXh0QWZ0ZXIgJiYgdGV4dEFmdGVyLmNoYXJBdCgwKSwgbGV4aWNhbCA9IHN0YXRlLmxleGlj
YWw7CiAgICAgICAvLyBLbHVkZ2UgdG8gcHJldmVudCAnbWF5YmVsc2UnIGZyb20gYmxvY2tpbmcg
bGV4aWNhbCBzY29wZSBwb3BzCiAgICAgICBmb3IgKHZhciBpID0gc3RhdGUuY2MubGVuZ3RoIC0g
MTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgdmFyIGMgPSBzdGF0ZS5jY1tpXTsKICAgICAgICAg
aWYgKGMgPT0gcG9wbGV4KSBsZXhpY2FsID0gbGV4aWNhbC5wcmV2OwotICAgICAgICBlbHNlIGlm
IChjICE9IG1heWJlZWxzZSB8fCAvXmVsc2VcYi8udGVzdCh0ZXh0QWZ0ZXIpKSBicmVhazsKKyAg
ICAgICAgZWxzZSBpZiAoYyAhPSBtYXliZWVsc2UpIGJyZWFrOwogICAgICAgfQogICAgICAgaWYg
KGxleGljYWwudHlwZSA9PSAic3RhdCIgJiYgZmlyc3RDaGFyID09ICJ9IikgbGV4aWNhbCA9IGxl
eGljYWwucHJldjsKICAgICAgIGlmIChzdGF0ZW1lbnRJbmRlbnQgJiYgbGV4aWNhbC50eXBlID09
ICIpIiAmJiBsZXhpY2FsLnByZXYudHlwZSA9PSAic3RhdCIpCiAgICAgICAgIGxleGljYWwgPSBs
ZXhpY2FsLnByZXY7CiAgICAgICB2YXIgdHlwZSA9IGxleGljYWwudHlwZSwgY2xvc2luZyA9IGZp
cnN0Q2hhciA9PSB0eXBlOwogCi0gICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikgcmV0dXJuIGxl
eGljYWwuaW5kZW50ZWQgKyAoc3RhdGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5s
YXN0VHlwZSA9PSAiLCIgPyA0IDogMCk7CisgICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikgcmV0
dXJuIGxleGljYWwuaW5kZW50ZWQgKyAoc3RhdGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBz
dGF0ZS5sYXN0VHlwZSA9PSAiLCIgPyBsZXhpY2FsLmluZm8gKyAxIDogMCk7CiAgICAgICBlbHNl
IGlmICh0eXBlID09ICJmb3JtIiAmJiBmaXJzdENoYXIgPT0gInsiKSByZXR1cm4gbGV4aWNhbC5p
bmRlbnRlZDsKICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZvcm0iKSByZXR1cm4gbGV4aWNhbC5p
bmRlbnRlZCArIGluZGVudFVuaXQ7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nv
ZGVNaXJyb3IvY29kZW1pcnJvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuY3NzCmluZGV4IDRlMzAwYjJiZTJl
OTBjYzMwNjY4ZWJlYzAzYzBjZmFiYzVhMDU3NmYuLjIzZWFmNzRkNDQ5YmNkNWNkYjRlOTUyZTVi
Mjg0NjQyOGU4ZWJiNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5jc3MKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9y
LmNzcwpAQCAtNzQsNyArNzQsNiBAQAogLmNtLXMtZGVmYXVsdCAuY20tc3RyaW5nIHtjb2xvcjog
I2ExMTt9CiAuY20tcy1kZWZhdWx0IC5jbS1zdHJpbmctMiB7Y29sb3I6ICNmNTA7fQogLmNtLXMt
ZGVmYXVsdCAuY20tbWV0YSB7Y29sb3I6ICM1NTU7fQotLmNtLXMtZGVmYXVsdCAuY20tZXJyb3Ig
e2NvbG9yOiAjZjAwO30KIC5jbS1zLWRlZmF1bHQgLmNtLXF1YWxpZmllciB7Y29sb3I6ICM1NTU7
fQogLmNtLXMtZGVmYXVsdCAuY20tYnVpbHRpbiB7Y29sb3I6ICMzMGE7fQogLmNtLXMtZGVmYXVs
dCAuY20tYnJhY2tldCB7Y29sb3I6ICM5OTc7fQpAQCAtOTEsNiArOTAsNyBAQAogLmNtLWVtIHtm
b250LXN0eWxlOiBpdGFsaWM7fQogLmNtLWxpbmsge3RleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5l
O30KIAorLmNtLXMtZGVmYXVsdCAuY20tZXJyb3Ige2NvbG9yOiAjZjAwO30KIC5jbS1pbnZhbGlk
Y2hhciB7Y29sb3I6ICNmMDA7fQogCiBkaXYuQ29kZU1pcnJvciBzcGFuLkNvZGVNaXJyb3ItbWF0
Y2hpbmdicmFja2V0IHtjb2xvcjogIzBmMDt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2Nv
ZGVtaXJyb3IuanMKaW5kZXggODE3NzFlOTliMTJhYWFkZGVmZjZlNDI1ZTI5NGVkMzU5ZTlhYjc3
YS4uN2I0ZmQwMDE0MTFhZDE0ZWFjNjM0YmUzNzI3NDhhOGFkMTdlNGMyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9j
b2RlbWlycm9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4
dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5qcwpAQCAtNyw5ICs3LDEzIEBAIHdpbmRvdy5D
b2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAvLyBDcnVkZSwgYnV0IG5lY2Vzc2FyeSB0byBo
YW5kbGUgYSBudW1iZXIgb2YgaGFyZC10by1mZWF0dXJlLWRldGVjdAogICAvLyBidWdzIGFuZCBi
ZWhhdmlvciBkaWZmZXJlbmNlcy4KICAgdmFyIGdlY2tvID0gL2dlY2tvXC9cZC9pLnRlc3QobmF2
aWdhdG9yLnVzZXJBZ2VudCk7CisgIC8vIElFMTEgY3VycmVudGx5IGRvZXNuJ3QgY291bnQgYXMg
J2llJywgc2luY2UgaXQgaGFzIGFsbW9zdCBub25lIG9mCisgIC8vIHRoZSBzYW1lIGJ1Z3MgYXMg
ZWFybGllciB2ZXJzaW9ucy4gVXNlIGllX2d0MTAgdG8gaGFuZGxlCisgIC8vIGluY29tcGF0aWJp
bGl0aWVzIGluIHRoYXQgdmVyc2lvbi4KICAgdmFyIGllID0gL01TSUUgXGQvLnRlc3QobmF2aWdh
dG9yLnVzZXJBZ2VudCk7CiAgIHZhciBpZV9sdDggPSBpZSAmJiAoZG9jdW1lbnQuZG9jdW1lbnRN
b2RlID09IG51bGwgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDwgOCk7CiAgIHZhciBpZV9sdDkg
PSBpZSAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09IG51bGwgfHwgZG9jdW1lbnQuZG9jdW1l
bnRNb2RlIDwgOSk7CisgIHZhciBpZV9ndDEwID0gL1RyaWRlbnRcLyhbNy05XXxcZHsyLH0pXC4v
LnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CiAgIHZhciB3ZWJraXQgPSAvV2ViS2l0XC8vLnRl
c3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CiAgIHZhciBxdHdlYmtpdCA9IHdlYmtpdCAmJiAvUXRc
L1xkK1wuXGQrLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwogICB2YXIgY2hyb21lID0gL0No
cm9tZVwvLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwpAQCAtMzA5LDcgKzMxMyw3IEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgb3B0aW9ucy5ndXR0ZXJzID0g
b3B0aW9ucy5ndXR0ZXJzLmNvbmNhdChbIkNvZGVNaXJyb3ItbGluZW51bWJlcnMiXSk7CiAgICAg
fSBlbHNlIGlmIChmb3VuZCA+IC0xICYmICFvcHRpb25zLmxpbmVOdW1iZXJzKSB7CiAgICAgICBv
cHRpb25zLmd1dHRlcnMgPSBvcHRpb25zLmd1dHRlcnMuc2xpY2UoMCk7Ci0gICAgICBvcHRpb25z
Lmd1dHRlcnMuc3BsaWNlKGksIDEpOworICAgICAgb3B0aW9ucy5ndXR0ZXJzLnNwbGljZShmb3Vu
ZCwgMSk7CiAgICAgfQogICB9CiAKQEAgLTM1Myw4ICszNTcsMTAgQEAgd2luZG93LkNvZGVNaXJy
b3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICBkLmd1dHRlckZpbGxlci5zdHlsZS53aWR0aCA9IGQu
Z3V0dGVycy5vZmZzZXRXaWR0aCArICJweCI7CiAgICAgfSBlbHNlIGQuZ3V0dGVyRmlsbGVyLnN0
eWxlLmRpc3BsYXkgPSAiIjsKIAotICAgIGlmIChtYWNfZ2VMaW9uICYmIHNjcm9sbGJhcldpZHRo
KGQubWVhc3VyZSkgPT09IDApCisgICAgaWYgKG1hY19nZUxpb24gJiYgc2Nyb2xsYmFyV2lkdGgo
ZC5tZWFzdXJlKSA9PT0gMCkgewogICAgICAgZC5zY3JvbGxiYXJWLnN0eWxlLm1pbldpZHRoID0g
ZC5zY3JvbGxiYXJILnN0eWxlLm1pbkhlaWdodCA9IG1hY19nZU1vdW50YWluTGlvbiA/ICIxOHB4
IiA6ICIxMnB4IjsKKyAgICAgIGQuc2Nyb2xsYmFyVi5zdHlsZS5wb2ludGVyRXZlbnRzID0gZC5z
Y3JvbGxiYXJILnN0eWxlLnBvaW50ZXJFdmVudHMgPSAibm9uZSI7CisgICAgfQogICB9CiAKICAg
ZnVuY3Rpb24gdmlzaWJsZUxpbmVzKGRpc3BsYXksIGRvYywgdmlld1BvcnQpIHsKQEAgLTQwOSwx
NCArNDE1LDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICBmdW5jdGlv
biB1cGRhdGVEaXNwbGF5KGNtLCBjaGFuZ2VzLCB2aWV3UG9ydCwgZm9yY2VkKSB7CiAgICAgdmFy
IG9sZEZyb20gPSBjbS5kaXNwbGF5LnNob3dpbmdGcm9tLCBvbGRUbyA9IGNtLmRpc3BsYXkuc2hv
d2luZ1RvLCB1cGRhdGVkOwogICAgIHZhciB2aXNpYmxlID0gdmlzaWJsZUxpbmVzKGNtLmRpc3Bs
YXksIGNtLmRvYywgdmlld1BvcnQpOwotICAgIGZvciAoOzspIHsKKyAgICBmb3IgKHZhciBmaXJz
dCA9IHRydWU7OyBmaXJzdCA9IGZhbHNlKSB7CiAgICAgICB2YXIgb2xkV2lkdGggPSBjbS5kaXNw
bGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoOwogICAgICAgaWYgKCF1cGRhdGVEaXNwbGF5SW5uZXIo
Y20sIGNoYW5nZXMsIHZpc2libGUsIGZvcmNlZCkpIGJyZWFrOwogICAgICAgdXBkYXRlZCA9IHRy
dWU7CiAgICAgICBjaGFuZ2VzID0gW107CiAgICAgICB1cGRhdGVTZWxlY3Rpb24oY20pOwogICAg
ICAgdXBkYXRlU2Nyb2xsYmFycyhjbSk7Ci0gICAgICBpZiAoY20ub3B0aW9ucy5saW5lV3JhcHBp
bmcgJiYgb2xkV2lkdGggIT0gY20uZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCkgeworICAg
ICAgaWYgKGZpcnN0ICYmIGNtLm9wdGlvbnMubGluZVdyYXBwaW5nICYmIG9sZFdpZHRoICE9IGNt
LmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGgpIHsKICAgICAgICAgZm9yY2VkID0gdHJ1ZTsK
ICAgICAgICAgY29udGludWU7CiAgICAgICB9CkBAIC05MDQsNyArOTEwLDcgQEAgd2luZG93LkNv
ZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgZG9jLml0ZXIoZG9jLmZyb250aWVyLCBNYXRo
Lm1pbihkb2MuZmlyc3QgKyBkb2Muc2l6ZSwgY20uZGlzcGxheS5zaG93aW5nVG8gKyA1MDApLCBm
dW5jdGlvbihsaW5lKSB7CiAgICAgICBpZiAoZG9jLmZyb250aWVyID49IGNtLmRpc3BsYXkuc2hv
d2luZ0Zyb20pIHsgLy8gVmlzaWJsZQogICAgICAgICB2YXIgb2xkU3R5bGVzID0gbGluZS5zdHls
ZXM7Ci0gICAgICAgIGxpbmUuc3R5bGVzID0gaGlnaGxpZ2h0TGluZShjbSwgbGluZSwgc3RhdGUp
OworICAgICAgICBsaW5lLnN0eWxlcyA9IGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIHN0YXRlLCB0
cnVlKTsKICAgICAgICAgdmFyIGlzY2hhbmdlID0gIW9sZFN0eWxlcyB8fCBvbGRTdHlsZXMubGVu
Z3RoICE9IGxpbmUuc3R5bGVzLmxlbmd0aDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7ICFpc2No
YW5nZSAmJiBpIDwgb2xkU3R5bGVzLmxlbmd0aDsgKytpKSBpc2NoYW5nZSA9IG9sZFN0eWxlc1tp
XSAhPSBsaW5lLnN0eWxlc1tpXTsKICAgICAgICAgaWYgKGlzY2hhbmdlKSB7CkBAIC05MTMsNyAr
OTE5LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgIH0KICAg
ICAgICAgbGluZS5zdGF0ZUFmdGVyID0gY29weVN0YXRlKGRvYy5tb2RlLCBzdGF0ZSk7CiAgICAg
ICB9IGVsc2UgewotICAgICAgICBwcm9jZXNzTGluZShjbSwgbGluZSwgc3RhdGUpOworICAgICAg
ICBwcm9jZXNzTGluZShjbSwgbGluZS50ZXh0LCBzdGF0ZSk7CiAgICAgICAgIGxpbmUuc3RhdGVB
ZnRlciA9IGRvYy5mcm9udGllciAlIDUgPT0gMCA/IGNvcHlTdGF0ZShkb2MubW9kZSwgc3RhdGUp
IDogbnVsbDsKICAgICAgIH0KICAgICAgICsrZG9jLmZyb250aWVyOwpAQCAtOTM1LDggKzk0MSw5
IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAvLyBzbWFsbGVzdCBpbmRl
bnRhdGlvbiwgd2hpY2ggdGVuZHMgdG8gbmVlZCB0aGUgbGVhc3QgY29udGV4dCB0bwogICAvLyBw
YXJzZSBjb3JyZWN0bHkuCiAgIGZ1bmN0aW9uIGZpbmRTdGFydExpbmUoY20sIG4sIHByZWNpc2Up
IHsKLSAgICB2YXIgbWluaW5kZW50LCBtaW5saW5lLCBkb2MgPSBjbS5kb2MsIG1heFNjYW4gPSBj
bS5kb2MubW9kZS5pbm5lck1vZGUgPyAxMDAwIDogMTAwOwotICAgIGZvciAodmFyIHNlYXJjaCA9
IG4sIGxpbSA9IG4gLSBtYXhTY2FuOyBzZWFyY2ggPiBsaW07IC0tc2VhcmNoKSB7CisgICAgdmFy
IG1pbmluZGVudCwgbWlubGluZSwgZG9jID0gY20uZG9jOworICAgIHZhciBsaW0gPSBwcmVjaXNl
ID8gLTEgOiBuIC0gKGNtLmRvYy5tb2RlLmlubmVyTW9kZSA/IDEwMDAgOiAxMDApOworICAgIGZv
ciAodmFyIHNlYXJjaCA9IG47IHNlYXJjaCA+IGxpbTsgLS1zZWFyY2gpIHsKICAgICAgIGlmIChz
ZWFyY2ggPD0gZG9jLmZpcnN0KSByZXR1cm4gZG9jLmZpcnN0OwogICAgICAgdmFyIGxpbmUgPSBn
ZXRMaW5lKGRvYywgc2VhcmNoIC0gMSk7CiAgICAgICBpZiAobGluZS5zdGF0ZUFmdGVyICYmICgh
cHJlY2lzZSB8fCBzZWFyY2ggPD0gZG9jLmZyb250aWVyKSkgcmV0dXJuIHNlYXJjaDsKQEAgLTk1
NiwxMSArOTYzLDEyIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIGlm
ICghc3RhdGUpIHN0YXRlID0gc3RhcnRTdGF0ZShkb2MubW9kZSk7CiAgICAgZWxzZSBzdGF0ZSA9
IGNvcHlTdGF0ZShkb2MubW9kZSwgc3RhdGUpOwogICAgIGRvYy5pdGVyKHBvcywgbiwgZnVuY3Rp
b24obGluZSkgewotICAgICAgcHJvY2Vzc0xpbmUoY20sIGxpbmUsIHN0YXRlKTsKKyAgICAgIHBy
b2Nlc3NMaW5lKGNtLCBsaW5lLnRleHQsIHN0YXRlKTsKICAgICAgIHZhciBzYXZlID0gcG9zID09
IG4gLSAxIHx8IHBvcyAlIDUgPT0gMCB8fCBwb3MgPj0gZGlzcGxheS5zaG93aW5nRnJvbSAmJiBw
b3MgPCBkaXNwbGF5LnNob3dpbmdUbzsKICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IHNhdmUgPyBj
b3B5U3RhdGUoZG9jLm1vZGUsIHN0YXRlKSA6IG51bGw7CiAgICAgICArK3BvczsKICAgICB9KTsK
KyAgICBpZiAocHJlY2lzZSkgZG9jLmZyb250aWVyID0gcG9zOwogICAgIHJldHVybiBzdGF0ZTsK
ICAgfQogCkBAIC0xMDAxLDcgKzEwMDksNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlv
bigpIHsKICAgICAgIHZhciBtZW1vID0gY2FjaGVbaV07CiAgICAgICBpZiAobWVtby50ZXh0ID09
IGxpbmUudGV4dCAmJiBtZW1vLm1hcmtlZFNwYW5zID09IGxpbmUubWFya2VkU3BhbnMgJiYKICAg
ICAgICAgICBjbS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoID09IG1lbW8ud2lkdGggJiYK
LSAgICAgICAgICBtZW1vLmNsYXNzZXMgPT0gbGluZS50ZXh0Q2xhc3MgKyAifCIgKyBsaW5lLmJn
Q2xhc3MgKyAifCIgKyBsaW5lLndyYXBDbGFzcykKKyAgICAgICAgICBtZW1vLmNsYXNzZXMgPT0g
bGluZS50ZXh0Q2xhc3MgKyAifCIgKyBsaW5lLndyYXBDbGFzcykKICAgICAgICAgcmV0dXJuIG1l
bW87CiAgICAgfQogICB9CkBAIC0xMDIxLDcgKzEwMjksNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICB2YXIgY2FjaGUgPSBjbS5kaXNwbGF5Lm1lYXN1cmVMaW5lQ2Fj
aGU7CiAgICAgdmFyIG1lbW8gPSB7dGV4dDogbGluZS50ZXh0LCB3aWR0aDogY20uZGlzcGxheS5z
Y3JvbGxlci5jbGllbnRXaWR0aCwKICAgICAgICAgICAgICAgICBtYXJrZWRTcGFuczogbGluZS5t
YXJrZWRTcGFucywgbWVhc3VyZTogbWVhc3VyZSwKLSAgICAgICAgICAgICAgICBjbGFzc2VzOiBs
aW5lLnRleHRDbGFzcyArICJ8IiArIGxpbmUuYmdDbGFzcyArICJ8IiArIGxpbmUud3JhcENsYXNz
fTsKKyAgICAgICAgICAgICAgICBjbGFzc2VzOiBsaW5lLnRleHRDbGFzcyArICJ8IiArIGxpbmUu
d3JhcENsYXNzfTsKICAgICBpZiAoY2FjaGUubGVuZ3RoID09IDE2KSBjYWNoZVsrK2NtLmRpc3Bs
YXkubWVhc3VyZUxpbmVDYWNoZVBvcyAlIDE2XSA9IG1lbW87CiAgICAgZWxzZSBjYWNoZS5wdXNo
KG1lbW8pOwogICAgIHJldHVybiBtZWFzdXJlOwpAQCAtMTM3OSwxMSArMTM4NywxNCBAQCB3aW5k
b3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB9CiAgICAgaWYgKCF1cGRhdGVkICYm
IG9wLnNlbGVjdGlvbkNoYW5nZWQpIHVwZGF0ZVNlbGVjdGlvbihjbSk7CiAgICAgaWYgKG9wLnVw
ZGF0ZVNjcm9sbFBvcykgewotICAgICAgZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3AgPSBkaXNw
bGF5LnNjcm9sbGJhclYuc2Nyb2xsVG9wID0gZG9jLnNjcm9sbFRvcCA9IG5ld1Njcm9sbFBvcy5z
Y3JvbGxUb3A7Ci0gICAgICBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQgPSBkaXNwbGF5LnNj
cm9sbGJhckguc2Nyb2xsTGVmdCA9IGRvYy5zY3JvbGxMZWZ0ID0gbmV3U2Nyb2xsUG9zLnNjcm9s
bExlZnQ7CisgICAgICB2YXIgdG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZGlzcGxheS5zY3Jv
bGxlci5zY3JvbGxIZWlnaHQgLSBkaXNwbGF5LnNjcm9sbGVyLmNsaWVudEhlaWdodCwgbmV3U2Ny
b2xsUG9zLnNjcm9sbFRvcCkpOworICAgICAgdmFyIGxlZnQgPSBNYXRoLm1heCgwLCBNYXRoLm1p
bihkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFdpZHRoIC0gZGlzcGxheS5zY3JvbGxlci5jbGllbnRX
aWR0aCwgbmV3U2Nyb2xsUG9zLnNjcm9sbExlZnQpKTsKKyAgICAgIGRpc3BsYXkuc2Nyb2xsZXIu
c2Nyb2xsVG9wID0gZGlzcGxheS5zY3JvbGxiYXJWLnNjcm9sbFRvcCA9IGRvYy5zY3JvbGxUb3Ag
PSB0b3A7CisgICAgICBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQgPSBkaXNwbGF5LnNjcm9s
bGJhckguc2Nyb2xsTGVmdCA9IGRvYy5zY3JvbGxMZWZ0ID0gbGVmdDsKICAgICAgIGFsaWduSG9y
aXpvbnRhbGx5KGNtKTsKICAgICAgIGlmIChvcC5zY3JvbGxUb1BvcykKLSAgICAgICAgc2Nyb2xs
UG9zSW50b1ZpZXcoY20sIGNsaXBQb3MoY20uZG9jLCBvcC5zY3JvbGxUb1BvcyksIG9wLnNjcm9s
bFRvUG9zTWFyZ2luKTsKKyAgICAgICAgc2Nyb2xsUG9zSW50b1ZpZXcoY20sIGNsaXBQb3MoY20u
ZG9jLCBvcC5zY3JvbGxUb1Bvcy5mcm9tKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp
cFBvcyhjbS5kb2MsIG9wLnNjcm9sbFRvUG9zLnRvKSwgb3Auc2Nyb2xsVG9Qb3MubWFyZ2luKTsK
ICAgICB9IGVsc2UgaWYgKG5ld1Njcm9sbFBvcykgewogICAgICAgc2Nyb2xsQ3Vyc29ySW50b1Zp
ZXcoY20pOwogICAgIH0KQEAgLTE2MDUsNyArMTYxNiwxMCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICAgIGlmIChzaWduYWxET01FdmVudChjbSwgZSkgfHwgY20ub3B0
aW9ucy5vbktleUV2ZW50ICYmIGNtLm9wdGlvbnMub25LZXlFdmVudChjbSwgYWRkU3RvcChlKSkp
IHJldHVybjsKICAgICAgIGlmIChlLmtleUNvZGUgPT0gMTYpIGNtLmRvYy5zZWwuc2hpZnQgPSBm
YWxzZTsKICAgICB9KSk7Ci0gICAgb24oZC5pbnB1dCwgImlucHV0IiwgYmluZChmYXN0UG9sbCwg
Y20pKTsKKyAgICBvbihkLmlucHV0LCAiaW5wdXQiLCBmdW5jdGlvbigpIHsKKyAgICAgIGlmIChp
ZSAmJiAhaWVfbHQ5ICYmIGNtLmRpc3BsYXkuaW5wdXRIYXNTZWxlY3Rpb24pIGNtLmRpc3BsYXku
aW5wdXRIYXNTZWxlY3Rpb24gPSBudWxsOworICAgICAgZmFzdFBvbGwoY20pOworICAgIH0pOwog
ICAgIG9uKGQuaW5wdXQsICJrZXlkb3duIiwgb3BlcmF0aW9uKGNtLCBvbktleURvd24pKTsKICAg
ICBvbihkLmlucHV0LCAia2V5cHJlc3MiLCBvcGVyYXRpb24oY20sIG9uS2V5UHJlc3MpKTsKICAg
ICBvbihkLmlucHV0LCAiZm9jdXMiLCBiaW5kKG9uRm9jdXMsIGNtKSk7CkBAIC0xODk1LDcgKzE5
MDksNiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICBpZiAo
Y20uc3RhdGUuZHJhZ2dpbmdUZXh0KSByZXBsYWNlUmFuZ2UoY20uZG9jLCAiIiwgY3VyRnJvbSwg
Y3VyVG8sICJwYXN0ZSIpOwogICAgICAgICAgIGNtLnJlcGxhY2VTZWxlY3Rpb24odGV4dCwgbnVs
bCwgInBhc3RlIik7CiAgICAgICAgICAgZm9jdXNJbnB1dChjbSk7Ci0gICAgICAgICAgb25Gb2N1
cyhjbSk7CiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGNhdGNoKGUpe30KQEAgLTIxNzYsNyAr
MjE4OSwxMSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKIAogICAgIHZhciBw
b3MgPSBwb3NGcm9tTW91c2UoY20sIGUpLCBzY3JvbGxQb3MgPSBkaXNwbGF5LnNjcm9sbGVyLnNj
cm9sbFRvcDsKICAgICBpZiAoIXBvcyB8fCBvcGVyYSkgcmV0dXJuOyAvLyBPcGVyYSBpcyBkaWZm
aWN1bHQuCi0gICAgaWYgKHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pIHx8IHBvc0xlc3MocG9zLCBz
ZWwuZnJvbSkgfHwgIXBvc0xlc3MocG9zLCBzZWwudG8pKQorCisgICAgLy8gUmVzZXQgdGhlIGN1
cnJlbnQgdGV4dCBzZWxlY3Rpb24gb25seSBpZiB0aGUgY2xpY2sgaXMgZG9uZSBvdXRzaWRlIG9m
IHRoZSBzZWxlY3Rpb24KKyAgICAvLyBhbmQgJ3Jlc2V0U2VsZWN0aW9uT25Db250ZXh0TWVudScg
b3B0aW9uIGlzIHRydWUuCisgICAgdmFyIHJlc2V0ID0gY20ub3B0aW9ucy5yZXNldFNlbGVjdGlv
bk9uQ29udGV4dE1lbnU7CisgICAgaWYgKHJlc2V0ICYmIChwb3NFcShzZWwuZnJvbSwgc2VsLnRv
KSB8fCBwb3NMZXNzKHBvcywgc2VsLmZyb20pIHx8ICFwb3NMZXNzKHBvcywgc2VsLnRvKSkpCiAg
ICAgICBvcGVyYXRpb24oY20sIHNldFNlbGVjdGlvbikoY20uZG9jLCBwb3MsIHBvcyk7CiAKICAg
ICB2YXIgb2xkQ1NTID0gZGlzcGxheS5pbnB1dC5zdHlsZS5jc3NUZXh0OwpAQCAtMjMyNiw2ICsy
MzQzLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIH0KIAogICBmdW5j
dGlvbiBtYWtlQ2hhbmdlTm9SZWFkb25seShkb2MsIGNoYW5nZSwgc2VsVXBkYXRlKSB7CisgICAg
aWYgKGNoYW5nZS50ZXh0Lmxlbmd0aCA9PSAxICYmIGNoYW5nZS50ZXh0WzBdID09ICIiICYmIHBv
c0VxKGNoYW5nZS5mcm9tLCBjaGFuZ2UudG8pKSByZXR1cm47CiAgICAgdmFyIHNlbEFmdGVyID0g
Y29tcHV0ZVNlbEFmdGVyQ2hhbmdlKGRvYywgY2hhbmdlLCBzZWxVcGRhdGUpOwogICAgIGFkZFRv
SGlzdG9yeShkb2MsIGNoYW5nZSwgc2VsQWZ0ZXIsIGRvYy5jbSA/IGRvYy5jbS5jdXJPcC5pZCA6
IE5hTik7CiAKQEAgLTI2MjYsNyArMjY0NCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0
aW9uKCkgewogICAvLyBTQ1JPTExJTkcKIAogICBmdW5jdGlvbiBzY3JvbGxDdXJzb3JJbnRvVmll
dyhjbSkgewotICAgIHZhciBjb29yZHMgPSBzY3JvbGxQb3NJbnRvVmlldyhjbSwgY20uZG9jLnNl
bC5oZWFkLCBjbS5vcHRpb25zLmN1cnNvclNjcm9sbE1hcmdpbik7CisgICAgdmFyIGNvb3JkcyA9
IHNjcm9sbFBvc0ludG9WaWV3KGNtLCBjbS5kb2Muc2VsLmhlYWQsIG51bGwsIGNtLm9wdGlvbnMu
Y3Vyc29yU2Nyb2xsTWFyZ2luKTsKICAgICBpZiAoIWNtLnN0YXRlLmZvY3VzZWQpIHJldHVybjsK
ICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIGJveCA9IGdldFJlY3QoZGlzcGxheS5zaXpl
ciksIGRvU2Nyb2xsID0gbnVsbDsKICAgICBpZiAoY29vcmRzLnRvcCArIGJveC50b3AgPCAwKSBk
b1Njcm9sbCA9IHRydWU7CkBAIC0yNjQzLDExICsyNjYxLDE1IEBAIHdpbmRvdy5Db2RlTWlycm9y
ID0gKGZ1bmN0aW9uKCkgewogICAgIH0KICAgfQogCi0gIGZ1bmN0aW9uIHNjcm9sbFBvc0ludG9W
aWV3KGNtLCBwb3MsIG1hcmdpbikgeworICBmdW5jdGlvbiBzY3JvbGxQb3NJbnRvVmlldyhjbSwg
cG9zLCBlbmQsIG1hcmdpbikgewogICAgIGlmIChtYXJnaW4gPT0gbnVsbCkgbWFyZ2luID0gMDsK
ICAgICBmb3IgKDs7KSB7CiAgICAgICB2YXIgY2hhbmdlZCA9IGZhbHNlLCBjb29yZHMgPSBjdXJz
b3JDb29yZHMoY20sIHBvcyk7Ci0gICAgICB2YXIgc2Nyb2xsUG9zID0gY2FsY3VsYXRlU2Nyb2xs
UG9zKGNtLCBjb29yZHMubGVmdCwgY29vcmRzLnRvcCAtIG1hcmdpbiwgY29vcmRzLmxlZnQsIGNv
b3Jkcy5ib3R0b20gKyBtYXJnaW4pOworICAgICAgdmFyIGVuZENvb3JkcyA9ICFlbmQgfHwgZW5k
ID09IHBvcyA/IGNvb3JkcyA6IGN1cnNvckNvb3JkcyhjbSwgZW5kKTsKKyAgICAgIHZhciBzY3Jv
bGxQb3MgPSBjYWxjdWxhdGVTY3JvbGxQb3MoY20sIE1hdGgubWluKGNvb3Jkcy5sZWZ0LCBlbmRD
b29yZHMubGVmdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1h
dGgubWluKGNvb3Jkcy50b3AsIGVuZENvb3Jkcy50b3ApIC0gbWFyZ2luLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLm1heChjb29yZHMubGVmdCwgZW5kQ29v
cmRzLmxlZnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRo
Lm1heChjb29yZHMuYm90dG9tLCBlbmRDb29yZHMuYm90dG9tKSArIG1hcmdpbik7CiAgICAgICB2
YXIgc3RhcnRUb3AgPSBjbS5kb2Muc2Nyb2xsVG9wLCBzdGFydExlZnQgPSBjbS5kb2Muc2Nyb2xs
TGVmdDsKICAgICAgIGlmIChzY3JvbGxQb3Muc2Nyb2xsVG9wICE9IG51bGwpIHsKICAgICAgICAg
c2V0U2Nyb2xsVG9wKGNtLCBzY3JvbGxQb3Muc2Nyb2xsVG9wKTsKQEAgLTI3NDQsNiArMjc2Niw4
IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgICAgaWYgKGluZGVudFN0
cmluZyAhPSBjdXJTcGFjZVN0cmluZykKICAgICAgIHJlcGxhY2VSYW5nZShjbS5kb2MsIGluZGVu
dFN0cmluZywgUG9zKG4sIDApLCBQb3MobiwgY3VyU3BhY2VTdHJpbmcubGVuZ3RoKSwgIitpbnB1
dCIpOworICAgIGVsc2UgaWYgKGRvYy5zZWwuaGVhZC5saW5lID09IG4gJiYgZG9jLnNlbC5oZWFk
LmNoIDwgY3VyU3BhY2VTdHJpbmcubGVuZ3RoKQorICAgICAgc2V0U2VsZWN0aW9uKGRvYywgUG9z
KG4sIGN1clNwYWNlU3RyaW5nLmxlbmd0aCksIFBvcyhuLCBjdXJTcGFjZVN0cmluZy5sZW5ndGgp
LCAxKTsKICAgICBsaW5lLnN0YXRlQWZ0ZXIgPSBudWxsOwogICB9CiAKQEAgLTI4NDQsNyArMjg2
OCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgIENvZGVNaXJyb3Iu
cHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBDb2RlTWlycm9yLAotICAgIGZvY3VzOiBm
dW5jdGlvbigpe3dpbmRvdy5mb2N1cygpOyBmb2N1c0lucHV0KHRoaXMpOyBvbkZvY3VzKHRoaXMp
OyBmYXN0UG9sbCh0aGlzKTt9LAorICAgIGZvY3VzOiBmdW5jdGlvbigpe3dpbmRvdy5mb2N1cygp
OyBmb2N1c0lucHV0KHRoaXMpOyBmYXN0UG9sbCh0aGlzKTt9LAogCiAgICAgc2V0T3B0aW9uOiBm
dW5jdGlvbihvcHRpb24sIHZhbHVlKSB7CiAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9u
cywgb2xkID0gb3B0aW9uc1tvcHRpb25dOwpAQCAtMzE2NSwxNyArMzE4OSwyMyBAQCB3aW5kb3cu
Q29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgY2xpZW50SGVpZ2h0OiBz
Y3JvbGxlci5jbGllbnRIZWlnaHQgLSBjbywgY2xpZW50V2lkdGg6IHNjcm9sbGVyLmNsaWVudFdp
ZHRoIC0gY299OwogICAgIH0sCiAKLSAgICBzY3JvbGxJbnRvVmlldzogb3BlcmF0aW9uKG51bGws
IGZ1bmN0aW9uKHBvcywgbWFyZ2luKSB7Ci0gICAgICBpZiAodHlwZW9mIHBvcyA9PSAibnVtYmVy
IikgcG9zID0gUG9zKHBvcywgMCk7CisgICAgc2Nyb2xsSW50b1ZpZXc6IG9wZXJhdGlvbihudWxs
LCBmdW5jdGlvbihyYW5nZSwgbWFyZ2luKSB7CisgICAgICBpZiAocmFuZ2UgPT0gbnVsbCkgcmFu
Z2UgPSB7ZnJvbTogdGhpcy5kb2Muc2VsLmhlYWQsIHRvOiBudWxsfTsKKyAgICAgIGVsc2UgaWYg
KHR5cGVvZiByYW5nZSA9PSAibnVtYmVyIikgcmFuZ2UgPSB7ZnJvbTogUG9zKHJhbmdlLCAwKSwg
dG86IG51bGx9OworICAgICAgZWxzZSBpZiAocmFuZ2UuZnJvbSA9PSBudWxsKSByYW5nZSA9IHtm
cm9tOiByYW5nZSwgdG86IG51bGx9OworICAgICAgaWYgKCFyYW5nZS50bykgcmFuZ2UudG8gPSBy
YW5nZS5mcm9tOwogICAgICAgaWYgKCFtYXJnaW4pIG1hcmdpbiA9IDA7Ci0gICAgICB2YXIgY29v
cmRzID0gcG9zOwogCi0gICAgICBpZiAoIXBvcyB8fCBwb3MubGluZSAhPSBudWxsKSB7Ci0gICAg
ICAgIHRoaXMuY3VyT3Auc2Nyb2xsVG9Qb3MgPSBwb3MgPyBjbGlwUG9zKHRoaXMuZG9jLCBwb3Mp
IDogdGhpcy5kb2Muc2VsLmhlYWQ7Ci0gICAgICAgIHRoaXMuY3VyT3Auc2Nyb2xsVG9Qb3NNYXJn
aW4gPSBtYXJnaW47Ci0gICAgICAgIGNvb3JkcyA9IGN1cnNvckNvb3Jkcyh0aGlzLCB0aGlzLmN1
ck9wLnNjcm9sbFRvUG9zKTsKKyAgICAgIHZhciBjb29yZHMgPSByYW5nZTsKKyAgICAgIGlmIChy
YW5nZS5mcm9tLmxpbmUgIT0gbnVsbCkgeworICAgICAgICB0aGlzLmN1ck9wLnNjcm9sbFRvUG9z
ID0ge2Zyb206IHJhbmdlLmZyb20sIHRvOiByYW5nZS50bywgbWFyZ2luOiBtYXJnaW59OworICAg
ICAgICBjb29yZHMgPSB7ZnJvbTogY3Vyc29yQ29vcmRzKHRoaXMsIHJhbmdlLmZyb20pLAorICAg
ICAgICAgICAgICAgICAgdG86IGN1cnNvckNvb3Jkcyh0aGlzLCByYW5nZS50byl9OwogICAgICAg
fQotICAgICAgdmFyIHNQb3MgPSBjYWxjdWxhdGVTY3JvbGxQb3ModGhpcywgY29vcmRzLmxlZnQs
IGNvb3Jkcy50b3AgLSBtYXJnaW4sIGNvb3Jkcy5yaWdodCwgY29vcmRzLmJvdHRvbSArIG1hcmdp
bik7CisgICAgICB2YXIgc1BvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyh0aGlzLCBNYXRoLm1pbihj
b29yZHMuZnJvbS5sZWZ0LCBjb29yZHMudG8ubGVmdCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXRoLm1pbihjb29yZHMuZnJvbS50b3AsIGNvb3Jkcy50by50b3ApIC0g
bWFyZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoY29v
cmRzLmZyb20ucmlnaHQsIGNvb3Jkcy50by5yaWdodCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBNYXRoLm1heChjb29yZHMuZnJvbS5ib3R0b20sIGNvb3Jkcy50by5ib3R0
b20pICsgbWFyZ2luKTsKICAgICAgIHVwZGF0ZVNjcm9sbFBvcyh0aGlzLCBzUG9zLnNjcm9sbExl
ZnQsIHNQb3Muc2Nyb2xsVG9wKTsKICAgICB9KSwKIApAQCAtMzIwNyw2ICszMjM3LDcgQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICBjbGVhckNhY2hlcyh0aGlzKTsK
ICAgICAgIHJlc2V0SW5wdXQodGhpcywgdHJ1ZSk7CiAgICAgICB1cGRhdGVTY3JvbGxQb3ModGhp
cywgZG9jLnNjcm9sbExlZnQsIGRvYy5zY3JvbGxUb3ApOworICAgICAgc2lnbmFsTGF0ZXIodGhp
cywgInN3YXBEb2MiLCB0aGlzLCBvbGQpOwogICAgICAgcmV0dXJuIG9sZDsKICAgICB9KSwKIApA
QCAtMzI1MCw4ICszMjgxLDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewog
ICAgIGNsZWFyQ2FjaGVzKGNtKTsKICAgICByZWdDaGFuZ2UoY20pOwogICB9LCB0cnVlKTsKKyAg
b3B0aW9uKCJzcGVjaWFsQ2hhcnMiLCAvW1x0XHUwMDAwLVx1MDAxOVx1MDBhZFx1MjAwYlx1MjAy
OFx1MjAyOVx1ZmVmZl0vZywgZnVuY3Rpb24oY20sIHZhbCkgeworICAgIGNtLm9wdGlvbnMuc3Bl
Y2lhbENoYXJzID0gbmV3IFJlZ0V4cCh2YWwuc291cmNlICsgKHZhbC50ZXN0KCJcdCIpID8gIiIg
OiAifFx0IiksICJnIik7CisgICAgY20ucmVmcmVzaCgpOworICB9LCB0cnVlKTsKKyAgb3B0aW9u
KCJzcGVjaWFsQ2hhclBsYWNlaG9sZGVyIiwgZGVmYXVsdFNwZWNpYWxDaGFyUGxhY2Vob2xkZXIs
IGZ1bmN0aW9uKGNtKSB7Y20ucmVmcmVzaCgpO30sIHRydWUpOwogICBvcHRpb24oImVsZWN0cmlj
Q2hhcnMiLCB0cnVlKTsKICAgb3B0aW9uKCJydGxNb3ZlVmlzdWFsbHkiLCAhd2luZG93cyk7Cisg
IG9wdGlvbigid2hvbGVMaW5lVXBkYXRlQmVmb3JlIiwgdHJ1ZSk7CiAKICAgb3B0aW9uKCJ0aGVt
ZSIsICJkZWZhdWx0IiwgZnVuY3Rpb24oY20pIHsKICAgICB0aGVtZUNoYW5nZWQoY20pOwpAQCAt
MzI4MSw5ICszMzE4LDE3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICBv
cHRpb24oImxpbmVOdW1iZXJGb3JtYXR0ZXIiLCBmdW5jdGlvbihpbnRlZ2VyKSB7cmV0dXJuIGlu
dGVnZXI7fSwgZ3V0dGVyc0NoYW5nZWQsIHRydWUpOwogICBvcHRpb24oInNob3dDdXJzb3JXaGVu
U2VsZWN0aW5nIiwgZmFsc2UsIHVwZGF0ZVNlbGVjdGlvbiwgdHJ1ZSk7CiAKKyAgb3B0aW9uKCJy
ZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnUiLCB0cnVlKTsKKwogICBvcHRpb24oInJlYWRPbmx5
IiwgZmFsc2UsIGZ1bmN0aW9uKGNtLCB2YWwpIHsKLSAgICBpZiAodmFsID09ICJub2N1cnNvciIp
IHtvbkJsdXIoY20pOyBjbS5kaXNwbGF5LmlucHV0LmJsdXIoKTt9Ci0gICAgZWxzZSBpZiAoIXZh
bCkgcmVzZXRJbnB1dChjbSwgdHJ1ZSk7CisgICAgaWYgKHZhbCA9PSAibm9jdXJzb3IiKSB7Cisg
ICAgICBvbkJsdXIoY20pOworICAgICAgY20uZGlzcGxheS5pbnB1dC5ibHVyKCk7CisgICAgICBj
bS5kaXNwbGF5LmRpc2FibGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgY20uZGlzcGxh
eS5kaXNhYmxlZCA9IGZhbHNlOworICAgICAgaWYgKCF2YWwpIHJlc2V0SW5wdXQoY20sIHRydWUp
OworICAgIH0KICAgfSk7CiAgIG9wdGlvbigiZHJhZ0Ryb3AiLCB0cnVlKTsKIApAQCAtMzUxNyw3
ICszNTYyLDggQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIGtleU1hcC5i
YXNpYyA9IHsKICAgICAiTGVmdCI6ICJnb0NoYXJMZWZ0IiwgIlJpZ2h0IjogImdvQ2hhclJpZ2h0
IiwgIlVwIjogImdvTGluZVVwIiwgIkRvd24iOiAiZ29MaW5lRG93biIsCiAgICAgIkVuZCI6ICJn
b0xpbmVFbmQiLCAiSG9tZSI6ICJnb0xpbmVTdGFydFNtYXJ0IiwgIlBhZ2VVcCI6ICJnb1BhZ2VV
cCIsICJQYWdlRG93biI6ICJnb1BhZ2VEb3duIiwKLSAgICAiRGVsZXRlIjogImRlbENoYXJBZnRl
ciIsICJCYWNrc3BhY2UiOiAiZGVsQ2hhckJlZm9yZSIsICJUYWIiOiAiZGVmYXVsdFRhYiIsICJT
aGlmdC1UYWIiOiAiaW5kZW50QXV0byIsCisgICAgIkRlbGV0ZSI6ICJkZWxDaGFyQWZ0ZXIiLCAi
QmFja3NwYWNlIjogImRlbENoYXJCZWZvcmUiLCAiU2hpZnQtQmFja3NwYWNlIjogImRlbENoYXJC
ZWZvcmUiLAorICAgICJUYWIiOiAiZGVmYXVsdFRhYiIsICJTaGlmdC1UYWIiOiAiaW5kZW50QXV0
byIsCiAgICAgIkVudGVyIjogIm5ld2xpbmVBbmRJbmRlbnQiLCAiSW5zZXJ0IjogInRvZ2dsZU92
ZXJ3cml0ZSIKICAgfTsKICAgLy8gTm90ZSB0aGF0IHRoZSBzYXZlIGFuZCBmaW5kLXJlbGF0ZWQg
Y29tbWFuZHMgYXJlbid0IGRlZmluZWQgYnkKQEAgLTM4MjMsNyArMzg2OSw5IEBAIHdpbmRvdy5D
b2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIGlmIChkb2MuY20gJiYgIWRvYy5jbS5jdXJP
cCkgcmV0dXJuIG9wZXJhdGlvbihkb2MuY20sIG1hcmtUZXh0KShkb2MsIGZyb20sIHRvLCBvcHRp
b25zLCB0eXBlKTsKIAogICAgIHZhciBtYXJrZXIgPSBuZXcgVGV4dE1hcmtlcihkb2MsIHR5cGUp
OwotICAgIGlmICh0eXBlID09ICJyYW5nZSIgJiYgIXBvc0xlc3MoZnJvbSwgdG8pKSByZXR1cm4g
bWFya2VyOworICAgIGlmIChwb3NMZXNzKHRvLCBmcm9tKSB8fCBwb3NFcShmcm9tLCB0bykgJiYg
dHlwZSA9PSAicmFuZ2UiICYmCisgICAgICAgICEob3B0aW9ucy5pbmNsdXNpdmVMZWZ0ICYmIG9w
dGlvbnMuaW5jbHVzaXZlUmlnaHQpKQorICAgICAgcmV0dXJuIG1hcmtlcjsKICAgICBpZiAob3B0
aW9ucykgY29weU9iaihvcHRpb25zLCBtYXJrZXIpOwogICAgIGlmIChtYXJrZXIucmVwbGFjZWRX
aXRoKSB7CiAgICAgICBtYXJrZXIuY29sbGFwc2VkID0gdHJ1ZTsKQEAgLTM5MzksNyArMzk4Nyw5
IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIGlmIChvbGQpIGZvciAo
dmFyIGkgPSAwLCBudzsgaSA8IG9sZC5sZW5ndGg7ICsraSkgewogICAgICAgdmFyIHNwYW4gPSBv
bGRbaV0sIG1hcmtlciA9IHNwYW4ubWFya2VyOwogICAgICAgdmFyIHN0YXJ0c0JlZm9yZSA9IHNw
YW4uZnJvbSA9PSBudWxsIHx8IChtYXJrZXIuaW5jbHVzaXZlTGVmdCA/IHNwYW4uZnJvbSA8PSBz
dGFydENoIDogc3Bhbi5mcm9tIDwgc3RhcnRDaCk7Ci0gICAgICBpZiAoc3RhcnRzQmVmb3JlIHx8
IG1hcmtlci50eXBlID09ICJib29rbWFyayIgJiYgc3Bhbi5mcm9tID09IHN0YXJ0Q2ggJiYgKCFp
c0luc2VydCB8fCAhc3Bhbi5tYXJrZXIuaW5zZXJ0TGVmdCkpIHsKKyAgICAgIGlmIChzdGFydHNC
ZWZvcmUgfHwKKyAgICAgICAgICAobWFya2VyLmluY2x1c2l2ZUxlZnQgJiYgbWFya2VyLmluY2x1
c2l2ZVJpZ2h0IHx8IG1hcmtlci50eXBlID09ICJib29rbWFyayIpICYmCisgICAgICAgICAgc3Bh
bi5mcm9tID09IHN0YXJ0Q2ggJiYgKCFpc0luc2VydCB8fCAhc3Bhbi5tYXJrZXIuaW5zZXJ0TGVm
dCkpIHsKICAgICAgICAgdmFyIGVuZHNBZnRlciA9IHNwYW4udG8gPT0gbnVsbCB8fCAobWFya2Vy
LmluY2x1c2l2ZVJpZ2h0ID8gc3Bhbi50byA+PSBzdGFydENoIDogc3Bhbi50byA+IHN0YXJ0Q2gp
OwogICAgICAgICAobncgfHwgKG53ID0gW10pKS5wdXNoKHtmcm9tOiBzcGFuLmZyb20sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBlbmRzQWZ0ZXIgPyBudWxsIDogc3Bhbi50
bywKQEAgLTQyMTIsNiArNDI2Miw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICAgIHRoaXMuaGVpZ2h0ID0gZXN0aW1hdGVIZWlnaHQgPyBlc3RpbWF0ZUhlaWdodCh0aGlz
KSA6IDE7CiAgIH07CiAgIGV2ZW50TWl4aW4oTGluZSk7CisgIExpbmUucHJvdG90eXBlLmxpbmVO
byA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbGluZU5vKHRoaXMpOyB9OwogCiAgIGZ1bmN0aW9uIHVw
ZGF0ZUxpbmUobGluZSwgdGV4dCwgbWFya2VkU3BhbnMsIGVzdGltYXRlSGVpZ2h0KSB7CiAgICAg
bGluZS50ZXh0ID0gdGV4dDsKQEAgLTQyMzIsNyArNDI4Myw3IEBAIHdpbmRvdy5Db2RlTWlycm9y
ID0gKGZ1bmN0aW9uKCkgewogICAvLyBSdW4gdGhlIGdpdmVuIG1vZGUncyBwYXJzZXIgb3ZlciBh
IGxpbmUsIHVwZGF0ZSB0aGUgc3R5bGVzCiAgIC8vIGFycmF5LCB3aGljaCBjb250YWlucyBhbHRl
cm5hdGluZyBmcmFnbWVudHMgb2YgdGV4dCBhbmQgQ1NTCiAgIC8vIGNsYXNzZXMuCi0gIGZ1bmN0
aW9uIHJ1bk1vZGUoY20sIHRleHQsIG1vZGUsIHN0YXRlLCBmKSB7CisgIGZ1bmN0aW9uIHJ1bk1v
ZGUoY20sIHRleHQsIG1vZGUsIHN0YXRlLCBmLCBmb3JjZVRvRW5kKSB7CiAgICAgdmFyIGZsYXR0
ZW5TcGFucyA9IG1vZGUuZmxhdHRlblNwYW5zOwogICAgIGlmIChmbGF0dGVuU3BhbnMgPT0gbnVs
bCkgZmxhdHRlblNwYW5zID0gY20ub3B0aW9ucy5mbGF0dGVuU3BhbnM7CiAgICAgdmFyIGN1clN0
YXJ0ID0gMCwgY3VyU3R5bGUgPSBudWxsOwpAQCAtNDI0MSw2ICs0MjkyLDcgQEAgd2luZG93LkNv
ZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsKICAg
ICAgIGlmIChzdHJlYW0ucG9zID4gY20ub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGgpIHsKICAg
ICAgICAgZmxhdHRlblNwYW5zID0gZmFsc2U7CisgICAgICAgIGlmIChmb3JjZVRvRW5kKSBwcm9j
ZXNzTGluZShjbSwgdGV4dCwgc3RhdGUsIHN0cmVhbS5wb3MpOwogICAgICAgICBzdHJlYW0ucG9z
ID0gdGV4dC5sZW5ndGg7CiAgICAgICAgIHN0eWxlID0gbnVsbDsKICAgICAgIH0gZWxzZSB7CkBA
IC00MjYwLDEyICs0MzEyLDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewog
ICAgIH0KICAgfQogCi0gIGZ1bmN0aW9uIGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIHN0YXRlKSB7
CisgIGZ1bmN0aW9uIGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIHN0YXRlLCBmb3JjZVRvRW5kKSB7
CiAgICAgLy8gQSBzdHlsZXMgYXJyYXkgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgbnVtYmVyIGlkZW50
aWZ5aW5nIHRoZQogICAgIC8vIG1vZGUvb3ZlcmxheXMgdGhhdCBpdCBpcyBiYXNlZCBvbiAoZm9y
IGVhc3kgaW52YWxpZGF0aW9uKS4KICAgICB2YXIgc3QgPSBbY20uc3RhdGUubW9kZUdlbl07CiAg
ICAgLy8gQ29tcHV0ZSB0aGUgYmFzZSBhcnJheSBvZiBzdHlsZXMKLSAgICBydW5Nb2RlKGNtLCBs
aW5lLnRleHQsIGNtLmRvYy5tb2RlLCBzdGF0ZSwgZnVuY3Rpb24oZW5kLCBzdHlsZSkge3N0LnB1
c2goZW5kLCBzdHlsZSk7fSk7CisgICAgcnVuTW9kZShjbSwgbGluZS50ZXh0LCBjbS5kb2MubW9k
ZSwgc3RhdGUsIGZ1bmN0aW9uKGVuZCwgc3R5bGUpIHsKKyAgICAgIHN0LnB1c2goZW5kLCBzdHls
ZSk7CisgICAgfSwgZm9yY2VUb0VuZCk7CiAKICAgICAvLyBSdW4gb3ZlcmxheXMsIGFkanVzdCBz
dHlsZSBhcnJheS4KICAgICBmb3IgKHZhciBvID0gMDsgbyA8IGNtLnN0YXRlLm92ZXJsYXlzLmxl
bmd0aDsgKytvKSB7CkBAIC00MzA0LDEwICs0MzU4LDExIEBAIHdpbmRvdy5Db2RlTWlycm9yID0g
KGZ1bmN0aW9uKCkgewogCiAgIC8vIExpZ2h0d2VpZ2h0IGZvcm0gb2YgaGlnaGxpZ2h0IC0tIHBy
b2NlZWQgb3ZlciB0aGlzIGxpbmUgYW5kCiAgIC8vIHVwZGF0ZSBzdGF0ZSwgYnV0IGRvbid0IHNh
dmUgYSBzdHlsZSBhcnJheS4KLSAgZnVuY3Rpb24gcHJvY2Vzc0xpbmUoY20sIGxpbmUsIHN0YXRl
KSB7CisgIGZ1bmN0aW9uIHByb2Nlc3NMaW5lKGNtLCB0ZXh0LCBzdGF0ZSwgc3RhcnRBdCkgewog
ICAgIHZhciBtb2RlID0gY20uZG9jLm1vZGU7Ci0gICAgdmFyIHN0cmVhbSA9IG5ldyBTdHJpbmdT
dHJlYW0obGluZS50ZXh0LCBjbS5vcHRpb25zLnRhYlNpemUpOwotICAgIGlmIChsaW5lLnRleHQg
PT0gIiIgJiYgbW9kZS5ibGFua0xpbmUpIG1vZGUuYmxhbmtMaW5lKHN0YXRlKTsKKyAgICB2YXIg
c3RyZWFtID0gbmV3IFN0cmluZ1N0cmVhbSh0ZXh0LCBjbS5vcHRpb25zLnRhYlNpemUpOworICAg
IHN0cmVhbS5zdGFydCA9IHN0cmVhbS5wb3MgPSBzdGFydEF0IHx8IDA7CisgICAgaWYgKHRleHQg
PT0gIiIgJiYgbW9kZS5ibGFua0xpbmUpIG1vZGUuYmxhbmtMaW5lKHN0YXRlKTsKICAgICB3aGls
ZSAoIXN0cmVhbS5lb2woKSAmJiBzdHJlYW0ucG9zIDw9IGNtLm9wdGlvbnMubWF4SGlnaGxpZ2h0
TGVuZ3RoKSB7CiAgICAgICBtb2RlLnRva2VuKHN0cmVhbSwgc3RhdGUpOwogICAgICAgc3RyZWFt
LnN0YXJ0ID0gc3RyZWFtLnBvczsKQEAgLTQzNjQsNyArNDQxOSw3IEBAIHdpbmRvdy5Db2RlTWly
cm9yID0gKGZ1bmN0aW9uKCkgewogICAgIC8vIFdvcmsgYXJvdW5kIHByb2JsZW0gd2l0aCB0aGUg
cmVwb3J0ZWQgZGltZW5zaW9ucyBvZiBzaW5nbGUtY2hhcgogICAgIC8vIGRpcmVjdGlvbiBzcGFu
cyBvbiBJRSAoaXNzdWUgIzExMjkpLiBTZWUgYWxzbyB0aGUgY29tbWVudCBpbgogICAgIC8vIGN1
cnNvckNvb3Jkcy4KLSAgICBpZiAobWVhc3VyZSAmJiBpZSAmJiAob3JkZXIgPSBnZXRPcmRlcihs
aW5lKSkpIHsKKyAgICBpZiAobWVhc3VyZSAmJiAoaWUgfHwgaWVfZ3QxMCkgJiYgKG9yZGVyID0g
Z2V0T3JkZXIobGluZSkpKSB7CiAgICAgICB2YXIgbCA9IG9yZGVyLmxlbmd0aCAtIDE7CiAgICAg
ICBpZiAob3JkZXJbbF0uZnJvbSA9PSBvcmRlcltsXS50bykgLS1sOwogICAgICAgdmFyIGxhc3Qg
PSBvcmRlcltsXSwgcHJldiA9IG9yZGVyW2wgLSAxXTsKQEAgLTQzODIsMTcgKzQ0MzcsMjMgQEAg
d2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgcmV0dXJuIGJ1aWxkZXI7CiAg
IH0KIAotICB2YXIgdG9rZW5TcGVjaWFsQ2hhcnMgPSAvW1x0XHUwMDAwLVx1MDAxOVx1MDBhZFx1
MjAwYlx1MjAyOFx1MjAyOVx1RkVGRl0vZzsKKyAgZnVuY3Rpb24gZGVmYXVsdFNwZWNpYWxDaGFy
UGxhY2Vob2xkZXIoY2gpIHsKKyAgICB2YXIgdG9rZW4gPSBlbHQoInNwYW4iLCAiXHUyMDIyIiwg
ImNtLWludmFsaWRjaGFyIik7CisgICAgdG9rZW4udGl0bGUgPSAiXFx1IiArIGNoLmNoYXJDb2Rl
QXQoMCkudG9TdHJpbmcoMTYpOworICAgIHJldHVybiB0b2tlbjsKKyAgfQorCiAgIGZ1bmN0aW9u
IGJ1aWxkVG9rZW4oYnVpbGRlciwgdGV4dCwgc3R5bGUsIHN0YXJ0U3R5bGUsIGVuZFN0eWxlLCB0
aXRsZSkgewogICAgIGlmICghdGV4dCkgcmV0dXJuOwotICAgIGlmICghdG9rZW5TcGVjaWFsQ2hh
cnMudGVzdCh0ZXh0KSkgeworICAgIHZhciBzcGVjaWFsID0gYnVpbGRlci5jbS5vcHRpb25zLnNw
ZWNpYWxDaGFyczsKKyAgICBpZiAoIXNwZWNpYWwudGVzdCh0ZXh0KSkgewogICAgICAgYnVpbGRl
ci5jb2wgKz0gdGV4dC5sZW5ndGg7CiAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKHRleHQpOwogICAgIH0gZWxzZSB7CiAgICAgICB2YXIgY29udGVudCA9IGRvY3Vt
ZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgcG9zID0gMDsKICAgICAgIHdoaWxlICh0cnVl
KSB7Ci0gICAgICAgIHRva2VuU3BlY2lhbENoYXJzLmxhc3RJbmRleCA9IHBvczsKLSAgICAgICAg
dmFyIG0gPSB0b2tlblNwZWNpYWxDaGFycy5leGVjKHRleHQpOworICAgICAgICBzcGVjaWFsLmxh
c3RJbmRleCA9IHBvczsKKyAgICAgICAgdmFyIG0gPSBzcGVjaWFsLmV4ZWModGV4dCk7CiAgICAg
ICAgIHZhciBza2lwcGVkID0gbSA/IG0uaW5kZXggLSBwb3MgOiB0ZXh0Lmxlbmd0aCAtIHBvczsK
ICAgICAgICAgaWYgKHNraXBwZWQpIHsKICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQuc2xpY2UocG9zLCBwb3MgKyBza2lwcGVkKSkpOwpA
QCAtNDQwNSw4ICs0NDY2LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAg
ICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChlbHQoInNwYW4iLCBzcGFjZVN0cih0YWJXaWR0
aCksICJjbS10YWIiKSk7CiAgICAgICAgICAgYnVpbGRlci5jb2wgKz0gdGFiV2lkdGg7CiAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdmFyIHRva2VuID0gZWx0KCJzcGFuIiwgIlx1MjAyMiIs
ICJjbS1pbnZhbGlkY2hhciIpOwotICAgICAgICAgIHRva2VuLnRpdGxlID0gIlxcdSIgKyBtWzBd
LmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpOworICAgICAgICAgIHZhciB0b2tlbiA9IGJ1aWxk
ZXIuY20ub3B0aW9ucy5zcGVjaWFsQ2hhclBsYWNlaG9sZGVyKG1bMF0pOwogICAgICAgICAgIGNv
bnRlbnQuYXBwZW5kQ2hpbGQodG9rZW4pOwogICAgICAgICAgIGJ1aWxkZXIuY29sICs9IDE7CiAg
ICAgICAgIH0KQEAgLTQ0NTcsNyArNDUxNyw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0
aW9uKCkgewogICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAgICAgcmV0dXJuIGZ1bmN0aW9uKGJ1
aWxkZXIsIHRleHQsIHN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgdGl0bGUpIHsKLSAgICAg
IHJldHVybiBpbm5lcihidWlsZGVyLCB0ZXh0LnJlcGxhY2UoLyB7Myx9Lywgc3BsaXQpLCBzdHls
ZSwgc3RhcnRTdHlsZSwgZW5kU3R5bGUsIHRpdGxlKTsKKyAgICAgIHJldHVybiBpbm5lcihidWls
ZGVyLCB0ZXh0LnJlcGxhY2UoLyB7Myx9L2csIHNwbGl0KSwgc3R5bGUsIHN0YXJ0U3R5bGUsIGVu
ZFN0eWxlLCB0aXRsZSk7CiAgICAgfTsKICAgfQogCkBAIC00NTU5LDcgKzQ2MTksOCBAQCB3aW5k
b3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB2YXIgbGFzdFRleHQgPSBsc3QodGV4
dCksIGxhc3RTcGFucyA9IHNwYW5zRm9yKHRleHQubGVuZ3RoIC0gMSksIG5saW5lcyA9IHRvLmxp
bmUgLSBmcm9tLmxpbmU7CiAKICAgICAvLyBGaXJzdCBhZGp1c3QgdGhlIGxpbmUgc3RydWN0dXJl
Ci0gICAgaWYgKGZyb20uY2ggPT0gMCAmJiB0by5jaCA9PSAwICYmIGxhc3RUZXh0ID09ICIiKSB7
CisgICAgaWYgKGZyb20uY2ggPT0gMCAmJiB0by5jaCA9PSAwICYmIGxhc3RUZXh0ID09ICIiICYm
CisgICAgICAgICghZG9jLmNtIHx8IGRvYy5jbS5vcHRpb25zLndob2xlTGluZVVwZGF0ZUJlZm9y
ZSkpIHsKICAgICAgIC8vIFRoaXMgaXMgYSB3aG9sZS1saW5lIHJlcGxhY2UuIFRyZWF0ZWQgc3Bl
Y2lhbGx5IHRvIG1ha2UKICAgICAgIC8vIHN1cmUgbGluZSBvYmplY3RzIG1vdmUgdGhlIHdheSB0
aGV5IGFyZSBzdXBwb3NlZCB0by4KICAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gdGV4dC5sZW5n
dGggLSAxLCBhZGRlZCA9IFtdOyBpIDwgZTsgKytpKQpAQCAtNTQ0Niw3ICs1NTA3LDcgQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgcmV0dXJuIHRydWU7CiAgIH0KIAot
ICB2YXIgaXNFeHRlbmRpbmdDaGFyID0gL1tcdTAzMDAtXHUwMzZGXHUwNDgzLVx1MDQ4N1x1MDQ4
OC1cdTA0ODlcdTA1OTEtXHUwNUJEXHUwNUJGXHUwNUMxLVx1MDVDMlx1MDVDNC1cdTA1QzVcdTA1
QzdcdTA2MTAtXHUwNjFBXHUwNjRCLVx1MDY1Rlx1MDY3MFx1MDZENi1cdTA2RENcdTA2REYtXHUw
NkU0XHUwNkU3LVx1MDZFOFx1MDZFQS1cdTA2RURcdUE2NkZcdUE2NzAtXHVBNjcyXHVBNjc0LVx1
QTY3RFx1QTY5Rlx1ZGMwMC1cdWRmZmZdLzsKKyAgdmFyIGlzRXh0ZW5kaW5nQ2hhciA9IC9bXHUw
MzAwLVx1MDM2Rlx1MDQ4My1cdTA0ODdcdTA0ODgtXHUwNDg5XHUwNTkxLVx1MDVCRFx1MDVCRlx1
MDVDMS1cdTA1QzJcdTA1QzQtXHUwNUM1XHUwNUM3XHUwNjEwLVx1MDYxQVx1MDY0Qi1cdTA2NUZc
dTA2NzBcdTA2RDYtXHUwNkRDXHUwNkRGLVx1MDZFNFx1MDZFNy1cdTA2RThcdTA2RUEtXHUwNkVE
XHVBNjZGXHUxREMw4oCTXHUxREZGXHUyMEQw4oCTXHUyMEZGXHVBNjcwLVx1QTY3Mlx1QTY3NC1c
dUE2N0RcdUE2OUZcdWRjMDAtXHVkZmZmXHVGRTIw4oCTXHVGRTJGXS87CiAKICAgLy8gRE9NIFVU
SUxJVElFUwogCkBAIC01NTA2LDggKzU1NjcsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5j
dGlvbigpIHsKICAgICB9OwogICBlbHNlIGlmIChzYWZhcmkgJiYgIS9WZXJzaW9uXC8oWzYtOV18
XGRcZClcYi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkKICAgICBzcGFuQWZmZWN0c1dyYXBw
aW5nID0gZnVuY3Rpb24oc3RyLCBpKSB7Ci0gICAgICB2YXIgcmVzdWx0ID0gL1wtW14gXC0/XXxc
P1teICFcJ1wiXCksLlwtXC86O1w/XF1cfV0vLnRlc3Qoc3RyLnNsaWNlKGkgLSAxLCBpICsgMSkp
OwotICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIHJldHVybiAvXC1bXiBcLT9dfFw/W14gIVwn
XCJcKSwuXC1cLzo7XD9cXVx9XS8udGVzdChzdHIuc2xpY2UoaSAtIDEsIGkgKyAxKSk7CiAgICAg
fTsKICAgZWxzZSBpZiAod2Via2l0ICYmIC9DaHJvbWVcLyg/OjI5fFszLTldXGR8XGRcZFxkKVwu
Ly50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKQogICAgIHNwYW5BZmZlY3RzV3JhcHBpbmcgPSBm
dW5jdGlvbihzdHIsIGkpIHsKQEAgLTU1MjAsOCArNTU4MCw3IEBAIHdpbmRvdy5Db2RlTWlycm9y
ID0gKGZ1bmN0aW9uKCkgewogICAgICAgICBpZiAoL1x3Ly50ZXN0KHN0ci5jaGFyQXQoaSAtIDIp
KSAmJiAvW15cLT9cLl0vLnRlc3Qoc3RyLmNoYXJBdChpKSkpIHJldHVybiB0cnVlOwogICAgICAg
ICBpZiAoaSA+IDIgJiYgL1tcZFwuLF0vLnRlc3Qoc3RyLmNoYXJBdChpIC0gMikpICYmIC9bXGRc
LixdLy50ZXN0KHN0ci5jaGFyQXQoaSkpKSByZXR1cm4gZmFsc2U7CiAgICAgICB9Ci0gICAgICB2
YXIgcmVzdWx0ID0gL1t+ISMlJiopPSt9XF18XCJcLj4sOjtdWyh7WzxdfC1bXlwtP1wuXHUyMDEw
LVx1MjAxZlx1MjAyNl18XD9bXHd+YEAjJCVcXiYqKF89K3tbfD48XXzigKZbXHd+YEAjJCVcXiYq
KF89K3tbPjxdLy50ZXN0KHN0ci5zbGljZShpIC0gMSwgaSArIDEpKTsKLSAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgICByZXR1cm4gL1t+ISMlJiopPSt9XF1cXHxcIlwuPiw6O11bKHtbPF18LVte
XC0/XC5cdTIwMTAtXHUyMDFmXHUyMDI2XXxcP1tcd35gQCMkJVxeJiooXz0re1t8PjxdfOKApltc
d35gQCMkJVxeJiooXz0re1s+PF0vLnRlc3Qoc3RyLnNsaWNlKGkgLSAxLCBpICsgMSkpOwogICAg
IH07CiAKICAgdmFyIGtub3duU2Nyb2xsYmFyV2lkdGg7CkBAIC01ODc3LDcgKzU5MzYsNyBAQCB3
aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKIAogICAvLyBUSEUgRU5ECiAKLSAgQ29k
ZU1pcnJvci52ZXJzaW9uID0gIjMuMTYuMSI7CisgIENvZGVNaXJyb3IudmVyc2lvbiA9ICIzLjIw
LjAiOwogCiAgIHJldHVybiBDb2RlTWlycm9yOwogfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29mZmVlc2Ny
aXB0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29k
ZU1pcnJvci9jb2ZmZWVzY3JpcHQuanMKaW5kZXggYjcyMDNmMTI0Yjk4YTM1OTNiODhmZjQzZjE0
MmViZmM1NGE3MTI3OC4uZThiZmU0OGEyNDhiY2E2YjY5MmIxZTA4NDhkOTYwM2M1YTE0M2MxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwv
Q29kZU1pcnJvci9jb2ZmZWVzY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2ZmZWVzY3JpcHQuanMKQEAgLTIsMzQ3
ICsyLDM1MyBAQAogICogTGluayB0byB0aGUgcHJvamVjdCdzIEdpdEh1YiBwYWdlOgogICogaHR0
cHM6Ly9naXRodWIuY29tL3BpY2toYXJkdC9jb2ZmZWVzY3JpcHQtY29kZW1pcnJvci1tb2RlCiAg
Ki8KLUNvZGVNaXJyb3IuZGVmaW5lTW9kZSgnY29mZmVlc2NyaXB0JywgZnVuY3Rpb24oY29uZikg
ewotICAgIHZhciBFUlJPUkNMQVNTID0gJ2Vycm9yJzsKLQotICAgIGZ1bmN0aW9uIHdvcmRSZWdl
eHAod29yZHMpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoIl4oKCIgKyB3b3Jkcy5qb2lu
KCIpfCgiKSArICIpKVxcYiIpOwotICAgIH0KLQotICAgIHZhciBzaW5nbGVPcGVyYXRvcnMgPSBu
ZXcgUmVnRXhwKCJeW1xcK1xcLVxcKi8lJnxcXF5+PD4hXD9dIik7Ci0gICAgdmFyIHNpbmdsZURl
bGltaXRlcnMgPSBuZXcgUmVnRXhwKCdeW1xcKFxcKVxcW1xcXVxce1xcfSw6YD07XFwuXScpOwot
ICAgIHZhciBkb3VibGVPcGVyYXRvcnMgPSBuZXcgUmVnRXhwKCJeKChcLT4pfChcPT4pfChcXCtc
XCspfChcXCtcXD0pfChcXC1cXC0pfChcXC1cXD0pfChcXCpcXCopfChcXCpcXD0pfChcXC9cXC8p
fChcXC9cXD0pfCg9PSl8KCE9KXwoPD0pfCg+PSl8KDw+KXwoPDwpfCg+Pil8KC8vKSkiKTsKLSAg
ICB2YXIgZG91YmxlRGVsaW1pdGVycyA9IG5ldyBSZWdFeHAoIl4oKFxcLlxcLil8KFxcKz0pfChc
XC09KXwoXFwqPSl8KCU9KXwoLz0pfCgmPSl8KFxcfD0pfChcXF49KSkiKTsKLSAgICB2YXIgdHJp
cGxlRGVsaW1pdGVycyA9IG5ldyBSZWdFeHAoIl4oKFxcLlxcLlxcLil8KC8vPSl8KD4+PSl8KDw8
PSl8KFxcKlxcKj0pKSIpOwotICAgIHZhciBpZGVudGlmaWVycyA9IG5ldyBSZWdFeHAoIl5bX0Et
WmEteiRdW19BLVphLXokMC05XSoiKTsKLSAgICB2YXIgcHJvcGVydGllcyA9IG5ldyBSZWdFeHAo
Il4oQHx0aGlzXC4pW19BLVphLXokXVtfQS1aYS16JDAtOV0qIik7Ci0KLSAgICB2YXIgd29yZE9w
ZXJhdG9ycyA9IHdvcmRSZWdleHAoWydhbmQnLCAnb3InLCAnbm90JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdpcycsICdpc250JywgJ2luJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZW9mJywgJ3R5cGVvZiddKTsKLSAgICB2YXIg
aW5kZW50S2V5d29yZHMgPSBbJ2ZvcicsICd3aGlsZScsICdsb29wJywgJ2lmJywgJ3VubGVzcycs
ICdlbHNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aXRjaCcsICd0cnknLCAnY2F0
Y2gnLCAnZmluYWxseScsICdjbGFzcyddOwotICAgIHZhciBjb21tb25LZXl3b3JkcyA9IFsnYnJl
YWsnLCAnYnknLCAnY29udGludWUnLCAnZGVidWdnZXInLCAnZGVsZXRlJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2RvJywgJ2luJywgJ29mJywgJ25ldycsICdyZXR1cm4nLCAndGhlbics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzJywgJ3Rocm93JywgJ3doZW4nLCAndW50
aWwnXTsKLQotICAgIHZhciBrZXl3b3JkcyA9IHdvcmRSZWdleHAoaW5kZW50S2V5d29yZHMuY29u
Y2F0KGNvbW1vbktleXdvcmRzKSk7Ci0KLSAgICBpbmRlbnRLZXl3b3JkcyA9IHdvcmRSZWdleHAo
aW5kZW50S2V5d29yZHMpOwotCi0KLSAgICB2YXIgc3RyaW5nUHJlZml4ZXMgPSBuZXcgUmVnRXhw
KCJeKCd7M318XCJ7M318WydcIl0pIik7Ci0gICAgdmFyIHJlZ2V4UHJlZml4ZXMgPSBuZXcgUmVn
RXhwKCJeKC97M318LykiKTsKLSAgICB2YXIgY29tbW9uQ29uc3RhbnRzID0gWydJbmZpbml0eScs
ICdOYU4nLCAndW5kZWZpbmVkJywgJ251bGwnLCAndHJ1ZScsICdmYWxzZScsICdvbicsICdvZmYn
LCAneWVzJywgJ25vJ107Ci0gICAgdmFyIGNvbnN0YW50cyA9IHdvcmRSZWdleHAoY29tbW9uQ29u
c3RhbnRzKTsKLQotICAgIC8vIFRva2VuaXplcnMKLSAgICBmdW5jdGlvbiB0b2tlbkJhc2Uoc3Ry
ZWFtLCBzdGF0ZSkgewotICAgICAgICAvLyBIYW5kbGUgc2NvcGUgY2hhbmdlcwotICAgICAgICBp
ZiAoc3RyZWFtLnNvbCgpKSB7Ci0gICAgICAgICAgICB2YXIgc2NvcGVPZmZzZXQgPSBzdGF0ZS5z
Y29wZXNbMF0ub2Zmc2V0OwotICAgICAgICAgICAgaWYgKHN0cmVhbS5lYXRTcGFjZSgpKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIGxpbmVPZmZzZXQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKLSAg
ICAgICAgICAgICAgICBpZiAobGluZU9mZnNldCA+IHNjb3BlT2Zmc2V0KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiAnaW5kZW50JzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxp
bmVPZmZzZXQgPCBzY29wZU9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rl
ZGVudCc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoc2NvcGVPZmZzZXQgPiAw
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlZGVudChzdHJlYW0sIHN0YXRlKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9CitDb2RlTWlycm9yLmRlZmluZU1vZGUoImNvZmZlZXNj
cmlwdCIsIGZ1bmN0aW9uKGNvbmYpIHsKKyAgdmFyIEVSUk9SQ0xBU1MgPSAiZXJyb3IiOworCisg
IGZ1bmN0aW9uIHdvcmRSZWdleHAod29yZHMpIHsKKyAgICByZXR1cm4gbmV3IFJlZ0V4cCgiXigo
IiArIHdvcmRzLmpvaW4oIil8KCIpICsgIikpXFxiIik7CisgIH0KKworICB2YXIgb3BlcmF0b3Jz
ID0gL14oPzotPnw9PnxcK1srPV0/fC1bXC09XT98XCpbXCo9XT98XC9bXC89XT98Wz0hXT18PFs+
PF0/PT98Pj4/PT98JT0/fCY9P3xcfD0/fFxePT98XH58IXxcPykvOworICB2YXIgZGVsaW1pdGVy
cyA9IC9eKD86WygpXFtcXXt9LDpgPTtdfFwuXC4/XC4/KS87CisgIHZhciBpZGVudGlmaWVycyA9
IC9eW19BLVphLXokXVtfQS1aYS16JDAtOV0qLzsKKyAgdmFyIHByb3BlcnRpZXMgPSAvXihAfHRo
aXNcLilbX0EtWmEteiRdW19BLVphLXokMC05XSovOworCisgIHZhciB3b3JkT3BlcmF0b3JzID0g
d29yZFJlZ2V4cChbImFuZCIsICJvciIsICJub3QiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJpcyIsICJpc250IiwgImluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiaW5zdGFuY2VvZiIsICJ0eXBlb2YiXSk7CisgIHZhciBpbmRlbnRLZXl3b3JkcyA9
IFsiZm9yIiwgIndoaWxlIiwgImxvb3AiLCAiaWYiLCAidW5sZXNzIiwgImVsc2UiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgInN3aXRjaCIsICJ0cnkiLCAiY2F0Y2giLCAiZmluYWxseSIsICJj
bGFzcyJdOworICB2YXIgY29tbW9uS2V5d29yZHMgPSBbImJyZWFrIiwgImJ5IiwgImNvbnRpbnVl
IiwgImRlYnVnZ2VyIiwgImRlbGV0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZG8iLCAi
aW4iLCAib2YiLCAibmV3IiwgInJldHVybiIsICJ0aGVuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICJ0aGlzIiwgInRocm93IiwgIndoZW4iLCAidW50aWwiXTsKKworICB2YXIga2V5d29yZHMg
PSB3b3JkUmVnZXhwKGluZGVudEtleXdvcmRzLmNvbmNhdChjb21tb25LZXl3b3JkcykpOworCisg
IGluZGVudEtleXdvcmRzID0gd29yZFJlZ2V4cChpbmRlbnRLZXl3b3Jkcyk7CisKKworICB2YXIg
c3RyaW5nUHJlZml4ZXMgPSAvXignezN9fFwiezN9fFsnXCJdKS87CisgIHZhciByZWdleFByZWZp
eGVzID0gL14oXC97M318XC8pLzsKKyAgdmFyIGNvbW1vbkNvbnN0YW50cyA9IFsiSW5maW5pdHki
LCAiTmFOIiwgInVuZGVmaW5lZCIsICJudWxsIiwgInRydWUiLCAiZmFsc2UiLCAib24iLCAib2Zm
IiwgInllcyIsICJubyJdOworICB2YXIgY29uc3RhbnRzID0gd29yZFJlZ2V4cChjb21tb25Db25z
dGFudHMpOworCisgIC8vIFRva2VuaXplcnMKKyAgZnVuY3Rpb24gdG9rZW5CYXNlKHN0cmVhbSwg
c3RhdGUpIHsKKyAgICAvLyBIYW5kbGUgc2NvcGUgY2hhbmdlcworICAgIGlmIChzdHJlYW0uc29s
KCkpIHsKKyAgICAgIGlmIChzdGF0ZS5zY29wZS5hbGlnbiA9PT0gbnVsbCkgc3RhdGUuc2NvcGUu
YWxpZ24gPSBmYWxzZTsKKyAgICAgIHZhciBzY29wZU9mZnNldCA9IHN0YXRlLnNjb3BlLm9mZnNl
dDsKKyAgICAgIGlmIChzdHJlYW0uZWF0U3BhY2UoKSkgeworICAgICAgICB2YXIgbGluZU9mZnNl
dCA9IHN0cmVhbS5pbmRlbnRhdGlvbigpOworICAgICAgICBpZiAobGluZU9mZnNldCA+IHNjb3Bl
T2Zmc2V0ICYmIHN0YXRlLnNjb3BlLnR5cGUgPT0gImNvZmZlZSIpIHsKKyAgICAgICAgICByZXR1
cm4gImluZGVudCI7CisgICAgICAgIH0gZWxzZSBpZiAobGluZU9mZnNldCA8IHNjb3BlT2Zmc2V0
KSB7CisgICAgICAgICAgcmV0dXJuICJkZWRlbnQiOwogICAgICAgICB9Ci0gICAgICAgIGlmIChz
dHJlYW0uZWF0U3BhY2UoKSkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0K
LQotICAgICAgICB2YXIgY2ggPSBzdHJlYW0ucGVlaygpOwotCi0gICAgICAgIC8vIEhhbmRsZSBk
b2NjbyB0aXRsZSBjb21tZW50IChzaW5nbGUgbGluZSkKLSAgICAgICAgaWYgKHN0cmVhbS5tYXRj
aCgiIyMjIyIpKSB7Ci0gICAgICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gJ2NvbW1lbnQnOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxlIG11bHRp
IGxpbmUgY29tbWVudHMKLSAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgiIyMjIikpIHsKLSAgICAg
ICAgICAgIHN0YXRlLnRva2VuaXplID0gbG9uZ0NvbW1lbnQ7Ci0gICAgICAgICAgICByZXR1cm4g
c3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgICAgIHJldHVybiBudWxsOworICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHNjb3BlT2Zmc2V0ID4gMCkgeworICAgICAgICAgIGRl
ZGVudChzdHJlYW0sIHN0YXRlKTsKICAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBpZiAo
c3RyZWFtLmVhdFNwYWNlKCkpIHsKKyAgICAgIHJldHVybiBudWxsOworICAgIH0KIAotICAgICAg
ICAvLyBTaW5nbGUgbGluZSBjb21tZW50Ci0gICAgICAgIGlmIChjaCA9PT0gJyMnKSB7Ci0gICAg
ICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7Ci0gICAgICAgICAgICByZXR1cm4gJ2NvbW1lbnQn
OwotICAgICAgICB9CisgICAgdmFyIGNoID0gc3RyZWFtLnBlZWsoKTsKIAotICAgICAgICAvLyBI
YW5kbGUgbnVtYmVyIGxpdGVyYWxzCi0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2goL14tP1swLTlc
Ll0vLCBmYWxzZSkpIHsKLSAgICAgICAgICAgIHZhciBmbG9hdExpdGVyYWwgPSBmYWxzZTsKLSAg
ICAgICAgICAgIC8vIEZsb2F0cwotICAgICAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XGQq
XC5cZCsoZVtcK1wtXT9cZCspPy9pKSkgewotICAgICAgICAgICAgICBmbG9hdExpdGVyYWwgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XGQr
XC5cZCovKSkgewotICAgICAgICAgICAgICBmbG9hdExpdGVyYWwgPSB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XC5cZCsvKSkgewotICAgICAg
ICAgICAgICBmbG9hdExpdGVyYWwgPSB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoZmxvYXRMaXRlcmFsKSB7Ci0gICAgICAgICAgICAgICAgLy8gcHJldmVudCBmcm9tIGdl
dHRpbmcgZXh0cmEgLiBvbiAxLi4KLSAgICAgICAgICAgICAgICBpZiAoc3RyZWFtLnBlZWsoKSA9
PSAiLiIpewotICAgICAgICAgICAgICAgICAgICBzdHJlYW0uYmFja1VwKDEpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gJ251bWJlcic7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICAvLyBJbnRlZ2VycwotICAgICAgICAgICAgdmFyIGludExpdGVyYWwgPSBm
YWxzZTsKLSAgICAgICAgICAgIC8vIEhleAotICAgICAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgv
Xi0/MHhbMC05YS1mXSsvaSkpIHsKLSAgICAgICAgICAgICAgaW50TGl0ZXJhbCA9IHRydWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBEZWNpbWFsCi0gICAgICAgICAgICBpZiAoc3Ry
ZWFtLm1hdGNoKC9eLT9bMS05XVxkKihlW1wrXC1dP1xkKyk/LykpIHsKLSAgICAgICAgICAgICAg
ICBpbnRMaXRlcmFsID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIFplcm8g
YnkgaXRzZWxmIHdpdGggbm8gb3RoZXIgcGllY2Ugb2YgbnVtYmVyLgotICAgICAgICAgICAgaWYg
KHN0cmVhbS5tYXRjaCgvXi0/MCg/IVtcZHhdKS9pKSkgewotICAgICAgICAgICAgICBpbnRMaXRl
cmFsID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpbnRMaXRlcmFsKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdudW1iZXInOwotICAgICAgICAgICAgfQotICAgICAg
ICB9CisgICAgLy8gSGFuZGxlIGRvY2NvIHRpdGxlIGNvbW1lbnQgKHNpbmdsZSBsaW5lKQorICAg
IGlmIChzdHJlYW0ubWF0Y2goIiMjIyMiKSkgeworICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOwor
ICAgICAgcmV0dXJuICJjb21tZW50IjsKKyAgICB9CiAKLSAgICAgICAgLy8gSGFuZGxlIHN0cmlu
Z3MKLSAgICAgICAgaWYgKHN0cmVhbS5tYXRjaChzdHJpbmdQcmVmaXhlcykpIHsKLSAgICAgICAg
ICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5GYWN0b3J5KHN0cmVhbS5jdXJyZW50KCksICdzdHJp
bmcnKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsK
LSAgICAgICAgfQotICAgICAgICAvLyBIYW5kbGUgcmVnZXggbGl0ZXJhbHMKLSAgICAgICAgaWYg
KHN0cmVhbS5tYXRjaChyZWdleFByZWZpeGVzKSkgewotICAgICAgICAgICAgaWYgKHN0cmVhbS5j
dXJyZW50KCkgIT0gJy8nIHx8IHN0cmVhbS5tYXRjaCgvXi4qXC8vLCBmYWxzZSkpIHsgLy8gcHJl
dmVudCBoaWdobGlnaHQgb2YgZGl2aXNpb24KLSAgICAgICAgICAgICAgICBzdGF0ZS50b2tlbml6
ZSA9IHRva2VuRmFjdG9yeShzdHJlYW0uY3VycmVudCgpLCAnc3RyaW5nLTInKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHN0cmVhbS5iYWNrVXAoMSk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KKyAgICAvLyBIYW5kbGUgbXVsdGkgbGluZSBjb21tZW50cworICAgIGlm
IChzdHJlYW0ubWF0Y2goIiMjIyIpKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IGxvbmdDb21t
ZW50OworICAgICAgcmV0dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgIH0K
IAotICAgICAgICAvLyBIYW5kbGUgb3BlcmF0b3JzIGFuZCBkZWxpbWl0ZXJzCi0gICAgICAgIGlm
IChzdHJlYW0ubWF0Y2godHJpcGxlRGVsaW1pdGVycykgfHwgc3RyZWFtLm1hdGNoKGRvdWJsZURl
bGltaXRlcnMpKSB7Ci0gICAgICAgICAgICByZXR1cm4gJ3B1bmN0dWF0aW9uJzsKLSAgICAgICAg
fQotICAgICAgICBpZiAoc3RyZWFtLm1hdGNoKGRvdWJsZU9wZXJhdG9ycykKLSAgICAgICAgICAg
IHx8IHN0cmVhbS5tYXRjaChzaW5nbGVPcGVyYXRvcnMpCi0gICAgICAgICAgICB8fCBzdHJlYW0u
bWF0Y2god29yZE9wZXJhdG9ycykpIHsKLSAgICAgICAgICAgIHJldHVybiAnb3BlcmF0b3InOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2goc2luZ2xlRGVsaW1pdGVycykpIHsK
LSAgICAgICAgICAgIHJldHVybiAncHVuY3R1YXRpb24nOwotICAgICAgICB9CisgICAgLy8gU2lu
Z2xlIGxpbmUgY29tbWVudAorICAgIGlmIChjaCA9PT0gIiMiKSB7CisgICAgICBzdHJlYW0uc2tp
cFRvRW5kKCk7CisgICAgICByZXR1cm4gImNvbW1lbnQiOworICAgIH0KIAotICAgICAgICBpZiAo
c3RyZWFtLm1hdGNoKGNvbnN0YW50cykpIHsKLSAgICAgICAgICAgIHJldHVybiAnYXRvbSc7Cisg
ICAgLy8gSGFuZGxlIG51bWJlciBsaXRlcmFscworICAgIGlmIChzdHJlYW0ubWF0Y2goL14tP1sw
LTlcLl0vLCBmYWxzZSkpIHsKKyAgICAgIHZhciBmbG9hdExpdGVyYWwgPSBmYWxzZTsKKyAgICAg
IC8vIEZsb2F0cworICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XGQqXC5cZCsoZVtcK1wtXT9c
ZCspPy9pKSkgeworICAgICAgICBmbG9hdExpdGVyYWwgPSB0cnVlOworICAgICAgfQorICAgICAg
aWYgKHN0cmVhbS5tYXRjaCgvXi0/XGQrXC5cZCovKSkgeworICAgICAgICBmbG9hdExpdGVyYWwg
PSB0cnVlOworICAgICAgfQorICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/XC5cZCsvKSkgewor
ICAgICAgICBmbG9hdExpdGVyYWwgPSB0cnVlOworICAgICAgfQorCisgICAgICBpZiAoZmxvYXRM
aXRlcmFsKSB7CisgICAgICAgIC8vIHByZXZlbnQgZnJvbSBnZXR0aW5nIGV4dHJhIC4gb24gMS4u
CisgICAgICAgIGlmIChzdHJlYW0ucGVlaygpID09ICIuIil7CisgICAgICAgICAgc3RyZWFtLmJh
Y2tVcCgxKTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gIm51bWJlciI7CisgICAgICB9Cisg
ICAgICAvLyBJbnRlZ2VycworICAgICAgdmFyIGludExpdGVyYWwgPSBmYWxzZTsKKyAgICAgIC8v
IEhleAorICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/MHhbMC05YS1mXSsvaSkpIHsKKyAgICAg
ICAgaW50TGl0ZXJhbCA9IHRydWU7CisgICAgICB9CisgICAgICAvLyBEZWNpbWFsCisgICAgICBp
ZiAoc3RyZWFtLm1hdGNoKC9eLT9bMS05XVxkKihlW1wrXC1dP1xkKyk/LykpIHsKKyAgICAgICAg
aW50TGl0ZXJhbCA9IHRydWU7CisgICAgICB9CisgICAgICAvLyBaZXJvIGJ5IGl0c2VsZiB3aXRo
IG5vIG90aGVyIHBpZWNlIG9mIG51bWJlci4KKyAgICAgIGlmIChzdHJlYW0ubWF0Y2goL14tPzAo
PyFbXGR4XSkvaSkpIHsKKyAgICAgICAgaW50TGl0ZXJhbCA9IHRydWU7CisgICAgICB9CisgICAg
ICBpZiAoaW50TGl0ZXJhbCkgeworICAgICAgICByZXR1cm4gIm51bWJlciI7CisgICAgICB9Cisg
ICAgfQogCi0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2goa2V5d29yZHMpKSB7Ci0gICAgICAgICAg
ICByZXR1cm4gJ2tleXdvcmQnOwotICAgICAgICB9CisgICAgLy8gSGFuZGxlIHN0cmluZ3MKKyAg
ICBpZiAoc3RyZWFtLm1hdGNoKHN0cmluZ1ByZWZpeGVzKSkgeworICAgICAgc3RhdGUudG9rZW5p
emUgPSB0b2tlbkZhY3Rvcnkoc3RyZWFtLmN1cnJlbnQoKSwgInN0cmluZyIpOworICAgICAgcmV0
dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgIH0KKyAgICAvLyBIYW5kbGUg
cmVnZXggbGl0ZXJhbHMKKyAgICBpZiAoc3RyZWFtLm1hdGNoKHJlZ2V4UHJlZml4ZXMpKSB7Cisg
ICAgICBpZiAoc3RyZWFtLmN1cnJlbnQoKSAhPSAiLyIgfHwgc3RyZWFtLm1hdGNoKC9eLipcLy8s
IGZhbHNlKSkgeyAvLyBwcmV2ZW50IGhpZ2hsaWdodCBvZiBkaXZpc2lvbgorICAgICAgICBzdGF0
ZS50b2tlbml6ZSA9IHRva2VuRmFjdG9yeShzdHJlYW0uY3VycmVudCgpLCAic3RyaW5nLTIiKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgICAgfSBl
bHNlIHsKKyAgICAgICAgc3RyZWFtLmJhY2tVcCgxKTsKKyAgICAgIH0KKyAgICB9CiAKLSAgICAg
ICAgaWYgKHN0cmVhbS5tYXRjaChpZGVudGlmaWVycykpIHsKLSAgICAgICAgICAgIHJldHVybiAn
dmFyaWFibGUnOwotICAgICAgICB9CisgICAgLy8gSGFuZGxlIG9wZXJhdG9ycyBhbmQgZGVsaW1p
dGVycworICAgIGlmIChzdHJlYW0ubWF0Y2gob3BlcmF0b3JzKSB8fCBzdHJlYW0ubWF0Y2god29y
ZE9wZXJhdG9ycykpIHsKKyAgICAgIHJldHVybiAib3BlcmF0b3IiOworICAgIH0KKyAgICBpZiAo
c3RyZWFtLm1hdGNoKGRlbGltaXRlcnMpKSB7CisgICAgICByZXR1cm4gInB1bmN0dWF0aW9uIjsK
KyAgICB9CiAKLSAgICAgICAgaWYgKHN0cmVhbS5tYXRjaChwcm9wZXJ0aWVzKSkgewotICAgICAg
ICAgICAgcmV0dXJuICdwcm9wZXJ0eSc7Ci0gICAgICAgIH0KKyAgICBpZiAoc3RyZWFtLm1hdGNo
KGNvbnN0YW50cykpIHsKKyAgICAgIHJldHVybiAiYXRvbSI7CisgICAgfQogCi0gICAgICAgIC8v
IEhhbmRsZSBub24tZGV0ZWN0ZWQgaXRlbXMKLSAgICAgICAgc3RyZWFtLm5leHQoKTsKLSAgICAg
ICAgcmV0dXJuIEVSUk9SQ0xBU1M7CisgICAgaWYgKHN0cmVhbS5tYXRjaChrZXl3b3JkcykpIHsK
KyAgICAgIHJldHVybiAia2V5d29yZCI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gdG9rZW5GYWN0
b3J5KGRlbGltaXRlciwgb3V0Y2xhc3MpIHsKLSAgICAgICAgdmFyIHNpbmdsZWxpbmUgPSBkZWxp
bWl0ZXIubGVuZ3RoID09IDE7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbihzdHJlYW0sIHN0YXRl
KSB7Ci0gICAgICAgICAgICB3aGlsZSAoIXN0cmVhbS5lb2woKSkgewotICAgICAgICAgICAgICAg
IHN0cmVhbS5lYXRXaGlsZSgvW14nIlwvXFxdLyk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmVh
bS5lYXQoJ1xcJykpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtLm5leHQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHNpbmdsZWxpbmUgJiYgc3RyZWFtLmVvbCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gb3V0Y2xhc3M7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmVhbS5tYXRjaChkZWxpbWl0ZXIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gb3V0Y2xhc3M7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3RyZWFtLmVhdCgvWyciXC9dLyk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHNpbmdsZWxpbmUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoY29uZi5tb2RlLnNpbmdsZUxpbmVTdHJpbmdFcnJvcnMpIHsKLSAgICAgICAg
ICAgICAgICAgICAgb3V0Y2xhc3MgPSBFUlJPUkNMQVNTOwotICAgICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBvdXRjbGFz
czsKLSAgICAgICAgfTsKKyAgICBpZiAoc3RyZWFtLm1hdGNoKGlkZW50aWZpZXJzKSkgeworICAg
ICAgcmV0dXJuICJ2YXJpYWJsZSI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gbG9uZ0NvbW1lbnQo
c3RyZWFtLCBzdGF0ZSkgewotICAgICAgICB3aGlsZSAoIXN0cmVhbS5lb2woKSkgewotICAgICAg
ICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXiNdLyk7Ci0gICAgICAgICAgICBpZiAoc3RyZWFtLm1h
dGNoKCIjIyMiKSkgewotICAgICAgICAgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNl
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3Ry
ZWFtLmVhdFdoaWxlKCIjIik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJjb21tZW50IjsK
KyAgICBpZiAoc3RyZWFtLm1hdGNoKHByb3BlcnRpZXMpKSB7CisgICAgICByZXR1cm4gInByb3Bl
cnR5IjsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBpbmRlbnQoc3RyZWFtLCBzdGF0ZSwgdHlwZSkg
ewotICAgICAgICB0eXBlID0gdHlwZSB8fCAnY29mZmVlJzsKLSAgICAgICAgdmFyIGluZGVudFVu
aXQgPSAwOwotICAgICAgICBpZiAodHlwZSA9PT0gJ2NvZmZlZScpIHsKLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgc3RhdGUuc2NvcGVzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHN0YXRlLnNjb3Blc1tpXS50eXBlID09PSAnY29mZmVlJykgewotICAgICAgICAg
ICAgICAgICAgICBpbmRlbnRVbml0ID0gc3RhdGUuc2NvcGVzW2ldLm9mZnNldCArIGNvbmYuaW5k
ZW50VW5pdDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQorICAgIC8vIEhhbmRsZSBub24tZGV0ZWN0ZWQgaXRlbXMKKyAgICBzdHJl
YW0ubmV4dCgpOworICAgIHJldHVybiBFUlJPUkNMQVNTOworICB9CisKKyAgZnVuY3Rpb24gdG9r
ZW5GYWN0b3J5KGRlbGltaXRlciwgb3V0Y2xhc3MpIHsKKyAgICB2YXIgc2luZ2xlbGluZSA9IGRl
bGltaXRlci5sZW5ndGggPT0gMTsKKyAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkg
eworICAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsKKyAgICAgICAgc3RyZWFtLmVhdFdoaWxl
KC9bXiciXC9cXF0vKTsKKyAgICAgICAgaWYgKHN0cmVhbS5lYXQoIlxcIikpIHsKKyAgICAgICAg
ICBzdHJlYW0ubmV4dCgpOworICAgICAgICAgIGlmIChzaW5nbGVsaW5lICYmIHN0cmVhbS5lb2wo
KSkgeworICAgICAgICAgICAgcmV0dXJuIG91dGNsYXNzOworICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIGlmIChzdHJlYW0ubWF0Y2goZGVsaW1pdGVyKSkgeworICAgICAgICAgIHN0YXRlLnRv
a2VuaXplID0gdG9rZW5CYXNlOworICAgICAgICAgIHJldHVybiBvdXRjbGFzczsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGluZGVudFVuaXQgPSBzdHJlYW0uY29sdW1uKCkgKyBzdHJl
YW0uY3VycmVudCgpLmxlbmd0aDsKKyAgICAgICAgICBzdHJlYW0uZWF0KC9bJyJcL10vKTsKICAg
ICAgICAgfQotICAgICAgICBzdGF0ZS5zY29wZXMudW5zaGlmdCh7Ci0gICAgICAgICAgICBvZmZz
ZXQ6IGluZGVudFVuaXQsCi0gICAgICAgICAgICB0eXBlOiB0eXBlCi0gICAgICAgIH0pOwotICAg
IH0KLQotICAgIGZ1bmN0aW9uIGRlZGVudChzdHJlYW0sIHN0YXRlKSB7Ci0gICAgICAgIGlmIChz
dGF0ZS5zY29wZXMubGVuZ3RoID09IDEpIHJldHVybjsKLSAgICAgICAgaWYgKHN0YXRlLnNjb3Bl
c1swXS50eXBlID09PSAnY29mZmVlJykgewotICAgICAgICAgICAgdmFyIF9pbmRlbnQgPSBzdHJl
YW0uaW5kZW50YXRpb24oKTsKLSAgICAgICAgICAgIHZhciBfaW5kZW50X2luZGV4ID0gLTE7Ci0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLnNjb3Blcy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgICAgIGlmIChfaW5kZW50ID09PSBzdGF0ZS5zY29wZXNbaV0ub2Zmc2V0
KSB7Ci0gICAgICAgICAgICAgICAgICAgIF9pbmRlbnRfaW5kZXggPSBpOwotICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoX2luZGVudF9pbmRleCA9PT0gLTEpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlIChzdGF0ZS5zY29wZXNbMF0u
b2Zmc2V0ICE9PSBfaW5kZW50KSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUuc2NvcGVzLnNoaWZ0
KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9Cisg
ICAgICBpZiAoc2luZ2xlbGluZSkgeworICAgICAgICBpZiAoY29uZi5tb2RlLnNpbmdsZUxpbmVT
dHJpbmdFcnJvcnMpIHsKKyAgICAgICAgICBvdXRjbGFzcyA9IEVSUk9SQ0xBU1M7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBzdGF0ZS5zY29wZXMuc2hpZnQoKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTsKICAg
ICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIG91dGNsYXNzOworICAgIH07CisgIH0KKwor
ICBmdW5jdGlvbiBsb25nQ29tbWVudChzdHJlYW0sIHN0YXRlKSB7CisgICAgd2hpbGUgKCFzdHJl
YW0uZW9sKCkpIHsKKyAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW14jXS8pOworICAgICAgaWYgKHN0
cmVhbS5tYXRjaCgiIyMjIikpIHsKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7
CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgc3RyZWFtLmVhdFdoaWxlKCIjIik7CiAg
ICAgfQotCi0gICAgZnVuY3Rpb24gdG9rZW5MZXhlcihzdHJlYW0sIHN0YXRlKSB7Ci0gICAgICAg
IHZhciBzdHlsZSA9IHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOwotICAgICAgICB2YXIg
Y3VycmVudCA9IHN0cmVhbS5jdXJyZW50KCk7Ci0KLSAgICAgICAgLy8gSGFuZGxlICcuJyBjb25u
ZWN0ZWQgaWRlbnRpZmllcnMKLSAgICAgICAgaWYgKGN1cnJlbnQgPT09ICcuJykgewotICAgICAg
ICAgICAgc3R5bGUgPSBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKLSAgICAgICAgICAg
IGN1cnJlbnQgPSBzdHJlYW0uY3VycmVudCgpOwotICAgICAgICAgICAgaWYgKC9eXC5bXHckXSsk
Ly50ZXN0KGN1cnJlbnQpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICd2YXJpYWJsZSc7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUkNMQVNTOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSGFuZGxlIHNjb3BlIGNoYW5n
ZXMuCi0gICAgICAgIGlmIChjdXJyZW50ID09PSAncmV0dXJuJykgewotICAgICAgICAgICAgc3Rh
dGUuZGVkZW50ICs9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCgoY3VycmVudCA9PT0gJy0+
JyB8fCBjdXJyZW50ID09PSAnPT4nKSAmJgotICAgICAgICAgICAgICAgICAgIXN0YXRlLmxhbWJk
YSAmJgotICAgICAgICAgICAgICAgICAgc3RhdGUuc2NvcGVzWzBdLnR5cGUgPT0gJ2NvZmZlZScg
JiYKLSAgICAgICAgICAgICAgICAgIHN0cmVhbS5wZWVrKCkgPT09ICcnKQotICAgICAgICAgICAg
ICAgfHwgc3R5bGUgPT09ICdpbmRlbnQnKSB7Ci0gICAgICAgICAgICBpbmRlbnQoc3RyZWFtLCBz
dGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIGRlbGltaXRlcl9pbmRleCA9ICdbKHsnLmlu
ZGV4T2YoY3VycmVudCk7Ci0gICAgICAgIGlmIChkZWxpbWl0ZXJfaW5kZXggIT09IC0xKSB7Ci0g
ICAgICAgICAgICBpbmRlbnQoc3RyZWFtLCBzdGF0ZSwgJ10pfScuc2xpY2UoZGVsaW1pdGVyX2lu
ZGV4LCBkZWxpbWl0ZXJfaW5kZXgrMSkpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpbmRlbnRL
ZXl3b3Jkcy5leGVjKGN1cnJlbnQpKXsKLSAgICAgICAgICAgIGluZGVudChzdHJlYW0sIHN0YXRl
KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3VycmVudCA9PSAndGhlbicpewotICAgICAgICAg
ICAgZGVkZW50KHN0cmVhbSwgc3RhdGUpOwotICAgICAgICB9Ci0KLQotICAgICAgICBpZiAoc3R5
bGUgPT09ICdkZWRlbnQnKSB7Ci0gICAgICAgICAgICBpZiAoZGVkZW50KHN0cmVhbSwgc3RhdGUp
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SQ0xBU1M7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgZGVsaW1pdGVyX2luZGV4ID0gJ10pfScuaW5kZXhPZihjdXJyZW50
KTsKLSAgICAgICAgaWYgKGRlbGltaXRlcl9pbmRleCAhPT0gLTEpIHsKLSAgICAgICAgICAgIGlm
IChkZWRlbnQoc3RyZWFtLCBzdGF0ZSkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JD
TEFTUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoc3RhdGUuZGVkZW50
ID4gMCAmJiBzdHJlYW0uZW9sKCkgJiYgc3RhdGUuc2NvcGVzWzBdLnR5cGUgPT0gJ2NvZmZlZScp
IHsKLSAgICAgICAgICAgIGlmIChzdGF0ZS5zY29wZXMubGVuZ3RoID4gMSkgc3RhdGUuc2NvcGVz
LnNoaWZ0KCk7Ci0gICAgICAgICAgICBzdGF0ZS5kZWRlbnQgLT0gMTsKKyAgICByZXR1cm4gImNv
bW1lbnQiOworICB9CisKKyAgZnVuY3Rpb24gaW5kZW50KHN0cmVhbSwgc3RhdGUsIHR5cGUpIHsK
KyAgICB0eXBlID0gdHlwZSB8fCAiY29mZmVlIjsKKyAgICB2YXIgb2Zmc2V0ID0gMCwgYWxpZ24g
PSBmYWxzZSwgYWxpZ25PZmZzZXQgPSBudWxsOworICAgIGZvciAodmFyIHNjb3BlID0gc3RhdGUu
c2NvcGU7IHNjb3BlOyBzY29wZSA9IHNjb3BlLnByZXYpIHsKKyAgICAgIGlmIChzY29wZS50eXBl
ID09PSAiY29mZmVlIikgeworICAgICAgICBvZmZzZXQgPSBzY29wZS5vZmZzZXQgKyBjb25mLmlu
ZGVudFVuaXQ7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZiAodHlwZSAh
PT0gImNvZmZlZSIpIHsKKyAgICAgIGFsaWduID0gbnVsbDsKKyAgICAgIGFsaWduT2Zmc2V0ID0g
c3RyZWFtLmNvbHVtbigpICsgc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGg7CisgICAgfSBlbHNlIGlm
IChzdGF0ZS5zY29wZS5hbGlnbikgeworICAgICAgc3RhdGUuc2NvcGUuYWxpZ24gPSBmYWxzZTsK
KyAgICB9CisgICAgc3RhdGUuc2NvcGUgPSB7CisgICAgICBvZmZzZXQ6IG9mZnNldCwKKyAgICAg
IHR5cGU6IHR5cGUsCisgICAgICBwcmV2OiBzdGF0ZS5zY29wZSwKKyAgICAgIGFsaWduOiBhbGln
biwKKyAgICAgIGFsaWduT2Zmc2V0OiBhbGlnbk9mZnNldAorICAgIH07CisgIH0KKworICBmdW5j
dGlvbiBkZWRlbnQoc3RyZWFtLCBzdGF0ZSkgeworICAgIGlmICghc3RhdGUuc2NvcGUucHJldikg
cmV0dXJuOworICAgIGlmIChzdGF0ZS5zY29wZS50eXBlID09PSAiY29mZmVlIikgeworICAgICAg
dmFyIF9pbmRlbnQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKKyAgICAgIHZhciBtYXRjaGVkID0g
ZmFsc2U7CisgICAgICBmb3IgKHZhciBzY29wZSA9IHN0YXRlLnNjb3BlOyBzY29wZTsgc2NvcGUg
PSBzY29wZS5wcmV2KSB7CisgICAgICAgIGlmIChfaW5kZW50ID09PSBzY29wZS5vZmZzZXQpIHsK
KyAgICAgICAgICBtYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
Ci0gICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgIH0KKyAgICAgIGlmICghbWF0Y2hlZCkgewor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIHdoaWxlIChzdGF0ZS5zY29wZS5w
cmV2ICYmIHN0YXRlLnNjb3BlLm9mZnNldCAhPT0gX2luZGVudCkgeworICAgICAgICBzdGF0ZS5z
Y29wZSA9IHN0YXRlLnNjb3BlLnByZXY7CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfSBlbHNlIHsKKyAgICAgIHN0YXRlLnNjb3BlID0gc3RhdGUuc2NvcGUucHJldjsKKyAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICBmdW5jdGlvbiB0b2tlbkxleGVyKHN0cmVh
bSwgc3RhdGUpIHsKKyAgICB2YXIgc3R5bGUgPSBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRl
KTsKKyAgICB2YXIgY3VycmVudCA9IHN0cmVhbS5jdXJyZW50KCk7CisKKyAgICAvLyBIYW5kbGUg
Ii4iIGNvbm5lY3RlZCBpZGVudGlmaWVycworICAgIGlmIChjdXJyZW50ID09PSAiLiIpIHsKKyAg
ICAgIHN0eWxlID0gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgICBjdXJyZW50
ID0gc3RyZWFtLmN1cnJlbnQoKTsKKyAgICAgIGlmICgvXlwuW1x3JF0rJC8udGVzdChjdXJyZW50
KSkgeworICAgICAgICByZXR1cm4gInZhcmlhYmxlIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg
IHJldHVybiBFUlJPUkNMQVNTOworICAgICAgfQogICAgIH0KIAotICAgIHZhciBleHRlcm5hbCA9
IHsKLSAgICAgICAgc3RhcnRTdGF0ZTogZnVuY3Rpb24oYmFzZWNvbHVtbikgewotICAgICAgICAg
ICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgdG9rZW5pemU6IHRva2VuQmFzZSwKLSAgICAgICAg
ICAgICAgc2NvcGVzOiBbe29mZnNldDpiYXNlY29sdW1uIHx8IDAsIHR5cGU6J2NvZmZlZSd9XSwK
LSAgICAgICAgICAgICAgbGFzdFRva2VuOiBudWxsLAotICAgICAgICAgICAgICBsYW1iZGE6IGZh
bHNlLAotICAgICAgICAgICAgICBkZWRlbnQ6IDAKLSAgICAgICAgICB9OwotICAgICAgICB9LAot
Ci0gICAgICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7Ci0gICAgICAgICAgICB2
YXIgc3R5bGUgPSB0b2tlbkxleGVyKHN0cmVhbSwgc3RhdGUpOwotCi0gICAgICAgICAgICBzdGF0
ZS5sYXN0VG9rZW4gPSB7c3R5bGU6c3R5bGUsIGNvbnRlbnQ6IHN0cmVhbS5jdXJyZW50KCl9Owot
Ci0gICAgICAgICAgICBpZiAoc3RyZWFtLmVvbCgpICYmIHN0cmVhbS5sYW1iZGEpIHsKLSAgICAg
ICAgICAgICAgICBzdGF0ZS5sYW1iZGEgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgcmV0dXJuIHN0eWxlOwotICAgICAgICB9LAorICAgIC8vIEhhbmRsZSBzY29wZSBjaGFu
Z2VzLgorICAgIGlmIChjdXJyZW50ID09PSAicmV0dXJuIikgeworICAgICAgc3RhdGUuZGVkZW50
ICs9IDE7CisgICAgfQorICAgIGlmICgoKGN1cnJlbnQgPT09ICItPiIgfHwgY3VycmVudCA9PT0g
Ij0+IikgJiYKKyAgICAgICAgICFzdGF0ZS5sYW1iZGEgJiYKKyAgICAgICAgICFzdHJlYW0ucGVl
aygpKQorICAgICAgICB8fCBzdHlsZSA9PT0gImluZGVudCIpIHsKKyAgICAgIGluZGVudChzdHJl
YW0sIHN0YXRlKTsKKyAgICB9CisgICAgdmFyIGRlbGltaXRlcl9pbmRleCA9ICJbKHsiLmluZGV4
T2YoY3VycmVudCk7CisgICAgaWYgKGRlbGltaXRlcl9pbmRleCAhPT0gLTEpIHsKKyAgICAgIGlu
ZGVudChzdHJlYW0sIHN0YXRlLCAiXSl9Ii5zbGljZShkZWxpbWl0ZXJfaW5kZXgsIGRlbGltaXRl
cl9pbmRleCsxKSk7CisgICAgfQorICAgIGlmIChpbmRlbnRLZXl3b3Jkcy5leGVjKGN1cnJlbnQp
KXsKKyAgICAgIGluZGVudChzdHJlYW0sIHN0YXRlKTsKKyAgICB9CisgICAgaWYgKGN1cnJlbnQg
PT0gInRoZW4iKXsKKyAgICAgIGRlZGVudChzdHJlYW0sIHN0YXRlKTsKKyAgICB9CiAKLSAgICAg
ICAgaW5kZW50OiBmdW5jdGlvbihzdGF0ZSkgewotICAgICAgICAgICAgaWYgKHN0YXRlLnRva2Vu
aXplICE9IHRva2VuQmFzZSkgewotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICByZXR1cm4gc3RhdGUuc2NvcGVzWzBdLm9mZnNldDsKLSAgICAg
ICAgfSwKKyAgICBpZiAoc3R5bGUgPT09ICJkZWRlbnQiKSB7CisgICAgICBpZiAoZGVkZW50KHN0
cmVhbSwgc3RhdGUpKSB7CisgICAgICAgIHJldHVybiBFUlJPUkNMQVNTOworICAgICAgfQorICAg
IH0KKyAgICBkZWxpbWl0ZXJfaW5kZXggPSAiXSl9Ii5pbmRleE9mKGN1cnJlbnQpOworICAgIGlm
IChkZWxpbWl0ZXJfaW5kZXggIT09IC0xKSB7CisgICAgICB3aGlsZSAoc3RhdGUuc2NvcGUudHlw
ZSA9PSAiY29mZmVlIiAmJiBzdGF0ZS5zY29wZS5wcmV2KQorICAgICAgICBzdGF0ZS5zY29wZSA9
IHN0YXRlLnNjb3BlLnByZXY7CisgICAgICBpZiAoc3RhdGUuc2NvcGUudHlwZSA9PSBjdXJyZW50
KQorICAgICAgICBzdGF0ZS5zY29wZSA9IHN0YXRlLnNjb3BlLnByZXY7CisgICAgfQorICAgIGlm
IChzdGF0ZS5kZWRlbnQgPiAwICYmIHN0cmVhbS5lb2woKSAmJiBzdGF0ZS5zY29wZS50eXBlID09
ICJjb2ZmZWUiKSB7CisgICAgICBpZiAoc3RhdGUuc2NvcGUucHJldikgc3RhdGUuc2NvcGUgPSBz
dGF0ZS5zY29wZS5wcmV2OworICAgICAgc3RhdGUuZGVkZW50IC09IDE7CisgICAgfQogCi0gICAg
ICAgIGxpbmVDb21tZW50OiAiIyIsCi0gICAgICAgIGZvbGQ6ICJpbmRlbnQiCi0gICAgfTsKLSAg
ICByZXR1cm4gZXh0ZXJuYWw7CisgICAgcmV0dXJuIHN0eWxlOworICB9CisKKyAgdmFyIGV4dGVy
bmFsID0geworICAgIHN0YXJ0U3RhdGU6IGZ1bmN0aW9uKGJhc2Vjb2x1bW4pIHsKKyAgICAgIHJl
dHVybiB7CisgICAgICAgIHRva2VuaXplOiB0b2tlbkJhc2UsCisgICAgICAgIHNjb3BlOiB7b2Zm
c2V0OmJhc2Vjb2x1bW4gfHwgMCwgdHlwZToiY29mZmVlIiwgcHJldjogbnVsbCwgYWxpZ246IGZh
bHNlfSwKKyAgICAgICAgbGFzdFRva2VuOiBudWxsLAorICAgICAgICBsYW1iZGE6IGZhbHNlLAor
ICAgICAgICBkZWRlbnQ6IDAKKyAgICAgIH07CisgICAgfSwKKworICAgIHRva2VuOiBmdW5jdGlv
bihzdHJlYW0sIHN0YXRlKSB7CisgICAgICB2YXIgZmlsbEFsaWduID0gc3RhdGUuc2NvcGUuYWxp
Z24gPT09IG51bGwgJiYgc3RhdGUuc2NvcGU7CisgICAgICBpZiAoZmlsbEFsaWduICYmIHN0cmVh
bS5zb2woKSkgZmlsbEFsaWduLmFsaWduID0gZmFsc2U7CisKKyAgICAgIHZhciBzdHlsZSA9IHRv
a2VuTGV4ZXIoc3RyZWFtLCBzdGF0ZSk7CisgICAgICBpZiAoZmlsbEFsaWduICYmIHN0eWxlICYm
IHN0eWxlICE9ICJjb21tZW50IikgZmlsbEFsaWduLmFsaWduID0gdHJ1ZTsKKworICAgICAgc3Rh
dGUubGFzdFRva2VuID0ge3N0eWxlOnN0eWxlLCBjb250ZW50OiBzdHJlYW0uY3VycmVudCgpfTsK
KworICAgICAgaWYgKHN0cmVhbS5lb2woKSAmJiBzdHJlYW0ubGFtYmRhKSB7CisgICAgICAgIHN0
YXRlLmxhbWJkYSA9IGZhbHNlOworICAgICAgfQorCisgICAgICByZXR1cm4gc3R5bGU7CisgICAg
fSwKKworICAgIGluZGVudDogZnVuY3Rpb24oc3RhdGUsIHRleHQpIHsKKyAgICAgIGlmIChzdGF0
ZS50b2tlbml6ZSAhPSB0b2tlbkJhc2UpIHJldHVybiAwOworICAgICAgdmFyIHNjb3BlID0gc3Rh
dGUuc2NvcGU7CisgICAgICB2YXIgY2xvc2VyID0gdGV4dCAmJiAiXSl9Ii5pbmRleE9mKHRleHQu
Y2hhckF0KDApKSA+IC0xOworICAgICAgaWYgKGNsb3Nlcikgd2hpbGUgKHNjb3BlLnR5cGUgPT0g
ImNvZmZlZSIgJiYgc2NvcGUucHJldikgc2NvcGUgPSBzY29wZS5wcmV2OworICAgICAgdmFyIGNs
b3NlcyA9IGNsb3NlciAmJiBzY29wZS50eXBlID09PSB0ZXh0LmNoYXJBdCgwKTsKKyAgICAgIGlm
IChzY29wZS5hbGlnbikKKyAgICAgICAgcmV0dXJuIHNjb3BlLmFsaWduT2Zmc2V0IC0gKGNsb3Nl
cyA/IDEgOiAwKTsKKyAgICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIChjbG9zZXMgPyBzY29wZS5w
cmV2IDogc2NvcGUpLm9mZnNldDsKKyAgICB9LAorCisgICAgbGluZUNvbW1lbnQ6ICIjIiwKKyAg
ICBmb2xkOiAiaW5kZW50IgorICB9OworICByZXR1cm4gZXh0ZXJuYWw7CiB9KTsKIAotQ29kZU1p
cnJvci5kZWZpbmVNSU1FKCd0ZXh0L3gtY29mZmVlc2NyaXB0JywgJ2NvZmZlZXNjcmlwdCcpOwor
Q29kZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L3gtY29mZmVlc2NyaXB0IiwgImNvZmZlZXNjcmlw
dCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0
ZXJuYWwvQ29kZU1pcnJvci9jc3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2Nzcy5qcwppbmRleCAwODViMTE5ZGU0ZGZjODJmNWY3
NDNjYTUyYTJmODA0NTkwY2E1ZjQxLi5kOGMzMGNmMzNkNmZlMWI1YjQ1MmYzOWU2ZmFhMGFhZTlh
MzYxYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9F
eHRlcm5hbC9Db2RlTWlycm9yL2Nzcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2Nzcy5qcwpAQCAtMyw3ICszLDcgQEAgQ29k
ZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykg
ewogCiAgIGlmICghcGFyc2VyQ29uZmlnLnByb3BlcnR5S2V5d29yZHMpIHBhcnNlckNvbmZpZyA9
IENvZGVNaXJyb3IucmVzb2x2ZU1vZGUoInRleHQvY3NzIik7CiAKLSAgdmFyIGluZGVudFVuaXQg
PSBjb25maWcuaW5kZW50VW5pdCwKKyAgdmFyIGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50VW5p
dCB8fCBjb25maWcudGFiU2l6ZSB8fCAyLAogICAgICAgaG9va3MgPSBwYXJzZXJDb25maWcuaG9v
a3MgfHwge30sCiAgICAgICBhdE1lZGlhVHlwZXMgPSBwYXJzZXJDb25maWcuYXRNZWRpYVR5cGVz
IHx8IHt9LAogICAgICAgYXRNZWRpYUZlYXR1cmVzID0gcGFyc2VyQ29uZmlnLmF0TWVkaWFGZWF0
dXJlcyB8fCB7fSwKQEAgLTM3LDcgKzM3LDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3Mi
LCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgc3RyZWFtLm1hdGNoKC9e
XHMqXHcqLyk7CiAgICAgICByZXR1cm4gcmV0KCJrZXl3b3JkIiwgImltcG9ydGFudCIpOwogICAg
IH0KLSAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CisgICAgZWxzZSBpZiAoL1xkLy50ZXN0
KGNoKSB8fCBjaCA9PSAiLiIgJiYgc3RyZWFtLmVhdCgvXGQvKSkgewogICAgICAgc3RyZWFtLmVh
dFdoaWxlKC9bXHcuJV0vKTsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJ1bml0Iik7CiAg
ICAgfQpAQCAtMjU5LDggKzI1OSwxMyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1
bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICB9CiAgICAgICBlbHNlIGlmICh0
eXBlID09ICJ9IikgewogICAgICAgICBpZiAoY29udGV4dCA9PSAiaW50ZXJwb2xhdGlvbiIpIHN0
eWxlID0gIm9wZXJhdG9yIjsKLSAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7Ci0gICAgICAgIGlm
IChjb250ZXh0ID09ICJwcm9wZXJ0eVZhbHVlIikgc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICAg
IC8vIFBvcCBvZmYgZW5kIG9mIGFycmF5IHVudGlsIHsgaXMgcmVhY2hlZAorICAgICAgICB3aGls
ZShzdGF0ZS5zdGFjay5sZW5ndGgpeworICAgICAgICAgIHZhciByZW1vdmVkID0gc3RhdGUuc3Rh
Y2sucG9wKCk7CisgICAgICAgICAgaWYocmVtb3ZlZC5pbmRleE9mKCJ7IikgPiAtMSB8fCByZW1v
dmVkID09ICJibG9jayIgfHwgcmVtb3ZlZCA9PSAicnVsZSIpeworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICB9CiAgICAgICBlbHNlIGlmICh0eXBlID09
ICJpbnRlcnBvbGF0aW9uIikgc3RhdGUuc3RhY2sucHVzaCgiaW50ZXJwb2xhdGlvbiIpOwogICAg
ICAgZWxzZSBpZiAodHlwZSA9PSAiQG1lZGlhIikgc3RhdGUuc3RhY2sucHVzaCgiQG1lZGlhIik7
CkBAIC0yNzgsMTEgKzI4MywxMyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0
aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAgIGVsc2Ugc3RhdGUuc3RhY2sucHVz
aCgiKCIpOwogICAgICAgfQogICAgICAgZWxzZSBpZiAodHlwZSA9PSAiKSIpIHsKLSAgICAgICAg
aWYgKGNvbnRleHQgPT0gInByb3BlcnR5VmFsdWUiKSB7Ci0gICAgICAgICAgLy8gSW4gQG1lZGlh
VHlwZSggd2l0aG91dCBjbG9zaW5nIDsgYWZ0ZXIgcHJvcGVydHlWYWx1ZQotICAgICAgICAgIHN0
YXRlLnN0YWNrLnBvcCgpOworICAgICAgICAvLyBQb3Agb2ZmIGVuZCBvZiBhcnJheSB1bnRpbCAo
IGlzIHJlYWNoZWQKKyAgICAgICAgd2hpbGUoc3RhdGUuc3RhY2subGVuZ3RoKXsKKyAgICAgICAg
ICB2YXIgcmVtb3ZlZCA9IHN0YXRlLnN0YWNrLnBvcCgpOworICAgICAgICAgIGlmKHJlbW92ZWQu
aW5kZXhPZigiKCIpID4gLTEpeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgICAgIHN0YXRlLnN0YWNrLnBvcCgpOwogICAgICAgfQogICAgICAgZWxzZSBp
ZiAodHlwZSA9PSAiOiIgJiYgc3RhdGUubGFzdFRva2VuID09ICJwcm9wZXJ0eSIpIHN0YXRlLnN0
YWNrLnB1c2goInByb3BlcnR5VmFsdWUiKTsKICAgICAgIGVsc2UgaWYgKGNvbnRleHQgPT0gInBy
b3BlcnR5VmFsdWUiICYmIHR5cGUgPT0gIjsiKSBzdGF0ZS5zdGFjay5wb3AoKTsKQEAgLTYwMiw2
ICs2MDksMTEgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcs
IHBhcnNlckNvbmZpZykgewogICAgICAgICB9CiAgICAgICAgIHJldHVybiBbInZhcmlhYmxlIiwg
InZhcmlhYmxlIl07CiAgICAgICB9LAorICAgICAgIiwiOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRl
KSB7CisgICAgICAgIGlmIChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGggLSAxXSA9PSAi
cHJvcGVydHlWYWx1ZSIgJiYgc3RyZWFtLm1hdGNoKC9eICpcJC8sIGZhbHNlKSkgeworICAgICAg
ICAgIHJldHVybiBbIm9wZXJhdG9yIiwgIjsiXTsKKyAgICAgICAgfQorICAgICAgfSwKICAgICAg
ICIvIjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgewogICAgICAgICBpZiAoc3RyZWFtLmVhdCgi
LyIpKSB7CiAgICAgICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9odG1sbWl4
ZWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2Rl
TWlycm9yL2h0bWxtaXhlZC5qcwppbmRleCBlYzBjMjFkMjRhZDhjMTk4Zjg0YTA2ZWFhY2MxZjdl
NjcwMjNkYWNhLi5iNTllZjM3ZWRiZTEwMTM3ZDA2YTc5NWU4YjMzMDUwOTgzODhiNzQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2Rl
TWlycm9yL2h0bWxtaXhlZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2h0bWxtaXhlZC5qcwpAQCAtNDQsNyArNDQsNyBAQCBD
b2RlTWlycm9yLmRlZmluZU1vZGUoImh0bWxtaXhlZCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2Vy
Q29uZmlnKSB7CiAgICAgaWYgKGNsb3NlID4gLTEpIHN0cmVhbS5iYWNrVXAoY3VyLmxlbmd0aCAt
IGNsb3NlKTsKICAgICBlbHNlIGlmIChtID0gY3VyLm1hdGNoKC88XC8/JC8pKSB7CiAgICAgICBz
dHJlYW0uYmFja1VwKGN1ci5sZW5ndGgpOwotICAgICAgaWYgKCFzdHJlYW0ubWF0Y2gocGF0LCBm
YWxzZSkpIHN0cmVhbS5tYXRjaChjdXJbMF0pOworICAgICAgaWYgKCFzdHJlYW0ubWF0Y2gocGF0
LCBmYWxzZSkpIHN0cmVhbS5tYXRjaChjdXIpOwogICAgIH0KICAgICByZXR1cm4gc3R5bGU7CiAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVy
bmFsL0NvZGVNaXJyb3IvamF2YXNjcmlwdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvamF2YXNjcmlwdC5qcwppbmRleCBlOGFjZTMy
ZDg5NmFjMWMwODNkNWFiMzE1ZjE4NDc5MDk2ODNiMjY2Li5mMjdjMDYzNDZjNjNlZTkxMTgwNDhm
MjUyMjY1OTdjZjFhNGIyNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2phdmFzY3JpcHQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9qYXZhc2Ny
aXB0LmpzCkBAIC0yMSw3ICsyMSw4IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlw
dCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAiZm9yIjoga3coImZv
ciIpLCAic3dpdGNoIjoga3coInN3aXRjaCIpLCAiY2FzZSI6IGt3KCJjYXNlIiksICJkZWZhdWx0
Ijoga3coImRlZmF1bHQiKSwKICAgICAgICJpbiI6IG9wZXJhdG9yLCAidHlwZW9mIjogb3BlcmF0
b3IsICJpbnN0YW5jZW9mIjogb3BlcmF0b3IsCiAgICAgICAidHJ1ZSI6IGF0b20sICJmYWxzZSI6
IGF0b20sICJudWxsIjogYXRvbSwgInVuZGVmaW5lZCI6IGF0b20sICJOYU4iOiBhdG9tLCAiSW5m
aW5pdHkiOiBhdG9tLAotICAgICAgInRoaXMiOiBrdygidGhpcyIpCisgICAgICAidGhpcyI6IGt3
KCJ0aGlzIiksICJtb2R1bGUiOiBrdygibW9kdWxlIiksICJjbGFzcyI6IGt3KCJjbGFzcyIpLCAi
c3VwZXIiOiBrdygiYXRvbSIpLAorICAgICAgInlpZWxkIjogQywgImV4cG9ydCI6IGt3KCJleHBv
cnQiKSwgImltcG9ydCI6IGt3KCJpbXBvcnQiKSwgImV4dGVuZHMiOiBDCiAgICAgfTsKIAogICAg
IC8vIEV4dGVuZCB0aGUgJ25vcm1hbCcga2V5d29yZHMgd2l0aCB0aGUgVHlwZVNjcmlwdCBsYW5n
dWFnZSBleHRlbnNpb25zCkBAIC0zMCw3ICszMSw2IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgi
amF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICB2YXIg
dHNLZXl3b3JkcyA9IHsKICAgICAgICAgLy8gb2JqZWN0LWxpa2UgdGhpbmdzCiAgICAgICAgICJp
bnRlcmZhY2UiOiBrdygiaW50ZXJmYWNlIiksCi0gICAgICAgICJjbGFzcyI6IGt3KCJjbGFzcyIp
LAogICAgICAgICAiZXh0ZW5kcyI6IGt3KCJleHRlbmRzIiksCiAgICAgICAgICJjb25zdHJ1Y3Rv
ciI6IGt3KCJjb25zdHJ1Y3RvciIpLAogCkBAIC00MCw4ICs0MCw2IEBAIENvZGVNaXJyb3IuZGVm
aW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAg
ICAgICAgICJwcm90ZWN0ZWQiOiBrdygicHJvdGVjdGVkIiksCiAgICAgICAgICJzdGF0aWMiOiBr
dygic3RhdGljIiksCiAKLSAgICAgICAgInN1cGVyIjoga3coInN1cGVyIiksCi0KICAgICAgICAg
Ly8gdHlwZXMKICAgICAgICAgInN0cmluZyI6IHR5cGUsICJudW1iZXIiOiB0eXBlLCAiYm9vbCI6
IHR5cGUsICJhbnkiOiB0eXBlCiAgICAgICB9OwpAQCAtNTYsMTEgKzU0LDYgQEAgQ29kZU1pcnJv
ci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcp
IHsKIAogICB2YXIgaXNPcGVyYXRvckNoYXIgPSAvWytcLSomJT08PiE/fH5eXS87CiAKLSAgZnVu
Y3Rpb24gY2hhaW4oc3RyZWFtLCBzdGF0ZSwgZikgewotICAgIHN0YXRlLnRva2VuaXplID0gZjsK
LSAgICByZXR1cm4gZihzdHJlYW0sIHN0YXRlKTsKLSAgfQotCiAgIGZ1bmN0aW9uIG5leHRVbnRp
bFVuZXNjYXBlZChzdHJlYW0sIGVuZCkgewogICAgIHZhciBlc2NhcGVkID0gZmFsc2UsIG5leHQ7
CiAgICAgd2hpbGUgKChuZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVsbCkgewpAQCAtNzgsNTAg
KzcxLDUxIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNv
bmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgdHlwZSA9IHRwOyBjb250ZW50ID0gY29udDsKICAg
ICByZXR1cm4gc3R5bGU7CiAgIH0KLSAgZnVuY3Rpb24ganNUb2tlbkJhc2Uoc3RyZWFtLCBzdGF0
ZSkgeworICBmdW5jdGlvbiB0b2tlbkJhc2Uoc3RyZWFtLCBzdGF0ZSkgewogICAgIHZhciBjaCA9
IHN0cmVhbS5uZXh0KCk7Ci0gICAgaWYgKGNoID09ICciJyB8fCBjaCA9PSAiJyIpCi0gICAgICBy
ZXR1cm4gY2hhaW4oc3RyZWFtLCBzdGF0ZSwganNUb2tlblN0cmluZyhjaCkpOwotICAgIGVsc2Ug
aWYgKGNoID09ICIuIiAmJiBzdHJlYW0ubWF0Y2goL15cZCsoPzpbZUVdWytcLV0/XGQrKT8vKSkK
KyAgICBpZiAoY2ggPT0gJyInIHx8IGNoID09ICInIikgeworICAgICAgc3RhdGUudG9rZW5pemUg
PSB0b2tlblN0cmluZyhjaCk7CisgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBz
dGF0ZSk7CisgICAgfSBlbHNlIGlmIChjaCA9PSAiLiIgJiYgc3RyZWFtLm1hdGNoKC9eXGQrKD86
W2VFXVsrXC1dP1xkKyk/LykpIHsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJudW1iZXIi
KTsKLSAgICBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGNoKSkKKyAgICB9IGVs
c2UgaWYgKGNoID09ICIuIiAmJiBzdHJlYW0ubWF0Y2goIi4uIikpIHsKKyAgICAgIHJldHVybiBy
ZXQoInNwcmVhZCIsICJtZXRhIik7CisgICAgfSBlbHNlIGlmICgvW1xbXF17fVwoXCksO1w6XC5d
Ly50ZXN0KGNoKSkgewogICAgICAgcmV0dXJuIHJldChjaCk7Ci0gICAgZWxzZSBpZiAoY2ggPT0g
IjAiICYmIHN0cmVhbS5lYXQoL3gvaSkpIHsKKyAgICB9IGVsc2UgaWYgKGNoID09ICI9IiAmJiBz
dHJlYW0uZWF0KCI+IikpIHsKKyAgICAgIHJldHVybiByZXQoIj0+Iik7CisgICAgfSBlbHNlIGlm
IChjaCA9PSAiMCIgJiYgc3RyZWFtLmVhdCgveC9pKSkgewogICAgICAgc3RyZWFtLmVhdFdoaWxl
KC9bXGRhLWZdL2kpOwogICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgIm51bWJlciIpOwotICAg
IH0KLSAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CisgICAgfSBlbHNlIGlmICgvXGQvLnRl
c3QoY2gpKSB7CiAgICAgICBzdHJlYW0ubWF0Y2goL15cZCooPzpcLlxkKik/KD86W2VFXVsrXC1d
P1xkKyk/Lyk7CiAgICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAibnVtYmVyIik7Ci0gICAgfQot
ICAgIGVsc2UgaWYgKGNoID09ICIvIikgeworICAgIH0gZWxzZSBpZiAoY2ggPT0gIi8iKSB7CiAg
ICAgICBpZiAoc3RyZWFtLmVhdCgiKiIpKSB7Ci0gICAgICAgIHJldHVybiBjaGFpbihzdHJlYW0s
IHN0YXRlLCBqc1Rva2VuQ29tbWVudCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChzdHJlYW0u
ZWF0KCIvIikpIHsKKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkNvbW1lbnQ7CisgICAg
ICAgIHJldHVybiB0b2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSk7CisgICAgICB9IGVsc2UgaWYg
KHN0cmVhbS5lYXQoIi8iKSkgewogICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7CiAgICAgICAg
IHJldHVybiByZXQoImNvbW1lbnQiLCAiY29tbWVudCIpOwotICAgICAgfQotICAgICAgZWxzZSBp
ZiAoc3RhdGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5sYXN0VHlwZSA9PSAia2V5
d29yZCBjIiB8fAotICAgICAgICAgICAgICAgL15bXFt7fVwoLDs6XSQvLnRlc3Qoc3RhdGUubGFz
dFR5cGUpKSB7CisgICAgICB9IGVsc2UgaWYgKHN0YXRlLmxhc3RUeXBlID09ICJvcGVyYXRvciIg
fHwgc3RhdGUubGFzdFR5cGUgPT0gImtleXdvcmQgYyIgfHwKKyAgICAgICAgICAgICAgIHN0YXRl
Lmxhc3RUeXBlID09ICJzb2YiIHx8IC9eW1xbe31cKCw7Ol0kLy50ZXN0KHN0YXRlLmxhc3RUeXBl
KSkgewogICAgICAgICBuZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCAiLyIpOwogICAgICAgICBz
dHJlYW0uZWF0V2hpbGUoL1tnaW15XS8pOyAvLyAneScgaXMgInN0aWNreSIgb3B0aW9uIGluIE1v
emlsbGEKICAgICAgICAgcmV0dXJuIHJldCgicmVnZXhwIiwgInN0cmluZy0yIik7Ci0gICAgICB9
Ci0gICAgICBlbHNlIHsKKyAgICAgIH0gZWxzZSB7CiAgICAgICAgIHN0cmVhbS5lYXRXaGlsZShp
c09wZXJhdG9yQ2hhcik7CiAgICAgICAgIHJldHVybiByZXQoIm9wZXJhdG9yIiwgbnVsbCwgc3Ry
ZWFtLmN1cnJlbnQoKSk7CiAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGNoID09ICIjIikg
eworICAgIH0gZWxzZSBpZiAoY2ggPT0gImAiKSB7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRv
a2VuUXVhc2k7CisgICAgICByZXR1cm4gdG9rZW5RdWFzaShzdHJlYW0sIHN0YXRlKTsKKyAgICB9
IGVsc2UgaWYgKGNoID09ICIjIikgewogICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOwogICAgICAg
cmV0dXJuIHJldCgiZXJyb3IiLCAiZXJyb3IiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoaXNPcGVy
YXRvckNoYXIudGVzdChjaCkpIHsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmF0b3JDaGFyLnRlc3Qo
Y2gpKSB7CiAgICAgICBzdHJlYW0uZWF0V2hpbGUoaXNPcGVyYXRvckNoYXIpOwogICAgICAgcmV0
dXJuIHJldCgib3BlcmF0b3IiLCBudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKLSAgICB9Ci0gICAg
ZWxzZSB7CisgICAgfSBlbHNlIHsKICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XCRfXS8pOwog
ICAgICAgdmFyIHdvcmQgPSBzdHJlYW0uY3VycmVudCgpLCBrbm93biA9IGtleXdvcmRzLnByb3Bl
cnR5SXNFbnVtZXJhYmxlKHdvcmQpICYmIGtleXdvcmRzW3dvcmRdOwogICAgICAgcmV0dXJuIChr
bm93biAmJiBzdGF0ZS5sYXN0VHlwZSAhPSAiLiIpID8gcmV0KGtub3duLnR5cGUsIGtub3duLnN0
eWxlLCB3b3JkKSA6CkBAIC0xMjksMTkgKzEyMywxOSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUo
ImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIH0KICAg
fQogCi0gIGZ1bmN0aW9uIGpzVG9rZW5TdHJpbmcocXVvdGUpIHsKKyAgZnVuY3Rpb24gdG9rZW5T
dHJpbmcocXVvdGUpIHsKICAgICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgewogICAg
ICAgaWYgKCFuZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCBxdW90ZSkpCi0gICAgICAgIHN0YXRl
LnRva2VuaXplID0ganNUb2tlbkJhc2U7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5C
YXNlOwogICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIpOwogICAgIH07CiAgIH0K
IAotICBmdW5jdGlvbiBqc1Rva2VuQ29tbWVudChzdHJlYW0sIHN0YXRlKSB7CisgIGZ1bmN0aW9u
IHRva2VuQ29tbWVudChzdHJlYW0sIHN0YXRlKSB7CiAgICAgdmFyIG1heWJlRW5kID0gZmFsc2Us
IGNoOwogICAgIHdoaWxlIChjaCA9IHN0cmVhbS5uZXh0KCkpIHsKICAgICAgIGlmIChjaCA9PSAi
LyIgJiYgbWF5YmVFbmQpIHsKLSAgICAgICAgc3RhdGUudG9rZW5pemUgPSBqc1Rva2VuQmFzZTsK
KyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkJhc2U7CiAgICAgICAgIGJyZWFrOwogICAg
ICAgfQogICAgICAgbWF5YmVFbmQgPSAoY2ggPT0gIioiKTsKQEAgLTE0OSw2ICsxNDMsNTAgQEAg
Q29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJz
ZXJDb25maWcpIHsKICAgICByZXR1cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQiKTsKICAgfQog
CisgIGZ1bmN0aW9uIHRva2VuUXVhc2koc3RyZWFtLCBzdGF0ZSkgeworICAgIHZhciBlc2NhcGVk
ID0gZmFsc2UsIG5leHQ7CisgICAgd2hpbGUgKChuZXh0ID0gc3RyZWFtLm5leHQoKSkgIT0gbnVs
bCkgeworICAgICAgaWYgKCFlc2NhcGVkICYmIChuZXh0ID09ICJgIiB8fCBuZXh0ID09ICIkIiAm
JiBzdHJlYW0uZWF0KCJ7IikpKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNl
OworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGVzY2FwZWQgPSAhZXNjYXBlZCAmJiBu
ZXh0ID09ICJcXCI7CisgICAgfQorICAgIHJldHVybiByZXQoInF1YXNpIiwgInN0cmluZy0yIiwg
c3RyZWFtLmN1cnJlbnQoKSk7CisgIH0KKworICB2YXIgYnJhY2tldHMgPSAiKFt7fV0pIjsKKyAg
Ly8gVGhpcyBpcyBhIGNydWRlIGxvb2thaGVhZCB0cmljayB0byB0cnkgYW5kIG5vdGljZSB0aGF0
IHdlJ3JlCisgIC8vIHBhcnNpbmcgdGhlIGFyZ3VtZW50IHBhdHRlcm5zIGZvciBhIGZhdC1hcnJv
dyBmdW5jdGlvbiBiZWZvcmUgd2UKKyAgLy8gYWN0dWFsbHkgaGl0IHRoZSBhcnJvdyB0b2tlbi4g
SXQgb25seSB3b3JrcyBpZiB0aGUgYXJyb3cgaXMgb24KKyAgLy8gdGhlIHNhbWUgbGluZSBhcyB0
aGUgYXJndW1lbnRzIGFuZCB0aGVyZSdzIG5vIHN0cmFuZ2Ugbm9pc2UKKyAgLy8gKGNvbW1lbnRz
KSBpbiBiZXR3ZWVuLiBGYWxsYmFjayBpcyB0byBvbmx5IG5vdGljZSB3aGVuIHdlIGhpdCB0aGUK
KyAgLy8gYXJyb3csIGFuZCBub3QgZGVjbGFyZSB0aGUgYXJndW1lbnRzIGFzIGxvY2FscyBmb3Ig
dGhlIGFycm93CisgIC8vIGJvZHkuCisgIGZ1bmN0aW9uIGZpbmRGYXRBcnJvdyhzdHJlYW0sIHN0
YXRlKSB7CisgICAgaWYgKHN0YXRlLmZhdEFycm93QXQpIHN0YXRlLmZhdEFycm93QXQgPSBudWxs
OworICAgIHZhciBhcnJvdyA9IHN0cmVhbS5zdHJpbmcuaW5kZXhPZigiPT4iLCBzdHJlYW0uc3Rh
cnQpOworICAgIGlmIChhcnJvdyA8IDApIHJldHVybjsKKworICAgIHZhciBkZXB0aCA9IDAsIHNh
d1NvbWV0aGluZyA9IGZhbHNlOworICAgIGZvciAodmFyIHBvcyA9IGFycm93IC0gMTsgcG9zID49
IDA7IC0tcG9zKSB7CisgICAgICB2YXIgY2ggPSBzdHJlYW0uc3RyaW5nLmNoYXJBdChwb3MpOwor
ICAgICAgdmFyIGJyYWNrZXQgPSBicmFja2V0cy5pbmRleE9mKGNoKTsKKyAgICAgIGlmIChicmFj
a2V0ID49IDAgJiYgYnJhY2tldCA8IDMpIHsKKyAgICAgICAgaWYgKCFkZXB0aCkgeyArK3Bvczsg
YnJlYWs7IH0KKyAgICAgICAgaWYgKC0tZGVwdGggPT0gMCkgYnJlYWs7CisgICAgICB9IGVsc2Ug
aWYgKGJyYWNrZXQgPj0gMyAmJiBicmFja2V0IDwgNikgeworICAgICAgICArK2RlcHRoOworICAg
ICAgfSBlbHNlIGlmICgvWyRcd10vLnRlc3QoY2gpKSB7CisgICAgICAgIHNhd1NvbWV0aGluZyA9
IHRydWU7CisgICAgICB9IGVsc2UgaWYgKHNhd1NvbWV0aGluZyAmJiAhZGVwdGgpIHsKKyAgICAg
ICAgKytwb3M7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBpZiAoc2F3U29t
ZXRoaW5nICYmICFkZXB0aCkgc3RhdGUuZmF0QXJyb3dBdCA9IHBvczsKKyAgfQorCiAgIC8vIFBh
cnNlcgogCiAgIHZhciBhdG9taWNUeXBlcyA9IHsiYXRvbSI6IHRydWUsICJudW1iZXIiOiB0cnVl
LCAidmFyaWFibGUiOiB0cnVlLCAic3RyaW5nIjogdHJ1ZSwgInJlZ2V4cCI6IHRydWUsICJ0aGlz
IjogdHJ1ZX07CkBAIC0xNjUsNiArMjAzLDEwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2
YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgIGZ1bmN0aW9uIGlu
U2NvcGUoc3RhdGUsIHZhcm5hbWUpIHsKICAgICBmb3IgKHZhciB2ID0gc3RhdGUubG9jYWxWYXJz
OyB2OyB2ID0gdi5uZXh0KQogICAgICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1cm4gdHJ1
ZTsKKyAgICBmb3IgKHZhciBjeCA9IHN0YXRlLmNvbnRleHQ7IGN4OyBjeCA9IGN4LnByZXYpIHsK
KyAgICAgIGZvciAodmFyIHYgPSBjeC52YXJzOyB2OyB2ID0gdi5uZXh0KQorICAgICAgICBpZiAo
di5uYW1lID09IHZhcm5hbWUpIHJldHVybiB0cnVlOworICAgIH0KICAgfQogCiAgIGZ1bmN0aW9u
IHBhcnNlSlMoc3RhdGUsIHN0eWxlLCB0eXBlLCBjb250ZW50LCBzdHJlYW0pIHsKQEAgLTIxMSw3
ICsyNTMsOCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihj
b25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgc3RhdGUubG9jYWxWYXJzID0ge25hbWU6IHZh
cm5hbWUsIG5leHQ6IHN0YXRlLmxvY2FsVmFyc307CiAgICAgfSBlbHNlIHsKICAgICAgIGlmIChp
bkxpc3Qoc3RhdGUuZ2xvYmFsVmFycykpIHJldHVybjsKLSAgICAgIHN0YXRlLmdsb2JhbFZhcnMg
PSB7bmFtZTogdmFybmFtZSwgbmV4dDogc3RhdGUuZ2xvYmFsVmFyc307CisgICAgICBpZiAocGFy
c2VyQ29uZmlnLmdsb2JhbFZhcnMpCisgICAgICAgIHN0YXRlLmdsb2JhbFZhcnMgPSB7bmFtZTog
dmFybmFtZSwgbmV4dDogc3RhdGUuZ2xvYmFsVmFyc307CiAgICAgfQogICB9CiAKQEAgLTI1Mywx
NiArMjk2LDE1IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9u
KGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgfTsKICAgfQogCi0gIGZ1bmN0aW9uIHN0YXRl
bWVudCh0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVybiBjb250KHB1c2hsZXgo
InZhcmRlZiIpLCB2YXJkZWYxLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKKyAgZnVuY3Rpb24gc3Rh
dGVtZW50KHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVybiBjb250
KHB1c2hsZXgoInZhcmRlZiIsIHZhbHVlLmxlbmd0aCksIHZhcmRlZiwgZXhwZWN0KCI7IiksIHBv
cGxleCk7CiAgICAgaWYgKHR5cGUgPT0gImtleXdvcmQgYSIpIHJldHVybiBjb250KHB1c2hsZXgo
ImZvcm0iKSwgZXhwcmVzc2lvbiwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAgIGlmICh0eXBlID09
ICJrZXl3b3JkIGIiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHN0YXRlbWVudCwgcG9w
bGV4KTsKICAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250KHB1c2hsZXgoIn0iKSwgYmxv
Y2ssIHBvcGxleCk7CiAgICAgaWYgKHR5cGUgPT0gIjsiKSByZXR1cm4gY29udCgpOwogICAgIGlm
ICh0eXBlID09ICJpZiIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwg
c3RhdGVtZW50LCBwb3BsZXgsIG1heWJlZWxzZSk7CiAgICAgaWYgKHR5cGUgPT0gImZ1bmN0aW9u
IikgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOwotICAgIGlmICh0eXBlID09ICJmb3IiKSByZXR1
cm4gY29udChwdXNobGV4KCJmb3JtIiksIGV4cGVjdCgiKCIpLCBwdXNobGV4KCIpIiksIGZvcnNw
ZWMxLCBleHBlY3QoIikiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9w
bGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gImZvciIpIHJldHVybiBj
b250KHB1c2hsZXgoImZvcm0iKSwgZm9yc3BlYywgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGxleCk7
CiAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgcmV0dXJuIGNvbnQocHVzaGxleCgic3RhdCIp
LCBtYXliZWxhYmVsKTsKICAgICBpZiAodHlwZSA9PSAic3dpdGNoIikgcmV0dXJuIGNvbnQocHVz
aGxleCgiZm9ybSIpLCBleHByZXNzaW9uLCBwdXNobGV4KCJ9IiwgInN3aXRjaCIpLCBleHBlY3Qo
InsiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssIHBvcGxl
eCwgcG9wbGV4KTsKQEAgLTI3MCw2ICszMTIsMTAgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJq
YXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICBpZiAodHlw
ZSA9PSAiZGVmYXVsdCIpIHJldHVybiBjb250KGV4cGVjdCgiOiIpKTsKICAgICBpZiAodHlwZSA9
PSAiY2F0Y2giKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHB1c2hjb250ZXh0LCBleHBl
Y3QoIigiKSwgZnVuYXJnLCBleHBlY3QoIikiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZW1lbnQsIHBvcGxleCwgcG9wY29udGV4dCk7CisgICAgaWYgKHR5cGUg
PT0gIm1vZHVsZSIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgcHVzaGNvbnRleHQsIGFm
dGVyTW9kdWxlLCBwb3Bjb250ZXh0LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJjbGFzcyIp
IHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgY2xhc3NOYW1lLCBvYmpsaXQsIHBvcGxleCk7
CisgICAgaWYgKHR5cGUgPT0gImV4cG9ydCIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwg
YWZ0ZXJFeHBvcnQsIHBvcGxleCk7CisgICAgaWYgKHR5cGUgPT0gImltcG9ydCIpIHJldHVybiBj
b250KHB1c2hsZXgoImZvcm0iKSwgYWZ0ZXJJbXBvcnQsIHBvcGxleCk7CiAgICAgcmV0dXJuIHBh
c3MocHVzaGxleCgic3RhdCIpLCBleHByZXNzaW9uLCBleHBlY3QoIjsiKSwgcG9wbGV4KTsKICAg
fQogICBmdW5jdGlvbiBleHByZXNzaW9uKHR5cGUpIHsKQEAgLTI3OSwxNCArMzI1LDIwIEBAIENv
ZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2Vy
Q29uZmlnKSB7CiAgICAgcmV0dXJuIGV4cHJlc3Npb25Jbm5lcih0eXBlLCB0cnVlKTsKICAgfQog
ICBmdW5jdGlvbiBleHByZXNzaW9uSW5uZXIodHlwZSwgbm9Db21tYSkgeworICAgIGlmIChjeC5z
dGF0ZS5mYXRBcnJvd0F0ID09IGN4LnN0cmVhbS5zdGFydCkgeworICAgICAgdmFyIGJvZHkgPSBu
b0NvbW1hID8gYXJyb3dCb2R5Tm9Db21tYSA6IGFycm93Qm9keTsKKyAgICAgIGlmICh0eXBlID09
ICIoIikgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIGNvbW1hc2VwKHBhdHRlcm4sICIpIiksIGV4
cGVjdCgiPT4iKSwgYm9keSwgcG9wY29udGV4dCk7CisgICAgICBlbHNlIGlmICh0eXBlID09ICJ2
YXJpYWJsZSIpIHJldHVybiBwYXNzKHB1c2hjb250ZXh0LCBwYXR0ZXJuLCBleHBlY3QoIj0+Iiks
IGJvZHksIHBvcGNvbnRleHQpOworICAgIH0KKwogICAgIHZhciBtYXliZW9wID0gbm9Db21tYSA/
IG1heWJlb3BlcmF0b3JOb0NvbW1hIDogbWF5YmVvcGVyYXRvckNvbW1hOwogICAgIGlmIChhdG9t
aWNUeXBlcy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQobWF5YmVvcCk7CiAgICAg
aWYgKHR5cGUgPT0gImZ1bmN0aW9uIikgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOwogICAgIGlm
ICh0eXBlID09ICJrZXl3b3JkIGMiKSByZXR1cm4gY29udChub0NvbW1hID8gbWF5YmVleHByZXNz
aW9uTm9Db21tYSA6IG1heWJlZXhwcmVzc2lvbik7Ci0gICAgaWYgKHR5cGUgPT0gIigiKSByZXR1
cm4gY29udChwdXNobGV4KCIpIiksIG1heWJlZXhwcmVzc2lvbiwgZXhwZWN0KCIpIiksIHBvcGxl
eCwgbWF5YmVvcCk7Ci0gICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgcmV0dXJuIGNvbnQobm9D
b21tYSA/IGV4cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7Ci0gICAgaWYgKHR5cGUgPT0g
IlsiKSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1h
LCAiXSIpLCBwb3BsZXgsIG1heWJlb3ApOwotICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNv
bnQocHVzaGxleCgifSIpLCBjb21tYXNlcChvYmpwcm9wLCAifSIpLCBwb3BsZXgsIG1heWJlb3Ap
OworICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIpLCBtYXliZWV4
cHJlc3Npb24sIGNvbXByZWhlbnNpb24sIGV4cGVjdCgiKSIpLCBwb3BsZXgsIG1heWJlb3ApOwor
ICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIgfHwgdHlwZSA9PSAic3ByZWFkIikgcmV0dXJuIGNv
bnQobm9Db21tYSA/IGV4cHJlc3Npb25Ob0NvbW1hIDogZXhwcmVzc2lvbik7CisgICAgaWYgKHR5
cGUgPT0gIlsiKSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIGV4cHJlc3Npb25Ob0NvbW1hLCBt
YXliZUFycmF5Q29tcHJlaGVuc2lvbiwgcG9wbGV4LCBtYXliZW9wKTsKKyAgICBpZiAodHlwZSA9
PSAieyIpIHJldHVybiBjb250KGNvbW1hc2VwKG9ianByb3AsICJ9IiksIG1heWJlb3ApOwogICAg
IHJldHVybiBjb250KCk7CiAgIH0KICAgZnVuY3Rpb24gbWF5YmVleHByZXNzaW9uKHR5cGUpIHsK
QEAgLTMwNSwxNiArMzU3LDQwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIs
IGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgIGZ1bmN0aW9uIG1heWJlb3BlcmF0
b3JOb0NvbW1hKHR5cGUsIHZhbHVlLCBub0NvbW1hKSB7CiAgICAgdmFyIG1lID0gbm9Db21tYSA9
PSBmYWxzZSA/IG1heWJlb3BlcmF0b3JDb21tYSA6IG1heWJlb3BlcmF0b3JOb0NvbW1hOwogICAg
IHZhciBleHByID0gbm9Db21tYSA9PSBmYWxzZSA/IGV4cHJlc3Npb24gOiBleHByZXNzaW9uTm9D
b21tYTsKKyAgICBpZiAodmFsdWUgPT0gIj0+IikgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIG5v
Q29tbWEgPyBhcnJvd0JvZHlOb0NvbW1hIDogYXJyb3dCb2R5LCBwb3Bjb250ZXh0KTsKICAgICBp
ZiAodHlwZSA9PSAib3BlcmF0b3IiKSB7CiAgICAgICBpZiAoL1wrXCt8LS0vLnRlc3QodmFsdWUp
KSByZXR1cm4gY29udChtZSk7CiAgICAgICBpZiAodmFsdWUgPT0gIj8iKSByZXR1cm4gY29udChl
eHByZXNzaW9uLCBleHBlY3QoIjoiKSwgZXhwcik7CiAgICAgICByZXR1cm4gY29udChleHByKTsK
ICAgICB9CisgICAgaWYgKHR5cGUgPT0gInF1YXNpIikgeyBjeC5jYy5wdXNoKG1lKTsgcmV0dXJu
IHF1YXNpKHZhbHVlKTsgfQogICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuOwotICAgIGlmICh0
eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIsICJjYWxsIiksIGNvbW1hc2VwKGV4
cHJlc3Npb25Ob0NvbW1hLCAiKSIpLCBwb3BsZXgsIG1lKTsKKyAgICBpZiAodHlwZSA9PSAiKCIp
IHJldHVybiBjb250KGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCAiKSIsICJjYWxsIiksIG1l
KTsKICAgICBpZiAodHlwZSA9PSAiLiIpIHJldHVybiBjb250KHByb3BlcnR5LCBtZSk7CiAgICAg
aWYgKHR5cGUgPT0gIlsiKSByZXR1cm4gY29udChwdXNobGV4KCJdIiksIG1heWJlZXhwcmVzc2lv
biwgZXhwZWN0KCJdIiksIHBvcGxleCwgbWUpOwogICB9CisgIGZ1bmN0aW9uIHF1YXNpKHZhbHVl
KSB7CisgICAgaWYgKCF2YWx1ZSkgZGVidWdnZXI7CisgICAgaWYgKHZhbHVlLnNsaWNlKHZhbHVl
Lmxlbmd0aCAtIDIpICE9ICIkeyIpIHJldHVybiBjb250KCk7CisgICAgcmV0dXJuIGNvbnQoZXhw
cmVzc2lvbiwgY29udGludWVRdWFzaSk7CisgIH0KKyAgZnVuY3Rpb24gY29udGludWVRdWFzaSh0
eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gIn0iKSB7CisgICAgICBjeC5tYXJrZWQgPSAic3RyaW5n
LTIiOworICAgICAgY3guc3RhdGUudG9rZW5pemUgPSB0b2tlblF1YXNpOworICAgICAgcmV0dXJu
IGNvbnQoKTsKKyAgICB9CisgIH0KKyAgZnVuY3Rpb24gYXJyb3dCb2R5KHR5cGUpIHsKKyAgICBm
aW5kRmF0QXJyb3coY3guc3RyZWFtLCBjeC5zdGF0ZSk7CisgICAgaWYgKHR5cGUgPT0gInsiKSBy
ZXR1cm4gcGFzcyhzdGF0ZW1lbnQpOworICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24pOworICB9
CisgIGZ1bmN0aW9uIGFycm93Qm9keU5vQ29tbWEodHlwZSkgeworICAgIGZpbmRGYXRBcnJvdyhj
eC5zdHJlYW0sIGN4LnN0YXRlKTsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBwYXNzKHN0
YXRlbWVudCk7CisgICAgcmV0dXJuIHBhc3MoZXhwcmVzc2lvbk5vQ29tbWEpOworICB9CiAgIGZ1
bmN0aW9uIG1heWJlbGFiZWwodHlwZSkgewogICAgIGlmICh0eXBlID09ICI6IikgcmV0dXJuIGNv
bnQocG9wbGV4LCBzdGF0ZW1lbnQpOwogICAgIHJldHVybiBwYXNzKG1heWJlb3BlcmF0b3JDb21t
YSwgZXhwZWN0KCI7IiksIHBvcGxleCk7CkBAIC0zMjgsMTYgKzQwNCwyMSBAQCBDb2RlTWlycm9y
LmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykg
ewogICAgICAgaWYgKHZhbHVlID09ICJnZXQiIHx8IHZhbHVlID09ICJzZXQiKSByZXR1cm4gY29u
dChnZXR0ZXJTZXR0ZXIpOwogICAgIH0gZWxzZSBpZiAodHlwZSA9PSAibnVtYmVyIiB8fCB0eXBl
ID09ICJzdHJpbmciKSB7CiAgICAgICBjeC5tYXJrZWQgPSB0eXBlICsgIiBwcm9wZXJ0eSI7Cisg
ICAgfSBlbHNlIGlmICh0eXBlID09ICJbIikgeworICAgICAgcmV0dXJuIGNvbnQoZXhwcmVzc2lv
biwgZXhwZWN0KCJdIiksIGFmdGVycHJvcCk7CiAgICAgfQotICAgIGlmIChhdG9taWNUeXBlcy5o
YXNPd25Qcm9wZXJ0eSh0eXBlKSkgcmV0dXJuIGNvbnQoZXhwZWN0KCI6IiksIGV4cHJlc3Npb25O
b0NvbW1hKTsKKyAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIHJldHVy
biBjb250KGFmdGVycHJvcCk7CiAgIH0KICAgZnVuY3Rpb24gZ2V0dGVyU2V0dGVyKHR5cGUpIHsK
LSAgICBpZiAodHlwZSA9PSAiOiIpIHJldHVybiBjb250KGV4cHJlc3Npb24pOwotICAgIGlmICh0
eXBlICE9ICJ2YXJpYWJsZSIpIHJldHVybiBjb250KGV4cGVjdCgiOiIpLCBleHByZXNzaW9uKTsK
KyAgICBpZiAodHlwZSAhPSAidmFyaWFibGUiKSByZXR1cm4gcGFzcyhhZnRlcnByb3ApOwogICAg
IGN4Lm1hcmtlZCA9ICJwcm9wZXJ0eSI7CiAgICAgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpOwog
ICB9Ci0gIGZ1bmN0aW9uIGNvbW1hc2VwKHdoYXQsIGVuZCkgeworICBmdW5jdGlvbiBhZnRlcnBy
b3AodHlwZSkgeworICAgIGlmICh0eXBlID09ICI6IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbk5v
Q29tbWEpOworICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIHBhc3MoZnVuY3Rpb25kZWYpOwor
ICB9CisgIGZ1bmN0aW9uIGNvbW1hc2VwKHdoYXQsIGVuZCwgaW5mbykgewogICAgIGZ1bmN0aW9u
IHByb2NlZWQodHlwZSkgewogICAgICAgaWYgKHR5cGUgPT0gIiwiKSB7CiAgICAgICAgIHZhciBs
ZXggPSBjeC5zdGF0ZS5sZXhpY2FsOwpAQCAtMzQ5LDcgKzQzMCw4IEBAIENvZGVNaXJyb3IuZGVm
aW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAg
ICAgfQogICAgIHJldHVybiBmdW5jdGlvbih0eXBlKSB7CiAgICAgICBpZiAodHlwZSA9PSBlbmQp
IHJldHVybiBjb250KCk7Ci0gICAgICBlbHNlIHJldHVybiBwYXNzKHdoYXQsIHByb2NlZWQpOwor
ICAgICAgaWYgKGluZm8gPT09IGZhbHNlKSByZXR1cm4gcGFzcyh3aGF0LCBwcm9jZWVkKTsKKyAg
ICAgIHJldHVybiBwYXNzKHB1c2hsZXgoZW5kLCBpbmZvKSwgd2hhdCwgcHJvY2VlZCwgcG9wbGV4
KTsKICAgICB9OwogICB9CiAgIGZ1bmN0aW9uIGJsb2NrKHR5cGUpIHsKQEAgLTM1Nyw2NyArNDM5
LDEyMSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25m
aWcsIHBhcnNlckNvbmZpZykgewogICAgIHJldHVybiBwYXNzKHN0YXRlbWVudCwgYmxvY2spOwog
ICB9CiAgIGZ1bmN0aW9uIG1heWJldHlwZSh0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0gIjoiKSBy
ZXR1cm4gY29udCh0eXBlZGVmKTsKLSAgICByZXR1cm4gcGFzcygpOworICAgIGlmIChpc1RTICYm
IHR5cGUgPT0gIjoiKSByZXR1cm4gY29udCh0eXBlZGVmKTsKICAgfQogICBmdW5jdGlvbiB0eXBl
ZGVmKHR5cGUpIHsKICAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKXtjeC5tYXJrZWQgPSAidmFy
aWFibGUtMyI7IHJldHVybiBjb250KCk7fQotICAgIHJldHVybiBwYXNzKCk7CiAgIH0KLSAgZnVu
Y3Rpb24gdmFyZGVmMSh0eXBlLCB2YWx1ZSkgewotICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIp
IHsKKyAgZnVuY3Rpb24gdmFyZGVmKCkgeworICAgIHJldHVybiBwYXNzKHBhdHRlcm4sIG1heWJl
dHlwZSwgbWF5YmVBc3NpZ24sIHZhcmRlZkNvbnQpOworICB9CisgIGZ1bmN0aW9uIHBhdHRlcm4o
dHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7IHJlZ2lzdGVyKHZh
bHVlKTsgcmV0dXJuIGNvbnQoKTsgfQorICAgIGlmICh0eXBlID09ICJbIikgcmV0dXJuIGNvbnQo
Y29tbWFzZXAocGF0dGVybiwgIl0iKSk7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gY29u
dChjb21tYXNlcChwcm9wcGF0dGVybiwgIn0iKSk7CisgIH0KKyAgZnVuY3Rpb24gcHJvcHBhdHRl
cm4odHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiICYmICFjeC5zdHJl
YW0ubWF0Y2goL15ccyo6LywgZmFsc2UpKSB7CiAgICAgICByZWdpc3Rlcih2YWx1ZSk7Ci0gICAg
ICByZXR1cm4gaXNUUyA/IGNvbnQobWF5YmV0eXBlLCB2YXJkZWYyKSA6IGNvbnQodmFyZGVmMik7
CisgICAgICByZXR1cm4gY29udChtYXliZUFzc2lnbik7CiAgICAgfQotICAgIHJldHVybiBwYXNz
KCk7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgY3gubWFya2VkID0gInByb3BlcnR5IjsK
KyAgICByZXR1cm4gY29udChleHBlY3QoIjoiKSwgcGF0dGVybiwgbWF5YmVBc3NpZ24pOworICB9
CisgIGZ1bmN0aW9uIG1heWJlQXNzaWduKF90eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9
PSAiPSIpIHJldHVybiBjb250KGV4cHJlc3Npb25Ob0NvbW1hKTsKICAgfQotICBmdW5jdGlvbiB2
YXJkZWYyKHR5cGUsIHZhbHVlKSB7Ci0gICAgaWYgKHZhbHVlID09ICI9IikgcmV0dXJuIGNvbnQo
ZXhwcmVzc2lvbk5vQ29tbWEsIHZhcmRlZjIpOwotICAgIGlmICh0eXBlID09ICIsIikgcmV0dXJu
IGNvbnQodmFyZGVmMSk7CisgIGZ1bmN0aW9uIHZhcmRlZkNvbnQodHlwZSkgeworICAgIGlmICh0
eXBlID09ICIsIikgcmV0dXJuIGNvbnQodmFyZGVmKTsKICAgfQogICBmdW5jdGlvbiBtYXliZWVs
c2UodHlwZSwgdmFsdWUpIHsKICAgICBpZiAodHlwZSA9PSAia2V5d29yZCBiIiAmJiB2YWx1ZSA9
PSAiZWxzZSIpIHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgc3RhdGVtZW50LCBwb3BsZXgp
OwogICB9CisgIGZ1bmN0aW9uIGZvcnNwZWModHlwZSkgeworICAgIGlmICh0eXBlID09ICIoIikg
cmV0dXJuIGNvbnQocHVzaGxleCgiKSIpLCBmb3JzcGVjMSwgZXhwZWN0KCIpIikpOworICB9CiAg
IGZ1bmN0aW9uIGZvcnNwZWMxKHR5cGUpIHsKLSAgICBpZiAodHlwZSA9PSAidmFyIikgcmV0dXJu
IGNvbnQodmFyZGVmMSwgZXhwZWN0KCI7IiksIGZvcnNwZWMyKTsKKyAgICBpZiAodHlwZSA9PSAi
dmFyIikgcmV0dXJuIGNvbnQodmFyZGVmLCBleHBlY3QoIjsiKSwgZm9yc3BlYzIpOwogICAgIGlm
ICh0eXBlID09ICI7IikgcmV0dXJuIGNvbnQoZm9yc3BlYzIpOwotICAgIGlmICh0eXBlID09ICJ2
YXJpYWJsZSIpIHJldHVybiBjb250KGZvcm1heWJlaW4pOworICAgIGlmICh0eXBlID09ICJ2YXJp
YWJsZSIpIHJldHVybiBjb250KGZvcm1heWJlaW5vZik7CiAgICAgcmV0dXJuIHBhc3MoZXhwcmVz
c2lvbiwgZXhwZWN0KCI7IiksIGZvcnNwZWMyKTsKICAgfQotICBmdW5jdGlvbiBmb3JtYXliZWlu
KF90eXBlLCB2YWx1ZSkgewotICAgIGlmICh2YWx1ZSA9PSAiaW4iKSByZXR1cm4gY29udChleHBy
ZXNzaW9uKTsKKyAgZnVuY3Rpb24gZm9ybWF5YmVpbm9mKF90eXBlLCB2YWx1ZSkgeworICAgIGlm
ICh2YWx1ZSA9PSAiaW4iIHx8IHZhbHVlID09ICJvZiIpIHsgY3gubWFya2VkID0gImtleXdvcmQi
OyByZXR1cm4gY29udChleHByZXNzaW9uKTsgfQogICAgIHJldHVybiBjb250KG1heWJlb3BlcmF0
b3JDb21tYSwgZm9yc3BlYzIpOwogICB9CiAgIGZ1bmN0aW9uIGZvcnNwZWMyKHR5cGUsIHZhbHVl
KSB7CiAgICAgaWYgKHR5cGUgPT0gIjsiKSByZXR1cm4gY29udChmb3JzcGVjMyk7Ci0gICAgaWYg
KHZhbHVlID09ICJpbiIpIHJldHVybiBjb250KGV4cHJlc3Npb24pOworICAgIGlmICh2YWx1ZSA9
PSAiaW4iIHx8IHZhbHVlID09ICJvZiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4g
Y29udChleHByZXNzaW9uKTsgfQogICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24sIGV4cGVjdCgi
OyIpLCBmb3JzcGVjMyk7CiAgIH0KICAgZnVuY3Rpb24gZm9yc3BlYzModHlwZSkgewogICAgIGlm
ICh0eXBlICE9ICIpIikgY29udChleHByZXNzaW9uKTsKICAgfQogICBmdW5jdGlvbiBmdW5jdGlv
bmRlZih0eXBlLCB2YWx1ZSkgeworICAgIGlmICh2YWx1ZSA9PSAiKiIpIHtjeC5tYXJrZWQgPSAi
a2V5d29yZCI7IHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTt9CiAgICAgaWYgKHR5cGUgPT0gInZh
cmlhYmxlIikge3JlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoZnVuY3Rpb25kZWYpO30KLSAg
ICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiKSwgcHVzaGNvbnRleHQs
IGNvbW1hc2VwKGZ1bmFyZywgIikiKSwgcG9wbGV4LCBzdGF0ZW1lbnQsIHBvcGNvbnRleHQpOwor
ICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGNvbnRleHQsIGNvbW1hc2VwKGZ1
bmFyZywgIikiKSwgc3RhdGVtZW50LCBwb3Bjb250ZXh0KTsKKyAgfQorICBmdW5jdGlvbiBmdW5h
cmcodHlwZSkgeworICAgIGlmICh0eXBlID09ICJzcHJlYWQiKSByZXR1cm4gY29udChmdW5hcmcp
OworICAgIHJldHVybiBwYXNzKHBhdHRlcm4sIG1heWJldHlwZSk7CisgIH0KKyAgZnVuY3Rpb24g
Y2xhc3NOYW1lKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikge3Jl
Z2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQoY2xhc3NOYW1lQWZ0ZXIpO30KKyAgfQorICBmdW5j
dGlvbiBjbGFzc05hbWVBZnRlcihfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gImV4
dGVuZHMiKSByZXR1cm4gY29udChleHByZXNzaW9uKTsKKyAgfQorICBmdW5jdGlvbiBvYmpsaXQo
dHlwZSkgeworICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQoY29tbWFzZXAob2JqcHJv
cCwgIn0iKSk7CisgIH0KKyAgZnVuY3Rpb24gYWZ0ZXJNb2R1bGUodHlwZSwgdmFsdWUpIHsKKyAg
ICBpZiAodHlwZSA9PSAic3RyaW5nIikgcmV0dXJuIGNvbnQoc3RhdGVtZW50KTsKKyAgICBpZiAo
dHlwZSA9PSAidmFyaWFibGUiKSB7IHJlZ2lzdGVyKHZhbHVlKTsgcmV0dXJuIGNvbnQobWF5YmVG
cm9tKTsgfQorICB9CisgIGZ1bmN0aW9uIGFmdGVyRXhwb3J0KF90eXBlLCB2YWx1ZSkgeworICAg
IGlmICh2YWx1ZSA9PSAiKiIpIHsgY3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4gY29udCht
YXliZUZyb20sIGV4cGVjdCgiOyIpKTsgfQorICAgIGlmICh2YWx1ZSA9PSAiZGVmYXVsdCIpIHsg
Y3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4gY29udChleHByZXNzaW9uLCBleHBlY3QoIjsi
KSk7IH0KKyAgICByZXR1cm4gcGFzcyhzdGF0ZW1lbnQpOworICB9CisgIGZ1bmN0aW9uIGFmdGVy
SW1wb3J0KHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAic3RyaW5nIikgcmV0dXJuIGNvbnQoKTsK
KyAgICByZXR1cm4gcGFzcyhpbXBvcnRTcGVjLCBtYXliZUZyb20pOworICB9CisgIGZ1bmN0aW9u
IGltcG9ydFNwZWModHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBj
b250KGNvbW1hc2VwKGltcG9ydFNwZWMsICJ9IikpOworICAgIGlmICh0eXBlID09ICJ2YXJpYWJs
ZSIpIHJlZ2lzdGVyKHZhbHVlKTsKKyAgICByZXR1cm4gY29udCgpOworICB9CisgIGZ1bmN0aW9u
IG1heWJlRnJvbShfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gImZyb20iKSB7IGN4
Lm1hcmtlZCA9ICJrZXl3b3JkIjsgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7IH0KKyAgfQorICBm
dW5jdGlvbiBtYXliZUFycmF5Q29tcHJlaGVuc2lvbih0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0g
ImZvciIpIHJldHVybiBwYXNzKGNvbXByZWhlbnNpb24pOworICAgIGlmICh0eXBlID09ICIsIikg
cmV0dXJuIGNvbnQoY29tbWFzZXAoZXhwcmVzc2lvbk5vQ29tbWEsICJdIiwgZmFsc2UpKTsKKyAg
ICByZXR1cm4gcGFzcyhjb21tYXNlcChleHByZXNzaW9uTm9Db21tYSwgIl0iLCBmYWxzZSkpOwog
ICB9Ci0gIGZ1bmN0aW9uIGZ1bmFyZyh0eXBlLCB2YWx1ZSkgewotICAgIGlmICh0eXBlID09ICJ2
YXJpYWJsZSIpIHtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBpc1RTID8gY29udChtYXliZXR5cGUp
IDogY29udCgpO30KKyAgZnVuY3Rpb24gY29tcHJlaGVuc2lvbih0eXBlKSB7CisgICAgaWYgKHR5
cGUgPT0gImZvciIpIHJldHVybiBjb250KGZvcnNwZWMsIGNvbXByZWhlbnNpb24pOworICAgIGlm
ICh0eXBlID09ICJpZiIpIHJldHVybiBjb250KGV4cHJlc3Npb24sIGNvbXByZWhlbnNpb24pOwog
ICB9CiAKICAgLy8gSW50ZXJmYWNlCiAKICAgcmV0dXJuIHsKICAgICBzdGFydFN0YXRlOiBmdW5j
dGlvbihiYXNlY29sdW1uKSB7Ci0gICAgICByZXR1cm4gewotICAgICAgICB0b2tlbml6ZToganNU
b2tlbkJhc2UsCi0gICAgICAgIGxhc3RUeXBlOiBudWxsLAorICAgICAgdmFyIHN0YXRlID0gewor
ICAgICAgICB0b2tlbml6ZTogdG9rZW5CYXNlLAorICAgICAgICBsYXN0VHlwZTogInNvZiIsCiAg
ICAgICAgIGNjOiBbXSwKICAgICAgICAgbGV4aWNhbDogbmV3IEpTTGV4aWNhbCgoYmFzZWNvbHVt
biB8fCAwKSAtIGluZGVudFVuaXQsIDAsICJibG9jayIsIGZhbHNlKSwKICAgICAgICAgbG9jYWxW
YXJzOiBwYXJzZXJDb25maWcubG9jYWxWYXJzLAotICAgICAgICBnbG9iYWxWYXJzOiBwYXJzZXJD
b25maWcuZ2xvYmFsVmFycywKICAgICAgICAgY29udGV4dDogcGFyc2VyQ29uZmlnLmxvY2FsVmFy
cyAmJiB7dmFyczogcGFyc2VyQ29uZmlnLmxvY2FsVmFyc30sCiAgICAgICAgIGluZGVudGVkOiAw
CiAgICAgICB9OworICAgICAgaWYgKHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzKSBzdGF0ZS5nbG9i
YWxWYXJzID0gcGFyc2VyQ29uZmlnLmdsb2JhbFZhcnM7CisgICAgICByZXR1cm4gc3RhdGU7CiAg
ICAgfSwKIAogICAgIHRva2VuOiBmdW5jdGlvbihzdHJlYW0sIHN0YXRlKSB7CkBAIC00MjUsOCAr
NTYxLDkgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29u
ZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgICAgaWYgKCFzdGF0ZS5sZXhpY2FsLmhhc093blBy
b3BlcnR5KCJhbGlnbiIpKQogICAgICAgICAgIHN0YXRlLmxleGljYWwuYWxpZ24gPSBmYWxzZTsK
ICAgICAgICAgc3RhdGUuaW5kZW50ZWQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKKyAgICAgICAg
ZmluZEZhdEFycm93KHN0cmVhbSwgc3RhdGUpOwogICAgICAgfQotICAgICAgaWYgKHN0YXRlLnRv
a2VuaXplICE9IGpzVG9rZW5Db21tZW50ICYmIHN0cmVhbS5lYXRTcGFjZSgpKSByZXR1cm4gbnVs
bDsKKyAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSAhPSB0b2tlbkNvbW1lbnQgJiYgc3RyZWFtLmVh
dFNwYWNlKCkpIHJldHVybiBudWxsOwogICAgICAgdmFyIHN0eWxlID0gc3RhdGUudG9rZW5pemUo
c3RyZWFtLCBzdGF0ZSk7CiAgICAgICBpZiAodHlwZSA9PSAiY29tbWVudCIpIHJldHVybiBzdHls
ZTsKICAgICAgIHN0YXRlLmxhc3RUeXBlID0gdHlwZSA9PSAib3BlcmF0b3IiICYmIChjb250ZW50
ID09ICIrKyIgfHwgY29udGVudCA9PSAiLS0iKSA/ICJpbmNkZWMiIDogdHlwZTsKQEAgLTQzNCwy
MSArNTcxLDIxIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9u
KGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgfSwKIAogICAgIGluZGVudDogZnVuY3Rpb24o
c3RhdGUsIHRleHRBZnRlcikgewotICAgICAgaWYgKHN0YXRlLnRva2VuaXplID09IGpzVG9rZW5D
b21tZW50KSByZXR1cm4gQ29kZU1pcnJvci5QYXNzOwotICAgICAgaWYgKHN0YXRlLnRva2VuaXpl
ICE9IGpzVG9rZW5CYXNlKSByZXR1cm4gMDsKKyAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSA9PSB0
b2tlbkNvbW1lbnQpIHJldHVybiBDb2RlTWlycm9yLlBhc3M7CisgICAgICBpZiAoc3RhdGUudG9r
ZW5pemUgIT0gdG9rZW5CYXNlKSByZXR1cm4gMDsKICAgICAgIHZhciBmaXJzdENoYXIgPSB0ZXh0
QWZ0ZXIgJiYgdGV4dEFmdGVyLmNoYXJBdCgwKSwgbGV4aWNhbCA9IHN0YXRlLmxleGljYWw7CiAg
ICAgICAvLyBLbHVkZ2UgdG8gcHJldmVudCAnbWF5YmVsc2UnIGZyb20gYmxvY2tpbmcgbGV4aWNh
bCBzY29wZSBwb3BzCiAgICAgICBmb3IgKHZhciBpID0gc3RhdGUuY2MubGVuZ3RoIC0gMTsgaSA+
PSAwOyAtLWkpIHsKICAgICAgICAgdmFyIGMgPSBzdGF0ZS5jY1tpXTsKICAgICAgICAgaWYgKGMg
PT0gcG9wbGV4KSBsZXhpY2FsID0gbGV4aWNhbC5wcmV2OwotICAgICAgICBlbHNlIGlmIChjICE9
IG1heWJlZWxzZSB8fCAvXmVsc2VcYi8udGVzdCh0ZXh0QWZ0ZXIpKSBicmVhazsKKyAgICAgICAg
ZWxzZSBpZiAoYyAhPSBtYXliZWVsc2UpIGJyZWFrOwogICAgICAgfQogICAgICAgaWYgKGxleGlj
YWwudHlwZSA9PSAic3RhdCIgJiYgZmlyc3RDaGFyID09ICJ9IikgbGV4aWNhbCA9IGxleGljYWwu
cHJldjsKICAgICAgIGlmIChzdGF0ZW1lbnRJbmRlbnQgJiYgbGV4aWNhbC50eXBlID09ICIpIiAm
JiBsZXhpY2FsLnByZXYudHlwZSA9PSAic3RhdCIpCiAgICAgICAgIGxleGljYWwgPSBsZXhpY2Fs
LnByZXY7CiAgICAgICB2YXIgdHlwZSA9IGxleGljYWwudHlwZSwgY2xvc2luZyA9IGZpcnN0Q2hh
ciA9PSB0eXBlOwogCi0gICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikgcmV0dXJuIGxleGljYWwu
aW5kZW50ZWQgKyAoc3RhdGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5sYXN0VHlw
ZSA9PSAiLCIgPyA0IDogMCk7CisgICAgICBpZiAodHlwZSA9PSAidmFyZGVmIikgcmV0dXJuIGxl
eGljYWwuaW5kZW50ZWQgKyAoc3RhdGUubGFzdFR5cGUgPT0gIm9wZXJhdG9yIiB8fCBzdGF0ZS5s
YXN0VHlwZSA9PSAiLCIgPyBsZXhpY2FsLmluZm8gKyAxIDogMCk7CiAgICAgICBlbHNlIGlmICh0
eXBlID09ICJmb3JtIiAmJiBmaXJzdENoYXIgPT0gInsiKSByZXR1cm4gbGV4aWNhbC5pbmRlbnRl
ZDsKICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gImZvcm0iKSByZXR1cm4gbGV4aWNhbC5pbmRlbnRl
ZCArIGluZGVudFVuaXQ7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJzdGF0IikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJy
b3IvbGVzcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFs
L0NvZGVNaXJyb3IvbGVzcy5qcwppbmRleCA4Mzg0YjNjZDc2YjMxYTllMzYyMjY2NDZiOTkxZGRm
MDBhNzY1ODYxLi5kYTM5MDc0ODUxODgwMGFiYzhmM2Y2Y2RjYTkyMDIzM2RmN2EyZWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2Rl
TWlycm9yL2xlc3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RXh0ZXJuYWwvQ29kZU1pcnJvci9sZXNzLmpzCkBAIC0zMiw5ICszMiw5IEBAIENvZGVNaXJyb3Iu
ZGVmaW5lTW9kZSgibGVzcyIsIGZ1bmN0aW9uKGNvbmZpZykgewogICAgICAgICByZXR1cm4gdG9r
ZW5TQ29tbWVudChzdHJlYW0sIHN0YXRlKTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGlmKHR5
cGUgPT0gInN0cmluZyIgfHwgdHlwZSA9PSAiKCIpIHJldHVybiByZXQoInN0cmluZyIsICJzdHJp
bmciKTsKLSAgICAgICAgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICE9IHVu
ZGVmaW5lZCkgcmV0dXJuIHJldChudWxsLCBjaCk7CisgICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0
YXRlLnN0YWNrLmxlbmd0aC0xXSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcmV0KG51bGwsIGNoKTsK
ICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXGEtekEtWjAtOVwtXy5cc10vKTsKLSAgICAgICAg
aWYoIC9cL3xcKXwjLy50ZXN0KHN0cmVhbS5wZWVrKCkgfHwgKHN0cmVhbS5lYXRTcGFjZSgpICYm
IHN0cmVhbS5wZWVrKCkgPT0gIikiKSkgIHx8IHN0cmVhbS5lb2woKSApcmV0dXJuIHJldCgic3Ry
aW5nIiwgInN0cmluZyIpOyAvLyBsZXQgdXJsKC9pbWFnZXMvbG9nby5wbmcpIHdpdGhvdXQgcXVv
dGVzIHJldHVybiBhcyBzdHJpbmcKKyAgICAgICAgaWYoIC9cL3xcKXwjLy50ZXN0KHN0cmVhbS5w
ZWVrKCkgfHwgKHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0cmVhbS5wZWVrKCkgPT09ICIpIikpICB8
fCBzdHJlYW0uZW9sKCkgKXJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsgLy8gbGV0IHVy
bCgvaW1hZ2VzL2xvZ28ucG5nKSB3aXRob3V0IHF1b3RlcyByZXR1cm4gYXMgc3RyaW5nCiAgICAg
ICB9CiAgICAgfSBlbHNlIGlmIChjaCA9PSAiISIpIHsKICAgICAgIHN0cmVhbS5tYXRjaCgvXlxz
Klx3Ki8pOwpAQCAtNjYsMTAgKzY2LDEzIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgibGVzcyIs
IGZ1bmN0aW9uKGNvbmZpZykgewogICAgICAgICByZXR1cm4gcmV0KG51bGwsIGNoKTsKICAgICAg
IH0KICAgICB9IGVsc2UgaWYgKGNoID09ICIuIikgewotICAgICAgaWYodHlwZSA9PSAiKCIgfHwg
dHlwZSA9PSAic3RyaW5nIilyZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7IC8vIGFsbG93
IHVybCguLi9pbWFnZS5wbmcpCisgICAgICBpZih0eXBlID09ICIoIilyZXR1cm4gcmV0KCJzdHJp
bmciLCAic3RyaW5nIik7IC8vIGFsbG93IHVybCguLi9pbWFnZS5wbmcpCiAgICAgICBzdHJlYW0u
ZWF0V2hpbGUoL1tcYS16QS1aMC05XC1fXS8pOwotICAgICAgaWYoc3RyZWFtLnBlZWsoKSA9PSAi
ICIpc3RyZWFtLmVhdFNwYWNlKCk7Ci0gICAgICBpZihzdHJlYW0ucGVlaygpID09ICIpIilyZXR1
cm4gcmV0KCJudW1iZXIiLCAidW5pdCIpOy8vcmdiYSgwLDAsMCwuMjUpOworICAgICAgaWYoc3Ry
ZWFtLnBlZWsoKSA9PT0gIiAiKXN0cmVhbS5lYXRTcGFjZSgpOworICAgICAgaWYoc3RyZWFtLnBl
ZWsoKSA9PT0gIikiIHx8IHR5cGUgPT09ICI6IilyZXR1cm4gcmV0KCJudW1iZXIiLCAidW5pdCIp
Oy8vcmdiYSgwLDAsMCwuMjUpOworICAgICAgZWxzZSBpZihzdHJlYW0uY3VycmVudCgpLmxlbmd0
aCA+MSl7CisgICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0g
InJ1bGUiICYmIHN0cmVhbS5wZWVrKCkubWF0Y2goL3t8LHxcK3xcKC8pID09PSBudWxsKXJldHVy
biByZXQoIm51bWJlciIsICJ1bml0Iik7CisgICAgICB9CiAgICAgICByZXR1cm4gcmV0KCJ0YWci
LCAidGFnIik7CiAgICAgfSBlbHNlIGlmIChjaCA9PSAiIyIpIHsKICAgICAgIC8vd2UgZG9uJ3Qg
ZWF0IHdoaXRlLXNwYWNlLCB3ZSB3YW50IHRoZSBoZXggY29sb3IgYW5kIG9yIGlkIG9ubHkKQEAg
LTgyLDIxICs4NSwyNCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImxlc3MiLCBmdW5jdGlvbihj
b25maWcpIHsKICAgICAgICAgICAvL2VhdCB3aGl0ZS1zcGFjZQogICAgICAgICAgIHN0cmVhbS5l
YXRTcGFjZSgpOwogICAgICAgICAgIC8vd2hlbiBoZXggdmFsdWUgZGVjbGFyYXRpb24gZG9lc24n
dCBlbmQgd2l0aCBbOyxdIGJ1dCBpcyBkb2VzIHdpdGggYSBzbGFzaC9jYyBjb21tZW50IHRyZWF0
IGl0IGFzIGFuIGlkLCBqdXN0IGxpa2UgdGhlIG90aGVyIGhleCB2YWx1ZXMgdGhhdCBkb24ndCBl
bmQgd2l0aFs7LF0KLSAgICAgICAgICBpZiggL1tcLzw+LigpeyEkJV4mKl9cLVxcPz0rXHwjJ35g
XS8udGVzdChzdHJlYW0ucGVlaygpKSApcmV0dXJuIHJldCgiYXRvbSIsICJ0YWciKTsKKyAgICAg
ICAgICBpZiggL1tcLzw+LigpeyEkJV4mKl9cLVxcPz0rXHwjJ35gXS8udGVzdChzdHJlYW0ucGVl
aygpKSApeworICAgICAgICAgICAgaWYodHlwZSA9PT0gInNlbGVjdC1vcCIpcmV0dXJuIHJldCgi
bnVtYmVyIiwgInVuaXQiKTsgZWxzZSByZXR1cm4gcmV0KCJhdG9tIiwgInRhZyIpOworICAgICAg
ICAgIH0KICAgICAgICAgICAvLyN0aW1lIHsgY29sb3I6ICNhYWEgfQogICAgICAgICAgIGVsc2Ug
aWYoc3RyZWFtLnBlZWsoKSA9PSAifSIgKXJldHVybiByZXQoIm51bWJlciIsICJ1bml0Iik7CiAg
ICAgICAgICAgLy93ZSBoYXZlIGEgdmFsaWQgaGV4IGNvbG9yIHZhbHVlLCBwYXJzZSBhcyBpZCB3
aGVuZXZlciBhbiBlbGVtZW50L2NsYXNzIGlzIGRlZmluZWQgYWZ0ZXIgdGhlIGhleChpZCkgdmFs
dWUgZS5nLiAjZWVlIGFhYSB8fCAjZWVlIC5hYWEKLSAgICAgICAgICAgIGVsc2UgaWYoIC9bYS16
QS1aXFxdLy50ZXN0KHN0cmVhbS5wZWVrKCkpIClyZXR1cm4gcmV0KCJhdG9tIiwgInRhZyIpOwor
ICAgICAgICAgIGVsc2UgaWYoIC9bYS16QS1aXFxdLy50ZXN0KHN0cmVhbS5wZWVrKCkpIClyZXR1
cm4gcmV0KCJhdG9tIiwgInRhZyIpOwogICAgICAgICAgIC8vd2hlbiBhIGhleCB2YWx1ZSBpcyBv
biB0aGUgZW5kIG9mIGEgbGluZSwgcGFyc2UgYXMgaWQKLSAgICAgICAgICAgICAgZWxzZSBpZihz
dHJlYW0uZW9sKCkpcmV0dXJuIHJldCgiYXRvbSIsICJ0YWciKTsKKyAgICAgICAgICBlbHNlIGlm
KHN0cmVhbS5lb2woKSlyZXR1cm4gcmV0KCJhdG9tIiwgInRhZyIpOwogICAgICAgICAgIC8vZGVm
YXVsdAotICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIHJldCgibnVtYmVyIiwgInVuaXQiKTsK
KyAgICAgICAgICBlbHNlIHJldHVybiByZXQoIm51bWJlciIsICJ1bml0Iik7CiAgICAgICAgIH0g
ZWxzZSB7Ly93aGVuIG5vdCBhIHZhbGlkIGhleHZhbHVlIGluIHRoZSBjdXJyZW50IHN0cmVhbSBl
LmcuICNmb290ZXIKICAgICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1dLyk7Ci0gICAg
ICAgICAgcmV0dXJuIHJldCgiYXRvbSIsICJ0YWciKTsKKyAgICAgICAgICByZXR1cm4gcmV0KCJh
dG9tIiwgc3RyZWFtLmN1cnJlbnQoKSk7CiAgICAgICAgIH0KICAgICAgIH0gZWxzZSB7Ly93aGVu
IG5vdCBhIHZhbGlkIGhleHZhbHVlIGxlbmd0aAogICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tc
d1xcXC1dLyk7CisgICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9
PT0gInJ1bGUiKXJldHVybiByZXQoImF0b20iLCBzdHJlYW0uY3VycmVudCgpKTtyZXR1cm4gcmV0
KCJhdG9tIiwgc3RyZWFtLmN1cnJlbnQoKSk7CiAgICAgICAgIHJldHVybiByZXQoImF0b20iLCAi
dGFnIik7CiAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjaCA9PSAiJiIpIHsKQEAgLTEwNCwxNyAr
MTEwLDMzIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgibGVzcyIsIGZ1bmN0aW9uKGNvbmZpZykg
ewogICAgICAgcmV0dXJuIHJldChudWxsLCBjaCk7CiAgICAgfSBlbHNlIHsKICAgICAgIHN0cmVh
bS5lYXRXaGlsZSgvW1x3XFxcLV8lLntdLyk7Ci0gICAgICBpZih0eXBlID09ICJzdHJpbmciKXsK
LSAgICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIpOworICAgICAgaWYoc3RyZWFt
LmN1cnJlbnQoKS5tYXRjaCgvXFwvKSAhPT0gbnVsbCl7CisgICAgICAgIGlmKHN0cmVhbS5jdXJy
ZW50KCkuY2hhckF0KHN0cmVhbS5jdXJyZW50KCkubGVuZ3RoLTEpID09PSAiXFwiKXsKKyAgICAg
ICAgICBzdHJlYW0uZWF0KC9cJ3xcInxcKXxcKC8pOworICAgICAgICAgIHdoaWxlKHN0cmVhbS5l
YXRXaGlsZSgvW1x3XFxcLV8lLntdLykpeworICAgICAgICAgICAgc3RyZWFtLmVhdCgvXCd8XCJ8
XCl8XCgvKTsKKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwgc3Ry
ZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIH0KKyAgICAgIH0gLy9lbHNlIGlmKHR5cGUgPT09ICJ0
YWciKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKKyAgICAgICAgZWxzZSBpZih0eXBlID09ICJz
dHJpbmciKXsKKyAgICAgICAgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09
PSAieyIgJiYgc3RyZWFtLnBlZWsoKSA9PT0gIjoiKXJldHVybiByZXQoInZhcmlhYmxlIiwgInZh
cmlhYmxlIik7CisgICAgICAgIGlmKHN0cmVhbS5wZWVrKCkgPT09ICIvIilzdHJlYW0uZWF0V2hp
bGUoL1tcd1xcXC1fJS57OlwvXS8pOworICAgICAgICByZXR1cm4gcmV0KHR5cGUsIHN0cmVhbS5j
dXJyZW50KCkpOwogICAgICAgfSBlbHNlIGlmKHN0cmVhbS5jdXJyZW50KCkubWF0Y2goLyheaHR0
cCR8Xmh0dHBzJCkvKSAhPSBudWxsKXsKICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHdcXFwt
XyUuezpcL10vKTsKKyAgICAgICAgaWYoc3RyZWFtLnBlZWsoKSA9PT0gIi8iKXN0cmVhbS5lYXRX
aGlsZSgvW1x3XFxcLV8lLns6XC9dLyk7CiAgICAgICAgIHJldHVybiByZXQoInN0cmluZyIsICJz
dHJpbmciKTsKICAgICAgIH0gZWxzZSBpZihzdHJlYW0ucGVlaygpID09ICI8IiB8fCBzdHJlYW0u
cGVlaygpID09ICI+IiB8fCBzdHJlYW0ucGVlaygpID09ICIrIil7CisgICAgICAgIGlmKHR5cGUg
PT09ICIoIiAmJiAoc3RyZWFtLmN1cnJlbnQoKSA9PT0gIm4iIHx8IHN0cmVhbS5jdXJyZW50KCkg
PT09ICItbiIpKXJldHVybiByZXQoInN0cmluZyIsIHN0cmVhbS5jdXJyZW50KCkpOwogICAgICAg
ICByZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CiAgICAgICB9IGVsc2UgaWYoIC9cKC8udGVzdChz
dHJlYW0ucGVlaygpKSApeworICAgICAgICBpZihzdHJlYW0uY3VycmVudCgpID09PSAid2hlbiIp
cmV0dXJuIHJldCgidmFyaWFibGUiLCJ2YXJpYWJsZSIpOworICAgICAgICBlbHNlIGlmKHN0YXRl
LnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gIkBtZWRpYSIgJiYgc3RyZWFtLmN1cnJl
bnQoKSA9PT0gImFuZCIpcmV0dXJuIHJldCgidmFyaWFibGUiLHN0cmVhbS5jdXJyZW50KCkpOwog
ICAgICAgICByZXR1cm4gcmV0KG51bGwsIGNoKTsKLSAgICAgIH0gZWxzZSBpZiAoc3RyZWFtLnBl
ZWsoKSA9PSAiLyIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICE9IHVuZGVm
aW5lZCl7IC8vIHVybChkaXIvY2VudGVyL2ltYWdlLnBuZykKLSAgICAgICAgcmV0dXJuIHJldCgi
c3RyaW5nIiwgInN0cmluZyIpOworICAgICAgfSBlbHNlIGlmIChzdHJlYW0ucGVlaygpID09ICIv
IiAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gIT09IHVuZGVmaW5lZCl7IC8v
IHVybChkaXIvY2VudGVyL2ltYWdlLnBuZykKKyAgICAgICAgaWYoc3RyZWFtLnBlZWsoKSA9PT0g
Ii8iKXN0cmVhbS5lYXRXaGlsZSgvW1x3XFxcLV8lLns6XC9dLyk7CisgICAgICAgIHJldHVybiBy
ZXQoInN0cmluZyIsIHN0cmVhbS5jdXJyZW50KCkpOwogICAgICAgfSBlbHNlIGlmKCBzdHJlYW0u
Y3VycmVudCgpLm1hdGNoKC9cLVxkfFwtLlxkLykgKXsgLy8gbWF0Y2ggZS5nLjogLTVweCAtMC40
IGV0Yy4uLiBvbmx5IGNvbG9yaXplIHRoZSBtaW51cyBzaWduCiAgICAgICAgIC8vY29tbW1lbnQg
b3V0IHRoZXNlIDIgY29tbWVudCBpZiB5b3Ugd2FudCB0aGUgbWludXMgc2lnbiB0byBiZSBwYXJz
ZWQgYXMgbnVsbCAtNTAwcHgKICAgICAgICAgLy9zdHJlYW0uYmFja1VwKHN0cmVhbS5jdXJyZW50
KCkubGVuZ3RoLTEpOwpAQCAtMTI5LDE0ICsxNTEsMzMgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2Rl
KCJsZXNzIiwgZnVuY3Rpb24oY29uZmlnKSB7CiAgICAgICAgIGlmKCAvW3s8Pi5hLXpBLVpcL10v
LnRlc3Qoc3RyZWFtLnBlZWsoKSkgIHx8IHN0cmVhbS5lb2woKSApcmV0dXJuIHJldCgidGFnIiwg
InRhZyIpOyAvLyBlLmcuIGJ1dHRvbi5pY29uLXBsdXMKICAgICAgICAgcmV0dXJuIHJldCgic3Ry
aW5nIiwgInN0cmluZyIpOyAvLyBsZXQgdXJsKC9pbWFnZXMvbG9nby5wbmcpIHdpdGhvdXQgcXVv
dGVzIHJldHVybiBhcyBzdHJpbmcKICAgICAgIH0gZWxzZSBpZiggc3RyZWFtLmVvbCgpIHx8IHN0
cmVhbS5wZWVrKCkgPT0gIlsiIHx8IHN0cmVhbS5wZWVrKCkgPT0gIiMiIHx8IHR5cGUgPT0gInRh
ZyIgKXsKKwogICAgICAgICBpZihzdHJlYW0uY3VycmVudCgpLnN1YnN0cmluZyhzdHJlYW0uY3Vy
cmVudCgpLmxlbmd0aC0xLHN0cmVhbS5jdXJyZW50KCkubGVuZ3RoKSA9PSAieyIpc3RyZWFtLmJh
Y2tVcCgxKTsKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgt
MV0gPT09ICJib3JkZXItY29sb3IiIHx8IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0x
XSA9PT0gImJhY2tncm91bmQtcG9zaXRpb24iIHx8IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxl
bmd0aC0xXSA9PT0gImZvbnQtZmFtaWx5IilyZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJyZW50
KCkpOworICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICJ0YWciKXJldHVybiByZXQoInRhZyIsICJ0
YWciKTsKKyAgICAgICAgZWxzZSBpZigodHlwZSA9PT0gIjoiIHx8IHR5cGUgPT09ICJ1bml0Iikg
JiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAicnVsZSIpcmV0dXJuIHJl
dChudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFja1tz
dGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIiAmJiB0eXBlID09PSAidGFnIilyZXR1cm4g
cmV0KCJzdHJpbmciLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICI7IiAmJiB0eXBlID09PSAiOiIpcmV0dXJu
IHJldChudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgLy9lbHNlIGlmKHN0YXRlLnN0
YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gIjsiIHx8IHR5cGUgPT09ICIiKXJldHVybiBy
ZXQoInZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIGVsc2UgaWYoc3RyZWFt
LnBlZWsoKSA9PT0gIiMiICYmIHR5cGUgIT09IHVuZGVmaW5lZCAmJiB0eXBlLm1hdGNoKC9cK3ws
fHRhZ3xzZWxlY3RcLW9wfH18e3w7L2cpID09PSBudWxsKXJldHVybiByZXQoInN0cmluZyIsIHN0
cmVhbS5jdXJyZW50KCkpOworICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICJ2YXJpYWJsZSIpcmV0
dXJuIHJldChudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJ7IiAmJiB0eXBlID09PSAiY29tbWVudCIp
cmV0dXJuIHJldCgidmFyaWFibGUiLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBp
ZihzdGF0ZS5zdGFjay5sZW5ndGggPT09IDAgJiYgKHR5cGUgPT09ICI7IiB8fCB0eXBlID09PSAi
Y29tbWVudCIpKXJldHVybiByZXQoInRhZyIsIHN0cmVhbS5jdXJyZW50KCkpOworICAgICAgICBl
bHNlIGlmKChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJ7IiB8fCB0eXBl
ID09PSAiOyIpICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSAhPT0gIkBtZWRp
YXsiKXJldHVybiByZXQoInZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIGVs
c2UgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTJdID09PSAieyIgJiYgc3RhdGUu
c3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAiOyIpcmV0dXJuIHJldCgidmFyaWFibGUi
LCBzdHJlYW0uY3VycmVudCgpKTsKKwogICAgICAgICByZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7
CiAgICAgICB9IGVsc2UgaWYodHlwZSA9PSAiY29tcGFyZSIgfHwgdHlwZSA9PSAiYSIgfHwgdHlw
ZSA9PSAiKCIpewogICAgICAgICByZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7CiAgICAg
ICB9IGVsc2UgaWYodHlwZSA9PSAifCIgfHwgc3RyZWFtLmN1cnJlbnQoKSA9PSAiLSIgfHwgdHlw
ZSA9PSAiWyIpewotICAgICAgICBpZih0eXBlID09ICJ8IiApcmV0dXJuIHJldCgidGFnIiwgInRh
ZyIpOworICAgICAgICBpZih0eXBlID09ICJ8IiAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC9cXXw9
fFx+LykgIT09IG51bGwpcmV0dXJuIHJldCgibnVtYmVyIiwgc3RyZWFtLmN1cnJlbnQoKSk7Cisg
ICAgICAgIGVsc2UgaWYodHlwZSA9PSAifCIgKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKKyAg
ICAgICAgZWxzZSBpZih0eXBlID09ICJbIil7CisgICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9c
d1wtLyk7CisgICAgICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgc3RyZWFtLmN1cnJlbnQoKSk7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJldChudWxsLCBjaCk7Ci0gICAgICB9IGVsc2Ug
aWYoc3RyZWFtLnBlZWsoKSA9PSAiOiIpIHsKKyAgICAgIH0gZWxzZSBpZigoc3RyZWFtLnBlZWso
KSA9PSAiOiIpIHx8ICggc3RyZWFtLmVhdFNwYWNlKCkgJiYgc3RyZWFtLnBlZWsoKSA9PSAiOiIp
KSB7CiAgICAgICAgIHN0cmVhbS5uZXh0KCk7CiAgICAgICAgIHZhciB0X3YgPSBzdHJlYW0ucGVl
aygpID09ICI6IiA/IHRydWUgOiBmYWxzZTsKICAgICAgICAgaWYoIXRfdil7CkBAIC0xNTIsMTEg
KzE5Myw1MCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImxlc3MiLCBmdW5jdGlvbihjb25maWcp
IHsKICAgICAgICAgICBzdHJlYW0uYmFja1VwKDEpOwogICAgICAgICB9CiAgICAgICAgIGlmKHRf
dilyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7IGVsc2UgcmV0dXJuIHJldCgidmFyaWFibGUiLCAi
dmFyaWFibGUiKTsKLSAgICAgIH0gZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGgtMV0gID09PSAiZm9udC1mYW1pbHkiKXsKKyAgICAgIH0gZWxzZSBpZihzdGF0ZS5zdGFja1tz
dGF0ZS5zdGFjay5sZW5ndGgtMV0gID09PSAiZm9udC1mYW1pbHkiIHx8IHN0YXRlLnN0YWNrW3N0
YXRlLnN0YWNrLmxlbmd0aC0xXSAgPT09ICJiYWNrZ3JvdW5kLXBvc2l0aW9uIiB8fCBzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gID09PSAiYm9yZGVyLWNvbG9yIil7CiAgICAgICAg
IHJldHVybiByZXQobnVsbCwgbnVsbCk7CiAgICAgICB9IGVsc2UgewotICAgICAgICBpZihzdGF0
ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJ7IiB8fCB0eXBlID09PSAic2VsZWN0
LW9wIiAgfHwgKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInJ1bGUiICYm
IHR5cGUgPT09ICIsIikgKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKLSAgICAgICAgcmV0dXJu
IHJldCgidmFyaWFibGUiLCAidmFyaWFibGUiKTsKKworICAgICAgICBpZihzdGF0ZS5zdGFja1tz
dGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09IG51bGwgJiYgdHlwZSA9PT0gIjoiKXJldHVybiByZXQo
bnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7CisKKyAgICAgICAgLy9lbHNlIGlmKCh0eXBlID09PSAi
KSIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAicnVsZSIpIHx8IChz
dGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMl0gPT09ICJ7IiAmJiBzdGF0ZS5zdGFja1tz
dGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIiAmJiB0eXBlID09PSAidmFyaWFibGUiKSly
ZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOworCisgICAgICAgIGVsc2UgaWYoL1xe
fFwkLy50ZXN0KHN0cmVhbS5jdXJyZW50KCkpICYmIHN0cmVhbS5wZWVrKCkubWF0Y2goL1x+fD0v
KSAhPT0gbnVsbClyZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7Ly9hdHRePXZhbAorCisg
ICAgICAgIGVsc2UgaWYodHlwZSA9PT0gInVuaXQiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNr
Lmxlbmd0aC0xXSA9PT0gInJ1bGUiKXJldHVybiByZXQobnVsbCwgInVuaXQiKTsKKyAgICAgICAg
ZWxzZSBpZih0eXBlID09PSAidW5pdCIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3Ro
LTFdID09PSAiOyIpcmV0dXJuIHJldChudWxsLCAidW5pdCIpOworICAgICAgICBlbHNlIGlmKHR5
cGUgPT09ICIpIiAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxl
IilyZXR1cm4gcmV0KG51bGwsICJ1bml0Iik7CisgICAgICAgIGVsc2UgaWYodHlwZSAmJiB0eXBl
Lm1hdGNoKCJAIikgIT09IG51bGwgICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0x
XSA9PT0gInJ1bGUiKXJldHVybiByZXQobnVsbCwgInVuaXQiKTsKKyAgICAgICAgLy9lbHNlIGlm
KHR5cGUgPT09ICJ1bml0IiAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09
ICJydWxlIilyZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOworCisgICAgICAgIGVs
c2UgaWYoKHR5cGUgPT09ICI7IiB8fCB0eXBlID09PSAifSIgfHwgdHlwZSA9PT0gIiwiKSAmJiBz
dGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICI7IilyZXR1cm4gcmV0KCJ0YWci
LCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZigodHlwZSA9PT0gIjsiICYmIHN0
cmVhbS5wZWVrKCkgIT09IHVuZGVmaW5lZCAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC97fC4vKSA9
PT0gbnVsbCkgfHwgKHR5cGUgPT09ICI7IiAmJiBzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0u
cGVlaygpLm1hdGNoKC97fC4vKSA9PT0gbnVsbCkpcmV0dXJuIHJldCgidmFyaWFibGUiLCBzdHJl
YW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZigodHlwZSA9PT0gIkBtZWRpYSIgJiYgc3Rh
dGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAiQG1lZGlhIikgfHwgdHlwZSA9PT0g
IkBuYW1lc3BhY2UiKXJldHVybiByZXQoInRhZyIsIHN0cmVhbS5jdXJyZW50KCkpOworCisgICAg
ICAgIGVsc2UgaWYodHlwZSA9PT0gInsiICAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGgtMV0gPT09ICI7IiAmJiBzdHJlYW0ucGVlaygpID09PSAieyIpcmV0dXJuIHJldCgidGFnIiwg
InRhZyIpOworICAgICAgICBlbHNlIGlmKCh0eXBlID09PSAieyIgfHwgdHlwZSA9PT0gIjoiKSAm
JiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICI7IilyZXR1cm4gcmV0KG51
bGwsIHN0cmVhbS5jdXJyZW50KCkpOworICAgICAgICBlbHNlIGlmKChzdGF0ZS5zdGFja1tzdGF0
ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJ7IiAmJiBzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0u
cGVlaygpLm1hdGNoKC8ufCMvKSA9PT0gbnVsbCkgfHwgdHlwZSA9PT0gInNlbGVjdC1vcCIgIHx8
IChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIiAmJiB0eXBlID09
PSAiLCIpIClyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CisgICAgICAgIGVsc2UgaWYodHlwZSA9
PT0gInZhcmlhYmxlIiAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJy
dWxlIilyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CisgICAgICAgIGVsc2UgaWYoKHN0cmVhbS5l
YXRTcGFjZSgpICYmIHN0cmVhbS5wZWVrKCkgPT09ICJ7IikgfHwgc3RyZWFtLmVvbCgpIHx8IHN0
cmVhbS5wZWVrKCkgPT09ICJ7IilyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CisgICAgICAgIC8v
dGhpcyBvbmUgbWVzc2VzIHVwIGluZGVudGF0aW9uCisgICAgICAgIC8vZWxzZSBpZigodHlwZSA9
PT0gIn0iICYmIHN0cmVhbS5wZWVrKCkgIT09ICI6IikgfHwgKHR5cGUgPT09ICJ9IiAmJiBzdHJl
YW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpICE9PSAiOiIpKXJldHVybih0eXBlLCAidGFn
Iik7CisKKyAgICAgICAgZWxzZSBpZih0eXBlID09PSAiKSIgJiYgKHN0cmVhbS5jdXJyZW50KCkg
PT0gImFuZCIgfHwgc3RyZWFtLmN1cnJlbnQoKSA9PSAiYW5kICIpKXJldHVybiByZXQoInZhcmlh
YmxlIiwgInZhcmlhYmxlIik7CisgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIikiICYmIChzdHJl
YW0uY3VycmVudCgpID09ICJ3aGVuIiB8fCBzdHJlYW0uY3VycmVudCgpID09ICJ3aGVuICIpKXJl
dHVybiByZXQoInZhcmlhYmxlIiwgInZhcmlhYmxlIik7CisgICAgICAgIGVsc2UgaWYodHlwZSA9
PT0gIikiIHx8IHR5cGUgPT09ICJjb21tZW50IiB8fCB0eXBlID09PSAieyIpcmV0dXJuIHJldCgi
dGFnIiwgInRhZyIpOworICAgICAgICBlbHNlIGlmKHN0cmVhbS5zb2woKSlyZXR1cm4gcmV0KCJ0
YWciLCAidGFnIik7CisgICAgICAgIGVsc2UgaWYoKHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0cmVh
bS5wZWVrKCkgPT09ICIjIikgfHwgc3RyZWFtLnBlZWsoKSA9PT0gIiMiKXJldHVybiByZXQoInRh
ZyIsICJ0YWciKTsKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFjay5sZW5ndGggPT09IDApcmV0
dXJuIHJldCgidGFnIiwgInRhZyIpOworICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICI7IiAmJiBz
dHJlYW0ucGVlaygpICE9PSB1bmRlZmluZWQgJiYgc3RyZWFtLnBlZWsoKS5tYXRjaCgvXlsufFwj
XS9nKSAhPT0gbnVsbClyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CisKKyAgICAgICAgZWxzZSBp
Zih0eXBlID09PSAiOiIpe3N0cmVhbS5lYXRTcGFjZSgpO3JldHVybiByZXQobnVsbCwgc3RyZWFt
LmN1cnJlbnQoKSk7fQorCisgICAgICAgIGVsc2UgaWYoc3RyZWFtLmN1cnJlbnQoKSA9PT0gImFu
ZCAiIHx8IHN0cmVhbS5jdXJyZW50KCkgPT09ICJhbmQiKXJldHVybiByZXQoInZhcmlhYmxlIiwg
c3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIjsiICYmIHN0YXRl
LnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInsiKXJldHVybiByZXQoInZhcmlhYmxl
Iiwgc3RyZWFtLmN1cnJlbnQoKSk7CisKKyAgICAgICAgZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0
ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJy
ZW50KCkpOworCisgICAgICAgIHJldHVybiByZXQoInRhZyIsIHN0cmVhbS5jdXJyZW50KCkpOwog
ICAgICAgfQogICAgIH0KICAgfQpAQCAtMjM0LDIwICszMTQsMzAgQEAgQ29kZU1pcnJvci5kZWZp
bmVNb2RlKCJsZXNzIiwgZnVuY3Rpb24oY29uZmlnKSB7CiAgICAgICBlbHNlIGlmICh0eXBlID09
ICJ9Iikgc3RhdGUuc3RhY2sucG9wKCk7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJAbWVkaWEi
KSBzdGF0ZS5zdGFjay5wdXNoKCJAbWVkaWEiKTsKICAgICAgIGVsc2UgaWYgKHN0cmVhbS5jdXJy
ZW50KCkgPT09ICJmb250LWZhbWlseSIpIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0x
XSA9ICJmb250LWZhbWlseSI7CisgICAgICBlbHNlIGlmIChzdHJlYW0uY3VycmVudCgpID09PSAi
YmFja2dyb3VuZC1wb3NpdGlvbiIpIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9
ICJiYWNrZ3JvdW5kLXBvc2l0aW9uIjsKKyAgICAgIGVsc2UgaWYgKHN0cmVhbS5jdXJyZW50KCkg
PT09ICJib3JkZXItY29sb3IiKSBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPSAi
Ym9yZGVyLWNvbG9yIjsKICAgICAgIGVsc2UgaWYgKGNvbnRleHQgPT0gInsiICYmIHR5cGUgIT0g
ImNvbW1lbnQiICYmIHR5cGUgIT09ICJ0YWciKSBzdGF0ZS5zdGFjay5wdXNoKCJydWxlIik7CiAg
ICAgICBlbHNlIGlmIChzdHJlYW0ucGVlaygpID09PSAiOiIgJiYgc3RyZWFtLmN1cnJlbnQoKS5t
YXRjaCgvQHwjLykgPT09IG51bGwpIHN0eWxlID0gdHlwZTsKKyAgICAgIGlmKHR5cGUgPT09ICI7
IiAmJiAoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09ICJmb250LWZhbWlseSIg
fHwgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09ICJiYWNrZ3JvdW5kLXBvc2l0
aW9uIiB8fCBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT0gImJvcmRlci1jb2xv
ciIpKXN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9IHN0cmVhbS5jdXJyZW50KCk7
CisgICAgICBlbHNlIGlmKHR5cGUgPT09ICJ0YWciICYmIHN0cmVhbS5wZWVrKCkgPT09ICIpIiAm
JiBzdHJlYW0uY3VycmVudCgpLm1hdGNoKC9cOi8pID09PSBudWxsKXt0eXBlID0gbnVsbDsgc3R5
bGUgPSBudWxsO30KKyAgICAgIC8vID8/Pz8KKyAgICAgIGVsc2UgaWYoKHR5cGUgPT09ICJ2YXJp
YWJsZSIgJiYgc3RyZWFtLnBlZWsoKSA9PT0gIikiKSB8fCAodHlwZSA9PT0gInZhcmlhYmxlIiAm
JiBzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpID09PSAiKSIpKXJldHVybiByZXQo
bnVsbCxzdHJlYW0uY3VycmVudCgpKTsKICAgICAgIHJldHVybiBzdHlsZTsKICAgICB9LAogCiAg
ICAgaW5kZW50OiBmdW5jdGlvbihzdGF0ZSwgdGV4dEFmdGVyKSB7CiAgICAgICB2YXIgbiA9IHN0
YXRlLnN0YWNrLmxlbmd0aDsKLQogICAgICAgaWYgKC9eXH0vLnRlc3QodGV4dEFmdGVyKSkKLSAg
ICAgICAgbiAtPSBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT0gInJ1bGUiID8g
MiA6IDE7CisgICAgICAgIG4gLT0gc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09
PSAicnVsZSIgPyAyIDogMTsKKyAgICAgIGVsc2UgaWYgKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNr
Lmxlbmd0aC0yXSA9PT0gInsiKQorICAgICAgICBuIC09IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNr
Lmxlbmd0aC0xXSA9PT0gInJ1bGUiID8gMSA6IDA7CiAgICAgICByZXR1cm4gc3RhdGUuYmFzZUlu
ZGVudCArIG4gKiBpbmRlbnRVbml0OwogICAgIH0sCiAKLSAgICBlbGVjdHJpY0NoYXJzOiAifSIK
KyAgICBlbGVjdHJpY0NoYXJzOiAifSIsCisgICAgYmxvY2tDb21tZW50U3RhcnQ6ICIvKiIsCisg
ICAgYmxvY2tDb21tZW50RW5kOiAiKi8iLAorICAgIGxpbmVDb21tZW50OiAiLy8iCiAgIH07CiB9
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0
ZXJuYWwvQ29kZU1pcnJvci9tYXRjaGJyYWNrZXRzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9tYXRjaGJyYWNrZXRzLmpzCmluZGV4
IDEzMWZlODMxZmRjNzY2MmJiNmYyNTlkNDM2NzVkZWZiMTlmZTc2ZWQuLjlkOWIzODgyZjdjNWRh
NDcxMDdhMWQ5YTdkOTZiZWQwOWFjNjIwODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbWF0Y2hicmFja2V0cy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWly
cm9yL21hdGNoYnJhY2tldHMuanMKQEAgLTgsNiArOCw3IEBACiAgIGZ1bmN0aW9uIGZpbmRNYXRj
aGluZ0JyYWNrZXQoY20sIHdoZXJlLCBzdHJpY3QpIHsKICAgICB2YXIgc3RhdGUgPSBjbS5zdGF0
ZS5tYXRjaEJyYWNrZXRzOwogICAgIHZhciBtYXhTY2FuTGVuID0gKHN0YXRlICYmIHN0YXRlLm1h
eFNjYW5MaW5lTGVuZ3RoKSB8fCAxMDAwMDsKKyAgICB2YXIgbWF4U2NhbkxpbmVzID0gKHN0YXRl
ICYmIHN0YXRlLm1heFNjYW5MaW5lcykgfHwgMTAwOwogCiAgICAgdmFyIGN1ciA9IHdoZXJlIHx8
IGNtLmdldEN1cnNvcigpLCBsaW5lID0gY20uZ2V0TGluZUhhbmRsZShjdXIubGluZSksIHBvcyA9
IGN1ci5jaCAtIDE7CiAgICAgdmFyIG1hdGNoID0gKHBvcyA+PSAwICYmIG1hdGNoaW5nW2xpbmUu
dGV4dC5jaGFyQXQocG9zKV0pIHx8IG1hdGNoaW5nW2xpbmUudGV4dC5jaGFyQXQoKytwb3MpXTsK
QEAgLTMyLDcgKzMzLDcgQEAKICAgICAgICAgfQogICAgICAgfQogICAgIH0KLSAgICBmb3IgKHZh
ciBpID0gY3VyLmxpbmUsIGZvdW5kLCBlID0gZm9yd2FyZCA/IE1hdGgubWluKGkgKyAxMDAsIGNt
LmxpbmVDb3VudCgpKSA6IE1hdGgubWF4KC0xLCBpIC0gMTAwKTsgaSAhPSBlOyBpKz1kKSB7Cisg
ICAgZm9yICh2YXIgaSA9IGN1ci5saW5lLCBmb3VuZCwgZSA9IGZvcndhcmQgPyBNYXRoLm1pbihp
ICsgbWF4U2NhbkxpbmVzLCBjbS5saW5lQ291bnQoKSkgOiBNYXRoLm1heCgtMSwgaSAtIG1heFNj
YW5MaW5lcyk7IGkgIT0gZTsgaSs9ZCkgewogICAgICAgaWYgKGkgPT0gY3VyLmxpbmUpIGZvdW5k
ID0gc2NhbihsaW5lLCBpLCBwb3MpOwogICAgICAgZWxzZSBmb3VuZCA9IHNjYW4oY20uZ2V0TGlu
ZUhhbmRsZShpKSwgaSk7CiAgICAgICBpZiAoZm91bmQpIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9wbGFj
ZWhvbGRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFs
L0NvZGVNaXJyb3IvcGxhY2Vob2xkZXIuanMKaW5kZXggMThmOWRmZjNhYmEwZDExNGQwNjFjNDcw
YjMxYTYyNmQyMTUyYWVmZS4uNzQ4YWZlNzI3NWE2YzhhNjdiMTQxM2JiYWYyZTk0NjNlMTc5ZGEx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJu
YWwvQ29kZU1pcnJvci9wbGFjZWhvbGRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3BsYWNlaG9sZGVyLmpzCkBAIC0yLDEy
ICsyLDEwIEBACiAgIENvZGVNaXJyb3IuZGVmaW5lT3B0aW9uKCJwbGFjZWhvbGRlciIsICIiLCBm
dW5jdGlvbihjbSwgdmFsLCBvbGQpIHsKICAgICB2YXIgcHJldiA9IG9sZCAmJiBvbGQgIT0gQ29k
ZU1pcnJvci5Jbml0OwogICAgIGlmICh2YWwgJiYgIXByZXYpIHsKLSAgICAgIGNtLm9uKCJmb2N1
cyIsIG9uRm9jdXMpOwogICAgICAgY20ub24oImJsdXIiLCBvbkJsdXIpOwogICAgICAgY20ub24o
ImNoYW5nZSIsIG9uQ2hhbmdlKTsKICAgICAgIG9uQ2hhbmdlKGNtKTsKICAgICB9IGVsc2UgaWYg
KCF2YWwgJiYgcHJldikgewotICAgICAgY20ub2ZmKCJmb2N1cyIsIG9uRm9jdXMpOwogICAgICAg
Y20ub2ZmKCJibHVyIiwgb25CbHVyKTsKICAgICAgIGNtLm9mZigiY2hhbmdlIiwgb25DaGFuZ2Up
OwogICAgICAgY2xlYXJQbGFjZWhvbGRlcihjbSk7CkBAIC0zMyw5ICszMSw2IEBACiAgICAgY20u
ZGlzcGxheS5saW5lU3BhY2UuaW5zZXJ0QmVmb3JlKGVsdCwgY20uZGlzcGxheS5saW5lU3BhY2Uu
Zmlyc3RDaGlsZCk7CiAgIH0KIAotICBmdW5jdGlvbiBvbkZvY3VzKGNtKSB7Ci0gICAgY2xlYXJQ
bGFjZWhvbGRlcihjbSk7Ci0gIH0KICAgZnVuY3Rpb24gb25CbHVyKGNtKSB7CiAgICAgaWYgKGlz
RW1wdHkoY20pKSBzZXRQbGFjZWhvbGRlcihjbSk7CiAgIH0KQEAgLTQzLDcgKzM4LDYgQEAKICAg
ICB2YXIgd3JhcHBlciA9IGNtLmdldFdyYXBwZXJFbGVtZW50KCksIGVtcHR5ID0gaXNFbXB0eShj
bSk7CiAgICAgd3JhcHBlci5jbGFzc05hbWUgPSB3cmFwcGVyLmNsYXNzTmFtZS5yZXBsYWNlKCIg
Q29kZU1pcnJvci1lbXB0eSIsICIiKSArIChlbXB0eSA/ICIgQ29kZU1pcnJvci1lbXB0eSIgOiAi
Iik7CiAKLSAgICBpZiAoY20uaGFzRm9jdXMoKSkgcmV0dXJuOwogICAgIGlmIChlbXB0eSkgc2V0
UGxhY2Vob2xkZXIoY20pOwogICAgIGVsc2UgY2xlYXJQbGFjZWhvbGRlcihjbSk7CiAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nv
ZGVNaXJyb3IvcnVubW9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0V4dGVybmFsL0NvZGVNaXJyb3IvcnVubW9kZS5qcwppbmRleCBhN2RhNmQ3MThmY2IxMmNkODM4
MTNlYzJhZTZiZGU2N2E5M2IyNWEyLi43YWFmYTJhZDhmNGMwMGJiYmFlNjU0OTkzNzA0M2NmNjAx
NDgyNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9F
eHRlcm5hbC9Db2RlTWlycm9yL3J1bm1vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9ydW5tb2RlLmpzCkBAIC00OSw3ICs0
OSw3IEBAIENvZGVNaXJyb3IucnVuTW9kZSA9IGZ1bmN0aW9uKHN0cmluZywgbW9kZXNwZWMsIGNh
bGxiYWNrLCBvcHRpb25zKSB7CiAgICAgdmFyIHN0cmVhbSA9IG5ldyBDb2RlTWlycm9yLlN0cmlu
Z1N0cmVhbShsaW5lc1tpXSk7CiAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsKICAgICAgIHZh
ciBzdHlsZSA9IG1vZGUudG9rZW4oc3RyZWFtLCBzdGF0ZSk7Ci0gICAgICBjYWxsYmFjayhzdHJl
YW0uY3VycmVudCgpLCBzdHlsZSwgaSwgc3RyZWFtLnN0YXJ0KTsKKyAgICAgIGNhbGxiYWNrKHN0
cmVhbS5jdXJyZW50KCksIHN0eWxlLCBpLCBzdHJlYW0uc3RhcnQsIHN0YXRlKTsKICAgICAgIHN0
cmVhbS5zdGFydCA9IHN0cmVhbS5wb3M7CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NlYXJjaGN1
cnNvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nv
ZGVNaXJyb3Ivc2VhcmNoY3Vyc29yLmpzCmluZGV4IDNkYTNmMDRlOGZlNzNmNDhkYzhkMTEyNmEw
MzViNmIwYTgzZjA2ZDcuLmMwMzRkNTg2NWI5MjA1NjkyMmViNTY0MWRlNzVhZDJlZWUwNTRiYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFs
L0NvZGVNaXJyb3Ivc2VhcmNoY3Vyc29yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3Ivc2VhcmNoY3Vyc29yLmpzCkBAIC02OSw4
ICs2OSw4IEBACiAgICAgICAgIHRoaXMubWF0Y2hlcyA9IGZ1bmN0aW9uKHJldmVyc2UsIHBvcykg
ewogICAgICAgICAgIHZhciBsbiA9IHBvcy5saW5lLCBpZHggPSAocmV2ZXJzZSA/IHRhcmdldC5s
ZW5ndGggLSAxIDogMCksIG1hdGNoID0gdGFyZ2V0W2lkeF0sIGxpbmUgPSBmb2xkKGRvYy5nZXRM
aW5lKGxuKSk7CiAgICAgICAgICAgdmFyIG9mZnNldEEgPSAocmV2ZXJzZSA/IGxpbmUuaW5kZXhP
ZihtYXRjaCkgKyBtYXRjaC5sZW5ndGggOiBsaW5lLmxhc3RJbmRleE9mKG1hdGNoKSk7Ci0gICAg
ICAgICAgaWYgKHJldmVyc2UgPyBvZmZzZXRBID49IHBvcy5jaCB8fCBvZmZzZXRBICE9IG1hdGNo
Lmxlbmd0aAotICAgICAgICAgICAgICA6IG9mZnNldEEgPD0gcG9zLmNoIHx8IG9mZnNldEEgIT0g
bGluZS5sZW5ndGggLSBtYXRjaC5sZW5ndGgpCisgICAgICAgICAgaWYgKHJldmVyc2UgPyBvZmZz
ZXRBID4gcG9zLmNoIHx8IG9mZnNldEEgIT0gbWF0Y2gubGVuZ3RoCisgICAgICAgICAgICAgIDog
b2Zmc2V0QSA8IHBvcy5jaCB8fCBvZmZzZXRBICE9IGxpbmUubGVuZ3RoIC0gbWF0Y2gubGVuZ3Ro
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAg
IGlmIChyZXZlcnNlID8gIWxuIDogbG4gPT0gZG9jLmxpbmVDb3VudCgpIC0gMSkgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwv
Q29kZU1pcnJvci9zcWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9F
eHRlcm5hbC9Db2RlTWlycm9yL3NxbC5qcwppbmRleCBlOWRjYjdmZDc1NDBjM2Q1MWVkNzJlOTBl
ZTViMmU1NWNmNzExNTYxLi4zYmU2OGNhYTFhMmEwYTQ2OTBkNmY3MDdmNjgzMzRhOGJhNDE2NjMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5h
bC9Db2RlTWlycm9yL3NxbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NxbC5qcwpAQCAtMjYyLDExICsyNjIsMjQgQEAgQ29k
ZU1pcnJvci5kZWZpbmVNb2RlKCJzcWwiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykg
ewogICAgIHN1cHBvcnQ6IHNldCgiT0RCQ2RvdFRhYmxlIGRvdWJsZVF1b3RlIGJpbmFyeU51bWJl
ciBoZXhOdW1iZXIiKQogICB9KTsKIAorICBDb2RlTWlycm9yLmRlZmluZU1JTUUoInRleHQveC1t
c3NxbCIsIHsKKyAgICBuYW1lOiAic3FsIiwKKyAgICBjbGllbnQ6IHNldCgiY2hhcnNldCBjbGVh
ciBjb25uZWN0IGVkaXQgZWdvIGV4aXQgZ28gaGVscCBub3BhZ2VyIG5vdGVlIG5vd2FybmluZyBw
YWdlciBwcmludCBwcm9tcHQgcXVpdCByZWhhc2ggc291cmNlIHN0YXR1cyBzeXN0ZW0gdGVlIiks
CisgICAga2V5d29yZHM6IHNldChzcWxLZXl3b3JkcyArICJiZWdpbiB0cmlnZ2VyIHByb2Mgdmll
dyBpbmRleCBmb3IgYWRkIGNvbnN0cmFpbnQga2V5IHByaW1hcnkgZm9yZWlnbiBjb2xsYXRlIGNs
dXN0ZXJlZCBub25jbHVzdGVyZWQiKSwKKyAgICBidWlsdGluOiBzZXQoImJpZ2ludCBudW1lcmlj
IGJpdCBzbWFsbGludCBkZWNpbWFsIHNtYWxsbW9uZXkgaW50IHRpbnlpbnQgbW9uZXkgZmxvYXQg
cmVhbCBjaGFyIHZhcmNoYXIgdGV4dCBuY2hhciBudmFyY2hhciBudGV4dCBiaW5hcnkgdmFyYmlu
YXJ5IGltYWdlIGN1cnNvciB0aW1lc3RhbXAgaGllcmFyY2h5aWQgdW5pcXVlaWRlbnRpZmllciBz
cWxfdmFyaWFudCB4bWwgdGFibGUgIiksCisgICAgYXRvbXM6IHNldCgiZmFsc2UgdHJ1ZSBudWxs
IHVua25vd24iKSwKKyAgICBvcGVyYXRvckNoYXJzOiAvXlsqK1wtJTw+IT1dLywKKyAgICBkYXRl
U1FMOiBzZXQoImRhdGUgZGF0ZXRpbWVvZmZzZXQgZGF0ZXRpbWUyIHNtYWxsZGF0ZXRpbWUgZGF0
ZXRpbWUgdGltZSIpLAorICAgIGhvb2tzOiB7CisgICAgICAiQCI6ICAgaG9va1ZhcgorICAgIH0K
KyAgfSk7CisKICAgQ29kZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L3gtbXlzcWwiLCB7CiAgICAg
bmFtZTogInNxbCIsCiAgICAgY2xpZW50OiBzZXQoImNoYXJzZXQgY2xlYXIgY29ubmVjdCBlZGl0
IGVnbyBleGl0IGdvIGhlbHAgbm9wYWdlciBub3RlZSBub3dhcm5pbmcgcGFnZXIgcHJpbnQgcHJv
bXB0IHF1aXQgcmVoYXNoIHNvdXJjZSBzdGF0dXMgc3lzdGVtIHRlZSIpLAotICAgIGtleXdvcmRz
OiBzZXQoc3FsS2V5d29yZHMgKyAiYWNjZXNzaWJsZSBhY3Rpb24gYWRkIGFmdGVyIGFsZ29yaXRo
bSBhbGwgYW5hbHl6ZSBhc2Vuc2l0aXZlIGF0IGF1dGhvcnMgYXV0b19pbmNyZW1lbnQgYXV0b2Nv
bW1pdCBhdmcgYXZnX3Jvd19sZW5ndGggYmVmb3JlIGJpbmFyeSBiaW5sb2cgYm90aCBidHJlZSBj
YWNoZSBjYWxsIGNhc2NhZGUgY2FzY2FkZWQgY2FzZSBjYXRhbG9nX25hbWUgY2hhaW4gY2hhbmdl
IGNoYW5nZWQgY2hhcmFjdGVyIGNoZWNrIGNoZWNrcG9pbnQgY2hlY2tzdW0gY2xhc3Nfb3JpZ2lu
IGNsaWVudF9zdGF0aXN0aWNzIGNsb3NlIGNvYWxlc2NlIGNvZGUgY29sbGF0ZSBjb2xsYXRpb24g
Y29sbGF0aW9ucyBjb2x1bW4gY29sdW1ucyBjb21tZW50IGNvbW1pdCBjb21taXR0ZWQgY29tcGxl
dGlvbiBjb25jdXJyZW50IGNvbmRpdGlvbiBjb25uZWN0aW9uIGNvbnNpc3RlbnQgY29uc3RyYWlu
dCBjb250YWlucyBjb250aW51ZSBjb250cmlidXRvcnMgY29udmVydCBjcm9zcyBjdXJyZW50X2Rh
dGUgY3VycmVudF90aW1lIGN1cnJlbnRfdGltZXN0YW1wIGN1cnJlbnRfdXNlciBjdXJzb3IgZGF0
YSBkYXRhYmFzZSBkYXRhYmFzZXMgZGF5X2hvdXIgZGF5X21pY3Jvc2Vjb25kIGRheV9taW51dGUg
ZGF5X3NlY29uZCBkZWFsbG9jYXRlIGRlYyBkZWNsYXJlIGRlZmF1bHQgZGVsYXlfa2V5X3dyaXRl
IGRlbGF5ZWQgZGVsaW1pdGVyIGRlc19rZXlfZmlsZSBkZXNjcmliZSBkZXRlcm1pbmlzdGljIGRl
dl9wb3AgZGV2X3NhbXAgZGV2aWFuY2UgZGlyZWN0b3J5IGRpc2FibGUgZGlzY2FyZCBkaXN0aW5j
dHJvdyBkaXYgZHVhbCBkdW1wZmlsZSBlYWNoIGVsc2VpZiBlbmFibGUgZW5jbG9zZWQgZW5kIGVu
ZHMgZW5naW5lIGVuZ2luZXMgZW51bSBlcnJvcnMgZXNjYXBlIGVzY2FwZWQgZXZlbiBldmVudCBl
dmVudHMgZXZlcnkgZXhlY3V0ZSBleGlzdHMgZXhpdCBleHBsYWluIGV4dGVuZGVkIGZhc3QgZmV0
Y2ggZmllbGQgZmllbGRzIGZpcnN0IGZsdXNoIGZvciBmb3JjZSBmb3JlaWduIGZvdW5kX3Jvd3Mg
ZnVsbCBmdWxsdGV4dCBmdW5jdGlvbiBnZW5lcmFsIGdsb2JhbCBncmFudCBncmFudHMgZ3JvdXAg
Z3JvdXBieV9jb25jYXQgaGFuZGxlciBoYXNoIGhlbHAgaGlnaF9wcmlvcml0eSBob3N0cyBob3Vy
X21pY3Jvc2Vjb25kIGhvdXJfbWludXRlIGhvdXJfc2Vjb25kIGlmIGlnbm9yZSBpZ25vcmVfc2Vy
dmVyX2lkcyBpbXBvcnQgaW5kZXggaW5kZXhfc3RhdGlzdGljcyBpbmZpbGUgaW5uZXIgaW5ub2Ri
IGlub3V0IGluc2Vuc2l0aXZlIGluc2VydF9tZXRob2QgaW5zdGFsbCBpbnRlcnZhbCBpbnZva2Vy
IGlzb2xhdGlvbiBpdGVyYXRlIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFzdCBsZWFkaW5nIGxl
YXZlIGxlZnQgbGV2ZWwgbGltaXQgbGluZWFyIGxpbmVzIGxpc3QgbG9hZCBsb2NhbCBsb2NhbHRp
bWUgbG9jYWx0aW1lc3RhbXAgbG9jayBsb2dzIGxvd19wcmlvcml0eSBtYXN0ZXIgbWFzdGVyX2hl
YXJ0YmVhdF9wZXJpb2QgbWFzdGVyX3NzbF92ZXJpZnlfc2VydmVyX2NlcnQgbWFzdGVycyBtYXRj
aCBtYXggbWF4X3Jvd3MgbWF4dmFsdWUgbWVzc2FnZV90ZXh0IG1pZGRsZWludCBtaWdyYXRlIG1p
biBtaW5fcm93cyBtaW51dGVfbWljcm9zZWNvbmQgbWludXRlX3NlY29uZCBtb2QgbW9kZSBtb2Rp
ZmllcyBtb2RpZnkgbXV0ZXggbXlzcWxfZXJybm8gbmF0dXJhbCBuZXh0IG5vIG5vX3dyaXRlX3Rv
X2JpbmxvZyBvZmZsaW5lIG9mZnNldCBvbmUgb25saW5lIG9wZW4gb3B0aW1pemUgb3B0aW9uIG9w
dGlvbmFsbHkgb3V0IG91dGVyIG91dGZpbGUgcGFja19rZXlzIHBhcnNlciBwYXJ0aXRpb24gcGFy
dGl0aW9ucyBwYXNzd29yZCBwaGFzZSBwbHVnaW4gcGx1Z2lucyBwcmVwYXJlIHByZXNlcnZlIHBy
ZXYgcHJpbWFyeSBwcml2aWxlZ2VzIHByb2NlZHVyZSBwcm9jZXNzbGlzdCBwcm9maWxlIHByb2Zp
bGVzIHB1cmdlIHF1ZXJ5IHF1aWNrIHJhbmdlIHJlYWQgcmVhZF93cml0ZSByZWFkcyByZWFsIHJl
YnVpbGQgcmVjb3ZlciByZWZlcmVuY2VzIHJlZ2V4cCByZWxheWxvZyByZWxlYXNlIHJlbW92ZSBy
ZW5hbWUgcmVvcmdhbml6ZSByZXBhaXIgcmVwZWF0YWJsZSByZXBsYWNlIHJlcXVpcmUgcmVzaWdu
YWwgcmVzdHJpY3QgcmVzdW1lIHJldHVybiByZXR1cm5zIHJldm9rZSByaWdodCBybGlrZSByb2xs
YmFjayByb2xsdXAgcm93IHJvd19mb3JtYXQgcnRyZWUgc2F2ZXBvaW50IHNjaGVkdWxlIHNjaGVt
YSBzY2hlbWFfbmFtZSBzY2hlbWFzIHNlY29uZF9taWNyb3NlY29uZCBzZWN1cml0eSBzZW5zaXRp
dmUgc2VwYXJhdG9yIHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2Vzc2lvbiBzaGFyZSBzaG93IHNpZ25h
bCBzbGF2ZSBzbG93IHNtYWxsaW50IHNuYXBzaG90IHNvbmFtZSBzcGF0aWFsIHNwZWNpZmljIHNx
bCBzcWxfYmlnX3Jlc3VsdCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3FsX2NhbGNfZm91
bmRfcm93cyBzcWxfbm9fY2FjaGUgc3FsX3NtYWxsX3Jlc3VsdCBzcWxleGNlcHRpb24gc3Fsc3Rh
dGUgc3Fsd2FybmluZyBzc2wgc3RhcnQgc3RhcnRpbmcgc3RhcnRzIHN0YXR1cyBzdGQgc3RkZGV2
IHN0ZGRldl9wb3Agc3RkZGV2X3NhbXAgc3RvcmFnZSBzdHJhaWdodF9qb2luIHN1YmNsYXNzX29y
aWdpbiBzdW0gc3VzcGVuZCB0YWJsZV9uYW1lIHRhYmxlX3N0YXRpc3RpY3MgdGFibGVzIHRhYmxl
c3BhY2UgdGVtcG9yYXJ5IHRlcm1pbmF0ZWQgdG8gdHJhaWxpbmcgdHJhbnNhY3Rpb24gdHJpZ2dl
ciB0cmlnZ2VycyB0cnVuY2F0ZSB1bmNvbW1pdHRlZCB1bmRvIHVuaW5zdGFsbCB1bmlxdWUgdW5s
b2NrIHVwZ3JhZGUgdXNhZ2UgdXNlIHVzZV9mcm0gdXNlciB1c2VyX3Jlc291cmNlcyB1c2VyX3N0
YXRpc3RpY3MgdXNpbmcgdXRjX2RhdGUgdXRjX3RpbWUgdXRjX3RpbWVzdGFtcCB2YWx1ZSB2YXJp
YWJsZXMgdmFyeWluZyB2aWV3IHZpZXdzIHdhcm5pbmdzIHdoZW4gd2hpbGUgd2l0aCB3b3JrIHdy
aXRlIHhhIHhvciB5ZWFyX21vbnRoIHplcm9maWxsIGJlZ2luIGRvIHRoZW4gZWxzZSBsb29wIHJl
cGVhdCIpLAotICAgIGJ1aWx0aW46IHNldCgiYm9vbCBib29sZWFuIGJpdCBibG9iIGRlY2ltYWwg
ZG91YmxlIGVudW0gZmxvYXQgbG9uZyBsb25nYmxvYiBsb25ndGV4dCBtZWRpdW0gbWVkaXVtYmxv
YiBtZWRpdW1pbnQgbWVkaXVtdGV4dCB0aW1lIHRpbWVzdGFtcCB0aW55YmxvYiB0aW55aW50IHRp
bnl0ZXh0IHRleHQgYmlnaW50IGludCBpbnQxIGludDIgaW50MyBpbnQ0IGludDggaW50ZWdlciBm
bG9hdCBmbG9hdDQgZmxvYXQ4IGRvdWJsZSBjaGFyIHZhcmJpbmFyeSB2YXJjaGFyIHZhcmNoYXJh
Y3RlciBwcmVjaXNpb24gZGF0ZSBkYXRldGltZSB5ZWFyIHVuc2lnbmVkIHNpZ25lZCBudW1lcmlj
IiksCisgICAga2V5d29yZHM6IHNldChzcWxLZXl3b3JkcyArICJhY2Nlc3NpYmxlIGFjdGlvbiBh
ZGQgYWZ0ZXIgYWxnb3JpdGhtIGFsbCBhbmFseXplIGFzZW5zaXRpdmUgYXQgYXV0aG9ycyBhdXRv
X2luY3JlbWVudCBhdXRvY29tbWl0IGF2ZyBhdmdfcm93X2xlbmd0aCBiZWZvcmUgYmluYXJ5IGJp
bmxvZyBib3RoIGJ0cmVlIGNhY2hlIGNhbGwgY2FzY2FkZSBjYXNjYWRlZCBjYXNlIGNhdGFsb2df
bmFtZSBjaGFpbiBjaGFuZ2UgY2hhbmdlZCBjaGFyYWN0ZXIgY2hlY2sgY2hlY2twb2ludCBjaGVj
a3N1bSBjbGFzc19vcmlnaW4gY2xpZW50X3N0YXRpc3RpY3MgY2xvc2UgY29hbGVzY2UgY29kZSBj
b2xsYXRlIGNvbGxhdGlvbiBjb2xsYXRpb25zIGNvbHVtbiBjb2x1bW5zIGNvbW1lbnQgY29tbWl0
IGNvbW1pdHRlZCBjb21wbGV0aW9uIGNvbmN1cnJlbnQgY29uZGl0aW9uIGNvbm5lY3Rpb24gY29u
c2lzdGVudCBjb25zdHJhaW50IGNvbnRhaW5zIGNvbnRpbnVlIGNvbnRyaWJ1dG9ycyBjb252ZXJ0
IGNyb3NzIGN1cnJlbnQgY3VycmVudF9kYXRlIGN1cnJlbnRfdGltZSBjdXJyZW50X3RpbWVzdGFt
cCBjdXJyZW50X3VzZXIgY3Vyc29yIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRheV9ob3VyIGRh
eV9taWNyb3NlY29uZCBkYXlfbWludXRlIGRheV9zZWNvbmQgZGVhbGxvY2F0ZSBkZWMgZGVjbGFy
ZSBkZWZhdWx0IGRlbGF5X2tleV93cml0ZSBkZWxheWVkIGRlbGltaXRlciBkZXNfa2V5X2ZpbGUg
ZGVzY3JpYmUgZGV0ZXJtaW5pc3RpYyBkZXZfcG9wIGRldl9zYW1wIGRldmlhbmNlIGRpYWdub3N0
aWNzIGRpcmVjdG9yeSBkaXNhYmxlIGRpc2NhcmQgZGlzdGluY3Ryb3cgZGl2IGR1YWwgZHVtcGZp
bGUgZWFjaCBlbHNlaWYgZW5hYmxlIGVuY2xvc2VkIGVuZCBlbmRzIGVuZ2luZSBlbmdpbmVzIGVu
dW0gZXJyb3JzIGVzY2FwZSBlc2NhcGVkIGV2ZW4gZXZlbnQgZXZlbnRzIGV2ZXJ5IGV4ZWN1dGUg
ZXhpc3RzIGV4aXQgZXhwbGFpbiBleHRlbmRlZCBmYXN0IGZldGNoIGZpZWxkIGZpZWxkcyBmaXJz
dCBmbHVzaCBmb3IgZm9yY2UgZm9yZWlnbiBmb3VuZF9yb3dzIGZ1bGwgZnVsbHRleHQgZnVuY3Rp
b24gZ2VuZXJhbCBnZXQgZ2xvYmFsIGdyYW50IGdyYW50cyBncm91cCBncm91cGJ5X2NvbmNhdCBo
YW5kbGVyIGhhc2ggaGVscCBoaWdoX3ByaW9yaXR5IGhvc3RzIGhvdXJfbWljcm9zZWNvbmQgaG91
cl9taW51dGUgaG91cl9zZWNvbmQgaWYgaWdub3JlIGlnbm9yZV9zZXJ2ZXJfaWRzIGltcG9ydCBp
bmRleCBpbmRleF9zdGF0aXN0aWNzIGluZmlsZSBpbm5lciBpbm5vZGIgaW5vdXQgaW5zZW5zaXRp
dmUgaW5zZXJ0X21ldGhvZCBpbnN0YWxsIGludGVydmFsIGludm9rZXIgaXNvbGF0aW9uIGl0ZXJh
dGUga2V5IGtleXMga2lsbCBsYW5ndWFnZSBsYXN0IGxlYWRpbmcgbGVhdmUgbGVmdCBsZXZlbCBs
aW1pdCBsaW5lYXIgbGluZXMgbGlzdCBsb2FkIGxvY2FsIGxvY2FsdGltZSBsb2NhbHRpbWVzdGFt
cCBsb2NrIGxvZ3MgbG93X3ByaW9yaXR5IG1hc3RlciBtYXN0ZXJfaGVhcnRiZWF0X3BlcmlvZCBt
YXN0ZXJfc3NsX3ZlcmlmeV9zZXJ2ZXJfY2VydCBtYXN0ZXJzIG1hdGNoIG1heCBtYXhfcm93cyBt
YXh2YWx1ZSBtZXNzYWdlX3RleHQgbWlkZGxlaW50IG1pZ3JhdGUgbWluIG1pbl9yb3dzIG1pbnV0
ZV9taWNyb3NlY29uZCBtaW51dGVfc2Vjb25kIG1vZCBtb2RlIG1vZGlmaWVzIG1vZGlmeSBtdXRl
eCBteXNxbF9lcnJubyBuYXR1cmFsIG5leHQgbm8gbm9fd3JpdGVfdG9fYmlubG9nIG9mZmxpbmUg
b2Zmc2V0IG9uZSBvbmxpbmUgb3BlbiBvcHRpbWl6ZSBvcHRpb24gb3B0aW9uYWxseSBvdXQgb3V0
ZXIgb3V0ZmlsZSBwYWNrX2tleXMgcGFyc2VyIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc3N3b3Jk
IHBoYXNlIHBsdWdpbiBwbHVnaW5zIHByZXBhcmUgcHJlc2VydmUgcHJldiBwcmltYXJ5IHByaXZp
bGVnZXMgcHJvY2VkdXJlIHByb2Nlc3NsaXN0IHByb2ZpbGUgcHJvZmlsZXMgcHVyZ2UgcXVlcnkg
cXVpY2sgcmFuZ2UgcmVhZCByZWFkX3dyaXRlIHJlYWRzIHJlYWwgcmVidWlsZCByZWNvdmVyIHJl
ZmVyZW5jZXMgcmVnZXhwIHJlbGF5bG9nIHJlbGVhc2UgcmVtb3ZlIHJlbmFtZSByZW9yZ2FuaXpl
IHJlcGFpciByZXBlYXRhYmxlIHJlcGxhY2UgcmVxdWlyZSByZXNpZ25hbCByZXN0cmljdCByZXN1
bWUgcmV0dXJuIHJldHVybnMgcmV2b2tlIHJpZ2h0IHJsaWtlIHJvbGxiYWNrIHJvbGx1cCByb3cg
cm93X2Zvcm1hdCBydHJlZSBzYXZlcG9pbnQgc2NoZWR1bGUgc2NoZW1hIHNjaGVtYV9uYW1lIHNj
aGVtYXMgc2Vjb25kX21pY3Jvc2Vjb25kIHNlY3VyaXR5IHNlbnNpdGl2ZSBzZXBhcmF0b3Igc2Vy
aWFsaXphYmxlIHNlcnZlciBzZXNzaW9uIHNoYXJlIHNob3cgc2lnbmFsIHNsYXZlIHNsb3cgc21h
bGxpbnQgc25hcHNob3Qgc29uYW1lIHNwYXRpYWwgc3BlY2lmaWMgc3FsIHNxbF9iaWdfcmVzdWx0
IHNxbF9idWZmZXJfcmVzdWx0IHNxbF9jYWNoZSBzcWxfY2FsY19mb3VuZF9yb3dzIHNxbF9ub19j
YWNoZSBzcWxfc21hbGxfcmVzdWx0IHNxbGV4Y2VwdGlvbiBzcWxzdGF0ZSBzcWx3YXJuaW5nIHNz
bCBzdGFydCBzdGFydGluZyBzdGFydHMgc3RhdHVzIHN0ZCBzdGRkZXYgc3RkZGV2X3BvcCBzdGRk
ZXZfc2FtcCBzdG9yYWdlIHN0cmFpZ2h0X2pvaW4gc3ViY2xhc3Nfb3JpZ2luIHN1bSBzdXNwZW5k
IHRhYmxlX25hbWUgdGFibGVfc3RhdGlzdGljcyB0YWJsZXMgdGFibGVzcGFjZSB0ZW1wb3Jhcnkg
dGVybWluYXRlZCB0byB0cmFpbGluZyB0cmFuc2FjdGlvbiB0cmlnZ2VyIHRyaWdnZXJzIHRydW5j
YXRlIHVuY29tbWl0dGVkIHVuZG8gdW5pbnN0YWxsIHVuaXF1ZSB1bmxvY2sgdXBncmFkZSB1c2Fn
ZSB1c2UgdXNlX2ZybSB1c2VyIHVzZXJfcmVzb3VyY2VzIHVzZXJfc3RhdGlzdGljcyB1c2luZyB1
dGNfZGF0ZSB1dGNfdGltZSB1dGNfdGltZXN0YW1wIHZhbHVlIHZhcmlhYmxlcyB2YXJ5aW5nIHZp
ZXcgdmlld3Mgd2FybmluZ3Mgd2hlbiB3aGlsZSB3aXRoIHdvcmsgd3JpdGUgeGEgeG9yIHllYXJf
bW9udGggemVyb2ZpbGwgYmVnaW4gZG8gdGhlbiBlbHNlIGxvb3AgcmVwZWF0IiksCisgICAgYnVp
bHRpbjogc2V0KCJib29sIGJvb2xlYW4gYml0IGJsb2IgZGVjaW1hbCBkb3VibGUgZmxvYXQgbG9u
ZyBsb25nYmxvYiBsb25ndGV4dCBtZWRpdW0gbWVkaXVtYmxvYiBtZWRpdW1pbnQgbWVkaXVtdGV4
dCB0aW1lIHRpbWVzdGFtcCB0aW55YmxvYiB0aW55aW50IHRpbnl0ZXh0IHRleHQgYmlnaW50IGlu
dCBpbnQxIGludDIgaW50MyBpbnQ0IGludDggaW50ZWdlciBmbG9hdCBmbG9hdDQgZmxvYXQ4IGRv
dWJsZSBjaGFyIHZhcmJpbmFyeSB2YXJjaGFyIHZhcmNoYXJhY3RlciBwcmVjaXNpb24gZGF0ZSBk
YXRldGltZSB5ZWFyIHVuc2lnbmVkIHNpZ25lZCBudW1lcmljIiksCiAgICAgYXRvbXM6IHNldCgi
ZmFsc2UgdHJ1ZSBudWxsIHVua25vd24iKSwKICAgICBvcGVyYXRvckNoYXJzOiAvXlsqK1wtJTw+
IT0mfF5dLywKICAgICBkYXRlU1FMOiBzZXQoImRhdGUgdGltZSB0aW1lc3RhbXAiKSwKQEAgLTI4
MSw4ICsyOTQsOCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoInNxbCIsIGZ1bmN0aW9uKGNvbmZp
ZywgcGFyc2VyQ29uZmlnKSB7CiAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC94LW1hcmlh
ZGIiLCB7CiAgICAgbmFtZTogInNxbCIsCiAgICAgY2xpZW50OiBzZXQoImNoYXJzZXQgY2xlYXIg
Y29ubmVjdCBlZGl0IGVnbyBleGl0IGdvIGhlbHAgbm9wYWdlciBub3RlZSBub3dhcm5pbmcgcGFn
ZXIgcHJpbnQgcHJvbXB0IHF1aXQgcmVoYXNoIHNvdXJjZSBzdGF0dXMgc3lzdGVtIHRlZSIpLAot
ICAgIGtleXdvcmRzOiBzZXQoc3FsS2V5d29yZHMgKyAiYWNjZXNzaWJsZSBhY3Rpb24gYWRkIGFm
dGVyIGFsZ29yaXRobSBhbGwgYWx3YXlzIGFuYWx5emUgYXNlbnNpdGl2ZSBhdCBhdXRob3JzIGF1
dG9faW5jcmVtZW50IGF1dG9jb21taXQgYXZnIGF2Z19yb3dfbGVuZ3RoIGJlZm9yZSBiaW5hcnkg
YmlubG9nIGJvdGggYnRyZWUgY2FjaGUgY2FsbCBjYXNjYWRlIGNhc2NhZGVkIGNhc2UgY2F0YWxv
Z19uYW1lIGNoYWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJhY3RlciBjaGVjayBjaGVja3BvaW50IGNo
ZWNrc3VtIGNsYXNzX29yaWdpbiBjbGllbnRfc3RhdGlzdGljcyBjbG9zZSBjb2FsZXNjZSBjb2Rl
IGNvbGxhdGUgY29sbGF0aW9uIGNvbGxhdGlvbnMgY29sdW1uIGNvbHVtbnMgY29tbWVudCBjb21t
aXQgY29tbWl0dGVkIGNvbXBsZXRpb24gY29uY3VycmVudCBjb25kaXRpb24gY29ubmVjdGlvbiBj
b25zaXN0ZW50IGNvbnN0cmFpbnQgY29udGFpbnMgY29udGludWUgY29udHJpYnV0b3JzIGNvbnZl
cnQgY3Jvc3MgY3VycmVudF9kYXRlIGN1cnJlbnRfdGltZSBjdXJyZW50X3RpbWVzdGFtcCBjdXJy
ZW50X3VzZXIgY3Vyc29yIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRheV9ob3VyIGRheV9taWNy
b3NlY29uZCBkYXlfbWludXRlIGRheV9zZWNvbmQgZGVhbGxvY2F0ZSBkZWMgZGVjbGFyZSBkZWZh
dWx0IGRlbGF5X2tleV93cml0ZSBkZWxheWVkIGRlbGltaXRlciBkZXNfa2V5X2ZpbGUgZGVzY3Jp
YmUgZGV0ZXJtaW5pc3RpYyBkZXZfcG9wIGRldl9zYW1wIGRldmlhbmNlIGRpcmVjdG9yeSBkaXNh
YmxlIGRpc2NhcmQgZGlzdGluY3Ryb3cgZGl2IGR1YWwgZHVtcGZpbGUgZWFjaCBlbHNlaWYgZW5h
YmxlIGVuY2xvc2VkIGVuZCBlbmRzIGVuZ2luZSBlbmdpbmVzIGVudW0gZXJyb3JzIGVzY2FwZSBl
c2NhcGVkIGV2ZW4gZXZlbnQgZXZlbnRzIGV2ZXJ5IGV4ZWN1dGUgZXhpc3RzIGV4aXQgZXhwbGFp
biBleHRlbmRlZCBmYXN0IGZldGNoIGZpZWxkIGZpZWxkcyBmaXJzdCBmbHVzaCBmb3IgZm9yY2Ug
Zm9yZWlnbiBmb3VuZF9yb3dzIGZ1bGwgZnVsbHRleHQgZnVuY3Rpb24gZ2VuZXJhbCBnZW5lcmF0
ZWQgZ2xvYmFsIGdyYW50IGdyYW50cyBncm91cCBncm91cGJ5X2NvbmNhdCBoYW5kbGVyIGhhcmQg
aGFzaCBoZWxwIGhpZ2hfcHJpb3JpdHkgaG9zdHMgaG91cl9taWNyb3NlY29uZCBob3VyX21pbnV0
ZSBob3VyX3NlY29uZCBpZiBpZ25vcmUgaWdub3JlX3NlcnZlcl9pZHMgaW1wb3J0IGluZGV4IGlu
ZGV4X3N0YXRpc3RpY3MgaW5maWxlIGlubmVyIGlubm9kYiBpbm91dCBpbnNlbnNpdGl2ZSBpbnNl
cnRfbWV0aG9kIGluc3RhbGwgaW50ZXJ2YWwgaW52b2tlciBpc29sYXRpb24gaXRlcmF0ZSBrZXkg
a2V5cyBraWxsIGxhbmd1YWdlIGxhc3QgbGVhZGluZyBsZWF2ZSBsZWZ0IGxldmVsIGxpbWl0IGxp
bmVhciBsaW5lcyBsaXN0IGxvYWQgbG9jYWwgbG9jYWx0aW1lIGxvY2FsdGltZXN0YW1wIGxvY2sg
bG9ncyBsb3dfcHJpb3JpdHkgbWFzdGVyIG1hc3Rlcl9oZWFydGJlYXRfcGVyaW9kIG1hc3Rlcl9z
c2xfdmVyaWZ5X3NlcnZlcl9jZXJ0IG1hc3RlcnMgbWF0Y2ggbWF4IG1heF9yb3dzIG1heHZhbHVl
IG1lc3NhZ2VfdGV4dCBtaWRkbGVpbnQgbWlncmF0ZSBtaW4gbWluX3Jvd3MgbWludXRlX21pY3Jv
c2Vjb25kIG1pbnV0ZV9zZWNvbmQgbW9kIG1vZGUgbW9kaWZpZXMgbW9kaWZ5IG11dGV4IG15c3Fs
X2Vycm5vIG5hdHVyYWwgbmV4dCBubyBub193cml0ZV90b19iaW5sb2cgb2ZmbGluZSBvZmZzZXQg
b25lIG9ubGluZSBvcGVuIG9wdGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG91dCBvdXRlciBvdXRm
aWxlIHBhY2tfa2V5cyBwYXJzZXIgcGFydGl0aW9uIHBhcnRpdGlvbnMgcGFzc3dvcmQgcGVyc2lz
dGVudCBwaGFzZSBwbHVnaW4gcGx1Z2lucyBwcmVwYXJlIHByZXNlcnZlIHByZXYgcHJpbWFyeSBw
cml2aWxlZ2VzIHByb2NlZHVyZSBwcm9jZXNzbGlzdCBwcm9maWxlIHByb2ZpbGVzIHB1cmdlIHF1
ZXJ5IHF1aWNrIHJhbmdlIHJlYWQgcmVhZF93cml0ZSByZWFkcyByZWFsIHJlYnVpbGQgcmVjb3Zl
ciByZWZlcmVuY2VzIHJlZ2V4cCByZWxheWxvZyByZWxlYXNlIHJlbW92ZSByZW5hbWUgcmVvcmdh
bml6ZSByZXBhaXIgcmVwZWF0YWJsZSByZXBsYWNlIHJlcXVpcmUgcmVzaWduYWwgcmVzdHJpY3Qg
cmVzdW1lIHJldHVybiByZXR1cm5zIHJldm9rZSByaWdodCBybGlrZSByb2xsYmFjayByb2xsdXAg
cm93IHJvd19mb3JtYXQgcnRyZWUgc2F2ZXBvaW50IHNjaGVkdWxlIHNjaGVtYSBzY2hlbWFfbmFt
ZSBzY2hlbWFzIHNlY29uZF9taWNyb3NlY29uZCBzZWN1cml0eSBzZW5zaXRpdmUgc2VwYXJhdG9y
IHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2Vzc2lvbiBzaGFyZSBzaG93IHNpZ25hbCBzbGF2ZSBzbG93
IHNtYWxsaW50IHNuYXBzaG90IHNvZnQgc29uYW1lIHNwYXRpYWwgc3BlY2lmaWMgc3FsIHNxbF9i
aWdfcmVzdWx0IHNxbF9idWZmZXJfcmVzdWx0IHNxbF9jYWNoZSBzcWxfY2FsY19mb3VuZF9yb3dz
IHNxbF9ub19jYWNoZSBzcWxfc21hbGxfcmVzdWx0IHNxbGV4Y2VwdGlvbiBzcWxzdGF0ZSBzcWx3
YXJuaW5nIHNzbCBzdGFydCBzdGFydGluZyBzdGFydHMgc3RhdHVzIHN0ZCBzdGRkZXYgc3RkZGV2
X3BvcCBzdGRkZXZfc2FtcCBzdG9yYWdlIHN0cmFpZ2h0X2pvaW4gc3ViY2xhc3Nfb3JpZ2luIHN1
bSBzdXNwZW5kIHRhYmxlX25hbWUgdGFibGVfc3RhdGlzdGljcyB0YWJsZXMgdGFibGVzcGFjZSB0
ZW1wb3JhcnkgdGVybWluYXRlZCB0byB0cmFpbGluZyB0cmFuc2FjdGlvbiB0cmlnZ2VyIHRyaWdn
ZXJzIHRydW5jYXRlIHVuY29tbWl0dGVkIHVuZG8gdW5pbnN0YWxsIHVuaXF1ZSB1bmxvY2sgdXBn
cmFkZSB1c2FnZSB1c2UgdXNlX2ZybSB1c2VyIHVzZXJfcmVzb3VyY2VzIHVzZXJfc3RhdGlzdGlj
cyB1c2luZyB1dGNfZGF0ZSB1dGNfdGltZSB1dGNfdGltZXN0YW1wIHZhbHVlIHZhcmlhYmxlcyB2
YXJ5aW5nIHZpZXcgdmlld3MgdmlydHVhbCB3YXJuaW5ncyB3aGVuIHdoaWxlIHdpdGggd29yayB3
cml0ZSB4YSB4b3IgeWVhcl9tb250aCB6ZXJvZmlsbCBiZWdpbiBkbyB0aGVuIGVsc2UgbG9vcCBy
ZXBlYXQiKSwKLSAgICBidWlsdGluOiBzZXQoImJvb2wgYm9vbGVhbiBiaXQgYmxvYiBkZWNpbWFs
IGRvdWJsZSBlbnVtIGZsb2F0IGxvbmcgbG9uZ2Jsb2IgbG9uZ3RleHQgbWVkaXVtIG1lZGl1bWJs
b2IgbWVkaXVtaW50IG1lZGl1bXRleHQgdGltZSB0aW1lc3RhbXAgdGlueWJsb2IgdGlueWludCB0
aW55dGV4dCB0ZXh0IGJpZ2ludCBpbnQgaW50MSBpbnQyIGludDMgaW50NCBpbnQ4IGludGVnZXIg
ZmxvYXQgZmxvYXQ0IGZsb2F0OCBkb3VibGUgY2hhciB2YXJiaW5hcnkgdmFyY2hhciB2YXJjaGFy
YWN0ZXIgcHJlY2lzaW9uIGRhdGUgZGF0ZXRpbWUgeWVhciB1bnNpZ25lZCBzaWduZWQgbnVtZXJp
YyIpLAorICAgIGtleXdvcmRzOiBzZXQoc3FsS2V5d29yZHMgKyAiYWNjZXNzaWJsZSBhY3Rpb24g
YWRkIGFmdGVyIGFsZ29yaXRobSBhbGwgYWx3YXlzIGFuYWx5emUgYXNlbnNpdGl2ZSBhdCBhdXRo
b3JzIGF1dG9faW5jcmVtZW50IGF1dG9jb21taXQgYXZnIGF2Z19yb3dfbGVuZ3RoIGJlZm9yZSBi
aW5hcnkgYmlubG9nIGJvdGggYnRyZWUgY2FjaGUgY2FsbCBjYXNjYWRlIGNhc2NhZGVkIGNhc2Ug
Y2F0YWxvZ19uYW1lIGNoYWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJhY3RlciBjaGVjayBjaGVja3Bv
aW50IGNoZWNrc3VtIGNsYXNzX29yaWdpbiBjbGllbnRfc3RhdGlzdGljcyBjbG9zZSBjb2FsZXNj
ZSBjb2RlIGNvbGxhdGUgY29sbGF0aW9uIGNvbGxhdGlvbnMgY29sdW1uIGNvbHVtbnMgY29tbWVu
dCBjb21taXQgY29tbWl0dGVkIGNvbXBsZXRpb24gY29uY3VycmVudCBjb25kaXRpb24gY29ubmVj
dGlvbiBjb25zaXN0ZW50IGNvbnN0cmFpbnQgY29udGFpbnMgY29udGludWUgY29udHJpYnV0b3Jz
IGNvbnZlcnQgY3Jvc3MgY3VycmVudCBjdXJyZW50X2RhdGUgY3VycmVudF90aW1lIGN1cnJlbnRf
dGltZXN0YW1wIGN1cnJlbnRfdXNlciBjdXJzb3IgZGF0YSBkYXRhYmFzZSBkYXRhYmFzZXMgZGF5
X2hvdXIgZGF5X21pY3Jvc2Vjb25kIGRheV9taW51dGUgZGF5X3NlY29uZCBkZWFsbG9jYXRlIGRl
YyBkZWNsYXJlIGRlZmF1bHQgZGVsYXlfa2V5X3dyaXRlIGRlbGF5ZWQgZGVsaW1pdGVyIGRlc19r
ZXlfZmlsZSBkZXNjcmliZSBkZXRlcm1pbmlzdGljIGRldl9wb3AgZGV2X3NhbXAgZGV2aWFuY2Ug
ZGlhZ25vc3RpY3MgZGlyZWN0b3J5IGRpc2FibGUgZGlzY2FyZCBkaXN0aW5jdHJvdyBkaXYgZHVh
bCBkdW1wZmlsZSBlYWNoIGVsc2VpZiBlbmFibGUgZW5jbG9zZWQgZW5kIGVuZHMgZW5naW5lIGVu
Z2luZXMgZW51bSBlcnJvcnMgZXNjYXBlIGVzY2FwZWQgZXZlbiBldmVudCBldmVudHMgZXZlcnkg
ZXhlY3V0ZSBleGlzdHMgZXhpdCBleHBsYWluIGV4dGVuZGVkIGZhc3QgZmV0Y2ggZmllbGQgZmll
bGRzIGZpcnN0IGZsdXNoIGZvciBmb3JjZSBmb3JlaWduIGZvdW5kX3Jvd3MgZnVsbCBmdWxsdGV4
dCBmdW5jdGlvbiBnZW5lcmFsIGdlbmVyYXRlZCBnZXQgZ2xvYmFsIGdyYW50IGdyYW50cyBncm91
cCBncm91cGJ5X2NvbmNhdCBoYW5kbGVyIGhhcmQgaGFzaCBoZWxwIGhpZ2hfcHJpb3JpdHkgaG9z
dHMgaG91cl9taWNyb3NlY29uZCBob3VyX21pbnV0ZSBob3VyX3NlY29uZCBpZiBpZ25vcmUgaWdu
b3JlX3NlcnZlcl9pZHMgaW1wb3J0IGluZGV4IGluZGV4X3N0YXRpc3RpY3MgaW5maWxlIGlubmVy
IGlubm9kYiBpbm91dCBpbnNlbnNpdGl2ZSBpbnNlcnRfbWV0aG9kIGluc3RhbGwgaW50ZXJ2YWwg
aW52b2tlciBpc29sYXRpb24gaXRlcmF0ZSBrZXkga2V5cyBraWxsIGxhbmd1YWdlIGxhc3QgbGVh
ZGluZyBsZWF2ZSBsZWZ0IGxldmVsIGxpbWl0IGxpbmVhciBsaW5lcyBsaXN0IGxvYWQgbG9jYWwg
bG9jYWx0aW1lIGxvY2FsdGltZXN0YW1wIGxvY2sgbG9ncyBsb3dfcHJpb3JpdHkgbWFzdGVyIG1h
c3Rlcl9oZWFydGJlYXRfcGVyaW9kIG1hc3Rlcl9zc2xfdmVyaWZ5X3NlcnZlcl9jZXJ0IG1hc3Rl
cnMgbWF0Y2ggbWF4IG1heF9yb3dzIG1heHZhbHVlIG1lc3NhZ2VfdGV4dCBtaWRkbGVpbnQgbWln
cmF0ZSBtaW4gbWluX3Jvd3MgbWludXRlX21pY3Jvc2Vjb25kIG1pbnV0ZV9zZWNvbmQgbW9kIG1v
ZGUgbW9kaWZpZXMgbW9kaWZ5IG11dGV4IG15c3FsX2Vycm5vIG5hdHVyYWwgbmV4dCBubyBub193
cml0ZV90b19iaW5sb2cgb2ZmbGluZSBvZmZzZXQgb25lIG9ubGluZSBvcGVuIG9wdGltaXplIG9w
dGlvbiBvcHRpb25hbGx5IG91dCBvdXRlciBvdXRmaWxlIHBhY2tfa2V5cyBwYXJzZXIgcGFydGl0
aW9uIHBhcnRpdGlvbnMgcGFzc3dvcmQgcGVyc2lzdGVudCBwaGFzZSBwbHVnaW4gcGx1Z2lucyBw
cmVwYXJlIHByZXNlcnZlIHByZXYgcHJpbWFyeSBwcml2aWxlZ2VzIHByb2NlZHVyZSBwcm9jZXNz
bGlzdCBwcm9maWxlIHByb2ZpbGVzIHB1cmdlIHF1ZXJ5IHF1aWNrIHJhbmdlIHJlYWQgcmVhZF93
cml0ZSByZWFkcyByZWFsIHJlYnVpbGQgcmVjb3ZlciByZWZlcmVuY2VzIHJlZ2V4cCByZWxheWxv
ZyByZWxlYXNlIHJlbW92ZSByZW5hbWUgcmVvcmdhbml6ZSByZXBhaXIgcmVwZWF0YWJsZSByZXBs
YWNlIHJlcXVpcmUgcmVzaWduYWwgcmVzdHJpY3QgcmVzdW1lIHJldHVybiByZXR1cm5zIHJldm9r
ZSByaWdodCBybGlrZSByb2xsYmFjayByb2xsdXAgcm93IHJvd19mb3JtYXQgcnRyZWUgc2F2ZXBv
aW50IHNjaGVkdWxlIHNjaGVtYSBzY2hlbWFfbmFtZSBzY2hlbWFzIHNlY29uZF9taWNyb3NlY29u
ZCBzZWN1cml0eSBzZW5zaXRpdmUgc2VwYXJhdG9yIHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2Vzc2lv
biBzaGFyZSBzaG93IHNodXRkb3duIHNpZ25hbCBzbGF2ZSBzbG93IHNtYWxsaW50IHNuYXBzaG90
IHNvZnQgc29uYW1lIHNwYXRpYWwgc3BlY2lmaWMgc3FsIHNxbF9iaWdfcmVzdWx0IHNxbF9idWZm
ZXJfcmVzdWx0IHNxbF9jYWNoZSBzcWxfY2FsY19mb3VuZF9yb3dzIHNxbF9ub19jYWNoZSBzcWxf
c21hbGxfcmVzdWx0IHNxbGV4Y2VwdGlvbiBzcWxzdGF0ZSBzcWx3YXJuaW5nIHNzbCBzdGFydCBz
dGFydGluZyBzdGFydHMgc3RhdHVzIHN0ZCBzdGRkZXYgc3RkZGV2X3BvcCBzdGRkZXZfc2FtcCBz
dG9yYWdlIHN0cmFpZ2h0X2pvaW4gc3ViY2xhc3Nfb3JpZ2luIHN1bSBzdXNwZW5kIHRhYmxlX25h
bWUgdGFibGVfc3RhdGlzdGljcyB0YWJsZXMgdGFibGVzcGFjZSB0ZW1wb3JhcnkgdGVybWluYXRl
ZCB0byB0cmFpbGluZyB0cmFuc2FjdGlvbiB0cmlnZ2VyIHRyaWdnZXJzIHRydW5jYXRlIHVuY29t
bWl0dGVkIHVuZG8gdW5pbnN0YWxsIHVuaXF1ZSB1bmxvY2sgdXBncmFkZSB1c2FnZSB1c2UgdXNl
X2ZybSB1c2VyIHVzZXJfcmVzb3VyY2VzIHVzZXJfc3RhdGlzdGljcyB1c2luZyB1dGNfZGF0ZSB1
dGNfdGltZSB1dGNfdGltZXN0YW1wIHZhbHVlIHZhcmlhYmxlcyB2YXJ5aW5nIHZpZXcgdmlld3Mg
dmlydHVhbCB3YXJuaW5ncyB3aGVuIHdoaWxlIHdpdGggd29yayB3cml0ZSB4YSB4b3IgeWVhcl9t
b250aCB6ZXJvZmlsbCBiZWdpbiBkbyB0aGVuIGVsc2UgbG9vcCByZXBlYXQiKSwKKyAgICBidWls
dGluOiBzZXQoImJvb2wgYm9vbGVhbiBiaXQgYmxvYiBkZWNpbWFsIGRvdWJsZSBmbG9hdCBsb25n
IGxvbmdibG9iIGxvbmd0ZXh0IG1lZGl1bSBtZWRpdW1ibG9iIG1lZGl1bWludCBtZWRpdW10ZXh0
IHRpbWUgdGltZXN0YW1wIHRpbnlibG9iIHRpbnlpbnQgdGlueXRleHQgdGV4dCBiaWdpbnQgaW50
IGludDEgaW50MiBpbnQzIGludDQgaW50OCBpbnRlZ2VyIGZsb2F0IGZsb2F0NCBmbG9hdDggZG91
YmxlIGNoYXIgdmFyYmluYXJ5IHZhcmNoYXIgdmFyY2hhcmFjdGVyIHByZWNpc2lvbiBkYXRlIGRh
dGV0aW1lIHllYXIgdW5zaWduZWQgc2lnbmVkIG51bWVyaWMiKSwKICAgICBhdG9tczogc2V0KCJm
YWxzZSB0cnVlIG51bGwgdW5rbm93biIpLAogICAgIG9wZXJhdG9yQ2hhcnM6IC9eWyorXC0lPD4h
PSZ8Xl0vLAogICAgIGRhdGVTUUw6IHNldCgiZGF0ZSB0aW1lIHRpbWVzdGFtcCIpLApAQCAtMzEz
LDggKzMyNiw3IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgic3FsIiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKICAgICBuYW1lOiAgICAgICAic3FsIiwKICAgICBjbGllbnQ6ICAg
ICBzZXQoImFwcGluZm8gYXJyYXlzaXplIGF1dG9jb21taXQgYXV0b3ByaW50IGF1dG9yZWNvdmVy
eSBhdXRvdHJhY2UgYmxvY2t0ZXJtaW5hdG9yIGJyZWFrIGJ0aXRsZSBjbWRzZXAgY29sc2VwIGNv
bXBhdGliaWxpdHkgY29tcHV0ZSBjb25jYXQgY29weWNvbW1pdCBjb3B5dHlwZWNoZWNrIGRlZmlu
ZSBkZXNjcmliZSBlY2hvIGVkaXRmaWxlIGVtYmVkZGVkIGVzY2FwZSBleGVjIGV4ZWN1dGUgZmVl
ZGJhY2sgZmxhZ2dlciBmbHVzaCBoZWFkaW5nIGhlYWRzZXAgaW5zdGFuY2UgbGluZXNpemUgbG5v
IGxvYm9mZnNldCBsb2dzb3VyY2UgbG9uZyBsb25nY2h1bmtzaXplIG1hcmt1cCBuYXRpdmUgbmV3
cGFnZSBudW1mb3JtYXQgbnVtd2lkdGggcGFnZXNpemUgcGF1c2UgcG5vIHJlY3NlcCByZWNzZXBj
aGFyIHJlbGVhc2UgcmVwZm9vdGVyIHJlcGhlYWRlciBzZXJ2ZXJvdXRwdXQgc2hpZnRpbm91dCBz
aG93IHNob3dtb2RlIHNpemUgc3Bvb2wgc3FsYmxhbmtsaW5lcyBzcWxjYXNlIHNxbGNvZGUgc3Fs
Y29udGludWUgc3FsbnVtYmVyIHNxbHBsdXNjb21wYXRpYmlsaXR5IHNxbHByZWZpeCBzcWxwcm9t
cHQgc3FsdGVybWluYXRvciBzdWZmaXggdGFiIHRlcm0gdGVybW91dCB0aW1lIHRpbWluZyB0cmlt
b3V0IHRyaW1zcG9vbCB0dGl0bGUgdW5kZXJsaW5lIHZlcmlmeSB2ZXJzaW9uIHdyYXAiKSwKICAg
ICBrZXl3b3JkczogICBzZXQoImFib3J0IGFjY2VwdCBhY2Nlc3MgYWRkIGFsbCBhbHRlciBhbmQg
YW55IGFycmF5IGFycmF5bGVuIGFzIGFzYyBhc3NlcnQgYXNzaWduIGF0IGF0dHJpYnV0ZXMgYXVk
aXQgYXV0aG9yaXphdGlvbiBhdmcgYmFzZV90YWJsZSBiZWdpbiBiZXR3ZWVuIGJpbmFyeV9pbnRl
Z2VyIGJvZHkgYm9vbGVhbiBieSBjYXNlIGNhc3QgY2hhciBjaGFyX2Jhc2UgY2hlY2sgY2xvc2Ug
Y2x1c3RlciBjbHVzdGVycyBjb2xhdXRoIGNvbHVtbiBjb21tZW50IGNvbW1pdCBjb21wcmVzcyBj
b25uZWN0IGNvbm5lY3RlZCBjb25zdGFudCBjb25zdHJhaW50IGNyYXNoIGNyZWF0ZSBjdXJyZW50
IGN1cnJ2YWwgY3Vyc29yIGRhdGFfYmFzZSBkYXRhYmFzZSBkYXRlIGRiYSBkZWFsbG9jYXRlIGRl
YnVnb2ZmIGRlYnVnb24gZGVjaW1hbCBkZWNsYXJlIGRlZmF1bHQgZGVmaW5pdGlvbiBkZWxheSBk
ZWxldGUgZGVzYyBkaWdpdHMgZGlzcG9zZSBkaXN0aW5jdCBkbyBkcm9wIGVsc2UgZWxzaWYgZW5h
YmxlIGVuZCBlbnRyeSBlc2NhcGUgZXhjZXB0aW9uIGV4Y2VwdGlvbl9pbml0IGV4Y2hhbmdlIGV4
Y2x1c2l2ZSBleGlzdHMgZXhpdCBleHRlcm5hbCBmYXN0IGZldGNoIGZpbGUgZm9yIGZvcmNlIGZv
cm0gZnJvbSBmdW5jdGlvbiBnZW5lcmljIGdvdG8gZ3JhbnQgZ3JvdXAgaGF2aW5nIGlkZW50aWZp
ZWQgaWYgaW1tZWRpYXRlIGluIGluY3JlbWVudCBpbmRleCBpbmRleGVzIGluZGljYXRvciBpbml0
aWFsIGluaXRyYW5zIGluc2VydCBpbnRlcmZhY2UgaW50ZXJzZWN0IGludG8gaXMga2V5IGxldmVs
IGxpYnJhcnkgbGlrZSBsaW1pdGVkIGxvY2FsIGxvY2sgbG9nIGxvZ2dpbmcgbG9uZyBsb29wIG1h
c3RlciBtYXhleHRlbnRzIG1heHRyYW5zIG1lbWJlciBtaW5leHRlbnRzIG1pbnVzIG1pc2xhYmVs
IG1vZGUgbW9kaWZ5IG11bHRpc2V0IG5ldyBuZXh0IG5vIG5vYXVkaXQgbm9jb21wcmVzcyBub2xv
Z2dpbmcgbm9wYXJhbGxlbCBub3Qgbm93YWl0IG51bWJlcl9iYXNlIG9iamVjdCBvZiBvZmYgb2Zm
bGluZSBvbiBvbmxpbmUgb25seSBvcGVuIG9wdGlvbiBvciBvcmRlciBvdXQgcGFja2FnZSBwYXJh
bGxlbCBwYXJ0aXRpb24gcGN0ZnJlZSBwY3RpbmNyZWFzZSBwY3R1c2VkIHBsc19pbnRlZ2VyIHBv
c2l0aXZlIHBvc2l0aXZlbiBwcmFnbWEgcHJpbWFyeSBwcmlvciBwcml2YXRlIHByaXZpbGVnZXMg
cHJvY2VkdXJlIHB1YmxpYyByYWlzZSByYW5nZSByYXcgcmVhZCByZWJ1aWxkIHJlY29yZCByZWYg
cmVmZXJlbmNlcyByZWZyZXNoIHJlbGVhc2UgcmVuYW1lIHJlcGxhY2UgcmVzb3VyY2UgcmVzdHJp
Y3QgcmV0dXJuIHJldHVybmluZyByZXZlcnNlIHJldm9rZSByb2xsYmFjayByb3cgcm93aWQgcm93
bGFiZWwgcm93bnVtIHJvd3MgcnVuIHNhdmVwb2ludCBzY2hlbWEgc2VnbWVudCBzZWxlY3Qgc2Vw
YXJhdGUgc2Vzc2lvbiBzZXQgc2hhcmUgc25hcHNob3Qgc29tZSBzcGFjZSBzcGxpdCBzcWwgc3Rh
cnQgc3RhdGVtZW50IHN0b3JhZ2Ugc3VidHlwZSBzdWNjZXNzZnVsIHN5bm9ueW0gdGFiYXV0aCB0
YWJsZSB0YWJsZXMgdGFibGVzcGFjZSB0YXNrIHRlcm1pbmF0ZSB0aGVuIHRvIHRyaWdnZXIgdHJ1
bmNhdGUgdHlwZSB1bmlvbiB1bmlxdWUgdW5saW1pdGVkIHVucmVjb3ZlcmFibGUgdW51c2FibGUg
dXBkYXRlIHVzZSB1c2luZyB2YWxpZGF0ZSB2YWx1ZSB2YWx1ZXMgdmFyaWFibGUgdmlldyB2aWV3
cyB3aGVuIHdoZW5ldmVyIHdoZXJlIHdoaWxlIHdpdGggd29yayIpLAotICAgIGZ1bmN0aW9uczog
IHNldCgiYWJzIGFjb3MgYWRkX21vbnRocyBhc2NpaSBhc2luIGF0YW4gYXRhbjIgYXZlcmFnZSBi
ZmlsZW5hbWUgY2VpbCBjaGFydG9yb3dpZCBjaHIgY29uY2F0IGNvbnZlcnQgY29zIGNvc2ggY291
bnQgZGVjb2RlIGRlcmVmIGR1YWwgZHVtcCBkdXBfdmFsX29uX2luZGV4IGVtcHR5IGVycm9yIGV4
cCBmYWxzZSBmbG9vciBmb3VuZCBnbGIgZ3JlYXRlc3QgaGV4dG9yYXcgaW5pdGNhcCBpbnN0ciBp
bnN0cmIgaXNvcGVuIGxhc3RfZGF5IGxlYXN0IGxlbmdodCBsZW5naHRiIGxuIGxvd2VyIGxwYWQg
bHRyaW0gbHViIG1ha2VfcmVmIG1heCBtaW4gbW9kIG1vbnRoc19iZXR3ZWVuIG5ld190aW1lIG5l
eHRfZGF5IG5leHR2YWwgbmxzX2NoYXJzZXRfZGVjbF9sZW4gbmxzX2NoYXJzZXRfaWQgbmxzX2No
YXJzZXRfbmFtZSBubHNfaW5pdGNhcCBubHNfbG93ZXIgbmxzX3NvcnQgbmxzX3VwcGVyIG5sc3Nv
cnQgbm9fZGF0YV9mb3VuZCBub3Rmb3VuZCBudWxsIG52bCBvdGhlcnMgcG93ZXIgcmF3dG9oZXgg
cmVmdG9oZXggcm91bmQgcm93Y291bnQgcm93aWR0b2NoYXIgcnBhZCBydHJpbSBzaWduIHNpbiBz
aW5oIHNvdW5kZXggc3FsY29kZSBzcWxlcnJtIHNxcnQgc3RkZGV2IHN1YnN0ciBzdWJzdHJiIHN1
bSBzeXNkYXRlIHRhbiB0YW5oIHRvX2NoYXIgdG9fZGF0ZSB0b19sYWJlbCB0b19tdWx0aV9ieXRl
IHRvX251bWJlciB0b19zaW5nbGVfYnl0ZSB0cmFuc2xhdGUgdHJ1ZSB0cnVuYyB1aWQgdXBwZXIg
dXNlciB1c2VyZW52IHZhcmlhbmNlIHZzaXplIiksCi0gICAgYnVpbHRpbjogICAgc2V0KCJiZmls
ZSBibG9iIGNoYXJhY3RlciBjbG9iIGRlYyBmbG9hdCBpbnQgaW50ZWdlciBtbHNsYWJlbCBuYXR1
cmFsIG5hdHVyYWxuIG5jaGFyIG5jbG9iIG51bWJlciBudW1lcmljIG52YXJjaGFyMiByZWFsIHJv
d3R5cGUgc2lnbnR5cGUgc21hbGxpbnQgc3RyaW5nIHZhcmNoYXIgdmFyY2hhcjIiKSwKKyAgICBi
dWlsdGluOiAgICBzZXQoImJmaWxlIGJsb2IgY2hhcmFjdGVyIGNsb2IgZGVjIGZsb2F0IGludCBp
bnRlZ2VyIG1sc2xhYmVsIG5hdHVyYWwgbmF0dXJhbG4gbmNoYXIgbmNsb2IgbnVtYmVyIG51bWVy
aWMgbnZhcmNoYXIyIHJlYWwgcm93dHlwZSBzaWdudHlwZSBzbWFsbGludCBzdHJpbmcgdmFyY2hh
ciB2YXJjaGFyMiBhYnMgYWNvcyBhZGRfbW9udGhzIGFzY2lpIGFzaW4gYXRhbiBhdGFuMiBhdmVy
YWdlIGJmaWxlbmFtZSBjZWlsIGNoYXJ0b3Jvd2lkIGNociBjb25jYXQgY29udmVydCBjb3MgY29z
aCBjb3VudCBkZWNvZGUgZGVyZWYgZHVhbCBkdW1wIGR1cF92YWxfb25faW5kZXggZW1wdHkgZXJy
b3IgZXhwIGZhbHNlIGZsb29yIGZvdW5kIGdsYiBncmVhdGVzdCBoZXh0b3JhdyBpbml0Y2FwIGlu
c3RyIGluc3RyYiBpc29wZW4gbGFzdF9kYXkgbGVhc3QgbGVuZ2h0IGxlbmdodGIgbG4gbG93ZXIg
bHBhZCBsdHJpbSBsdWIgbWFrZV9yZWYgbWF4IG1pbiBtb2QgbW9udGhzX2JldHdlZW4gbmV3X3Rp
bWUgbmV4dF9kYXkgbmV4dHZhbCBubHNfY2hhcnNldF9kZWNsX2xlbiBubHNfY2hhcnNldF9pZCBu
bHNfY2hhcnNldF9uYW1lIG5sc19pbml0Y2FwIG5sc19sb3dlciBubHNfc29ydCBubHNfdXBwZXIg
bmxzc29ydCBub19kYXRhX2ZvdW5kIG5vdGZvdW5kIG51bGwgbnZsIG90aGVycyBwb3dlciByYXd0
b2hleCByZWZ0b2hleCByb3VuZCByb3djb3VudCByb3dpZHRvY2hhciBycGFkIHJ0cmltIHNpZ24g
c2luIHNpbmggc291bmRleCBzcWxjb2RlIHNxbGVycm0gc3FydCBzdGRkZXYgc3Vic3RyIHN1YnN0
cmIgc3VtIHN5c2RhdGUgdGFuIHRhbmggdG9fY2hhciB0b19kYXRlIHRvX2xhYmVsIHRvX211bHRp
X2J5dGUgdG9fbnVtYmVyIHRvX3NpbmdsZV9ieXRlIHRyYW5zbGF0ZSB0cnVlIHRydW5jIHVpZCB1
cHBlciB1c2VyIHVzZXJlbnYgdmFyaWFuY2UgdnNpemUiKSwKICAgICBvcGVyYXRvckNoYXJzOiAv
XlsqK1wtJTw+IT1+XS8sCiAgICAgZGF0ZVNRTDogICAgc2V0KCJkYXRlIHRpbWUgdGltZXN0YW1w
IiksCiAgICAgc3VwcG9ydDogICAgc2V0KCJkb3VibGVRdW90ZSBuQ2hhckNhc3QgemVyb2xlc3NG
bG9hdCBiaW5hcnlOdW1iZXIgaGV4TnVtYmVyIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IveG1sLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwuanMK
aW5kZXggNTMyODVjODQ4YzZkNjA3YTRhNWFkZjllZWVhYWY0NGIwMGU3YTYzMy4uNGY0OWUwN2Zh
ZjVlNDVjN2RiZjRlYWY3MzZjOWQ3OTgzNDhiM2FjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94bWwuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci94
bWwuanMKQEAgLTc2LDcgKzc2LDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJ4bWwiLCBmdW5j
dGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgICB0YWdOYW1lID0gIiI7CiAgICAg
ICAgIHZhciBjOwogICAgICAgICB3aGlsZSAoKGMgPSBzdHJlYW0uZWF0KC9bXlxzXHUwMGEwPTw+
XCJcJ1wvP10vKSkpIHRhZ05hbWUgKz0gYzsKLSAgICAgICAgaWYgKCF0YWdOYW1lKSByZXR1cm4g
ImVycm9yIjsKKyAgICAgICAgaWYgKCF0YWdOYW1lKSByZXR1cm4gInRhZyBlcnJvciI7CiAgICAg
ICAgIHR5cGUgPSBpc0Nsb3NlID8gImNsb3NlVGFnIiA6ICJvcGVuVGFnIjsKICAgICAgICAgc3Rh
dGUudG9rZW5pemUgPSBpblRhZzsKICAgICAgICAgcmV0dXJuICJ0YWciOwpAQCAtMTA5LDcgKzEw
OSw5IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgieG1sIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJz
ZXJDb25maWcpIHsKICAgICAgIHR5cGUgPSAiZXF1YWxzIjsKICAgICAgIHJldHVybiBudWxsOwog
ICAgIH0gZWxzZSBpZiAoY2ggPT0gIjwiKSB7Ci0gICAgICByZXR1cm4gImVycm9yIjsKKyAgICAg
IHN0YXRlLnRva2VuaXplID0gaW5UZXh0OworICAgICAgdmFyIG5leHQgPSBzdGF0ZS50b2tlbml6
ZShzdHJlYW0sIHN0YXRlKTsKKyAgICAgIHJldHVybiBuZXh0ID8gbmV4dCArICIgZXJyb3IiIDog
ImVycm9yIjsKICAgICB9IGVsc2UgaWYgKC9bXCdcIl0vLnRlc3QoY2gpKSB7CiAgICAgICBzdGF0
ZS50b2tlbml6ZSA9IGluQXR0cmlidXRlKGNoKTsKICAgICAgIHN0YXRlLnN0cmluZ1N0YXJ0Q29s
ID0gc3RyZWFtLmNvbHVtbigpOwpAQCAtMjk4LDcgKzMwMCw5IEBAIENvZGVNaXJyb3IuZGVmaW5l
TW9kZSgieG1sIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgICAgfQog
ICAgICAgfQogICAgICAgc3RhdGUuc3RhcnRPZkxpbmUgPSBmYWxzZTsKLSAgICAgIHJldHVybiBz
ZXRTdHlsZSB8fCBzdHlsZTsKKyAgICAgIGlmIChzZXRTdHlsZSkKKyAgICAgICAgc3R5bGUgPSBz
ZXRTdHlsZSA9PSAiZXJyb3IiID8gc3R5bGUgKyAiIGVycm9yIiA6IHNldFN0eWxlOworICAgICAg
cmV0dXJuIHN0eWxlOwogICAgIH0sCiAKICAgICBpbmRlbnQ6IGZ1bmN0aW9uKHN0YXRlLCB0ZXh0
QWZ0ZXIsIGZ1bGxMaW5lKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218990</attachid>
            <date>2013-12-11 11:50:52 -0800</date>
            <delta_ts>2013-12-12 11:49:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122868-20131211205050.patch</filename>
            <type>text/plain</type>
            <size>166589</size>
            <attacher name="Laszlo Vidacs">lvidacs.u-szeged</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYwNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
MjEzYzc1NTUxMzVhMzJjYTFkNWIxZTkxNDJhNmY2Mzc0NGJlMGVhLi4yYTRkZjcyMzAzMGRjNjdj
OTgzY2I2NTI1YWQyMjU5NjU0NTc2MGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMCBAQAorMjAxMy0xMi0xMSAgTGFzemxvIFZpZGFjcyAgPGxhY0BpbmYudS1zemVnZWQu
aHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRVM2OiBKYXZhU2NyaXB0IHN5bnRheCBoaWdo
bGlnaHRpbmcgYW5kIHJlY29nbml0aW9uIG9mIGZvci4ub2YKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMjg2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSB0byBDb2RlTWlycm9yIDMuMjAgaW5j
bHVkaW5nIGphdmFzY3JpcHQgRVM2IHVwZGF0ZXMuCisKKyAgICAgICAgKiBUb29scy9QcmV0dHlQ
cmludGluZy9jb2RlbWlycm9yLmNzczoKKyAgICAgICAgKiBUb29scy9QcmV0dHlQcmludGluZy9j
b2RlbWlycm9yLmpzOiBNaW5vciBsb2NhbCBjaGFuZ2UgZHVlIHRvIGVycm9yIGZyb20ganNtaW4u
cHkKKyAgICAgICAgKiBUb29scy9QcmV0dHlQcmludGluZy9jc3MuanM6CisgICAgICAgICogVG9v
bHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5jc3M6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanM6IE1pbm9yIGxvY2FsIGNoYW5n
ZSBkdWUgdG8gZXJyb3IgZnJvbSBqc21pbi5weQorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0
ZXJuYWwvQ29kZU1pcnJvci9jb2ZmZWVzY3JpcHQuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9FeHRlcm5hbC9Db2RlTWlycm9yL2Nzcy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0V4
dGVybmFsL0NvZGVNaXJyb3IvaHRtbG1peGVkLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
RXh0ZXJuYWwvQ29kZU1pcnJvci9qYXZhc2NyaXB0LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9sZXNzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
RXh0ZXJuYWwvQ29kZU1pcnJvci9tYXRjaGJyYWNrZXRzLmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9wbGFjZWhvbGRlci5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvcnVubW9kZS5qczoKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3Ivc2VhcmNoY3Vyc29yLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9zcWwuanM6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3htbC5qczoKKwogMjAxMy0xMi0wNSAgU2Vv
a2p1IEt3b24gIDxzZW9ranVAd2Via2l0Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
ZW1vdmUgJ2Nvb2tpZXNTdHJpbmcnIG91dHB1dCBmcm9tIFBhZ2UuZ2V0Q29va2llcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2NvZGVtaXJy
b3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2NvZGVt
aXJyb3IuY3NzCmluZGV4IDRlMzAwYjJiZTJlOTBjYzMwNjY4ZWJlYzAzYzBjZmFiYzVhMDU3NmYu
LjIzZWFmNzRkNDQ5YmNkNWNkYjRlOTUyZTViMjg0NjQyOGU4ZWJiNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jb2RlbWlycm9yLmNzcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJv
ci5jc3MKQEAgLTc0LDcgKzc0LDYgQEAKIC5jbS1zLWRlZmF1bHQgLmNtLXN0cmluZyB7Y29sb3I6
ICNhMTE7fQogLmNtLXMtZGVmYXVsdCAuY20tc3RyaW5nLTIge2NvbG9yOiAjZjUwO30KIC5jbS1z
LWRlZmF1bHQgLmNtLW1ldGEge2NvbG9yOiAjNTU1O30KLS5jbS1zLWRlZmF1bHQgLmNtLWVycm9y
IHtjb2xvcjogI2YwMDt9CiAuY20tcy1kZWZhdWx0IC5jbS1xdWFsaWZpZXIge2NvbG9yOiAjNTU1
O30KIC5jbS1zLWRlZmF1bHQgLmNtLWJ1aWx0aW4ge2NvbG9yOiAjMzBhO30KIC5jbS1zLWRlZmF1
bHQgLmNtLWJyYWNrZXQge2NvbG9yOiAjOTk3O30KQEAgLTkxLDYgKzkwLDcgQEAKIC5jbS1lbSB7
Zm9udC1zdHlsZTogaXRhbGljO30KIC5jbS1saW5rIHt0ZXh0LWRlY29yYXRpb246IHVuZGVybGlu
ZTt9CiAKKy5jbS1zLWRlZmF1bHQgLmNtLWVycm9yIHtjb2xvcjogI2YwMDt9CiAuY20taW52YWxp
ZGNoYXIge2NvbG9yOiAjZjAwO30KIAogZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW1h
dGNoaW5nYnJhY2tldCB7Y29sb3I6ICMwZjA7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2NvZGVtaXJyb3IuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5qcwppbmRleCA4MTc3MWU5
OWIxMmFhYWRkZWZmNmU0MjVlMjk0ZWQzNTllOWFiNzdhLi40NjM3M2JmYjc3MTFiNTAwNzFmZGNj
YzA2OThhODkwNDQxODA4OWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9v
bHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5qcwpAQCAtNyw5ICs3LDEzIEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAvLyBDcnVkZSwgYnV0IG5lY2Vzc2Fy
eSB0byBoYW5kbGUgYSBudW1iZXIgb2YgaGFyZC10by1mZWF0dXJlLWRldGVjdAogICAvLyBidWdz
IGFuZCBiZWhhdmlvciBkaWZmZXJlbmNlcy4KICAgdmFyIGdlY2tvID0gL2dlY2tvXC9cZC9pLnRl
c3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisgIC8vIElFMTEgY3VycmVudGx5IGRvZXNuJ3QgY291
bnQgYXMgJ2llJywgc2luY2UgaXQgaGFzIGFsbW9zdCBub25lIG9mCisgIC8vIHRoZSBzYW1lIGJ1
Z3MgYXMgZWFybGllciB2ZXJzaW9ucy4gVXNlIGllX2d0MTAgdG8gaGFuZGxlCisgIC8vIGluY29t
cGF0aWJpbGl0aWVzIGluIHRoYXQgdmVyc2lvbi4KICAgdmFyIGllID0gL01TSUUgXGQvLnRlc3Qo
bmF2aWdhdG9yLnVzZXJBZ2VudCk7CiAgIHZhciBpZV9sdDggPSBpZSAmJiAoZG9jdW1lbnQuZG9j
dW1lbnRNb2RlID09IG51bGwgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDwgOCk7CiAgIHZhciBp
ZV9sdDkgPSBpZSAmJiAoZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09IG51bGwgfHwgZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlIDwgOSk7CisgIHZhciBpZV9ndDEwID0gL1RyaWRlbnRcLyhbNy05XXxcZHsy
LH0pXC4vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CiAgIHZhciB3ZWJraXQgPSAvV2ViS2l0
XC8vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7CiAgIHZhciBxdHdlYmtpdCA9IHdlYmtpdCAm
JiAvUXRcL1xkK1wuXGQrLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwogICB2YXIgY2hyb21l
ID0gL0Nocm9tZVwvLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpOwpAQCAtMzA5LDcgKzMxMyw3
IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgb3B0aW9ucy5ndXR0
ZXJzID0gb3B0aW9ucy5ndXR0ZXJzLmNvbmNhdChbIkNvZGVNaXJyb3ItbGluZW51bWJlcnMiXSk7
CiAgICAgfSBlbHNlIGlmIChmb3VuZCA+IC0xICYmICFvcHRpb25zLmxpbmVOdW1iZXJzKSB7CiAg
ICAgICBvcHRpb25zLmd1dHRlcnMgPSBvcHRpb25zLmd1dHRlcnMuc2xpY2UoMCk7Ci0gICAgICBv
cHRpb25zLmd1dHRlcnMuc3BsaWNlKGksIDEpOworICAgICAgb3B0aW9ucy5ndXR0ZXJzLnNwbGlj
ZShmb3VuZCwgMSk7CiAgICAgfQogICB9CiAKQEAgLTM1Myw4ICszNTcsMTAgQEAgd2luZG93LkNv
ZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICBkLmd1dHRlckZpbGxlci5zdHlsZS53aWR0
aCA9IGQuZ3V0dGVycy5vZmZzZXRXaWR0aCArICJweCI7CiAgICAgfSBlbHNlIGQuZ3V0dGVyRmls
bGVyLnN0eWxlLmRpc3BsYXkgPSAiIjsKIAotICAgIGlmIChtYWNfZ2VMaW9uICYmIHNjcm9sbGJh
cldpZHRoKGQubWVhc3VyZSkgPT09IDApCisgICAgaWYgKG1hY19nZUxpb24gJiYgc2Nyb2xsYmFy
V2lkdGgoZC5tZWFzdXJlKSA9PT0gMCkgewogICAgICAgZC5zY3JvbGxiYXJWLnN0eWxlLm1pbldp
ZHRoID0gZC5zY3JvbGxiYXJILnN0eWxlLm1pbkhlaWdodCA9IG1hY19nZU1vdW50YWluTGlvbiA/
ICIxOHB4IiA6ICIxMnB4IjsKKyAgICAgIGQuc2Nyb2xsYmFyVi5zdHlsZS5wb2ludGVyRXZlbnRz
ID0gZC5zY3JvbGxiYXJILnN0eWxlLnBvaW50ZXJFdmVudHMgPSAibm9uZSI7CisgICAgfQogICB9
CiAKICAgZnVuY3Rpb24gdmlzaWJsZUxpbmVzKGRpc3BsYXksIGRvYywgdmlld1BvcnQpIHsKQEAg
LTQwOSwxNCArNDE1LDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICBm
dW5jdGlvbiB1cGRhdGVEaXNwbGF5KGNtLCBjaGFuZ2VzLCB2aWV3UG9ydCwgZm9yY2VkKSB7CiAg
ICAgdmFyIG9sZEZyb20gPSBjbS5kaXNwbGF5LnNob3dpbmdGcm9tLCBvbGRUbyA9IGNtLmRpc3Bs
YXkuc2hvd2luZ1RvLCB1cGRhdGVkOwogICAgIHZhciB2aXNpYmxlID0gdmlzaWJsZUxpbmVzKGNt
LmRpc3BsYXksIGNtLmRvYywgdmlld1BvcnQpOwotICAgIGZvciAoOzspIHsKKyAgICBmb3IgKHZh
ciBmaXJzdCA9IHRydWU7OyBmaXJzdCA9IGZhbHNlKSB7CiAgICAgICB2YXIgb2xkV2lkdGggPSBj
bS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoOwogICAgICAgaWYgKCF1cGRhdGVEaXNwbGF5
SW5uZXIoY20sIGNoYW5nZXMsIHZpc2libGUsIGZvcmNlZCkpIGJyZWFrOwogICAgICAgdXBkYXRl
ZCA9IHRydWU7CiAgICAgICBjaGFuZ2VzID0gW107CiAgICAgICB1cGRhdGVTZWxlY3Rpb24oY20p
OwogICAgICAgdXBkYXRlU2Nyb2xsYmFycyhjbSk7Ci0gICAgICBpZiAoY20ub3B0aW9ucy5saW5l
V3JhcHBpbmcgJiYgb2xkV2lkdGggIT0gY20uZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCkg
eworICAgICAgaWYgKGZpcnN0ICYmIGNtLm9wdGlvbnMubGluZVdyYXBwaW5nICYmIG9sZFdpZHRo
ICE9IGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGgpIHsKICAgICAgICAgZm9yY2VkID0g
dHJ1ZTsKICAgICAgICAgY29udGludWU7CiAgICAgICB9CkBAIC05MDQsNyArOTEwLDcgQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgZG9jLml0ZXIoZG9jLmZyb250aWVy
LCBNYXRoLm1pbihkb2MuZmlyc3QgKyBkb2Muc2l6ZSwgY20uZGlzcGxheS5zaG93aW5nVG8gKyA1
MDApLCBmdW5jdGlvbihsaW5lKSB7CiAgICAgICBpZiAoZG9jLmZyb250aWVyID49IGNtLmRpc3Bs
YXkuc2hvd2luZ0Zyb20pIHsgLy8gVmlzaWJsZQogICAgICAgICB2YXIgb2xkU3R5bGVzID0gbGlu
ZS5zdHlsZXM7Ci0gICAgICAgIGxpbmUuc3R5bGVzID0gaGlnaGxpZ2h0TGluZShjbSwgbGluZSwg
c3RhdGUpOworICAgICAgICBsaW5lLnN0eWxlcyA9IGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIHN0
YXRlLCB0cnVlKTsKICAgICAgICAgdmFyIGlzY2hhbmdlID0gIW9sZFN0eWxlcyB8fCBvbGRTdHls
ZXMubGVuZ3RoICE9IGxpbmUuc3R5bGVzLmxlbmd0aDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
ICFpc2NoYW5nZSAmJiBpIDwgb2xkU3R5bGVzLmxlbmd0aDsgKytpKSBpc2NoYW5nZSA9IG9sZFN0
eWxlc1tpXSAhPSBsaW5lLnN0eWxlc1tpXTsKICAgICAgICAgaWYgKGlzY2hhbmdlKSB7CkBAIC05
MTMsNyArOTE5LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAg
IH0KICAgICAgICAgbGluZS5zdGF0ZUFmdGVyID0gY29weVN0YXRlKGRvYy5tb2RlLCBzdGF0ZSk7
CiAgICAgICB9IGVsc2UgewotICAgICAgICBwcm9jZXNzTGluZShjbSwgbGluZSwgc3RhdGUpOwor
ICAgICAgICBwcm9jZXNzTGluZShjbSwgbGluZS50ZXh0LCBzdGF0ZSk7CiAgICAgICAgIGxpbmUu
c3RhdGVBZnRlciA9IGRvYy5mcm9udGllciAlIDUgPT0gMCA/IGNvcHlTdGF0ZShkb2MubW9kZSwg
c3RhdGUpIDogbnVsbDsKICAgICAgIH0KICAgICAgICsrZG9jLmZyb250aWVyOwpAQCAtOTM1LDgg
Kzk0MSw5IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAvLyBzbWFsbGVz
dCBpbmRlbnRhdGlvbiwgd2hpY2ggdGVuZHMgdG8gbmVlZCB0aGUgbGVhc3QgY29udGV4dCB0bwog
ICAvLyBwYXJzZSBjb3JyZWN0bHkuCiAgIGZ1bmN0aW9uIGZpbmRTdGFydExpbmUoY20sIG4sIHBy
ZWNpc2UpIHsKLSAgICB2YXIgbWluaW5kZW50LCBtaW5saW5lLCBkb2MgPSBjbS5kb2MsIG1heFNj
YW4gPSBjbS5kb2MubW9kZS5pbm5lck1vZGUgPyAxMDAwIDogMTAwOwotICAgIGZvciAodmFyIHNl
YXJjaCA9IG4sIGxpbSA9IG4gLSBtYXhTY2FuOyBzZWFyY2ggPiBsaW07IC0tc2VhcmNoKSB7Cisg
ICAgdmFyIG1pbmluZGVudCwgbWlubGluZSwgZG9jID0gY20uZG9jOworICAgIHZhciBsaW0gPSBw
cmVjaXNlID8gLTEgOiBuIC0gKGNtLmRvYy5tb2RlLmlubmVyTW9kZSA/IDEwMDAgOiAxMDApOwor
ICAgIGZvciAodmFyIHNlYXJjaCA9IG47IHNlYXJjaCA+IGxpbTsgLS1zZWFyY2gpIHsKICAgICAg
IGlmIChzZWFyY2ggPD0gZG9jLmZpcnN0KSByZXR1cm4gZG9jLmZpcnN0OwogICAgICAgdmFyIGxp
bmUgPSBnZXRMaW5lKGRvYywgc2VhcmNoIC0gMSk7CiAgICAgICBpZiAobGluZS5zdGF0ZUFmdGVy
ICYmICghcHJlY2lzZSB8fCBzZWFyY2ggPD0gZG9jLmZyb250aWVyKSkgcmV0dXJuIHNlYXJjaDsK
QEAgLTk1NiwxMSArOTYzLDEyIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewog
ICAgIGlmICghc3RhdGUpIHN0YXRlID0gc3RhcnRTdGF0ZShkb2MubW9kZSk7CiAgICAgZWxzZSBz
dGF0ZSA9IGNvcHlTdGF0ZShkb2MubW9kZSwgc3RhdGUpOwogICAgIGRvYy5pdGVyKHBvcywgbiwg
ZnVuY3Rpb24obGluZSkgewotICAgICAgcHJvY2Vzc0xpbmUoY20sIGxpbmUsIHN0YXRlKTsKKyAg
ICAgIHByb2Nlc3NMaW5lKGNtLCBsaW5lLnRleHQsIHN0YXRlKTsKICAgICAgIHZhciBzYXZlID0g
cG9zID09IG4gLSAxIHx8IHBvcyAlIDUgPT0gMCB8fCBwb3MgPj0gZGlzcGxheS5zaG93aW5nRnJv
bSAmJiBwb3MgPCBkaXNwbGF5LnNob3dpbmdUbzsKICAgICAgIGxpbmUuc3RhdGVBZnRlciA9IHNh
dmUgPyBjb3B5U3RhdGUoZG9jLm1vZGUsIHN0YXRlKSA6IG51bGw7CiAgICAgICArK3BvczsKICAg
ICB9KTsKKyAgICBpZiAocHJlY2lzZSkgZG9jLmZyb250aWVyID0gcG9zOwogICAgIHJldHVybiBz
dGF0ZTsKICAgfQogCkBAIC0xMDAxLDcgKzEwMDksNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChm
dW5jdGlvbigpIHsKICAgICAgIHZhciBtZW1vID0gY2FjaGVbaV07CiAgICAgICBpZiAobWVtby50
ZXh0ID09IGxpbmUudGV4dCAmJiBtZW1vLm1hcmtlZFNwYW5zID09IGxpbmUubWFya2VkU3BhbnMg
JiYKICAgICAgICAgICBjbS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoID09IG1lbW8ud2lk
dGggJiYKLSAgICAgICAgICBtZW1vLmNsYXNzZXMgPT0gbGluZS50ZXh0Q2xhc3MgKyAifCIgKyBs
aW5lLmJnQ2xhc3MgKyAifCIgKyBsaW5lLndyYXBDbGFzcykKKyAgICAgICAgICBtZW1vLmNsYXNz
ZXMgPT0gbGluZS50ZXh0Q2xhc3MgKyAifCIgKyBsaW5lLndyYXBDbGFzcykKICAgICAgICAgcmV0
dXJuIG1lbW87CiAgICAgfQogICB9CkBAIC0xMDIxLDcgKzEwMjksNyBAQCB3aW5kb3cuQ29kZU1p
cnJvciA9IChmdW5jdGlvbigpIHsKICAgICB2YXIgY2FjaGUgPSBjbS5kaXNwbGF5Lm1lYXN1cmVM
aW5lQ2FjaGU7CiAgICAgdmFyIG1lbW8gPSB7dGV4dDogbGluZS50ZXh0LCB3aWR0aDogY20uZGlz
cGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCwKICAgICAgICAgICAgICAgICBtYXJrZWRTcGFuczog
bGluZS5tYXJrZWRTcGFucywgbWVhc3VyZTogbWVhc3VyZSwKLSAgICAgICAgICAgICAgICBjbGFz
c2VzOiBsaW5lLnRleHRDbGFzcyArICJ8IiArIGxpbmUuYmdDbGFzcyArICJ8IiArIGxpbmUud3Jh
cENsYXNzfTsKKyAgICAgICAgICAgICAgICBjbGFzc2VzOiBsaW5lLnRleHRDbGFzcyArICJ8IiAr
IGxpbmUud3JhcENsYXNzfTsKICAgICBpZiAoY2FjaGUubGVuZ3RoID09IDE2KSBjYWNoZVsrK2Nt
LmRpc3BsYXkubWVhc3VyZUxpbmVDYWNoZVBvcyAlIDE2XSA9IG1lbW87CiAgICAgZWxzZSBjYWNo
ZS5wdXNoKG1lbW8pOwogICAgIHJldHVybiBtZWFzdXJlOwpAQCAtMTM3OSwxMSArMTM4NywxNCBA
QCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB9CiAgICAgaWYgKCF1cGRh
dGVkICYmIG9wLnNlbGVjdGlvbkNoYW5nZWQpIHVwZGF0ZVNlbGVjdGlvbihjbSk7CiAgICAgaWYg
KG9wLnVwZGF0ZVNjcm9sbFBvcykgewotICAgICAgZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3Ag
PSBkaXNwbGF5LnNjcm9sbGJhclYuc2Nyb2xsVG9wID0gZG9jLnNjcm9sbFRvcCA9IG5ld1Njcm9s
bFBvcy5zY3JvbGxUb3A7Ci0gICAgICBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQgPSBkaXNw
bGF5LnNjcm9sbGJhckguc2Nyb2xsTGVmdCA9IGRvYy5zY3JvbGxMZWZ0ID0gbmV3U2Nyb2xsUG9z
LnNjcm9sbExlZnQ7CisgICAgICB2YXIgdG9wID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZGlzcGxh
eS5zY3JvbGxlci5zY3JvbGxIZWlnaHQgLSBkaXNwbGF5LnNjcm9sbGVyLmNsaWVudEhlaWdodCwg
bmV3U2Nyb2xsUG9zLnNjcm9sbFRvcCkpOworICAgICAgdmFyIGxlZnQgPSBNYXRoLm1heCgwLCBN
YXRoLm1pbihkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFdpZHRoIC0gZGlzcGxheS5zY3JvbGxlci5j
bGllbnRXaWR0aCwgbmV3U2Nyb2xsUG9zLnNjcm9sbExlZnQpKTsKKyAgICAgIGRpc3BsYXkuc2Ny
b2xsZXIuc2Nyb2xsVG9wID0gZGlzcGxheS5zY3JvbGxiYXJWLnNjcm9sbFRvcCA9IGRvYy5zY3Jv
bGxUb3AgPSB0b3A7CisgICAgICBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbExlZnQgPSBkaXNwbGF5
LnNjcm9sbGJhckguc2Nyb2xsTGVmdCA9IGRvYy5zY3JvbGxMZWZ0ID0gbGVmdDsKICAgICAgIGFs
aWduSG9yaXpvbnRhbGx5KGNtKTsKICAgICAgIGlmIChvcC5zY3JvbGxUb1BvcykKLSAgICAgICAg
c2Nyb2xsUG9zSW50b1ZpZXcoY20sIGNsaXBQb3MoY20uZG9jLCBvcC5zY3JvbGxUb1BvcyksIG9w
LnNjcm9sbFRvUG9zTWFyZ2luKTsKKyAgICAgICAgc2Nyb2xsUG9zSW50b1ZpZXcoY20sIGNsaXBQ
b3MoY20uZG9jLCBvcC5zY3JvbGxUb1Bvcy5mcm9tKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xpcFBvcyhjbS5kb2MsIG9wLnNjcm9sbFRvUG9zLnRvKSwgb3Auc2Nyb2xsVG9Qb3MubWFy
Z2luKTsKICAgICB9IGVsc2UgaWYgKG5ld1Njcm9sbFBvcykgewogICAgICAgc2Nyb2xsQ3Vyc29y
SW50b1ZpZXcoY20pOwogICAgIH0KQEAgLTE2MDUsNyArMTYxNiwxMCBAQCB3aW5kb3cuQ29kZU1p
cnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIGlmIChzaWduYWxET01FdmVudChjbSwgZSkgfHwg
Y20ub3B0aW9ucy5vbktleUV2ZW50ICYmIGNtLm9wdGlvbnMub25LZXlFdmVudChjbSwgYWRkU3Rv
cChlKSkpIHJldHVybjsKICAgICAgIGlmIChlLmtleUNvZGUgPT0gMTYpIGNtLmRvYy5zZWwuc2hp
ZnQgPSBmYWxzZTsKICAgICB9KSk7Ci0gICAgb24oZC5pbnB1dCwgImlucHV0IiwgYmluZChmYXN0
UG9sbCwgY20pKTsKKyAgICBvbihkLmlucHV0LCAiaW5wdXQiLCBmdW5jdGlvbigpIHsKKyAgICAg
IGlmIChpZSAmJiAhaWVfbHQ5ICYmIGNtLmRpc3BsYXkuaW5wdXRIYXNTZWxlY3Rpb24pIGNtLmRp
c3BsYXkuaW5wdXRIYXNTZWxlY3Rpb24gPSBudWxsOworICAgICAgZmFzdFBvbGwoY20pOworICAg
IH0pOwogICAgIG9uKGQuaW5wdXQsICJrZXlkb3duIiwgb3BlcmF0aW9uKGNtLCBvbktleURvd24p
KTsKICAgICBvbihkLmlucHV0LCAia2V5cHJlc3MiLCBvcGVyYXRpb24oY20sIG9uS2V5UHJlc3Mp
KTsKICAgICBvbihkLmlucHV0LCAiZm9jdXMiLCBiaW5kKG9uRm9jdXMsIGNtKSk7CkBAIC0xODk1
LDcgKzE5MDksNiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgICAg
ICBpZiAoY20uc3RhdGUuZHJhZ2dpbmdUZXh0KSByZXBsYWNlUmFuZ2UoY20uZG9jLCAiIiwgY3Vy
RnJvbSwgY3VyVG8sICJwYXN0ZSIpOwogICAgICAgICAgIGNtLnJlcGxhY2VTZWxlY3Rpb24odGV4
dCwgbnVsbCwgInBhc3RlIik7CiAgICAgICAgICAgZm9jdXNJbnB1dChjbSk7Ci0gICAgICAgICAg
b25Gb2N1cyhjbSk7CiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGNhdGNoKGUpe30KQEAgLTIx
NzYsNyArMjE4OSwxMSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKIAogICAg
IHZhciBwb3MgPSBwb3NGcm9tTW91c2UoY20sIGUpLCBzY3JvbGxQb3MgPSBkaXNwbGF5LnNjcm9s
bGVyLnNjcm9sbFRvcDsKICAgICBpZiAoIXBvcyB8fCBvcGVyYSkgcmV0dXJuOyAvLyBPcGVyYSBp
cyBkaWZmaWN1bHQuCi0gICAgaWYgKHBvc0VxKHNlbC5mcm9tLCBzZWwudG8pIHx8IHBvc0xlc3Mo
cG9zLCBzZWwuZnJvbSkgfHwgIXBvc0xlc3MocG9zLCBzZWwudG8pKQorCisgICAgLy8gUmVzZXQg
dGhlIGN1cnJlbnQgdGV4dCBzZWxlY3Rpb24gb25seSBpZiB0aGUgY2xpY2sgaXMgZG9uZSBvdXRz
aWRlIG9mIHRoZSBzZWxlY3Rpb24KKyAgICAvLyBhbmQgJ3Jlc2V0U2VsZWN0aW9uT25Db250ZXh0
TWVudScgb3B0aW9uIGlzIHRydWUuCisgICAgdmFyIHJlc2V0ID0gY20ub3B0aW9ucy5yZXNldFNl
bGVjdGlvbk9uQ29udGV4dE1lbnU7CisgICAgaWYgKHJlc2V0ICYmIChwb3NFcShzZWwuZnJvbSwg
c2VsLnRvKSB8fCBwb3NMZXNzKHBvcywgc2VsLmZyb20pIHx8ICFwb3NMZXNzKHBvcywgc2VsLnRv
KSkpCiAgICAgICBvcGVyYXRpb24oY20sIHNldFNlbGVjdGlvbikoY20uZG9jLCBwb3MsIHBvcyk7
CiAKICAgICB2YXIgb2xkQ1NTID0gZGlzcGxheS5pbnB1dC5zdHlsZS5jc3NUZXh0OwpAQCAtMjMy
Niw2ICsyMzQzLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIH0KIAog
ICBmdW5jdGlvbiBtYWtlQ2hhbmdlTm9SZWFkb25seShkb2MsIGNoYW5nZSwgc2VsVXBkYXRlKSB7
CisgICAgaWYgKGNoYW5nZS50ZXh0Lmxlbmd0aCA9PSAxICYmIGNoYW5nZS50ZXh0WzBdID09ICIi
ICYmIHBvc0VxKGNoYW5nZS5mcm9tLCBjaGFuZ2UudG8pKSByZXR1cm47CiAgICAgdmFyIHNlbEFm
dGVyID0gY29tcHV0ZVNlbEFmdGVyQ2hhbmdlKGRvYywgY2hhbmdlLCBzZWxVcGRhdGUpOwogICAg
IGFkZFRvSGlzdG9yeShkb2MsIGNoYW5nZSwgc2VsQWZ0ZXIsIGRvYy5jbSA/IGRvYy5jbS5jdXJP
cC5pZCA6IE5hTik7CiAKQEAgLTI2MjYsNyArMjY0NCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0g
KGZ1bmN0aW9uKCkgewogICAvLyBTQ1JPTExJTkcKIAogICBmdW5jdGlvbiBzY3JvbGxDdXJzb3JJ
bnRvVmlldyhjbSkgewotICAgIHZhciBjb29yZHMgPSBzY3JvbGxQb3NJbnRvVmlldyhjbSwgY20u
ZG9jLnNlbC5oZWFkLCBjbS5vcHRpb25zLmN1cnNvclNjcm9sbE1hcmdpbik7CisgICAgdmFyIGNv
b3JkcyA9IHNjcm9sbFBvc0ludG9WaWV3KGNtLCBjbS5kb2Muc2VsLmhlYWQsIG51bGwsIGNtLm9w
dGlvbnMuY3Vyc29yU2Nyb2xsTWFyZ2luKTsKICAgICBpZiAoIWNtLnN0YXRlLmZvY3VzZWQpIHJl
dHVybjsKICAgICB2YXIgZGlzcGxheSA9IGNtLmRpc3BsYXksIGJveCA9IGdldFJlY3QoZGlzcGxh
eS5zaXplciksIGRvU2Nyb2xsID0gbnVsbDsKICAgICBpZiAoY29vcmRzLnRvcCArIGJveC50b3Ag
PCAwKSBkb1Njcm9sbCA9IHRydWU7CkBAIC0yNjQzLDExICsyNjYxLDE1IEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIH0KICAgfQogCi0gIGZ1bmN0aW9uIHNjcm9sbFBv
c0ludG9WaWV3KGNtLCBwb3MsIG1hcmdpbikgeworICBmdW5jdGlvbiBzY3JvbGxQb3NJbnRvVmll
dyhjbSwgcG9zLCBlbmQsIG1hcmdpbikgewogICAgIGlmIChtYXJnaW4gPT0gbnVsbCkgbWFyZ2lu
ID0gMDsKICAgICBmb3IgKDs7KSB7CiAgICAgICB2YXIgY2hhbmdlZCA9IGZhbHNlLCBjb29yZHMg
PSBjdXJzb3JDb29yZHMoY20sIHBvcyk7Ci0gICAgICB2YXIgc2Nyb2xsUG9zID0gY2FsY3VsYXRl
U2Nyb2xsUG9zKGNtLCBjb29yZHMubGVmdCwgY29vcmRzLnRvcCAtIG1hcmdpbiwgY29vcmRzLmxl
ZnQsIGNvb3Jkcy5ib3R0b20gKyBtYXJnaW4pOworICAgICAgdmFyIGVuZENvb3JkcyA9ICFlbmQg
fHwgZW5kID09IHBvcyA/IGNvb3JkcyA6IGN1cnNvckNvb3JkcyhjbSwgZW5kKTsKKyAgICAgIHZh
ciBzY3JvbGxQb3MgPSBjYWxjdWxhdGVTY3JvbGxQb3MoY20sIE1hdGgubWluKGNvb3Jkcy5sZWZ0
LCBlbmRDb29yZHMubGVmdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE1hdGgubWluKGNvb3Jkcy50b3AsIGVuZENvb3Jkcy50b3ApIC0gbWFyZ2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLm1heChjb29yZHMubGVmdCwg
ZW5kQ29vcmRzLmxlZnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNYXRoLm1heChjb29yZHMuYm90dG9tLCBlbmRDb29yZHMuYm90dG9tKSArIG1hcmdpbik7CiAg
ICAgICB2YXIgc3RhcnRUb3AgPSBjbS5kb2Muc2Nyb2xsVG9wLCBzdGFydExlZnQgPSBjbS5kb2Mu
c2Nyb2xsTGVmdDsKICAgICAgIGlmIChzY3JvbGxQb3Muc2Nyb2xsVG9wICE9IG51bGwpIHsKICAg
ICAgICAgc2V0U2Nyb2xsVG9wKGNtLCBzY3JvbGxQb3Muc2Nyb2xsVG9wKTsKQEAgLTI3NDQsNiAr
Mjc2Niw4IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgICAgaWYgKGlu
ZGVudFN0cmluZyAhPSBjdXJTcGFjZVN0cmluZykKICAgICAgIHJlcGxhY2VSYW5nZShjbS5kb2Ms
IGluZGVudFN0cmluZywgUG9zKG4sIDApLCBQb3MobiwgY3VyU3BhY2VTdHJpbmcubGVuZ3RoKSwg
IitpbnB1dCIpOworICAgIGVsc2UgaWYgKGRvYy5zZWwuaGVhZC5saW5lID09IG4gJiYgZG9jLnNl
bC5oZWFkLmNoIDwgY3VyU3BhY2VTdHJpbmcubGVuZ3RoKQorICAgICAgc2V0U2VsZWN0aW9uKGRv
YywgUG9zKG4sIGN1clNwYWNlU3RyaW5nLmxlbmd0aCksIFBvcyhuLCBjdXJTcGFjZVN0cmluZy5s
ZW5ndGgpLCAxKTsKICAgICBsaW5lLnN0YXRlQWZ0ZXIgPSBudWxsOwogICB9CiAKQEAgLTI4NDQs
NyArMjg2OCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgIENvZGVN
aXJyb3IucHJvdG90eXBlID0gewogICAgIGNvbnN0cnVjdG9yOiBDb2RlTWlycm9yLAotICAgIGZv
Y3VzOiBmdW5jdGlvbigpe3dpbmRvdy5mb2N1cygpOyBmb2N1c0lucHV0KHRoaXMpOyBvbkZvY3Vz
KHRoaXMpOyBmYXN0UG9sbCh0aGlzKTt9LAorICAgIGZvY3VzOiBmdW5jdGlvbigpe3dpbmRvdy5m
b2N1cygpOyBmb2N1c0lucHV0KHRoaXMpOyBmYXN0UG9sbCh0aGlzKTt9LAogCiAgICAgc2V0T3B0
aW9uOiBmdW5jdGlvbihvcHRpb24sIHZhbHVlKSB7CiAgICAgICB2YXIgb3B0aW9ucyA9IHRoaXMu
b3B0aW9ucywgb2xkID0gb3B0aW9uc1tvcHRpb25dOwpAQCAtMzE2NSwxNyArMzE4OSwyMyBAQCB3
aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgY2xpZW50SGVp
Z2h0OiBzY3JvbGxlci5jbGllbnRIZWlnaHQgLSBjbywgY2xpZW50V2lkdGg6IHNjcm9sbGVyLmNs
aWVudFdpZHRoIC0gY299OwogICAgIH0sCiAKLSAgICBzY3JvbGxJbnRvVmlldzogb3BlcmF0aW9u
KG51bGwsIGZ1bmN0aW9uKHBvcywgbWFyZ2luKSB7Ci0gICAgICBpZiAodHlwZW9mIHBvcyA9PSAi
bnVtYmVyIikgcG9zID0gUG9zKHBvcywgMCk7CisgICAgc2Nyb2xsSW50b1ZpZXc6IG9wZXJhdGlv
bihudWxsLCBmdW5jdGlvbihyYW5nZSwgbWFyZ2luKSB7CisgICAgICBpZiAocmFuZ2UgPT0gbnVs
bCkgcmFuZ2UgPSB7ZnJvbTogdGhpcy5kb2Muc2VsLmhlYWQsIHRvOiBudWxsfTsKKyAgICAgIGVs
c2UgaWYgKHR5cGVvZiByYW5nZSA9PSAibnVtYmVyIikgcmFuZ2UgPSB7ZnJvbTogUG9zKHJhbmdl
LCAwKSwgdG86IG51bGx9OworICAgICAgZWxzZSBpZiAocmFuZ2UuZnJvbSA9PSBudWxsKSByYW5n
ZSA9IHtmcm9tOiByYW5nZSwgdG86IG51bGx9OworICAgICAgaWYgKCFyYW5nZS50bykgcmFuZ2Uu
dG8gPSByYW5nZS5mcm9tOwogICAgICAgaWYgKCFtYXJnaW4pIG1hcmdpbiA9IDA7Ci0gICAgICB2
YXIgY29vcmRzID0gcG9zOwogCi0gICAgICBpZiAoIXBvcyB8fCBwb3MubGluZSAhPSBudWxsKSB7
Ci0gICAgICAgIHRoaXMuY3VyT3Auc2Nyb2xsVG9Qb3MgPSBwb3MgPyBjbGlwUG9zKHRoaXMuZG9j
LCBwb3MpIDogdGhpcy5kb2Muc2VsLmhlYWQ7Ci0gICAgICAgIHRoaXMuY3VyT3Auc2Nyb2xsVG9Q
b3NNYXJnaW4gPSBtYXJnaW47Ci0gICAgICAgIGNvb3JkcyA9IGN1cnNvckNvb3Jkcyh0aGlzLCB0
aGlzLmN1ck9wLnNjcm9sbFRvUG9zKTsKKyAgICAgIHZhciBjb29yZHMgPSByYW5nZTsKKyAgICAg
IGlmIChyYW5nZS5mcm9tLmxpbmUgIT0gbnVsbCkgeworICAgICAgICB0aGlzLmN1ck9wLnNjcm9s
bFRvUG9zID0ge2Zyb206IHJhbmdlLmZyb20sIHRvOiByYW5nZS50bywgbWFyZ2luOiBtYXJnaW59
OworICAgICAgICBjb29yZHMgPSB7ZnJvbTogY3Vyc29yQ29vcmRzKHRoaXMsIHJhbmdlLmZyb20p
LAorICAgICAgICAgICAgICAgICAgdG86IGN1cnNvckNvb3Jkcyh0aGlzLCByYW5nZS50byl9Owog
ICAgICAgfQotICAgICAgdmFyIHNQb3MgPSBjYWxjdWxhdGVTY3JvbGxQb3ModGhpcywgY29vcmRz
LmxlZnQsIGNvb3Jkcy50b3AgLSBtYXJnaW4sIGNvb3Jkcy5yaWdodCwgY29vcmRzLmJvdHRvbSAr
IG1hcmdpbik7CisgICAgICB2YXIgc1BvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyh0aGlzLCBNYXRo
Lm1pbihjb29yZHMuZnJvbS5sZWZ0LCBjb29yZHMudG8ubGVmdCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbihjb29yZHMuZnJvbS50b3AsIGNvb3Jkcy50by50
b3ApIC0gbWFyZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5t
YXgoY29vcmRzLmZyb20ucmlnaHQsIGNvb3Jkcy50by5yaWdodCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNYXRoLm1heChjb29yZHMuZnJvbS5ib3R0b20sIGNvb3Jkcy50
by5ib3R0b20pICsgbWFyZ2luKTsKICAgICAgIHVwZGF0ZVNjcm9sbFBvcyh0aGlzLCBzUG9zLnNj
cm9sbExlZnQsIHNQb3Muc2Nyb2xsVG9wKTsKICAgICB9KSwKIApAQCAtMzIwNyw2ICszMjM3LDcg
QEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICBjbGVhckNhY2hlcyh0
aGlzKTsKICAgICAgIHJlc2V0SW5wdXQodGhpcywgdHJ1ZSk7CiAgICAgICB1cGRhdGVTY3JvbGxQ
b3ModGhpcywgZG9jLnNjcm9sbExlZnQsIGRvYy5zY3JvbGxUb3ApOworICAgICAgc2lnbmFsTGF0
ZXIodGhpcywgInN3YXBEb2MiLCB0aGlzLCBvbGQpOwogICAgICAgcmV0dXJuIG9sZDsKICAgICB9
KSwKIApAQCAtMzI1MCw4ICszMjgxLDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9u
KCkgewogICAgIGNsZWFyQ2FjaGVzKGNtKTsKICAgICByZWdDaGFuZ2UoY20pOwogICB9LCB0cnVl
KTsKKyAgb3B0aW9uKCJzcGVjaWFsQ2hhcnMiLCAvW1x0XHUwMDAwLVx1MDAxOVx1MDBhZFx1MjAw
Ylx1MjAyOFx1MjAyOVx1ZmVmZl0vZywgZnVuY3Rpb24oY20sIHZhbCkgeworICAgIGNtLm9wdGlv
bnMuc3BlY2lhbENoYXJzID0gbmV3IFJlZ0V4cCh2YWwuc291cmNlICsgKHZhbC50ZXN0KCJcdCIp
ID8gIiIgOiAifFx0IiksICJnIik7CisgICAgY20ucmVmcmVzaCgpOworICB9LCB0cnVlKTsKKyAg
b3B0aW9uKCJzcGVjaWFsQ2hhclBsYWNlaG9sZGVyIiwgZGVmYXVsdFNwZWNpYWxDaGFyUGxhY2Vo
b2xkZXIsIGZ1bmN0aW9uKGNtKSB7Y20ucmVmcmVzaCgpO30sIHRydWUpOwogICBvcHRpb24oImVs
ZWN0cmljQ2hhcnMiLCB0cnVlKTsKICAgb3B0aW9uKCJydGxNb3ZlVmlzdWFsbHkiLCAhd2luZG93
cyk7CisgIG9wdGlvbigid2hvbGVMaW5lVXBkYXRlQmVmb3JlIiwgdHJ1ZSk7CiAKICAgb3B0aW9u
KCJ0aGVtZSIsICJkZWZhdWx0IiwgZnVuY3Rpb24oY20pIHsKICAgICB0aGVtZUNoYW5nZWQoY20p
OwpAQCAtMzI4MSw5ICszMzE4LDE3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICBvcHRpb24oImxpbmVOdW1iZXJGb3JtYXR0ZXIiLCBmdW5jdGlvbihpbnRlZ2VyKSB7cmV0
dXJuIGludGVnZXI7fSwgZ3V0dGVyc0NoYW5nZWQsIHRydWUpOwogICBvcHRpb24oInNob3dDdXJz
b3JXaGVuU2VsZWN0aW5nIiwgZmFsc2UsIHVwZGF0ZVNlbGVjdGlvbiwgdHJ1ZSk7CiAKKyAgb3B0
aW9uKCJyZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnUiLCB0cnVlKTsKKwogICBvcHRpb24oInJl
YWRPbmx5IiwgZmFsc2UsIGZ1bmN0aW9uKGNtLCB2YWwpIHsKLSAgICBpZiAodmFsID09ICJub2N1
cnNvciIpIHtvbkJsdXIoY20pOyBjbS5kaXNwbGF5LmlucHV0LmJsdXIoKTt9Ci0gICAgZWxzZSBp
ZiAoIXZhbCkgcmVzZXRJbnB1dChjbSwgdHJ1ZSk7CisgICAgaWYgKHZhbCA9PSAibm9jdXJzb3Ii
KSB7CisgICAgICBvbkJsdXIoY20pOworICAgICAgY20uZGlzcGxheS5pbnB1dC5ibHVyKCk7Cisg
ICAgICBjbS5kaXNwbGF5LmRpc2FibGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgY20u
ZGlzcGxheS5kaXNhYmxlZCA9IGZhbHNlOworICAgICAgaWYgKCF2YWwpIHJlc2V0SW5wdXQoY20s
IHRydWUpOworICAgIH0KICAgfSk7CiAgIG9wdGlvbigiZHJhZ0Ryb3AiLCB0cnVlKTsKIApAQCAt
MzUxNyw3ICszNTYyLDggQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIGtl
eU1hcC5iYXNpYyA9IHsKICAgICAiTGVmdCI6ICJnb0NoYXJMZWZ0IiwgIlJpZ2h0IjogImdvQ2hh
clJpZ2h0IiwgIlVwIjogImdvTGluZVVwIiwgIkRvd24iOiAiZ29MaW5lRG93biIsCiAgICAgIkVu
ZCI6ICJnb0xpbmVFbmQiLCAiSG9tZSI6ICJnb0xpbmVTdGFydFNtYXJ0IiwgIlBhZ2VVcCI6ICJn
b1BhZ2VVcCIsICJQYWdlRG93biI6ICJnb1BhZ2VEb3duIiwKLSAgICAiRGVsZXRlIjogImRlbENo
YXJBZnRlciIsICJCYWNrc3BhY2UiOiAiZGVsQ2hhckJlZm9yZSIsICJUYWIiOiAiZGVmYXVsdFRh
YiIsICJTaGlmdC1UYWIiOiAiaW5kZW50QXV0byIsCisgICAgIkRlbGV0ZSI6ICJkZWxDaGFyQWZ0
ZXIiLCAiQmFja3NwYWNlIjogImRlbENoYXJCZWZvcmUiLCAiU2hpZnQtQmFja3NwYWNlIjogImRl
bENoYXJCZWZvcmUiLAorICAgICJUYWIiOiAiZGVmYXVsdFRhYiIsICJTaGlmdC1UYWIiOiAiaW5k
ZW50QXV0byIsCiAgICAgIkVudGVyIjogIm5ld2xpbmVBbmRJbmRlbnQiLCAiSW5zZXJ0IjogInRv
Z2dsZU92ZXJ3cml0ZSIKICAgfTsKICAgLy8gTm90ZSB0aGF0IHRoZSBzYXZlIGFuZCBmaW5kLXJl
bGF0ZWQgY29tbWFuZHMgYXJlbid0IGRlZmluZWQgYnkKQEAgLTM4MjMsNyArMzg2OSw5IEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIGlmIChkb2MuY20gJiYgIWRvYy5j
bS5jdXJPcCkgcmV0dXJuIG9wZXJhdGlvbihkb2MuY20sIG1hcmtUZXh0KShkb2MsIGZyb20sIHRv
LCBvcHRpb25zLCB0eXBlKTsKIAogICAgIHZhciBtYXJrZXIgPSBuZXcgVGV4dE1hcmtlcihkb2Ms
IHR5cGUpOwotICAgIGlmICh0eXBlID09ICJyYW5nZSIgJiYgIXBvc0xlc3MoZnJvbSwgdG8pKSBy
ZXR1cm4gbWFya2VyOworICAgIGlmIChwb3NMZXNzKHRvLCBmcm9tKSB8fCBwb3NFcShmcm9tLCB0
bykgJiYgdHlwZSA9PSAicmFuZ2UiICYmCisgICAgICAgICEob3B0aW9ucy5pbmNsdXNpdmVMZWZ0
ICYmIG9wdGlvbnMuaW5jbHVzaXZlUmlnaHQpKQorICAgICAgcmV0dXJuIG1hcmtlcjsKICAgICBp
ZiAob3B0aW9ucykgY29weU9iaihvcHRpb25zLCBtYXJrZXIpOwogICAgIGlmIChtYXJrZXIucmVw
bGFjZWRXaXRoKSB7CiAgICAgICBtYXJrZXIuY29sbGFwc2VkID0gdHJ1ZTsKQEAgLTM5MzksNyAr
Mzk4Nyw5IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIGlmIChvbGQp
IGZvciAodmFyIGkgPSAwLCBudzsgaSA8IG9sZC5sZW5ndGg7ICsraSkgewogICAgICAgdmFyIHNw
YW4gPSBvbGRbaV0sIG1hcmtlciA9IHNwYW4ubWFya2VyOwogICAgICAgdmFyIHN0YXJ0c0JlZm9y
ZSA9IHNwYW4uZnJvbSA9PSBudWxsIHx8IChtYXJrZXIuaW5jbHVzaXZlTGVmdCA/IHNwYW4uZnJv
bSA8PSBzdGFydENoIDogc3Bhbi5mcm9tIDwgc3RhcnRDaCk7Ci0gICAgICBpZiAoc3RhcnRzQmVm
b3JlIHx8IG1hcmtlci50eXBlID09ICJib29rbWFyayIgJiYgc3Bhbi5mcm9tID09IHN0YXJ0Q2gg
JiYgKCFpc0luc2VydCB8fCAhc3Bhbi5tYXJrZXIuaW5zZXJ0TGVmdCkpIHsKKyAgICAgIGlmIChz
dGFydHNCZWZvcmUgfHwKKyAgICAgICAgICAobWFya2VyLmluY2x1c2l2ZUxlZnQgJiYgbWFya2Vy
LmluY2x1c2l2ZVJpZ2h0IHx8IG1hcmtlci50eXBlID09ICJib29rbWFyayIpICYmCisgICAgICAg
ICAgc3Bhbi5mcm9tID09IHN0YXJ0Q2ggJiYgKCFpc0luc2VydCB8fCAhc3Bhbi5tYXJrZXIuaW5z
ZXJ0TGVmdCkpIHsKICAgICAgICAgdmFyIGVuZHNBZnRlciA9IHNwYW4udG8gPT0gbnVsbCB8fCAo
bWFya2VyLmluY2x1c2l2ZVJpZ2h0ID8gc3Bhbi50byA+PSBzdGFydENoIDogc3Bhbi50byA+IHN0
YXJ0Q2gpOwogICAgICAgICAobncgfHwgKG53ID0gW10pKS5wdXNoKHtmcm9tOiBzcGFuLmZyb20s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvOiBlbmRzQWZ0ZXIgPyBudWxsIDog
c3Bhbi50bywKQEAgLTQyMTIsNiArNDI2Miw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0
aW9uKCkgewogICAgIHRoaXMuaGVpZ2h0ID0gZXN0aW1hdGVIZWlnaHQgPyBlc3RpbWF0ZUhlaWdo
dCh0aGlzKSA6IDE7CiAgIH07CiAgIGV2ZW50TWl4aW4oTGluZSk7CisgIExpbmUucHJvdG90eXBl
LmxpbmVObyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gbGluZU5vKHRoaXMpOyB9OwogCiAgIGZ1bmN0
aW9uIHVwZGF0ZUxpbmUobGluZSwgdGV4dCwgbWFya2VkU3BhbnMsIGVzdGltYXRlSGVpZ2h0KSB7
CiAgICAgbGluZS50ZXh0ID0gdGV4dDsKQEAgLTQyMzIsNyArNDI4Myw3IEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAvLyBSdW4gdGhlIGdpdmVuIG1vZGUncyBwYXJzZXIg
b3ZlciBhIGxpbmUsIHVwZGF0ZSB0aGUgc3R5bGVzCiAgIC8vIGFycmF5LCB3aGljaCBjb250YWlu
cyBhbHRlcm5hdGluZyBmcmFnbWVudHMgb2YgdGV4dCBhbmQgQ1NTCiAgIC8vIGNsYXNzZXMuCi0g
IGZ1bmN0aW9uIHJ1bk1vZGUoY20sIHRleHQsIG1vZGUsIHN0YXRlLCBmKSB7CisgIGZ1bmN0aW9u
IHJ1bk1vZGUoY20sIHRleHQsIG1vZGUsIHN0YXRlLCBmLCBmb3JjZVRvRW5kKSB7CiAgICAgdmFy
IGZsYXR0ZW5TcGFucyA9IG1vZGUuZmxhdHRlblNwYW5zOwogICAgIGlmIChmbGF0dGVuU3BhbnMg
PT0gbnVsbCkgZmxhdHRlblNwYW5zID0gY20ub3B0aW9ucy5mbGF0dGVuU3BhbnM7CiAgICAgdmFy
IGN1clN0YXJ0ID0gMCwgY3VyU3R5bGUgPSBudWxsOwpAQCAtNDI0MSw2ICs0MjkyLDcgQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkp
IHsKICAgICAgIGlmIChzdHJlYW0ucG9zID4gY20ub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGgp
IHsKICAgICAgICAgZmxhdHRlblNwYW5zID0gZmFsc2U7CisgICAgICAgIGlmIChmb3JjZVRvRW5k
KSBwcm9jZXNzTGluZShjbSwgdGV4dCwgc3RhdGUsIHN0cmVhbS5wb3MpOwogICAgICAgICBzdHJl
YW0ucG9zID0gdGV4dC5sZW5ndGg7CiAgICAgICAgIHN0eWxlID0gbnVsbDsKICAgICAgIH0gZWxz
ZSB7CkBAIC00MjYwLDEyICs0MzEyLDE0IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9u
KCkgewogICAgIH0KICAgfQogCi0gIGZ1bmN0aW9uIGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIHN0
YXRlKSB7CisgIGZ1bmN0aW9uIGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIHN0YXRlLCBmb3JjZVRv
RW5kKSB7CiAgICAgLy8gQSBzdHlsZXMgYXJyYXkgYWx3YXlzIHN0YXJ0cyB3aXRoIGEgbnVtYmVy
IGlkZW50aWZ5aW5nIHRoZQogICAgIC8vIG1vZGUvb3ZlcmxheXMgdGhhdCBpdCBpcyBiYXNlZCBv
biAoZm9yIGVhc3kgaW52YWxpZGF0aW9uKS4KICAgICB2YXIgc3QgPSBbY20uc3RhdGUubW9kZUdl
bl07CiAgICAgLy8gQ29tcHV0ZSB0aGUgYmFzZSBhcnJheSBvZiBzdHlsZXMKLSAgICBydW5Nb2Rl
KGNtLCBsaW5lLnRleHQsIGNtLmRvYy5tb2RlLCBzdGF0ZSwgZnVuY3Rpb24oZW5kLCBzdHlsZSkg
e3N0LnB1c2goZW5kLCBzdHlsZSk7fSk7CisgICAgcnVuTW9kZShjbSwgbGluZS50ZXh0LCBjbS5k
b2MubW9kZSwgc3RhdGUsIGZ1bmN0aW9uKGVuZCwgc3R5bGUpIHsKKyAgICAgIHN0LnB1c2goZW5k
LCBzdHlsZSk7CisgICAgfSwgZm9yY2VUb0VuZCk7CiAKICAgICAvLyBSdW4gb3ZlcmxheXMsIGFk
anVzdCBzdHlsZSBhcnJheS4KICAgICBmb3IgKHZhciBvID0gMDsgbyA8IGNtLnN0YXRlLm92ZXJs
YXlzLmxlbmd0aDsgKytvKSB7CkBAIC00MzA0LDEwICs0MzU4LDExIEBAIHdpbmRvdy5Db2RlTWly
cm9yID0gKGZ1bmN0aW9uKCkgewogCiAgIC8vIExpZ2h0d2VpZ2h0IGZvcm0gb2YgaGlnaGxpZ2h0
IC0tIHByb2NlZWQgb3ZlciB0aGlzIGxpbmUgYW5kCiAgIC8vIHVwZGF0ZSBzdGF0ZSwgYnV0IGRv
bid0IHNhdmUgYSBzdHlsZSBhcnJheS4KLSAgZnVuY3Rpb24gcHJvY2Vzc0xpbmUoY20sIGxpbmUs
IHN0YXRlKSB7CisgIGZ1bmN0aW9uIHByb2Nlc3NMaW5lKGNtLCB0ZXh0LCBzdGF0ZSwgc3RhcnRB
dCkgewogICAgIHZhciBtb2RlID0gY20uZG9jLm1vZGU7Ci0gICAgdmFyIHN0cmVhbSA9IG5ldyBT
dHJpbmdTdHJlYW0obGluZS50ZXh0LCBjbS5vcHRpb25zLnRhYlNpemUpOwotICAgIGlmIChsaW5l
LnRleHQgPT0gIiIgJiYgbW9kZS5ibGFua0xpbmUpIG1vZGUuYmxhbmtMaW5lKHN0YXRlKTsKKyAg
ICB2YXIgc3RyZWFtID0gbmV3IFN0cmluZ1N0cmVhbSh0ZXh0LCBjbS5vcHRpb25zLnRhYlNpemUp
OworICAgIHN0cmVhbS5zdGFydCA9IHN0cmVhbS5wb3MgPSBzdGFydEF0IHx8IDA7CisgICAgaWYg
KHRleHQgPT0gIiIgJiYgbW9kZS5ibGFua0xpbmUpIG1vZGUuYmxhbmtMaW5lKHN0YXRlKTsKICAg
ICB3aGlsZSAoIXN0cmVhbS5lb2woKSAmJiBzdHJlYW0ucG9zIDw9IGNtLm9wdGlvbnMubWF4SGln
aGxpZ2h0TGVuZ3RoKSB7CiAgICAgICBtb2RlLnRva2VuKHN0cmVhbSwgc3RhdGUpOwogICAgICAg
c3RyZWFtLnN0YXJ0ID0gc3RyZWFtLnBvczsKQEAgLTQzNjQsNyArNDQxOSw3IEBAIHdpbmRvdy5D
b2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIC8vIFdvcmsgYXJvdW5kIHByb2JsZW0gd2l0
aCB0aGUgcmVwb3J0ZWQgZGltZW5zaW9ucyBvZiBzaW5nbGUtY2hhcgogICAgIC8vIGRpcmVjdGlv
biBzcGFucyBvbiBJRSAoaXNzdWUgIzExMjkpLiBTZWUgYWxzbyB0aGUgY29tbWVudCBpbgogICAg
IC8vIGN1cnNvckNvb3Jkcy4KLSAgICBpZiAobWVhc3VyZSAmJiBpZSAmJiAob3JkZXIgPSBnZXRP
cmRlcihsaW5lKSkpIHsKKyAgICBpZiAobWVhc3VyZSAmJiAoaWUgfHwgaWVfZ3QxMCkgJiYgKG9y
ZGVyID0gZ2V0T3JkZXIobGluZSkpKSB7CiAgICAgICB2YXIgbCA9IG9yZGVyLmxlbmd0aCAtIDE7
CiAgICAgICBpZiAob3JkZXJbbF0uZnJvbSA9PSBvcmRlcltsXS50bykgLS1sOwogICAgICAgdmFy
IGxhc3QgPSBvcmRlcltsXSwgcHJldiA9IG9yZGVyW2wgLSAxXTsKQEAgLTQzODIsMTcgKzQ0Mzcs
MjMgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgcmV0dXJuIGJ1aWxk
ZXI7CiAgIH0KIAotICB2YXIgdG9rZW5TcGVjaWFsQ2hhcnMgPSAvW1x0XHUwMDAwLVx1MDAxOVx1
MDBhZFx1MjAwYlx1MjAyOFx1MjAyOVx1RkVGRl0vZzsKKyAgZnVuY3Rpb24gZGVmYXVsdFNwZWNp
YWxDaGFyUGxhY2Vob2xkZXIoY2gpIHsKKyAgICB2YXIgdG9rZW4gPSBlbHQoInNwYW4iLCAiXHUy
MDIyIiwgImNtLWludmFsaWRjaGFyIik7CisgICAgdG9rZW4udGl0bGUgPSAiXFx1IiArIGNoLmNo
YXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpOworICAgIHJldHVybiB0b2tlbjsKKyAgfQorCiAgIGZ1
bmN0aW9uIGJ1aWxkVG9rZW4oYnVpbGRlciwgdGV4dCwgc3R5bGUsIHN0YXJ0U3R5bGUsIGVuZFN0
eWxlLCB0aXRsZSkgewogICAgIGlmICghdGV4dCkgcmV0dXJuOwotICAgIGlmICghdG9rZW5TcGVj
aWFsQ2hhcnMudGVzdCh0ZXh0KSkgeworICAgIHZhciBzcGVjaWFsID0gYnVpbGRlci5jbS5vcHRp
b25zLnNwZWNpYWxDaGFyczsKKyAgICBpZiAoIXNwZWNpYWwudGVzdCh0ZXh0KSkgewogICAgICAg
YnVpbGRlci5jb2wgKz0gdGV4dC5sZW5ndGg7CiAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHRleHQpOwogICAgIH0gZWxzZSB7CiAgICAgICB2YXIgY29udGVudCA9
IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwgcG9zID0gMDsKICAgICAgIHdoaWxl
ICh0cnVlKSB7Ci0gICAgICAgIHRva2VuU3BlY2lhbENoYXJzLmxhc3RJbmRleCA9IHBvczsKLSAg
ICAgICAgdmFyIG0gPSB0b2tlblNwZWNpYWxDaGFycy5leGVjKHRleHQpOworICAgICAgICBzcGVj
aWFsLmxhc3RJbmRleCA9IHBvczsKKyAgICAgICAgdmFyIG0gPSBzcGVjaWFsLmV4ZWModGV4dCk7
CiAgICAgICAgIHZhciBza2lwcGVkID0gbSA/IG0uaW5kZXggLSBwb3MgOiB0ZXh0Lmxlbmd0aCAt
IHBvczsKICAgICAgICAgaWYgKHNraXBwZWQpIHsKICAgICAgICAgICBjb250ZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQuc2xpY2UocG9zLCBwb3MgKyBza2lwcGVk
KSkpOwpAQCAtNDQwNSw4ICs0NDY2LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24o
KSB7CiAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChlbHQoInNwYW4iLCBzcGFjZVN0cih0
YWJXaWR0aCksICJjbS10YWIiKSk7CiAgICAgICAgICAgYnVpbGRlci5jb2wgKz0gdGFiV2lkdGg7
CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdmFyIHRva2VuID0gZWx0KCJzcGFuIiwgIlx1
MjAyMiIsICJjbS1pbnZhbGlkY2hhciIpOwotICAgICAgICAgIHRva2VuLnRpdGxlID0gIlxcdSIg
KyBtWzBdLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpOworICAgICAgICAgIHZhciB0b2tlbiA9
IGJ1aWxkZXIuY20ub3B0aW9ucy5zcGVjaWFsQ2hhclBsYWNlaG9sZGVyKG1bMF0pOwogICAgICAg
ICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodG9rZW4pOwogICAgICAgICAgIGJ1aWxkZXIuY29sICs9
IDE7CiAgICAgICAgIH0KQEAgLTQ0NTcsNyArNDUxNyw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0g
KGZ1bmN0aW9uKCkgewogICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAgICAgcmV0dXJuIGZ1bmN0
aW9uKGJ1aWxkZXIsIHRleHQsIHN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgdGl0bGUpIHsK
LSAgICAgIHJldHVybiBpbm5lcihidWlsZGVyLCB0ZXh0LnJlcGxhY2UoLyB7Myx9Lywgc3BsaXQp
LCBzdHlsZSwgc3RhcnRTdHlsZSwgZW5kU3R5bGUsIHRpdGxlKTsKKyAgICAgIHJldHVybiBpbm5l
cihidWlsZGVyLCB0ZXh0LnJlcGxhY2UoLyB7Myx9L2csIHNwbGl0KSwgc3R5bGUsIHN0YXJ0U3R5
bGUsIGVuZFN0eWxlLCB0aXRsZSk7CiAgICAgfTsKICAgfQogCkBAIC00NTU5LDcgKzQ2MTksOCBA
QCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB2YXIgbGFzdFRleHQgPSBs
c3QodGV4dCksIGxhc3RTcGFucyA9IHNwYW5zRm9yKHRleHQubGVuZ3RoIC0gMSksIG5saW5lcyA9
IHRvLmxpbmUgLSBmcm9tLmxpbmU7CiAKICAgICAvLyBGaXJzdCBhZGp1c3QgdGhlIGxpbmUgc3Ry
dWN0dXJlCi0gICAgaWYgKGZyb20uY2ggPT0gMCAmJiB0by5jaCA9PSAwICYmIGxhc3RUZXh0ID09
ICIiKSB7CisgICAgaWYgKGZyb20uY2ggPT0gMCAmJiB0by5jaCA9PSAwICYmIGxhc3RUZXh0ID09
ICIiICYmCisgICAgICAgICghZG9jLmNtIHx8IGRvYy5jbS5vcHRpb25zLndob2xlTGluZVVwZGF0
ZUJlZm9yZSkpIHsKICAgICAgIC8vIFRoaXMgaXMgYSB3aG9sZS1saW5lIHJlcGxhY2UuIFRyZWF0
ZWQgc3BlY2lhbGx5IHRvIG1ha2UKICAgICAgIC8vIHN1cmUgbGluZSBvYmplY3RzIG1vdmUgdGhl
IHdheSB0aGV5IGFyZSBzdXBwb3NlZCB0by4KICAgICAgIGZvciAodmFyIGkgPSAwLCBlID0gdGV4
dC5sZW5ndGggLSAxLCBhZGRlZCA9IFtdOyBpIDwgZTsgKytpKQpAQCAtNTQ0Niw3ICs1NTA3LDcg
QEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgcmV0dXJuIHRydWU7CiAg
IH0KIAotICB2YXIgaXNFeHRlbmRpbmdDaGFyID0gL1tcdTAzMDAtXHUwMzZGXHUwNDgzLVx1MDQ4
N1x1MDQ4OC1cdTA0ODlcdTA1OTEtXHUwNUJEXHUwNUJGXHUwNUMxLVx1MDVDMlx1MDVDNC1cdTA1
QzVcdTA1QzdcdTA2MTAtXHUwNjFBXHUwNjRCLVx1MDY1Rlx1MDY3MFx1MDZENi1cdTA2RENcdTA2
REYtXHUwNkU0XHUwNkU3LVx1MDZFOFx1MDZFQS1cdTA2RURcdUE2NkZcdUE2NzAtXHVBNjcyXHVB
Njc0LVx1QTY3RFx1QTY5Rlx1ZGMwMC1cdWRmZmZdLzsKKyAgdmFyIGlzRXh0ZW5kaW5nQ2hhciA9
IC9bXHUwMzAwLVx1MDM2Rlx1MDQ4My1cdTA0ODdcdTA0ODgtXHUwNDg5XHUwNTkxLVx1MDVCRFx1
MDVCRlx1MDVDMS1cdTA1QzJcdTA1QzQtXHUwNUM1XHUwNUM3XHUwNjEwLVx1MDYxQVx1MDY0Qi1c
dTA2NUZcdTA2NzBcdTA2RDYtXHUwNkRDXHUwNkRGLVx1MDZFNFx1MDZFNy1cdTA2RThcdTA2RUEt
XHUwNkVEXHVBNjZGXHUxREMw4oCTXHUxREZGXHUyMEQw4oCTXHUyMEZGXHVBNjcwLVx1QTY3Mlx1
QTY3NC1cdUE2N0RcdUE2OUZcdWRjMDAtXHVkZmZmXHVGRTIw4oCTXHVGRTJGXS87CiAKICAgLy8g
RE9NIFVUSUxJVElFUwogCkBAIC01NTIwLDcgKzU1ODEsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICAgICAgaWYgKC9cdy8udGVzdChzdHIuY2hhckF0KGkgLSAyKSkg
JiYgL1teXC0/XC5dLy50ZXN0KHN0ci5jaGFyQXQoaSkpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAg
aWYgKGkgPiAyICYmIC9bXGRcLixdLy50ZXN0KHN0ci5jaGFyQXQoaSAtIDIpKSAmJiAvW1xkXC4s
XS8udGVzdChzdHIuY2hhckF0KGkpKSkgcmV0dXJuIGZhbHNlOwogICAgICAgfQotICAgICAgdmFy
IHJlc3VsdCA9IC9bfiEjJSYqKT0rfVxdfFwiXC4+LDo7XVsoe1s8XXwtW15cLT9cLlx1MjAxMC1c
dTIwMWZcdTIwMjZdfFw/W1x3fmBAIyQlXF4mKihfPSt7W3w+PF184oCmW1x3fmBAIyQlXF4mKihf
PSt7Wz48XS8udGVzdChzdHIuc2xpY2UoaSAtIDEsIGkgKyAxKSk7CisgICAgICB2YXIgcmVzdWx0
ID0gL1t+ISMlJiopPSt9XF1cXHxcIlwuPiw6O11bKHtbPF18LVteXC0/XC5cdTIwMTAtXHUyMDFm
XHUyMDI2XXxcP1tcd35gQCMkJVxeJiooXz0re1t8PjxdfOKApltcd35gQCMkJVxeJiooXz0re1s+
PF0vLnRlc3Qoc3RyLnNsaWNlKGkgLSAxLCBpICsgMSkpOwogICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9OwogCkBAIC01ODc3LDcgKzU5MzgsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5j
dGlvbigpIHsKIAogICAvLyBUSEUgRU5ECiAKLSAgQ29kZU1pcnJvci52ZXJzaW9uID0gIjMuMTYu
MSI7CisgIENvZGVNaXJyb3IudmVyc2lvbiA9ICIzLjIwLjAiOwogCiAgIHJldHVybiBDb2RlTWly
cm9yOwogfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0
dHlQcmludGluZy9jc3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJp
bnRpbmcvY3NzLmpzCmluZGV4IDA4NWIxMTlkZTRkZmM4MmY1Zjc0M2NhNTJhMmY4MDQ1OTBjYTVm
NDEuLmQ4YzMwY2YzM2Q2ZmUxYjViNDUyZjM5ZTZmYWEwYWFlOWEzNjFhZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jc3MuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2Nzcy5qcwpAQCAtMyw3
ICszLDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcsIHBh
cnNlckNvbmZpZykgewogCiAgIGlmICghcGFyc2VyQ29uZmlnLnByb3BlcnR5S2V5d29yZHMpIHBh
cnNlckNvbmZpZyA9IENvZGVNaXJyb3IucmVzb2x2ZU1vZGUoInRleHQvY3NzIik7CiAKLSAgdmFy
IGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50VW5pdCwKKyAgdmFyIGluZGVudFVuaXQgPSBjb25m
aWcuaW5kZW50VW5pdCB8fCBjb25maWcudGFiU2l6ZSB8fCAyLAogICAgICAgaG9va3MgPSBwYXJz
ZXJDb25maWcuaG9va3MgfHwge30sCiAgICAgICBhdE1lZGlhVHlwZXMgPSBwYXJzZXJDb25maWcu
YXRNZWRpYVR5cGVzIHx8IHt9LAogICAgICAgYXRNZWRpYUZlYXR1cmVzID0gcGFyc2VyQ29uZmln
LmF0TWVkaWFGZWF0dXJlcyB8fCB7fSwKQEAgLTM3LDcgKzM3LDcgQEAgQ29kZU1pcnJvci5kZWZp
bmVNb2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgc3Ry
ZWFtLm1hdGNoKC9eXHMqXHcqLyk7CiAgICAgICByZXR1cm4gcmV0KCJrZXl3b3JkIiwgImltcG9y
dGFudCIpOwogICAgIH0KLSAgICBlbHNlIGlmICgvXGQvLnRlc3QoY2gpKSB7CisgICAgZWxzZSBp
ZiAoL1xkLy50ZXN0KGNoKSB8fCBjaCA9PSAiLiIgJiYgc3RyZWFtLmVhdCgvXGQvKSkgewogICAg
ICAgc3RyZWFtLmVhdFdoaWxlKC9bXHcuJV0vKTsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIs
ICJ1bml0Iik7CiAgICAgfQpAQCAtMjU5LDggKzI1OSwxMyBAQCBDb2RlTWlycm9yLmRlZmluZU1v
ZGUoImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICB9CiAgICAg
ICBlbHNlIGlmICh0eXBlID09ICJ9IikgewogICAgICAgICBpZiAoY29udGV4dCA9PSAiaW50ZXJw
b2xhdGlvbiIpIHN0eWxlID0gIm9wZXJhdG9yIjsKLSAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7
Ci0gICAgICAgIGlmIChjb250ZXh0ID09ICJwcm9wZXJ0eVZhbHVlIikgc3RhdGUuc3RhY2sucG9w
KCk7CisgICAgICAgIC8vIFBvcCBvZmYgZW5kIG9mIGFycmF5IHVudGlsIHsgaXMgcmVhY2hlZAor
ICAgICAgICB3aGlsZShzdGF0ZS5zdGFjay5sZW5ndGgpeworICAgICAgICAgIHZhciByZW1vdmVk
ID0gc3RhdGUuc3RhY2sucG9wKCk7CisgICAgICAgICAgaWYocmVtb3ZlZC5pbmRleE9mKCJ7Iikg
PiAtMSB8fCByZW1vdmVkID09ICJibG9jayIgfHwgcmVtb3ZlZCA9PSAicnVsZSIpeworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICB9CiAgICAgICBlbHNl
IGlmICh0eXBlID09ICJpbnRlcnBvbGF0aW9uIikgc3RhdGUuc3RhY2sucHVzaCgiaW50ZXJwb2xh
dGlvbiIpOwogICAgICAgZWxzZSBpZiAodHlwZSA9PSAiQG1lZGlhIikgc3RhdGUuc3RhY2sucHVz
aCgiQG1lZGlhIik7CkBAIC0yNzgsMTEgKzI4MywxMyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUo
ImNzcyIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAgIGVsc2Ugc3Rh
dGUuc3RhY2sucHVzaCgiKCIpOwogICAgICAgfQogICAgICAgZWxzZSBpZiAodHlwZSA9PSAiKSIp
IHsKLSAgICAgICAgaWYgKGNvbnRleHQgPT0gInByb3BlcnR5VmFsdWUiKSB7Ci0gICAgICAgICAg
Ly8gSW4gQG1lZGlhVHlwZSggd2l0aG91dCBjbG9zaW5nIDsgYWZ0ZXIgcHJvcGVydHlWYWx1ZQot
ICAgICAgICAgIHN0YXRlLnN0YWNrLnBvcCgpOworICAgICAgICAvLyBQb3Agb2ZmIGVuZCBvZiBh
cnJheSB1bnRpbCAoIGlzIHJlYWNoZWQKKyAgICAgICAgd2hpbGUoc3RhdGUuc3RhY2subGVuZ3Ro
KXsKKyAgICAgICAgICB2YXIgcmVtb3ZlZCA9IHN0YXRlLnN0YWNrLnBvcCgpOworICAgICAgICAg
IGlmKHJlbW92ZWQuaW5kZXhPZigiKCIpID4gLTEpeworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHN0YXRlLnN0YWNrLnBvcCgpOwogICAgICAgfQog
ICAgICAgZWxzZSBpZiAodHlwZSA9PSAiOiIgJiYgc3RhdGUubGFzdFRva2VuID09ICJwcm9wZXJ0
eSIpIHN0YXRlLnN0YWNrLnB1c2goInByb3BlcnR5VmFsdWUiKTsKICAgICAgIGVsc2UgaWYgKGNv
bnRleHQgPT0gInByb3BlcnR5VmFsdWUiICYmIHR5cGUgPT0gIjsiKSBzdGF0ZS5zdGFjay5wb3Ao
KTsKQEAgLTYwMiw2ICs2MDksMTEgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MiLCBmdW5j
dGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgICB9CiAgICAgICAgIHJldHVybiBb
InZhcmlhYmxlIiwgInZhcmlhYmxlIl07CiAgICAgICB9LAorICAgICAgIiwiOiBmdW5jdGlvbihz
dHJlYW0sIHN0YXRlKSB7CisgICAgICAgIGlmIChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGggLSAxXSA9PSAicHJvcGVydHlWYWx1ZSIgJiYgc3RyZWFtLm1hdGNoKC9eICpcJC8sIGZhbHNl
KSkgeworICAgICAgICAgIHJldHVybiBbIm9wZXJhdG9yIiwgIjsiXTsKKyAgICAgICAgfQorICAg
ICAgfSwKICAgICAgICIvIjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgewogICAgICAgICBpZiAo
c3RyZWFtLmVhdCgiLyIpKSB7CiAgICAgICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2phdmFzY3Jp
cHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvamF2YXNj
cmlwdC5qcwppbmRleCBlOGFjZTMyZDg5NmFjMWMwODNkNWFiMzE1ZjE4NDc5MDk2ODNiMjY2Li5m
MjdjMDYzNDZjNjNlZTkxMTgwNDhmMjUyMjY1OTdjZjFhNGIyNmMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvamF2YXNjcmlwdC5q
cwpAQCAtMjEsNyArMjEsOCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBm
dW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgImZvciI6IGt3KCJmb3IiKSwg
InN3aXRjaCI6IGt3KCJzd2l0Y2giKSwgImNhc2UiOiBrdygiY2FzZSIpLCAiZGVmYXVsdCI6IGt3
KCJkZWZhdWx0IiksCiAgICAgICAiaW4iOiBvcGVyYXRvciwgInR5cGVvZiI6IG9wZXJhdG9yLCAi
aW5zdGFuY2VvZiI6IG9wZXJhdG9yLAogICAgICAgInRydWUiOiBhdG9tLCAiZmFsc2UiOiBhdG9t
LCAibnVsbCI6IGF0b20sICJ1bmRlZmluZWQiOiBhdG9tLCAiTmFOIjogYXRvbSwgIkluZmluaXR5
IjogYXRvbSwKLSAgICAgICJ0aGlzIjoga3coInRoaXMiKQorICAgICAgInRoaXMiOiBrdygidGhp
cyIpLCAibW9kdWxlIjoga3coIm1vZHVsZSIpLCAiY2xhc3MiOiBrdygiY2xhc3MiKSwgInN1cGVy
Ijoga3coImF0b20iKSwKKyAgICAgICJ5aWVsZCI6IEMsICJleHBvcnQiOiBrdygiZXhwb3J0Iiks
ICJpbXBvcnQiOiBrdygiaW1wb3J0IiksICJleHRlbmRzIjogQwogICAgIH07CiAKICAgICAvLyBF
eHRlbmQgdGhlICdub3JtYWwnIGtleXdvcmRzIHdpdGggdGhlIFR5cGVTY3JpcHQgbGFuZ3VhZ2Ug
ZXh0ZW5zaW9ucwpAQCAtMzAsNyArMzEsNiBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFz
Y3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgdmFyIHRzS2V5
d29yZHMgPSB7CiAgICAgICAgIC8vIG9iamVjdC1saWtlIHRoaW5ncwogICAgICAgICAiaW50ZXJm
YWNlIjoga3coImludGVyZmFjZSIpLAotICAgICAgICAiY2xhc3MiOiBrdygiY2xhc3MiKSwKICAg
ICAgICAgImV4dGVuZHMiOiBrdygiZXh0ZW5kcyIpLAogICAgICAgICAiY29uc3RydWN0b3IiOiBr
dygiY29uc3RydWN0b3IiKSwKIApAQCAtNDAsOCArNDAsNiBAQCBDb2RlTWlycm9yLmRlZmluZU1v
ZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAg
ICAicHJvdGVjdGVkIjoga3coInByb3RlY3RlZCIpLAogICAgICAgICAic3RhdGljIjoga3coInN0
YXRpYyIpLAogCi0gICAgICAgICJzdXBlciI6IGt3KCJzdXBlciIpLAotCiAgICAgICAgIC8vIHR5
cGVzCiAgICAgICAgICJzdHJpbmciOiB0eXBlLCAibnVtYmVyIjogdHlwZSwgImJvb2wiOiB0eXBl
LCAiYW55IjogdHlwZQogICAgICAgfTsKQEAgLTU2LDExICs1NCw2IEBAIENvZGVNaXJyb3IuZGVm
aW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAK
ICAgdmFyIGlzT3BlcmF0b3JDaGFyID0gL1srXC0qJiU9PD4hP3x+Xl0vOwogCi0gIGZ1bmN0aW9u
IGNoYWluKHN0cmVhbSwgc3RhdGUsIGYpIHsKLSAgICBzdGF0ZS50b2tlbml6ZSA9IGY7Ci0gICAg
cmV0dXJuIGYoc3RyZWFtLCBzdGF0ZSk7Ci0gIH0KLQogICBmdW5jdGlvbiBuZXh0VW50aWxVbmVz
Y2FwZWQoc3RyZWFtLCBlbmQpIHsKICAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBuZXh0OwogICAg
IHdoaWxlICgobmV4dCA9IHN0cmVhbS5uZXh0KCkpICE9IG51bGwpIHsKQEAgLTc4LDUwICs3MSw1
MSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcs
IHBhcnNlckNvbmZpZykgewogICAgIHR5cGUgPSB0cDsgY29udGVudCA9IGNvbnQ7CiAgICAgcmV0
dXJuIHN0eWxlOwogICB9Ci0gIGZ1bmN0aW9uIGpzVG9rZW5CYXNlKHN0cmVhbSwgc3RhdGUpIHsK
KyAgZnVuY3Rpb24gdG9rZW5CYXNlKHN0cmVhbSwgc3RhdGUpIHsKICAgICB2YXIgY2ggPSBzdHJl
YW0ubmV4dCgpOwotICAgIGlmIChjaCA9PSAnIicgfHwgY2ggPT0gIiciKQotICAgICAgcmV0dXJu
IGNoYWluKHN0cmVhbSwgc3RhdGUsIGpzVG9rZW5TdHJpbmcoY2gpKTsKLSAgICBlbHNlIGlmIChj
aCA9PSAiLiIgJiYgc3RyZWFtLm1hdGNoKC9eXGQrKD86W2VFXVsrXC1dP1xkKyk/LykpCisgICAg
aWYgKGNoID09ICciJyB8fCBjaCA9PSAiJyIpIHsKKyAgICAgIHN0YXRlLnRva2VuaXplID0gdG9r
ZW5TdHJpbmcoY2gpOworICAgICAgcmV0dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUp
OworICAgIH0gZWxzZSBpZiAoY2ggPT0gIi4iICYmIHN0cmVhbS5tYXRjaCgvXlxkKyg/OltlRV1b
K1wtXT9cZCspPy8pKSB7CiAgICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAibnVtYmVyIik7Ci0g
ICAgZWxzZSBpZiAoL1tcW1xde31cKFwpLDtcOlwuXS8udGVzdChjaCkpCisgICAgfSBlbHNlIGlm
IChjaCA9PSAiLiIgJiYgc3RyZWFtLm1hdGNoKCIuLiIpKSB7CisgICAgICByZXR1cm4gcmV0KCJz
cHJlYWQiLCAibWV0YSIpOworICAgIH0gZWxzZSBpZiAoL1tcW1xde31cKFwpLDtcOlwuXS8udGVz
dChjaCkpIHsKICAgICAgIHJldHVybiByZXQoY2gpOwotICAgIGVsc2UgaWYgKGNoID09ICIwIiAm
JiBzdHJlYW0uZWF0KC94L2kpKSB7CisgICAgfSBlbHNlIGlmIChjaCA9PSAiPSIgJiYgc3RyZWFt
LmVhdCgiPiIpKSB7CisgICAgICByZXR1cm4gcmV0KCI9PiIpOworICAgIH0gZWxzZSBpZiAoY2gg
PT0gIjAiICYmIHN0cmVhbS5lYXQoL3gvaSkpIHsKICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1xk
YS1mXS9pKTsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIsICJudW1iZXIiKTsKLSAgICB9Ci0g
ICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSkgeworICAgIH0gZWxzZSBpZiAoL1xkLy50ZXN0KGNo
KSkgewogICAgICAgc3RyZWFtLm1hdGNoKC9eXGQqKD86XC5cZCopPyg/OltlRV1bK1wtXT9cZCsp
Py8pOwogICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgIm51bWJlciIpOwotICAgIH0KLSAgICBl
bHNlIGlmIChjaCA9PSAiLyIpIHsKKyAgICB9IGVsc2UgaWYgKGNoID09ICIvIikgewogICAgICAg
aWYgKHN0cmVhbS5lYXQoIioiKSkgewotICAgICAgICByZXR1cm4gY2hhaW4oc3RyZWFtLCBzdGF0
ZSwganNUb2tlbkNvbW1lbnQpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoc3RyZWFtLmVhdCgi
LyIpKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5Db21tZW50OworICAgICAgICBy
ZXR1cm4gdG9rZW5Db21tZW50KHN0cmVhbSwgc3RhdGUpOworICAgICAgfSBlbHNlIGlmIChzdHJl
YW0uZWF0KCIvIikpIHsKICAgICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOwogICAgICAgICByZXR1
cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQiKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHN0
YXRlLmxhc3RUeXBlID09ICJvcGVyYXRvciIgfHwgc3RhdGUubGFzdFR5cGUgPT0gImtleXdvcmQg
YyIgfHwKLSAgICAgICAgICAgICAgIC9eW1xbe31cKCw7Ol0kLy50ZXN0KHN0YXRlLmxhc3RUeXBl
KSkgeworICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sYXN0VHlwZSA9PSAib3BlcmF0b3IiIHx8IHN0
YXRlLmxhc3RUeXBlID09ICJrZXl3b3JkIGMiIHx8CisgICAgICAgICAgICAgICBzdGF0ZS5sYXN0
VHlwZSA9PSAic29mIiB8fCAvXltcW3t9XCgsOzpdJC8udGVzdChzdGF0ZS5sYXN0VHlwZSkpIHsK
ICAgICAgICAgbmV4dFVudGlsVW5lc2NhcGVkKHN0cmVhbSwgIi8iKTsKICAgICAgICAgc3RyZWFt
LmVhdFdoaWxlKC9bZ2lteV0vKTsgLy8gJ3knIGlzICJzdGlja3kiIG9wdGlvbiBpbiBNb3ppbGxh
CiAgICAgICAgIHJldHVybiByZXQoInJlZ2V4cCIsICJzdHJpbmctMiIpOwotICAgICAgfQotICAg
ICAgZWxzZSB7CisgICAgICB9IGVsc2UgewogICAgICAgICBzdHJlYW0uZWF0V2hpbGUoaXNPcGVy
YXRvckNoYXIpOwogICAgICAgICByZXR1cm4gcmV0KCJvcGVyYXRvciIsIG51bGwsIHN0cmVhbS5j
dXJyZW50KCkpOwogICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChjaCA9PSAiIyIpIHsKKyAg
ICB9IGVsc2UgaWYgKGNoID09ICJgIikgeworICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlblF1
YXNpOworICAgICAgcmV0dXJuIHRva2VuUXVhc2koc3RyZWFtLCBzdGF0ZSk7CisgICAgfSBlbHNl
IGlmIChjaCA9PSAiIyIpIHsKICAgICAgIHN0cmVhbS5za2lwVG9FbmQoKTsKICAgICAgIHJldHVy
biByZXQoImVycm9yIiwgImVycm9yIik7Ci0gICAgfQotICAgIGVsc2UgaWYgKGlzT3BlcmF0b3JD
aGFyLnRlc3QoY2gpKSB7CisgICAgfSBlbHNlIGlmIChpc09wZXJhdG9yQ2hhci50ZXN0KGNoKSkg
ewogICAgICAgc3RyZWFtLmVhdFdoaWxlKGlzT3BlcmF0b3JDaGFyKTsKICAgICAgIHJldHVybiBy
ZXQoIm9wZXJhdG9yIiwgbnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7Ci0gICAgfQotICAgIGVsc2Ug
eworICAgIH0gZWxzZSB7CiAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1wkX10vKTsKICAgICAg
IHZhciB3b3JkID0gc3RyZWFtLmN1cnJlbnQoKSwga25vd24gPSBrZXl3b3Jkcy5wcm9wZXJ0eUlz
RW51bWVyYWJsZSh3b3JkKSAmJiBrZXl3b3Jkc1t3b3JkXTsKICAgICAgIHJldHVybiAoa25vd24g
JiYgc3RhdGUubGFzdFR5cGUgIT0gIi4iKSA/IHJldChrbm93bi50eXBlLCBrbm93bi5zdHlsZSwg
d29yZCkgOgpAQCAtMTI5LDE5ICsxMjMsMTkgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZh
c2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICB9CiAgIH0KIAot
ICBmdW5jdGlvbiBqc1Rva2VuU3RyaW5nKHF1b3RlKSB7CisgIGZ1bmN0aW9uIHRva2VuU3RyaW5n
KHF1b3RlKSB7CiAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUpIHsKICAgICAgIGlm
ICghbmV4dFVudGlsVW5lc2NhcGVkKHN0cmVhbSwgcXVvdGUpKQotICAgICAgICBzdGF0ZS50b2tl
bml6ZSA9IGpzVG9rZW5CYXNlOworICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTsK
ICAgICAgIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsKICAgICB9OwogICB9CiAKLSAg
ZnVuY3Rpb24ganNUb2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSkgeworICBmdW5jdGlvbiB0b2tl
bkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSkgewogICAgIHZhciBtYXliZUVuZCA9IGZhbHNlLCBjaDsK
ICAgICB3aGlsZSAoY2ggPSBzdHJlYW0ubmV4dCgpKSB7CiAgICAgICBpZiAoY2ggPT0gIi8iICYm
IG1heWJlRW5kKSB7Ci0gICAgICAgIHN0YXRlLnRva2VuaXplID0ganNUb2tlbkJhc2U7CisgICAg
ICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOwogICAgICAgICBicmVhazsKICAgICAgIH0K
ICAgICAgIG1heWJlRW5kID0gKGNoID09ICIqIik7CkBAIC0xNDksNiArMTQzLDUwIEBAIENvZGVN
aXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29u
ZmlnKSB7CiAgICAgcmV0dXJuIHJldCgiY29tbWVudCIsICJjb21tZW50Iik7CiAgIH0KIAorICBm
dW5jdGlvbiB0b2tlblF1YXNpKHN0cmVhbSwgc3RhdGUpIHsKKyAgICB2YXIgZXNjYXBlZCA9IGZh
bHNlLCBuZXh0OworICAgIHdoaWxlICgobmV4dCA9IHN0cmVhbS5uZXh0KCkpICE9IG51bGwpIHsK
KyAgICAgIGlmICghZXNjYXBlZCAmJiAobmV4dCA9PSAiYCIgfHwgbmV4dCA9PSAiJCIgJiYgc3Ry
ZWFtLmVhdCgieyIpKSkgeworICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBlc2NhcGVkID0gIWVzY2FwZWQgJiYgbmV4dCA9
PSAiXFwiOworICAgIH0KKyAgICByZXR1cm4gcmV0KCJxdWFzaSIsICJzdHJpbmctMiIsIHN0cmVh
bS5jdXJyZW50KCkpOworICB9CisKKyAgdmFyIGJyYWNrZXRzID0gIihbe31dKSI7CisgIC8vIFRo
aXMgaXMgYSBjcnVkZSBsb29rYWhlYWQgdHJpY2sgdG8gdHJ5IGFuZCBub3RpY2UgdGhhdCB3ZSdy
ZQorICAvLyBwYXJzaW5nIHRoZSBhcmd1bWVudCBwYXR0ZXJucyBmb3IgYSBmYXQtYXJyb3cgZnVu
Y3Rpb24gYmVmb3JlIHdlCisgIC8vIGFjdHVhbGx5IGhpdCB0aGUgYXJyb3cgdG9rZW4uIEl0IG9u
bHkgd29ya3MgaWYgdGhlIGFycm93IGlzIG9uCisgIC8vIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGFy
Z3VtZW50cyBhbmQgdGhlcmUncyBubyBzdHJhbmdlIG5vaXNlCisgIC8vIChjb21tZW50cykgaW4g
YmV0d2Vlbi4gRmFsbGJhY2sgaXMgdG8gb25seSBub3RpY2Ugd2hlbiB3ZSBoaXQgdGhlCisgIC8v
IGFycm93LCBhbmQgbm90IGRlY2xhcmUgdGhlIGFyZ3VtZW50cyBhcyBsb2NhbHMgZm9yIHRoZSBh
cnJvdworICAvLyBib2R5LgorICBmdW5jdGlvbiBmaW5kRmF0QXJyb3coc3RyZWFtLCBzdGF0ZSkg
eworICAgIGlmIChzdGF0ZS5mYXRBcnJvd0F0KSBzdGF0ZS5mYXRBcnJvd0F0ID0gbnVsbDsKKyAg
ICB2YXIgYXJyb3cgPSBzdHJlYW0uc3RyaW5nLmluZGV4T2YoIj0+Iiwgc3RyZWFtLnN0YXJ0KTsK
KyAgICBpZiAoYXJyb3cgPCAwKSByZXR1cm47CisKKyAgICB2YXIgZGVwdGggPSAwLCBzYXdTb21l
dGhpbmcgPSBmYWxzZTsKKyAgICBmb3IgKHZhciBwb3MgPSBhcnJvdyAtIDE7IHBvcyA+PSAwOyAt
LXBvcykgeworICAgICAgdmFyIGNoID0gc3RyZWFtLnN0cmluZy5jaGFyQXQocG9zKTsKKyAgICAg
IHZhciBicmFja2V0ID0gYnJhY2tldHMuaW5kZXhPZihjaCk7CisgICAgICBpZiAoYnJhY2tldCA+
PSAwICYmIGJyYWNrZXQgPCAzKSB7CisgICAgICAgIGlmICghZGVwdGgpIHsgKytwb3M7IGJyZWFr
OyB9CisgICAgICAgIGlmICgtLWRlcHRoID09IDApIGJyZWFrOworICAgICAgfSBlbHNlIGlmIChi
cmFja2V0ID49IDMgJiYgYnJhY2tldCA8IDYpIHsKKyAgICAgICAgKytkZXB0aDsKKyAgICAgIH0g
ZWxzZSBpZiAoL1skXHddLy50ZXN0KGNoKSkgeworICAgICAgICBzYXdTb21ldGhpbmcgPSB0cnVl
OworICAgICAgfSBlbHNlIGlmIChzYXdTb21ldGhpbmcgJiYgIWRlcHRoKSB7CisgICAgICAgICsr
cG9zOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKHNhd1NvbWV0aGlu
ZyAmJiAhZGVwdGgpIHN0YXRlLmZhdEFycm93QXQgPSBwb3M7CisgIH0KKwogICAvLyBQYXJzZXIK
IAogICB2YXIgYXRvbWljVHlwZXMgPSB7ImF0b20iOiB0cnVlLCAibnVtYmVyIjogdHJ1ZSwgInZh
cmlhYmxlIjogdHJ1ZSwgInN0cmluZyI6IHRydWUsICJyZWdleHAiOiB0cnVlLCAidGhpcyI6IHRy
dWV9OwpAQCAtMTY1LDYgKzIwMywxMCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3Jp
cHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICBmdW5jdGlvbiBpblNjb3Bl
KHN0YXRlLCB2YXJuYW1lKSB7CiAgICAgZm9yICh2YXIgdiA9IHN0YXRlLmxvY2FsVmFyczsgdjsg
diA9IHYubmV4dCkKICAgICAgIGlmICh2Lm5hbWUgPT0gdmFybmFtZSkgcmV0dXJuIHRydWU7Cisg
ICAgZm9yICh2YXIgY3ggPSBzdGF0ZS5jb250ZXh0OyBjeDsgY3ggPSBjeC5wcmV2KSB7CisgICAg
ICBmb3IgKHZhciB2ID0gY3gudmFyczsgdjsgdiA9IHYubmV4dCkKKyAgICAgICAgaWYgKHYubmFt
ZSA9PSB2YXJuYW1lKSByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgIH0KIAogICBmdW5jdGlvbiBwYXJz
ZUpTKHN0YXRlLCBzdHlsZSwgdHlwZSwgY29udGVudCwgc3RyZWFtKSB7CkBAIC0yMTEsNyArMjUz
LDggQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKICAgICAgIHN0YXRlLmxvY2FsVmFycyA9IHtuYW1lOiB2YXJuYW1l
LCBuZXh0OiBzdGF0ZS5sb2NhbFZhcnN9OwogICAgIH0gZWxzZSB7CiAgICAgICBpZiAoaW5MaXN0
KHN0YXRlLmdsb2JhbFZhcnMpKSByZXR1cm47Ci0gICAgICBzdGF0ZS5nbG9iYWxWYXJzID0ge25h
bWU6IHZhcm5hbWUsIG5leHQ6IHN0YXRlLmdsb2JhbFZhcnN9OworICAgICAgaWYgKHBhcnNlckNv
bmZpZy5nbG9iYWxWYXJzKQorICAgICAgICBzdGF0ZS5nbG9iYWxWYXJzID0ge25hbWU6IHZhcm5h
bWUsIG5leHQ6IHN0YXRlLmdsb2JhbFZhcnN9OwogICAgIH0KICAgfQogCkBAIC0yNTMsMTYgKzI5
NiwxNSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25m
aWcsIHBhcnNlckNvbmZpZykgewogICAgIH07CiAgIH0KIAotICBmdW5jdGlvbiBzdGF0ZW1lbnQo
dHlwZSkgewotICAgIGlmICh0eXBlID09ICJ2YXIiKSByZXR1cm4gY29udChwdXNobGV4KCJ2YXJk
ZWYiKSwgdmFyZGVmMSwgZXhwZWN0KCI7IiksIHBvcGxleCk7CisgIGZ1bmN0aW9uIHN0YXRlbWVu
dCh0eXBlLCB2YWx1ZSkgeworICAgIGlmICh0eXBlID09ICJ2YXIiKSByZXR1cm4gY29udChwdXNo
bGV4KCJ2YXJkZWYiLCB2YWx1ZS5sZW5ndGgpLCB2YXJkZWYsIGV4cGVjdCgiOyIpLCBwb3BsZXgp
OwogICAgIGlmICh0eXBlID09ICJrZXl3b3JkIGEiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3Jt
IiksIGV4cHJlc3Npb24sIHN0YXRlbWVudCwgcG9wbGV4KTsKICAgICBpZiAodHlwZSA9PSAia2V5
d29yZCBiIikgcmV0dXJuIGNvbnQocHVzaGxleCgiZm9ybSIpLCBzdGF0ZW1lbnQsIHBvcGxleCk7
CiAgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gY29udChwdXNobGV4KCJ9IiksIGJsb2NrLCBw
b3BsZXgpOwogICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuIGNvbnQoKTsKICAgICBpZiAodHlw
ZSA9PSAiaWYiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIGV4cHJlc3Npb24sIHN0YXRl
bWVudCwgcG9wbGV4LCBtYXliZWVsc2UpOwogICAgIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIHJl
dHVybiBjb250KGZ1bmN0aW9uZGVmKTsKLSAgICBpZiAodHlwZSA9PSAiZm9yIikgcmV0dXJuIGNv
bnQocHVzaGxleCgiZm9ybSIpLCBleHBlY3QoIigiKSwgcHVzaGxleCgiKSIpLCBmb3JzcGVjMSwg
ZXhwZWN0KCIpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcGxleCwg
c3RhdGVtZW50LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJmb3IiKSByZXR1cm4gY29udChw
dXNobGV4KCJmb3JtIiksIGZvcnNwZWMsIHBvcGxleCwgc3RhdGVtZW50LCBwb3BsZXgpOwogICAg
IGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJldHVybiBjb250KHB1c2hsZXgoInN0YXQiKSwgbWF5
YmVsYWJlbCk7CiAgICAgaWYgKHR5cGUgPT0gInN3aXRjaCIpIHJldHVybiBjb250KHB1c2hsZXgo
ImZvcm0iKSwgZXhwcmVzc2lvbiwgcHVzaGxleCgifSIsICJzd2l0Y2giKSwgZXhwZWN0KCJ7Iiks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLCBwb3BsZXgsIHBv
cGxleCk7CkBAIC0yNzAsNiArMzEyLDEwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNj
cmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgaWYgKHR5cGUgPT0g
ImRlZmF1bHQiKSByZXR1cm4gY29udChleHBlY3QoIjoiKSk7CiAgICAgaWYgKHR5cGUgPT0gImNh
dGNoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiZm9ybSIpLCBwdXNoY29udGV4dCwgZXhwZWN0KCIo
IiksIGZ1bmFyZywgZXhwZWN0KCIpIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGVtZW50LCBwb3BsZXgsIHBvcGNvbnRleHQpOworICAgIGlmICh0eXBlID09ICJt
b2R1bGUiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHB1c2hjb250ZXh0LCBhZnRlck1v
ZHVsZSwgcG9wY29udGV4dCwgcG9wbGV4KTsKKyAgICBpZiAodHlwZSA9PSAiY2xhc3MiKSByZXR1
cm4gY29udChwdXNobGV4KCJmb3JtIiksIGNsYXNzTmFtZSwgb2JqbGl0LCBwb3BsZXgpOworICAg
IGlmICh0eXBlID09ICJleHBvcnQiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIGFmdGVy
RXhwb3J0LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJpbXBvcnQiKSByZXR1cm4gY29udChw
dXNobGV4KCJmb3JtIiksIGFmdGVySW1wb3J0LCBwb3BsZXgpOwogICAgIHJldHVybiBwYXNzKHB1
c2hsZXgoInN0YXQiKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCI7IiksIHBvcGxleCk7CiAgIH0KICAg
ZnVuY3Rpb24gZXhwcmVzc2lvbih0eXBlKSB7CkBAIC0yNzksMTQgKzMyNSwyMCBAQCBDb2RlTWly
cm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZp
ZykgewogICAgIHJldHVybiBleHByZXNzaW9uSW5uZXIodHlwZSwgdHJ1ZSk7CiAgIH0KICAgZnVu
Y3Rpb24gZXhwcmVzc2lvbklubmVyKHR5cGUsIG5vQ29tbWEpIHsKKyAgICBpZiAoY3guc3RhdGUu
ZmF0QXJyb3dBdCA9PSBjeC5zdHJlYW0uc3RhcnQpIHsKKyAgICAgIHZhciBib2R5ID0gbm9Db21t
YSA/IGFycm93Qm9keU5vQ29tbWEgOiBhcnJvd0JvZHk7CisgICAgICBpZiAodHlwZSA9PSAiKCIp
IHJldHVybiBjb250KHB1c2hjb250ZXh0LCBjb21tYXNlcChwYXR0ZXJuLCAiKSIpLCBleHBlY3Qo
Ij0+IiksIGJvZHksIHBvcGNvbnRleHQpOworICAgICAgZWxzZSBpZiAodHlwZSA9PSAidmFyaWFi
bGUiKSByZXR1cm4gcGFzcyhwdXNoY29udGV4dCwgcGF0dGVybiwgZXhwZWN0KCI9PiIpLCBib2R5
LCBwb3Bjb250ZXh0KTsKKyAgICB9CisKICAgICB2YXIgbWF5YmVvcCA9IG5vQ29tbWEgPyBtYXli
ZW9wZXJhdG9yTm9Db21tYSA6IG1heWJlb3BlcmF0b3JDb21tYTsKICAgICBpZiAoYXRvbWljVHlw
ZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIHJldHVybiBjb250KG1heWJlb3ApOwogICAgIGlmICh0
eXBlID09ICJmdW5jdGlvbiIpIHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTsKICAgICBpZiAodHlw
ZSA9PSAia2V5d29yZCBjIikgcmV0dXJuIGNvbnQobm9Db21tYSA/IG1heWJlZXhwcmVzc2lvbk5v
Q29tbWEgOiBtYXliZWV4cHJlc3Npb24pOwotICAgIGlmICh0eXBlID09ICIoIikgcmV0dXJuIGNv
bnQocHVzaGxleCgiKSIpLCBtYXliZWV4cHJlc3Npb24sIGV4cGVjdCgiKSIpLCBwb3BsZXgsIG1h
eWJlb3ApOwotICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIpIHJldHVybiBjb250KG5vQ29tbWEg
PyBleHByZXNzaW9uTm9Db21tYSA6IGV4cHJlc3Npb24pOwotICAgIGlmICh0eXBlID09ICJbIikg
cmV0dXJuIGNvbnQocHVzaGxleCgiXSIpLCBjb21tYXNlcChleHByZXNzaW9uTm9Db21tYSwgIl0i
KSwgcG9wbGV4LCBtYXliZW9wKTsKLSAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250KHB1
c2hsZXgoIn0iKSwgY29tbWFzZXAob2JqcHJvcCwgIn0iKSwgcG9wbGV4LCBtYXliZW9wKTsKKyAg
ICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiKSwgbWF5YmVleHByZXNz
aW9uLCBjb21wcmVoZW5zaW9uLCBleHBlY3QoIikiKSwgcG9wbGV4LCBtYXliZW9wKTsKKyAgICBp
ZiAodHlwZSA9PSAib3BlcmF0b3IiIHx8IHR5cGUgPT0gInNwcmVhZCIpIHJldHVybiBjb250KG5v
Q29tbWEgPyBleHByZXNzaW9uTm9Db21tYSA6IGV4cHJlc3Npb24pOworICAgIGlmICh0eXBlID09
ICJbIikgcmV0dXJuIGNvbnQocHVzaGxleCgiXSIpLCBleHByZXNzaW9uTm9Db21tYSwgbWF5YmVB
cnJheUNvbXByZWhlbnNpb24sIHBvcGxleCwgbWF5YmVvcCk7CisgICAgaWYgKHR5cGUgPT0gInsi
KSByZXR1cm4gY29udChjb21tYXNlcChvYmpwcm9wLCAifSIpLCBtYXliZW9wKTsKICAgICByZXR1
cm4gY29udCgpOwogICB9CiAgIGZ1bmN0aW9uIG1heWJlZXhwcmVzc2lvbih0eXBlKSB7CkBAIC0z
MDUsMTYgKzM1Nyw0MCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5j
dGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICBmdW5jdGlvbiBtYXliZW9wZXJhdG9yTm9D
b21tYSh0eXBlLCB2YWx1ZSwgbm9Db21tYSkgewogICAgIHZhciBtZSA9IG5vQ29tbWEgPT0gZmFs
c2UgPyBtYXliZW9wZXJhdG9yQ29tbWEgOiBtYXliZW9wZXJhdG9yTm9Db21tYTsKICAgICB2YXIg
ZXhwciA9IG5vQ29tbWEgPT0gZmFsc2UgPyBleHByZXNzaW9uIDogZXhwcmVzc2lvbk5vQ29tbWE7
CisgICAgaWYgKHZhbHVlID09ICI9PiIpIHJldHVybiBjb250KHB1c2hjb250ZXh0LCBub0NvbW1h
ID8gYXJyb3dCb2R5Tm9Db21tYSA6IGFycm93Qm9keSwgcG9wY29udGV4dCk7CiAgICAgaWYgKHR5
cGUgPT0gIm9wZXJhdG9yIikgewogICAgICAgaWYgKC9cK1wrfC0tLy50ZXN0KHZhbHVlKSkgcmV0
dXJuIGNvbnQobWUpOwogICAgICAgaWYgKHZhbHVlID09ICI/IikgcmV0dXJuIGNvbnQoZXhwcmVz
c2lvbiwgZXhwZWN0KCI6IiksIGV4cHIpOwogICAgICAgcmV0dXJuIGNvbnQoZXhwcik7CiAgICAg
fQorICAgIGlmICh0eXBlID09ICJxdWFzaSIpIHsgY3guY2MucHVzaChtZSk7IHJldHVybiBxdWFz
aSh2YWx1ZSk7IH0KICAgICBpZiAodHlwZSA9PSAiOyIpIHJldHVybjsKLSAgICBpZiAodHlwZSA9
PSAiKCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiLCAiY2FsbCIpLCBjb21tYXNlcChleHByZXNz
aW9uTm9Db21tYSwgIikiKSwgcG9wbGV4LCBtZSk7CisgICAgaWYgKHR5cGUgPT0gIigiKSByZXR1
cm4gY29udChjb21tYXNlcChleHByZXNzaW9uTm9Db21tYSwgIikiLCAiY2FsbCIpLCBtZSk7CiAg
ICAgaWYgKHR5cGUgPT0gIi4iKSByZXR1cm4gY29udChwcm9wZXJ0eSwgbWUpOwogICAgIGlmICh0
eXBlID09ICJbIikgcmV0dXJuIGNvbnQocHVzaGxleCgiXSIpLCBtYXliZWV4cHJlc3Npb24sIGV4
cGVjdCgiXSIpLCBwb3BsZXgsIG1lKTsKICAgfQorICBmdW5jdGlvbiBxdWFzaSh2YWx1ZSkgewor
ICAgIGlmICghdmFsdWUpIGRlYnVnZ2VyOworICAgIGlmICh2YWx1ZS5zbGljZSh2YWx1ZS5sZW5n
dGggLSAyKSAhPSAiJHsiKSByZXR1cm4gY29udCgpOworICAgIHJldHVybiBjb250KGV4cHJlc3Np
b24sIGNvbnRpbnVlUXVhc2kpOworICB9CisgIGZ1bmN0aW9uIGNvbnRpbnVlUXVhc2kodHlwZSkg
eworICAgIGlmICh0eXBlID09ICJ9IikgeworICAgICAgY3gubWFya2VkID0gInN0cmluZy0yIjsK
KyAgICAgIGN4LnN0YXRlLnRva2VuaXplID0gdG9rZW5RdWFzaTsKKyAgICAgIHJldHVybiBjb250
KCk7CisgICAgfQorICB9CisgIGZ1bmN0aW9uIGFycm93Qm9keSh0eXBlKSB7CisgICAgZmluZEZh
dEFycm93KGN4LnN0cmVhbSwgY3guc3RhdGUpOworICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJu
IHBhc3Moc3RhdGVtZW50KTsKKyAgICByZXR1cm4gcGFzcyhleHByZXNzaW9uKTsKKyAgfQorICBm
dW5jdGlvbiBhcnJvd0JvZHlOb0NvbW1hKHR5cGUpIHsKKyAgICBmaW5kRmF0QXJyb3coY3guc3Ry
ZWFtLCBjeC5zdGF0ZSk7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gcGFzcyhzdGF0ZW1l
bnQpOworICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb25Ob0NvbW1hKTsKKyAgfQogICBmdW5jdGlv
biBtYXliZWxhYmVsKHR5cGUpIHsKICAgICBpZiAodHlwZSA9PSAiOiIpIHJldHVybiBjb250KHBv
cGxleCwgc3RhdGVtZW50KTsKICAgICByZXR1cm4gcGFzcyhtYXliZW9wZXJhdG9yQ29tbWEsIGV4
cGVjdCgiOyIpLCBwb3BsZXgpOwpAQCAtMzI4LDE2ICs0MDQsMjEgQEAgQ29kZU1pcnJvci5kZWZp
bmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAg
ICAgIGlmICh2YWx1ZSA9PSAiZ2V0IiB8fCB2YWx1ZSA9PSAic2V0IikgcmV0dXJuIGNvbnQoZ2V0
dGVyU2V0dGVyKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gIm51bWJlciIgfHwgdHlwZSA9PSAi
c3RyaW5nIikgewogICAgICAgY3gubWFya2VkID0gdHlwZSArICIgcHJvcGVydHkiOworICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSAiWyIpIHsKKyAgICAgIHJldHVybiBjb250KGV4cHJlc3Npb24sIGV4
cGVjdCgiXSIpLCBhZnRlcnByb3ApOwogICAgIH0KLSAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3du
UHJvcGVydHkodHlwZSkpIHJldHVybiBjb250KGV4cGVjdCgiOiIpLCBleHByZXNzaW9uTm9Db21t
YSk7CisgICAgaWYgKGF0b21pY1R5cGVzLmhhc093blByb3BlcnR5KHR5cGUpKSByZXR1cm4gY29u
dChhZnRlcnByb3ApOwogICB9CiAgIGZ1bmN0aW9uIGdldHRlclNldHRlcih0eXBlKSB7Ci0gICAg
aWYgKHR5cGUgPT0gIjoiKSByZXR1cm4gY29udChleHByZXNzaW9uKTsKLSAgICBpZiAodHlwZSAh
PSAidmFyaWFibGUiKSByZXR1cm4gY29udChleHBlY3QoIjoiKSwgZXhwcmVzc2lvbik7CisgICAg
aWYgKHR5cGUgIT0gInZhcmlhYmxlIikgcmV0dXJuIHBhc3MoYWZ0ZXJwcm9wKTsKICAgICBjeC5t
YXJrZWQgPSAicHJvcGVydHkiOwogICAgIHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTsKICAgfQot
ICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQpIHsKKyAgZnVuY3Rpb24gYWZ0ZXJwcm9wKHR5
cGUpIHsKKyAgICBpZiAodHlwZSA9PSAiOiIpIHJldHVybiBjb250KGV4cHJlc3Npb25Ob0NvbW1h
KTsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBwYXNzKGZ1bmN0aW9uZGVmKTsKKyAgfQor
ICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQsIGluZm8pIHsKICAgICBmdW5jdGlvbiBwcm9j
ZWVkKHR5cGUpIHsKICAgICAgIGlmICh0eXBlID09ICIsIikgewogICAgICAgICB2YXIgbGV4ID0g
Y3guc3RhdGUubGV4aWNhbDsKQEAgLTM0OSw3ICs0MzAsOCBAQCBDb2RlTWlycm9yLmRlZmluZU1v
ZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIH0K
ICAgICByZXR1cm4gZnVuY3Rpb24odHlwZSkgewogICAgICAgaWYgKHR5cGUgPT0gZW5kKSByZXR1
cm4gY29udCgpOwotICAgICAgZWxzZSByZXR1cm4gcGFzcyh3aGF0LCBwcm9jZWVkKTsKKyAgICAg
IGlmIChpbmZvID09PSBmYWxzZSkgcmV0dXJuIHBhc3Mod2hhdCwgcHJvY2VlZCk7CisgICAgICBy
ZXR1cm4gcGFzcyhwdXNobGV4KGVuZCwgaW5mbyksIHdoYXQsIHByb2NlZWQsIHBvcGxleCk7CiAg
ICAgfTsKICAgfQogICBmdW5jdGlvbiBibG9jayh0eXBlKSB7CkBAIC0zNTcsNjcgKzQzOSwxMjEg
QEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBw
YXJzZXJDb25maWcpIHsKICAgICByZXR1cm4gcGFzcyhzdGF0ZW1lbnQsIGJsb2NrKTsKICAgfQog
ICBmdW5jdGlvbiBtYXliZXR5cGUodHlwZSkgewotICAgIGlmICh0eXBlID09ICI6IikgcmV0dXJu
IGNvbnQodHlwZWRlZik7Ci0gICAgcmV0dXJuIHBhc3MoKTsKKyAgICBpZiAoaXNUUyAmJiB0eXBl
ID09ICI6IikgcmV0dXJuIGNvbnQodHlwZWRlZik7CiAgIH0KICAgZnVuY3Rpb24gdHlwZWRlZih0
eXBlKSB7CiAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7Y3gubWFya2VkID0gInZhcmlhYmxl
LTMiOyByZXR1cm4gY29udCgpO30KLSAgICByZXR1cm4gcGFzcygpOwogICB9Ci0gIGZ1bmN0aW9u
IHZhcmRlZjEodHlwZSwgdmFsdWUpIHsKLSAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7Cisg
IGZ1bmN0aW9uIHZhcmRlZigpIHsKKyAgICByZXR1cm4gcGFzcyhwYXR0ZXJuLCBtYXliZXR5cGUs
IG1heWJlQXNzaWduLCB2YXJkZWZDb250KTsKKyAgfQorICBmdW5jdGlvbiBwYXR0ZXJuKHR5cGUs
IHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgeyByZWdpc3Rlcih2YWx1ZSk7
IHJldHVybiBjb250KCk7IH0KKyAgICBpZiAodHlwZSA9PSAiWyIpIHJldHVybiBjb250KGNvbW1h
c2VwKHBhdHRlcm4sICJdIikpOworICAgIGlmICh0eXBlID09ICJ7IikgcmV0dXJuIGNvbnQoY29t
bWFzZXAocHJvcHBhdHRlcm4sICJ9IikpOworICB9CisgIGZ1bmN0aW9uIHByb3BwYXR0ZXJuKHR5
cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIiAmJiAhY3guc3RyZWFtLm1h
dGNoKC9eXHMqOi8sIGZhbHNlKSkgewogICAgICAgcmVnaXN0ZXIodmFsdWUpOwotICAgICAgcmV0
dXJuIGlzVFMgPyBjb250KG1heWJldHlwZSwgdmFyZGVmMikgOiBjb250KHZhcmRlZjIpOworICAg
ICAgcmV0dXJuIGNvbnQobWF5YmVBc3NpZ24pOwogICAgIH0KLSAgICByZXR1cm4gcGFzcygpOwor
ICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIGN4Lm1hcmtlZCA9ICJwcm9wZXJ0eSI7CisgICAg
cmV0dXJuIGNvbnQoZXhwZWN0KCI6IiksIHBhdHRlcm4sIG1heWJlQXNzaWduKTsKKyAgfQorICBm
dW5jdGlvbiBtYXliZUFzc2lnbihfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gIj0i
KSByZXR1cm4gY29udChleHByZXNzaW9uTm9Db21tYSk7CiAgIH0KLSAgZnVuY3Rpb24gdmFyZGVm
Mih0eXBlLCB2YWx1ZSkgewotICAgIGlmICh2YWx1ZSA9PSAiPSIpIHJldHVybiBjb250KGV4cHJl
c3Npb25Ob0NvbW1hLCB2YXJkZWYyKTsKLSAgICBpZiAodHlwZSA9PSAiLCIpIHJldHVybiBjb250
KHZhcmRlZjEpOworICBmdW5jdGlvbiB2YXJkZWZDb250KHR5cGUpIHsKKyAgICBpZiAodHlwZSA9
PSAiLCIpIHJldHVybiBjb250KHZhcmRlZik7CiAgIH0KICAgZnVuY3Rpb24gbWF5YmVlbHNlKHR5
cGUsIHZhbHVlKSB7CiAgICAgaWYgKHR5cGUgPT0gImtleXdvcmQgYiIgJiYgdmFsdWUgPT0gImVs
c2UiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHN0YXRlbWVudCwgcG9wbGV4KTsKICAg
fQorICBmdW5jdGlvbiBmb3JzcGVjKHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVy
biBjb250KHB1c2hsZXgoIikiKSwgZm9yc3BlYzEsIGV4cGVjdCgiKSIpKTsKKyAgfQogICBmdW5j
dGlvbiBmb3JzcGVjMSh0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVybiBjb250
KHZhcmRlZjEsIGV4cGVjdCgiOyIpLCBmb3JzcGVjMik7CisgICAgaWYgKHR5cGUgPT0gInZhciIp
IHJldHVybiBjb250KHZhcmRlZiwgZXhwZWN0KCI7IiksIGZvcnNwZWMyKTsKICAgICBpZiAodHlw
ZSA9PSAiOyIpIHJldHVybiBjb250KGZvcnNwZWMyKTsKLSAgICBpZiAodHlwZSA9PSAidmFyaWFi
bGUiKSByZXR1cm4gY29udChmb3JtYXliZWluKTsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUi
KSByZXR1cm4gY29udChmb3JtYXliZWlub2YpOwogICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb24s
IGV4cGVjdCgiOyIpLCBmb3JzcGVjMik7CiAgIH0KLSAgZnVuY3Rpb24gZm9ybWF5YmVpbihfdHlw
ZSwgdmFsdWUpIHsKLSAgICBpZiAodmFsdWUgPT0gImluIikgcmV0dXJuIGNvbnQoZXhwcmVzc2lv
bik7CisgIGZ1bmN0aW9uIGZvcm1heWJlaW5vZihfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFs
dWUgPT0gImluIiB8fCB2YWx1ZSA9PSAib2YiKSB7IGN4Lm1hcmtlZCA9ICJrZXl3b3JkIjsgcmV0
dXJuIGNvbnQoZXhwcmVzc2lvbik7IH0KICAgICByZXR1cm4gY29udChtYXliZW9wZXJhdG9yQ29t
bWEsIGZvcnNwZWMyKTsKICAgfQogICBmdW5jdGlvbiBmb3JzcGVjMih0eXBlLCB2YWx1ZSkgewog
ICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuIGNvbnQoZm9yc3BlYzMpOwotICAgIGlmICh2YWx1
ZSA9PSAiaW4iKSByZXR1cm4gY29udChleHByZXNzaW9uKTsKKyAgICBpZiAodmFsdWUgPT0gImlu
IiB8fCB2YWx1ZSA9PSAib2YiKSB7IGN4Lm1hcmtlZCA9ICJrZXl3b3JkIjsgcmV0dXJuIGNvbnQo
ZXhwcmVzc2lvbik7IH0KICAgICByZXR1cm4gcGFzcyhleHByZXNzaW9uLCBleHBlY3QoIjsiKSwg
Zm9yc3BlYzMpOwogICB9CiAgIGZ1bmN0aW9uIGZvcnNwZWMzKHR5cGUpIHsKICAgICBpZiAodHlw
ZSAhPSAiKSIpIGNvbnQoZXhwcmVzc2lvbik7CiAgIH0KICAgZnVuY3Rpb24gZnVuY3Rpb25kZWYo
dHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gIioiKSB7Y3gubWFya2VkID0gImtleXdv
cmQiOyByZXR1cm4gY29udChmdW5jdGlvbmRlZik7fQogICAgIGlmICh0eXBlID09ICJ2YXJpYWJs
ZSIpIHtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTt9Ci0gICAgaWYg
KHR5cGUgPT0gIigiKSByZXR1cm4gY29udChwdXNobGV4KCIpIiksIHB1c2hjb250ZXh0LCBjb21t
YXNlcChmdW5hcmcsICIpIiksIHBvcGxleCwgc3RhdGVtZW50LCBwb3Bjb250ZXh0KTsKKyAgICBp
ZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hjb250ZXh0LCBjb21tYXNlcChmdW5hcmcs
ICIpIiksIHN0YXRlbWVudCwgcG9wY29udGV4dCk7CisgIH0KKyAgZnVuY3Rpb24gZnVuYXJnKHR5
cGUpIHsKKyAgICBpZiAodHlwZSA9PSAic3ByZWFkIikgcmV0dXJuIGNvbnQoZnVuYXJnKTsKKyAg
ICByZXR1cm4gcGFzcyhwYXR0ZXJuLCBtYXliZXR5cGUpOworICB9CisgIGZ1bmN0aW9uIGNsYXNz
TmFtZSh0eXBlLCB2YWx1ZSkgeworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHtyZWdpc3Rl
cih2YWx1ZSk7IHJldHVybiBjb250KGNsYXNzTmFtZUFmdGVyKTt9CisgIH0KKyAgZnVuY3Rpb24g
Y2xhc3NOYW1lQWZ0ZXIoX3R5cGUsIHZhbHVlKSB7CisgICAgaWYgKHZhbHVlID09ICJleHRlbmRz
IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7CisgIH0KKyAgZnVuY3Rpb24gb2JqbGl0KHR5cGUp
IHsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250KGNvbW1hc2VwKG9ianByb3AsICJ9
IikpOworICB9CisgIGZ1bmN0aW9uIGFmdGVyTW9kdWxlKHR5cGUsIHZhbHVlKSB7CisgICAgaWYg
KHR5cGUgPT0gInN0cmluZyIpIHJldHVybiBjb250KHN0YXRlbWVudCk7CisgICAgaWYgKHR5cGUg
PT0gInZhcmlhYmxlIikgeyByZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBjb250KG1heWJlRnJvbSk7
IH0KKyAgfQorICBmdW5jdGlvbiBhZnRlckV4cG9ydChfdHlwZSwgdmFsdWUpIHsKKyAgICBpZiAo
dmFsdWUgPT0gIioiKSB7IGN4Lm1hcmtlZCA9ICJrZXl3b3JkIjsgcmV0dXJuIGNvbnQobWF5YmVG
cm9tLCBleHBlY3QoIjsiKSk7IH0KKyAgICBpZiAodmFsdWUgPT0gImRlZmF1bHQiKSB7IGN4Lm1h
cmtlZCA9ICJrZXl3b3JkIjsgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0KCI7IikpOyB9
CisgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50KTsKKyAgfQorICBmdW5jdGlvbiBhZnRlckltcG9y
dCh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gInN0cmluZyIpIHJldHVybiBjb250KCk7CisgICAg
cmV0dXJuIHBhc3MoaW1wb3J0U3BlYywgbWF5YmVGcm9tKTsKKyAgfQorICBmdW5jdGlvbiBpbXBv
cnRTcGVjKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gY29udChj
b21tYXNlcChpbXBvcnRTcGVjLCAifSIpKTsKKyAgICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSBy
ZWdpc3Rlcih2YWx1ZSk7CisgICAgcmV0dXJuIGNvbnQoKTsKKyAgfQorICBmdW5jdGlvbiBtYXli
ZUZyb20oX3R5cGUsIHZhbHVlKSB7CisgICAgaWYgKHZhbHVlID09ICJmcm9tIikgeyBjeC5tYXJr
ZWQgPSAia2V5d29yZCI7IHJldHVybiBjb250KGV4cHJlc3Npb24pOyB9CisgIH0KKyAgZnVuY3Rp
b24gbWF5YmVBcnJheUNvbXByZWhlbnNpb24odHlwZSkgeworICAgIGlmICh0eXBlID09ICJmb3Ii
KSByZXR1cm4gcGFzcyhjb21wcmVoZW5zaW9uKTsKKyAgICBpZiAodHlwZSA9PSAiLCIpIHJldHVy
biBjb250KGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCAiXSIsIGZhbHNlKSk7CisgICAgcmV0
dXJuIHBhc3MoY29tbWFzZXAoZXhwcmVzc2lvbk5vQ29tbWEsICJdIiwgZmFsc2UpKTsKICAgfQot
ICBmdW5jdGlvbiBmdW5hcmcodHlwZSwgdmFsdWUpIHsKLSAgICBpZiAodHlwZSA9PSAidmFyaWFi
bGUiKSB7cmVnaXN0ZXIodmFsdWUpOyByZXR1cm4gaXNUUyA/IGNvbnQobWF5YmV0eXBlKSA6IGNv
bnQoKTt9CisgIGZ1bmN0aW9uIGNvbXByZWhlbnNpb24odHlwZSkgeworICAgIGlmICh0eXBlID09
ICJmb3IiKSByZXR1cm4gY29udChmb3JzcGVjLCBjb21wcmVoZW5zaW9uKTsKKyAgICBpZiAodHlw
ZSA9PSAiaWYiKSByZXR1cm4gY29udChleHByZXNzaW9uLCBjb21wcmVoZW5zaW9uKTsKICAgfQog
CiAgIC8vIEludGVyZmFjZQogCiAgIHJldHVybiB7CiAgICAgc3RhcnRTdGF0ZTogZnVuY3Rpb24o
YmFzZWNvbHVtbikgewotICAgICAgcmV0dXJuIHsKLSAgICAgICAgdG9rZW5pemU6IGpzVG9rZW5C
YXNlLAotICAgICAgICBsYXN0VHlwZTogbnVsbCwKKyAgICAgIHZhciBzdGF0ZSA9IHsKKyAgICAg
ICAgdG9rZW5pemU6IHRva2VuQmFzZSwKKyAgICAgICAgbGFzdFR5cGU6ICJzb2YiLAogICAgICAg
ICBjYzogW10sCiAgICAgICAgIGxleGljYWw6IG5ldyBKU0xleGljYWwoKGJhc2Vjb2x1bW4gfHwg
MCkgLSBpbmRlbnRVbml0LCAwLCAiYmxvY2siLCBmYWxzZSksCiAgICAgICAgIGxvY2FsVmFyczog
cGFyc2VyQ29uZmlnLmxvY2FsVmFycywKLSAgICAgICAgZ2xvYmFsVmFyczogcGFyc2VyQ29uZmln
Lmdsb2JhbFZhcnMsCiAgICAgICAgIGNvbnRleHQ6IHBhcnNlckNvbmZpZy5sb2NhbFZhcnMgJiYg
e3ZhcnM6IHBhcnNlckNvbmZpZy5sb2NhbFZhcnN9LAogICAgICAgICBpbmRlbnRlZDogMAogICAg
ICAgfTsKKyAgICAgIGlmIChwYXJzZXJDb25maWcuZ2xvYmFsVmFycykgc3RhdGUuZ2xvYmFsVmFy
cyA9IHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzOworICAgICAgcmV0dXJuIHN0YXRlOwogICAgIH0s
CiAKICAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgewpAQCAtNDI1LDggKzU2MSw5
IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywg
cGFyc2VyQ29uZmlnKSB7CiAgICAgICAgIGlmICghc3RhdGUubGV4aWNhbC5oYXNPd25Qcm9wZXJ0
eSgiYWxpZ24iKSkKICAgICAgICAgICBzdGF0ZS5sZXhpY2FsLmFsaWduID0gZmFsc2U7CiAgICAg
ICAgIHN0YXRlLmluZGVudGVkID0gc3RyZWFtLmluZGVudGF0aW9uKCk7CisgICAgICAgIGZpbmRG
YXRBcnJvdyhzdHJlYW0sIHN0YXRlKTsKICAgICAgIH0KLSAgICAgIGlmIChzdGF0ZS50b2tlbml6
ZSAhPSBqc1Rva2VuQ29tbWVudCAmJiBzdHJlYW0uZWF0U3BhY2UoKSkgcmV0dXJuIG51bGw7Cisg
ICAgICBpZiAoc3RhdGUudG9rZW5pemUgIT0gdG9rZW5Db21tZW50ICYmIHN0cmVhbS5lYXRTcGFj
ZSgpKSByZXR1cm4gbnVsbDsKICAgICAgIHZhciBzdHlsZSA9IHN0YXRlLnRva2VuaXplKHN0cmVh
bSwgc3RhdGUpOwogICAgICAgaWYgKHR5cGUgPT0gImNvbW1lbnQiKSByZXR1cm4gc3R5bGU7CiAg
ICAgICBzdGF0ZS5sYXN0VHlwZSA9IHR5cGUgPT0gIm9wZXJhdG9yIiAmJiAoY29udGVudCA9PSAi
KysiIHx8IGNvbnRlbnQgPT0gIi0tIikgPyAiaW5jZGVjIiA6IHR5cGU7CkBAIC00MzQsMjEgKzU3
MSwyMSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25m
aWcsIHBhcnNlckNvbmZpZykgewogICAgIH0sCiAKICAgICBpbmRlbnQ6IGZ1bmN0aW9uKHN0YXRl
LCB0ZXh0QWZ0ZXIpIHsKLSAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSA9PSBqc1Rva2VuQ29tbWVu
dCkgcmV0dXJuIENvZGVNaXJyb3IuUGFzczsKLSAgICAgIGlmIChzdGF0ZS50b2tlbml6ZSAhPSBq
c1Rva2VuQmFzZSkgcmV0dXJuIDA7CisgICAgICBpZiAoc3RhdGUudG9rZW5pemUgPT0gdG9rZW5D
b21tZW50KSByZXR1cm4gQ29kZU1pcnJvci5QYXNzOworICAgICAgaWYgKHN0YXRlLnRva2VuaXpl
ICE9IHRva2VuQmFzZSkgcmV0dXJuIDA7CiAgICAgICB2YXIgZmlyc3RDaGFyID0gdGV4dEFmdGVy
ICYmIHRleHRBZnRlci5jaGFyQXQoMCksIGxleGljYWwgPSBzdGF0ZS5sZXhpY2FsOwogICAgICAg
Ly8gS2x1ZGdlIHRvIHByZXZlbnQgJ21heWJlbHNlJyBmcm9tIGJsb2NraW5nIGxleGljYWwgc2Nv
cGUgcG9wcwogICAgICAgZm9yICh2YXIgaSA9IHN0YXRlLmNjLmxlbmd0aCAtIDE7IGkgPj0gMDsg
LS1pKSB7CiAgICAgICAgIHZhciBjID0gc3RhdGUuY2NbaV07CiAgICAgICAgIGlmIChjID09IHBv
cGxleCkgbGV4aWNhbCA9IGxleGljYWwucHJldjsKLSAgICAgICAgZWxzZSBpZiAoYyAhPSBtYXli
ZWVsc2UgfHwgL15lbHNlXGIvLnRlc3QodGV4dEFmdGVyKSkgYnJlYWs7CisgICAgICAgIGVsc2Ug
aWYgKGMgIT0gbWF5YmVlbHNlKSBicmVhazsKICAgICAgIH0KICAgICAgIGlmIChsZXhpY2FsLnR5
cGUgPT0gInN0YXQiICYmIGZpcnN0Q2hhciA9PSAifSIpIGxleGljYWwgPSBsZXhpY2FsLnByZXY7
CiAgICAgICBpZiAoc3RhdGVtZW50SW5kZW50ICYmIGxleGljYWwudHlwZSA9PSAiKSIgJiYgbGV4
aWNhbC5wcmV2LnR5cGUgPT0gInN0YXQiKQogICAgICAgICBsZXhpY2FsID0gbGV4aWNhbC5wcmV2
OwogICAgICAgdmFyIHR5cGUgPSBsZXhpY2FsLnR5cGUsIGNsb3NpbmcgPSBmaXJzdENoYXIgPT0g
dHlwZTsKIAotICAgICAgaWYgKHR5cGUgPT0gInZhcmRlZiIpIHJldHVybiBsZXhpY2FsLmluZGVu
dGVkICsgKHN0YXRlLmxhc3RUeXBlID09ICJvcGVyYXRvciIgfHwgc3RhdGUubGFzdFR5cGUgPT0g
IiwiID8gNCA6IDApOworICAgICAgaWYgKHR5cGUgPT0gInZhcmRlZiIpIHJldHVybiBsZXhpY2Fs
LmluZGVudGVkICsgKHN0YXRlLmxhc3RUeXBlID09ICJvcGVyYXRvciIgfHwgc3RhdGUubGFzdFR5
cGUgPT0gIiwiID8gbGV4aWNhbC5pbmZvICsgMSA6IDApOwogICAgICAgZWxzZSBpZiAodHlwZSA9
PSAiZm9ybSIgJiYgZmlyc3RDaGFyID09ICJ7IikgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQ7CiAg
ICAgICBlbHNlIGlmICh0eXBlID09ICJmb3JtIikgcmV0dXJuIGxleGljYWwuaW5kZW50ZWQgKyBp
bmRlbnRVbml0OwogICAgICAgZWxzZSBpZiAodHlwZSA9PSAic3RhdCIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2Nv
ZGVtaXJyb3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJu
YWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzcwppbmRleCA0ZTMwMGIyYmUyZTkwY2MzMDY2OGVi
ZWMwM2MwY2ZhYmM1YTA1NzZmLi4yM2VhZjc0ZDQ0OWJjZDVjZGI0ZTk1MmU1YjI4NDY0MjhlOGVi
YjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRl
cm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5jc3MKQEAgLTc0
LDcgKzc0LDYgQEAKIC5jbS1zLWRlZmF1bHQgLmNtLXN0cmluZyB7Y29sb3I6ICNhMTE7fQogLmNt
LXMtZGVmYXVsdCAuY20tc3RyaW5nLTIge2NvbG9yOiAjZjUwO30KIC5jbS1zLWRlZmF1bHQgLmNt
LW1ldGEge2NvbG9yOiAjNTU1O30KLS5jbS1zLWRlZmF1bHQgLmNtLWVycm9yIHtjb2xvcjogI2Yw
MDt9CiAuY20tcy1kZWZhdWx0IC5jbS1xdWFsaWZpZXIge2NvbG9yOiAjNTU1O30KIC5jbS1zLWRl
ZmF1bHQgLmNtLWJ1aWx0aW4ge2NvbG9yOiAjMzBhO30KIC5jbS1zLWRlZmF1bHQgLmNtLWJyYWNr
ZXQge2NvbG9yOiAjOTk3O30KQEAgLTkxLDYgKzkwLDcgQEAKIC5jbS1lbSB7Zm9udC1zdHlsZTog
aXRhbGljO30KIC5jbS1saW5rIHt0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTt9CiAKKy5jbS1z
LWRlZmF1bHQgLmNtLWVycm9yIHtjb2xvcjogI2YwMDt9CiAuY20taW52YWxpZGNoYXIge2NvbG9y
OiAjZjAwO30KIAogZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW1hdGNoaW5nYnJhY2tl
dCB7Y29sb3I6ICMwZjA7fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmpz
CmluZGV4IDgxNzcxZTk5YjEyYWFhZGRlZmY2ZTQyNWUyOTRlZDM1OWU5YWI3N2EuLjQ2MzczYmZi
NzcxMWI1MDA3MWZkY2NjMDY5OGE4OTA0NDE4MDg5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2Rl
TWlycm9yL2NvZGVtaXJyb3IuanMKQEAgLTcsOSArNywxMyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgLy8gQ3J1ZGUsIGJ1dCBuZWNlc3NhcnkgdG8gaGFuZGxlIGEgbnVt
YmVyIG9mIGhhcmQtdG8tZmVhdHVyZS1kZXRlY3QKICAgLy8gYnVncyBhbmQgYmVoYXZpb3IgZGlm
ZmVyZW5jZXMuCiAgIHZhciBnZWNrbyA9IC9nZWNrb1wvXGQvaS50ZXN0KG5hdmlnYXRvci51c2Vy
QWdlbnQpOworICAvLyBJRTExIGN1cnJlbnRseSBkb2Vzbid0IGNvdW50IGFzICdpZScsIHNpbmNl
IGl0IGhhcyBhbG1vc3Qgbm9uZSBvZgorICAvLyB0aGUgc2FtZSBidWdzIGFzIGVhcmxpZXIgdmVy
c2lvbnMuIFVzZSBpZV9ndDEwIHRvIGhhbmRsZQorICAvLyBpbmNvbXBhdGliaWxpdGllcyBpbiB0
aGF0IHZlcnNpb24uCiAgIHZhciBpZSA9IC9NU0lFIFxkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdl
bnQpOwogICB2YXIgaWVfbHQ4ID0gaWUgJiYgKGRvY3VtZW50LmRvY3VtZW50TW9kZSA9PSBudWxs
IHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDgpOwogICB2YXIgaWVfbHQ5ID0gaWUgJiYgKGRv
Y3VtZW50LmRvY3VtZW50TW9kZSA9PSBudWxsIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDkp
OworICB2YXIgaWVfZ3QxMCA9IC9UcmlkZW50XC8oWzctOV18XGR7Mix9KVwuLy50ZXN0KG5hdmln
YXRvci51c2VyQWdlbnQpOwogICB2YXIgd2Via2l0ID0gL1dlYktpdFwvLy50ZXN0KG5hdmlnYXRv
ci51c2VyQWdlbnQpOwogICB2YXIgcXR3ZWJraXQgPSB3ZWJraXQgJiYgL1F0XC9cZCtcLlxkKy8u
dGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKICAgdmFyIGNocm9tZSA9IC9DaHJvbWVcLy8udGVz
dChuYXZpZ2F0b3IudXNlckFnZW50KTsKQEAgLTMwOSw3ICszMTMsNyBAQCB3aW5kb3cuQ29kZU1p
cnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIG9wdGlvbnMuZ3V0dGVycyA9IG9wdGlvbnMuZ3V0
dGVycy5jb25jYXQoWyJDb2RlTWlycm9yLWxpbmVudW1iZXJzIl0pOwogICAgIH0gZWxzZSBpZiAo
Zm91bmQgPiAtMSAmJiAhb3B0aW9ucy5saW5lTnVtYmVycykgewogICAgICAgb3B0aW9ucy5ndXR0
ZXJzID0gb3B0aW9ucy5ndXR0ZXJzLnNsaWNlKDApOwotICAgICAgb3B0aW9ucy5ndXR0ZXJzLnNw
bGljZShpLCAxKTsKKyAgICAgIG9wdGlvbnMuZ3V0dGVycy5zcGxpY2UoZm91bmQsIDEpOwogICAg
IH0KICAgfQogCkBAIC0zNTMsOCArMzU3LDEwIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0
aW9uKCkgewogICAgICAgZC5ndXR0ZXJGaWxsZXIuc3R5bGUud2lkdGggPSBkLmd1dHRlcnMub2Zm
c2V0V2lkdGggKyAicHgiOwogICAgIH0gZWxzZSBkLmd1dHRlckZpbGxlci5zdHlsZS5kaXNwbGF5
ID0gIiI7CiAKLSAgICBpZiAobWFjX2dlTGlvbiAmJiBzY3JvbGxiYXJXaWR0aChkLm1lYXN1cmUp
ID09PSAwKQorICAgIGlmIChtYWNfZ2VMaW9uICYmIHNjcm9sbGJhcldpZHRoKGQubWVhc3VyZSkg
PT09IDApIHsKICAgICAgIGQuc2Nyb2xsYmFyVi5zdHlsZS5taW5XaWR0aCA9IGQuc2Nyb2xsYmFy
SC5zdHlsZS5taW5IZWlnaHQgPSBtYWNfZ2VNb3VudGFpbkxpb24gPyAiMThweCIgOiAiMTJweCI7
CisgICAgICBkLnNjcm9sbGJhclYuc3R5bGUucG9pbnRlckV2ZW50cyA9IGQuc2Nyb2xsYmFySC5z
dHlsZS5wb2ludGVyRXZlbnRzID0gIm5vbmUiOworICAgIH0KICAgfQogCiAgIGZ1bmN0aW9uIHZp
c2libGVMaW5lcyhkaXNwbGF5LCBkb2MsIHZpZXdQb3J0KSB7CkBAIC00MDksMTQgKzQxNSwxNCBA
QCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgZnVuY3Rpb24gdXBkYXRlRGlz
cGxheShjbSwgY2hhbmdlcywgdmlld1BvcnQsIGZvcmNlZCkgewogICAgIHZhciBvbGRGcm9tID0g
Y20uZGlzcGxheS5zaG93aW5nRnJvbSwgb2xkVG8gPSBjbS5kaXNwbGF5LnNob3dpbmdUbywgdXBk
YXRlZDsKICAgICB2YXIgdmlzaWJsZSA9IHZpc2libGVMaW5lcyhjbS5kaXNwbGF5LCBjbS5kb2Ms
IHZpZXdQb3J0KTsKLSAgICBmb3IgKDs7KSB7CisgICAgZm9yICh2YXIgZmlyc3QgPSB0cnVlOzsg
Zmlyc3QgPSBmYWxzZSkgewogICAgICAgdmFyIG9sZFdpZHRoID0gY20uZGlzcGxheS5zY3JvbGxl
ci5jbGllbnRXaWR0aDsKICAgICAgIGlmICghdXBkYXRlRGlzcGxheUlubmVyKGNtLCBjaGFuZ2Vz
LCB2aXNpYmxlLCBmb3JjZWQpKSBicmVhazsKICAgICAgIHVwZGF0ZWQgPSB0cnVlOwogICAgICAg
Y2hhbmdlcyA9IFtdOwogICAgICAgdXBkYXRlU2VsZWN0aW9uKGNtKTsKICAgICAgIHVwZGF0ZVNj
cm9sbGJhcnMoY20pOwotICAgICAgaWYgKGNtLm9wdGlvbnMubGluZVdyYXBwaW5nICYmIG9sZFdp
ZHRoICE9IGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGgpIHsKKyAgICAgIGlmIChmaXJz
dCAmJiBjbS5vcHRpb25zLmxpbmVXcmFwcGluZyAmJiBvbGRXaWR0aCAhPSBjbS5kaXNwbGF5LnNj
cm9sbGVyLmNsaWVudFdpZHRoKSB7CiAgICAgICAgIGZvcmNlZCA9IHRydWU7CiAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgfQpAQCAtOTA0LDcgKzkxMCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0g
KGZ1bmN0aW9uKCkgewogICAgIGRvYy5pdGVyKGRvYy5mcm9udGllciwgTWF0aC5taW4oZG9jLmZp
cnN0ICsgZG9jLnNpemUsIGNtLmRpc3BsYXkuc2hvd2luZ1RvICsgNTAwKSwgZnVuY3Rpb24obGlu
ZSkgewogICAgICAgaWYgKGRvYy5mcm9udGllciA+PSBjbS5kaXNwbGF5LnNob3dpbmdGcm9tKSB7
IC8vIFZpc2libGUKICAgICAgICAgdmFyIG9sZFN0eWxlcyA9IGxpbmUuc3R5bGVzOwotICAgICAg
ICBsaW5lLnN0eWxlcyA9IGhpZ2hsaWdodExpbmUoY20sIGxpbmUsIHN0YXRlKTsKKyAgICAgICAg
bGluZS5zdHlsZXMgPSBoaWdobGlnaHRMaW5lKGNtLCBsaW5lLCBzdGF0ZSwgdHJ1ZSk7CiAgICAg
ICAgIHZhciBpc2NoYW5nZSA9ICFvbGRTdHlsZXMgfHwgb2xkU3R5bGVzLmxlbmd0aCAhPSBsaW5l
LnN0eWxlcy5sZW5ndGg7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyAhaXNjaGFuZ2UgJiYgaSA8
IG9sZFN0eWxlcy5sZW5ndGg7ICsraSkgaXNjaGFuZ2UgPSBvbGRTdHlsZXNbaV0gIT0gbGluZS5z
dHlsZXNbaV07CiAgICAgICAgIGlmIChpc2NoYW5nZSkgewpAQCAtOTEzLDcgKzkxOSw3IEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgICB9CiAgICAgICAgIGxpbmUu
c3RhdGVBZnRlciA9IGNvcHlTdGF0ZShkb2MubW9kZSwgc3RhdGUpOwogICAgICAgfSBlbHNlIHsK
LSAgICAgICAgcHJvY2Vzc0xpbmUoY20sIGxpbmUsIHN0YXRlKTsKKyAgICAgICAgcHJvY2Vzc0xp
bmUoY20sIGxpbmUudGV4dCwgc3RhdGUpOwogICAgICAgICBsaW5lLnN0YXRlQWZ0ZXIgPSBkb2Mu
ZnJvbnRpZXIgJSA1ID09IDAgPyBjb3B5U3RhdGUoZG9jLm1vZGUsIHN0YXRlKSA6IG51bGw7CiAg
ICAgICB9CiAgICAgICArK2RvYy5mcm9udGllcjsKQEAgLTkzNSw4ICs5NDEsOSBAQCB3aW5kb3cu
Q29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgLy8gc21hbGxlc3QgaW5kZW50YXRpb24sIHdo
aWNoIHRlbmRzIHRvIG5lZWQgdGhlIGxlYXN0IGNvbnRleHQgdG8KICAgLy8gcGFyc2UgY29ycmVj
dGx5LgogICBmdW5jdGlvbiBmaW5kU3RhcnRMaW5lKGNtLCBuLCBwcmVjaXNlKSB7Ci0gICAgdmFy
IG1pbmluZGVudCwgbWlubGluZSwgZG9jID0gY20uZG9jLCBtYXhTY2FuID0gY20uZG9jLm1vZGUu
aW5uZXJNb2RlID8gMTAwMCA6IDEwMDsKLSAgICBmb3IgKHZhciBzZWFyY2ggPSBuLCBsaW0gPSBu
IC0gbWF4U2Nhbjsgc2VhcmNoID4gbGltOyAtLXNlYXJjaCkgeworICAgIHZhciBtaW5pbmRlbnQs
IG1pbmxpbmUsIGRvYyA9IGNtLmRvYzsKKyAgICB2YXIgbGltID0gcHJlY2lzZSA/IC0xIDogbiAt
IChjbS5kb2MubW9kZS5pbm5lck1vZGUgPyAxMDAwIDogMTAwKTsKKyAgICBmb3IgKHZhciBzZWFy
Y2ggPSBuOyBzZWFyY2ggPiBsaW07IC0tc2VhcmNoKSB7CiAgICAgICBpZiAoc2VhcmNoIDw9IGRv
Yy5maXJzdCkgcmV0dXJuIGRvYy5maXJzdDsKICAgICAgIHZhciBsaW5lID0gZ2V0TGluZShkb2Ms
IHNlYXJjaCAtIDEpOwogICAgICAgaWYgKGxpbmUuc3RhdGVBZnRlciAmJiAoIXByZWNpc2UgfHwg
c2VhcmNoIDw9IGRvYy5mcm9udGllcikpIHJldHVybiBzZWFyY2g7CkBAIC05NTYsMTEgKzk2Mywx
MiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICBpZiAoIXN0YXRlKSBz
dGF0ZSA9IHN0YXJ0U3RhdGUoZG9jLm1vZGUpOwogICAgIGVsc2Ugc3RhdGUgPSBjb3B5U3RhdGUo
ZG9jLm1vZGUsIHN0YXRlKTsKICAgICBkb2MuaXRlcihwb3MsIG4sIGZ1bmN0aW9uKGxpbmUpIHsK
LSAgICAgIHByb2Nlc3NMaW5lKGNtLCBsaW5lLCBzdGF0ZSk7CisgICAgICBwcm9jZXNzTGluZShj
bSwgbGluZS50ZXh0LCBzdGF0ZSk7CiAgICAgICB2YXIgc2F2ZSA9IHBvcyA9PSBuIC0gMSB8fCBw
b3MgJSA1ID09IDAgfHwgcG9zID49IGRpc3BsYXkuc2hvd2luZ0Zyb20gJiYgcG9zIDwgZGlzcGxh
eS5zaG93aW5nVG87CiAgICAgICBsaW5lLnN0YXRlQWZ0ZXIgPSBzYXZlID8gY29weVN0YXRlKGRv
Yy5tb2RlLCBzdGF0ZSkgOiBudWxsOwogICAgICAgKytwb3M7CiAgICAgfSk7CisgICAgaWYgKHBy
ZWNpc2UpIGRvYy5mcm9udGllciA9IHBvczsKICAgICByZXR1cm4gc3RhdGU7CiAgIH0KIApAQCAt
MTAwMSw3ICsxMDA5LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAg
ICB2YXIgbWVtbyA9IGNhY2hlW2ldOwogICAgICAgaWYgKG1lbW8udGV4dCA9PSBsaW5lLnRleHQg
JiYgbWVtby5tYXJrZWRTcGFucyA9PSBsaW5lLm1hcmtlZFNwYW5zICYmCiAgICAgICAgICAgY20u
ZGlzcGxheS5zY3JvbGxlci5jbGllbnRXaWR0aCA9PSBtZW1vLndpZHRoICYmCi0gICAgICAgICAg
bWVtby5jbGFzc2VzID09IGxpbmUudGV4dENsYXNzICsgInwiICsgbGluZS5iZ0NsYXNzICsgInwi
ICsgbGluZS53cmFwQ2xhc3MpCisgICAgICAgICAgbWVtby5jbGFzc2VzID09IGxpbmUudGV4dENs
YXNzICsgInwiICsgbGluZS53cmFwQ2xhc3MpCiAgICAgICAgIHJldHVybiBtZW1vOwogICAgIH0K
ICAgfQpAQCAtMTAyMSw3ICsxMDI5LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24o
KSB7CiAgICAgdmFyIGNhY2hlID0gY20uZGlzcGxheS5tZWFzdXJlTGluZUNhY2hlOwogICAgIHZh
ciBtZW1vID0ge3RleHQ6IGxpbmUudGV4dCwgd2lkdGg6IGNtLmRpc3BsYXkuc2Nyb2xsZXIuY2xp
ZW50V2lkdGgsCiAgICAgICAgICAgICAgICAgbWFya2VkU3BhbnM6IGxpbmUubWFya2VkU3BhbnMs
IG1lYXN1cmU6IG1lYXN1cmUsCi0gICAgICAgICAgICAgICAgY2xhc3NlczogbGluZS50ZXh0Q2xh
c3MgKyAifCIgKyBsaW5lLmJnQ2xhc3MgKyAifCIgKyBsaW5lLndyYXBDbGFzc307CisgICAgICAg
ICAgICAgICAgY2xhc3NlczogbGluZS50ZXh0Q2xhc3MgKyAifCIgKyBsaW5lLndyYXBDbGFzc307
CiAgICAgaWYgKGNhY2hlLmxlbmd0aCA9PSAxNikgY2FjaGVbKytjbS5kaXNwbGF5Lm1lYXN1cmVM
aW5lQ2FjaGVQb3MgJSAxNl0gPSBtZW1vOwogICAgIGVsc2UgY2FjaGUucHVzaChtZW1vKTsKICAg
ICByZXR1cm4gbWVhc3VyZTsKQEAgLTEzNzksMTEgKzEzODcsMTQgQEAgd2luZG93LkNvZGVNaXJy
b3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgfQogICAgIGlmICghdXBkYXRlZCAmJiBvcC5zZWxlY3Rp
b25DaGFuZ2VkKSB1cGRhdGVTZWxlY3Rpb24oY20pOwogICAgIGlmIChvcC51cGRhdGVTY3JvbGxQ
b3MpIHsKLSAgICAgIGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsVG9wID0gZGlzcGxheS5zY3JvbGxi
YXJWLnNjcm9sbFRvcCA9IGRvYy5zY3JvbGxUb3AgPSBuZXdTY3JvbGxQb3Muc2Nyb2xsVG9wOwot
ICAgICAgZGlzcGxheS5zY3JvbGxlci5zY3JvbGxMZWZ0ID0gZGlzcGxheS5zY3JvbGxiYXJILnNj
cm9sbExlZnQgPSBkb2Muc2Nyb2xsTGVmdCA9IG5ld1Njcm9sbFBvcy5zY3JvbGxMZWZ0OworICAg
ICAgdmFyIHRvcCA9IE1hdGgubWF4KDAsIE1hdGgubWluKGRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xs
SGVpZ2h0IC0gZGlzcGxheS5zY3JvbGxlci5jbGllbnRIZWlnaHQsIG5ld1Njcm9sbFBvcy5zY3Jv
bGxUb3ApKTsKKyAgICAgIHZhciBsZWZ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oZGlzcGxheS5z
Y3JvbGxlci5zY3JvbGxXaWR0aCAtIGRpc3BsYXkuc2Nyb2xsZXIuY2xpZW50V2lkdGgsIG5ld1Nj
cm9sbFBvcy5zY3JvbGxMZWZ0KSk7CisgICAgICBkaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcCA9
IGRpc3BsYXkuc2Nyb2xsYmFyVi5zY3JvbGxUb3AgPSBkb2Muc2Nyb2xsVG9wID0gdG9wOworICAg
ICAgZGlzcGxheS5zY3JvbGxlci5zY3JvbGxMZWZ0ID0gZGlzcGxheS5zY3JvbGxiYXJILnNjcm9s
bExlZnQgPSBkb2Muc2Nyb2xsTGVmdCA9IGxlZnQ7CiAgICAgICBhbGlnbkhvcml6b250YWxseShj
bSk7CiAgICAgICBpZiAob3Auc2Nyb2xsVG9Qb3MpCi0gICAgICAgIHNjcm9sbFBvc0ludG9WaWV3
KGNtLCBjbGlwUG9zKGNtLmRvYywgb3Auc2Nyb2xsVG9Qb3MpLCBvcC5zY3JvbGxUb1Bvc01hcmdp
bik7CisgICAgICAgIHNjcm9sbFBvc0ludG9WaWV3KGNtLCBjbGlwUG9zKGNtLmRvYywgb3Auc2Ny
b2xsVG9Qb3MuZnJvbSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBQb3MoY20uZG9j
LCBvcC5zY3JvbGxUb1Bvcy50byksIG9wLnNjcm9sbFRvUG9zLm1hcmdpbik7CiAgICAgfSBlbHNl
IGlmIChuZXdTY3JvbGxQb3MpIHsKICAgICAgIHNjcm9sbEN1cnNvckludG9WaWV3KGNtKTsKICAg
ICB9CkBAIC0xNjA1LDcgKzE2MTYsMTAgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24o
KSB7CiAgICAgICBpZiAoc2lnbmFsRE9NRXZlbnQoY20sIGUpIHx8IGNtLm9wdGlvbnMub25LZXlF
dmVudCAmJiBjbS5vcHRpb25zLm9uS2V5RXZlbnQoY20sIGFkZFN0b3AoZSkpKSByZXR1cm47CiAg
ICAgICBpZiAoZS5rZXlDb2RlID09IDE2KSBjbS5kb2Muc2VsLnNoaWZ0ID0gZmFsc2U7CiAgICAg
fSkpOwotICAgIG9uKGQuaW5wdXQsICJpbnB1dCIsIGJpbmQoZmFzdFBvbGwsIGNtKSk7CisgICAg
b24oZC5pbnB1dCwgImlucHV0IiwgZnVuY3Rpb24oKSB7CisgICAgICBpZiAoaWUgJiYgIWllX2x0
OSAmJiBjbS5kaXNwbGF5LmlucHV0SGFzU2VsZWN0aW9uKSBjbS5kaXNwbGF5LmlucHV0SGFzU2Vs
ZWN0aW9uID0gbnVsbDsKKyAgICAgIGZhc3RQb2xsKGNtKTsKKyAgICB9KTsKICAgICBvbihkLmlu
cHV0LCAia2V5ZG93biIsIG9wZXJhdGlvbihjbSwgb25LZXlEb3duKSk7CiAgICAgb24oZC5pbnB1
dCwgImtleXByZXNzIiwgb3BlcmF0aW9uKGNtLCBvbktleVByZXNzKSk7CiAgICAgb24oZC5pbnB1
dCwgImZvY3VzIiwgYmluZChvbkZvY3VzLCBjbSkpOwpAQCAtMTg5NSw3ICsxOTA5LDYgQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgaWYgKGNtLnN0YXRlLmRy
YWdnaW5nVGV4dCkgcmVwbGFjZVJhbmdlKGNtLmRvYywgIiIsIGN1ckZyb20sIGN1clRvLCAicGFz
dGUiKTsKICAgICAgICAgICBjbS5yZXBsYWNlU2VsZWN0aW9uKHRleHQsIG51bGwsICJwYXN0ZSIp
OwogICAgICAgICAgIGZvY3VzSW5wdXQoY20pOwotICAgICAgICAgIG9uRm9jdXMoY20pOwogICAg
ICAgICB9CiAgICAgICB9CiAgICAgICBjYXRjaChlKXt9CkBAIC0yMTc2LDcgKzIxODksMTEgQEAg
d2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAKICAgICB2YXIgcG9zID0gcG9zRnJv
bU1vdXNlKGNtLCBlKSwgc2Nyb2xsUG9zID0gZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3A7CiAg
ICAgaWYgKCFwb3MgfHwgb3BlcmEpIHJldHVybjsgLy8gT3BlcmEgaXMgZGlmZmljdWx0LgotICAg
IGlmIChwb3NFcShzZWwuZnJvbSwgc2VsLnRvKSB8fCBwb3NMZXNzKHBvcywgc2VsLmZyb20pIHx8
ICFwb3NMZXNzKHBvcywgc2VsLnRvKSkKKworICAgIC8vIFJlc2V0IHRoZSBjdXJyZW50IHRleHQg
c2VsZWN0aW9uIG9ubHkgaWYgdGhlIGNsaWNrIGlzIGRvbmUgb3V0c2lkZSBvZiB0aGUgc2VsZWN0
aW9uCisgICAgLy8gYW5kICdyZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnUnIG9wdGlvbiBpcyB0
cnVlLgorICAgIHZhciByZXNldCA9IGNtLm9wdGlvbnMucmVzZXRTZWxlY3Rpb25PbkNvbnRleHRN
ZW51OworICAgIGlmIChyZXNldCAmJiAocG9zRXEoc2VsLmZyb20sIHNlbC50bykgfHwgcG9zTGVz
cyhwb3MsIHNlbC5mcm9tKSB8fCAhcG9zTGVzcyhwb3MsIHNlbC50bykpKQogICAgICAgb3BlcmF0
aW9uKGNtLCBzZXRTZWxlY3Rpb24pKGNtLmRvYywgcG9zLCBwb3MpOwogCiAgICAgdmFyIG9sZENT
UyA9IGRpc3BsYXkuaW5wdXQuc3R5bGUuY3NzVGV4dDsKQEAgLTIzMjYsNiArMjM0Myw3IEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICB9CiAKICAgZnVuY3Rpb24gbWFrZUNo
YW5nZU5vUmVhZG9ubHkoZG9jLCBjaGFuZ2UsIHNlbFVwZGF0ZSkgeworICAgIGlmIChjaGFuZ2Uu
dGV4dC5sZW5ndGggPT0gMSAmJiBjaGFuZ2UudGV4dFswXSA9PSAiIiAmJiBwb3NFcShjaGFuZ2Uu
ZnJvbSwgY2hhbmdlLnRvKSkgcmV0dXJuOwogICAgIHZhciBzZWxBZnRlciA9IGNvbXB1dGVTZWxB
ZnRlckNoYW5nZShkb2MsIGNoYW5nZSwgc2VsVXBkYXRlKTsKICAgICBhZGRUb0hpc3RvcnkoZG9j
LCBjaGFuZ2UsIHNlbEFmdGVyLCBkb2MuY20gPyBkb2MuY20uY3VyT3AuaWQgOiBOYU4pOwogCkBA
IC0yNjI2LDcgKzI2NDQsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAg
Ly8gU0NST0xMSU5HCiAKICAgZnVuY3Rpb24gc2Nyb2xsQ3Vyc29ySW50b1ZpZXcoY20pIHsKLSAg
ICB2YXIgY29vcmRzID0gc2Nyb2xsUG9zSW50b1ZpZXcoY20sIGNtLmRvYy5zZWwuaGVhZCwgY20u
b3B0aW9ucy5jdXJzb3JTY3JvbGxNYXJnaW4pOworICAgIHZhciBjb29yZHMgPSBzY3JvbGxQb3NJ
bnRvVmlldyhjbSwgY20uZG9jLnNlbC5oZWFkLCBudWxsLCBjbS5vcHRpb25zLmN1cnNvclNjcm9s
bE1hcmdpbik7CiAgICAgaWYgKCFjbS5zdGF0ZS5mb2N1c2VkKSByZXR1cm47CiAgICAgdmFyIGRp
c3BsYXkgPSBjbS5kaXNwbGF5LCBib3ggPSBnZXRSZWN0KGRpc3BsYXkuc2l6ZXIpLCBkb1Njcm9s
bCA9IG51bGw7CiAgICAgaWYgKGNvb3Jkcy50b3AgKyBib3gudG9wIDwgMCkgZG9TY3JvbGwgPSB0
cnVlOwpAQCAtMjY0MywxMSArMjY2MSwxNSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlv
bigpIHsKICAgICB9CiAgIH0KIAotICBmdW5jdGlvbiBzY3JvbGxQb3NJbnRvVmlldyhjbSwgcG9z
LCBtYXJnaW4pIHsKKyAgZnVuY3Rpb24gc2Nyb2xsUG9zSW50b1ZpZXcoY20sIHBvcywgZW5kLCBt
YXJnaW4pIHsKICAgICBpZiAobWFyZ2luID09IG51bGwpIG1hcmdpbiA9IDA7CiAgICAgZm9yICg7
OykgewogICAgICAgdmFyIGNoYW5nZWQgPSBmYWxzZSwgY29vcmRzID0gY3Vyc29yQ29vcmRzKGNt
LCBwb3MpOwotICAgICAgdmFyIHNjcm9sbFBvcyA9IGNhbGN1bGF0ZVNjcm9sbFBvcyhjbSwgY29v
cmRzLmxlZnQsIGNvb3Jkcy50b3AgLSBtYXJnaW4sIGNvb3Jkcy5sZWZ0LCBjb29yZHMuYm90dG9t
ICsgbWFyZ2luKTsKKyAgICAgIHZhciBlbmRDb29yZHMgPSAhZW5kIHx8IGVuZCA9PSBwb3MgPyBj
b29yZHMgOiBjdXJzb3JDb29yZHMoY20sIGVuZCk7CisgICAgICB2YXIgc2Nyb2xsUG9zID0gY2Fs
Y3VsYXRlU2Nyb2xsUG9zKGNtLCBNYXRoLm1pbihjb29yZHMubGVmdCwgZW5kQ29vcmRzLmxlZnQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbihjb29y
ZHMudG9wLCBlbmRDb29yZHMudG9wKSAtIG1hcmdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoY29vcmRzLmxlZnQsIGVuZENvb3Jkcy5sZWZ0KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoY29vcmRz
LmJvdHRvbSwgZW5kQ29vcmRzLmJvdHRvbSkgKyBtYXJnaW4pOwogICAgICAgdmFyIHN0YXJ0VG9w
ID0gY20uZG9jLnNjcm9sbFRvcCwgc3RhcnRMZWZ0ID0gY20uZG9jLnNjcm9sbExlZnQ7CiAgICAg
ICBpZiAoc2Nyb2xsUG9zLnNjcm9sbFRvcCAhPSBudWxsKSB7CiAgICAgICAgIHNldFNjcm9sbFRv
cChjbSwgc2Nyb2xsUG9zLnNjcm9sbFRvcCk7CkBAIC0yNzQ0LDYgKzI3NjYsOCBAQCB3aW5kb3cu
Q29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKIAogICAgIGlmIChpbmRlbnRTdHJpbmcgIT0gY3Vy
U3BhY2VTdHJpbmcpCiAgICAgICByZXBsYWNlUmFuZ2UoY20uZG9jLCBpbmRlbnRTdHJpbmcsIFBv
cyhuLCAwKSwgUG9zKG4sIGN1clNwYWNlU3RyaW5nLmxlbmd0aCksICIraW5wdXQiKTsKKyAgICBl
bHNlIGlmIChkb2Muc2VsLmhlYWQubGluZSA9PSBuICYmIGRvYy5zZWwuaGVhZC5jaCA8IGN1clNw
YWNlU3RyaW5nLmxlbmd0aCkKKyAgICAgIHNldFNlbGVjdGlvbihkb2MsIFBvcyhuLCBjdXJTcGFj
ZVN0cmluZy5sZW5ndGgpLCBQb3MobiwgY3VyU3BhY2VTdHJpbmcubGVuZ3RoKSwgMSk7CiAgICAg
bGluZS5zdGF0ZUFmdGVyID0gbnVsbDsKICAgfQogCkBAIC0yODQ0LDcgKzI4NjgsNyBAQCB3aW5k
b3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKIAogICBDb2RlTWlycm9yLnByb3RvdHlwZSA9
IHsKICAgICBjb25zdHJ1Y3RvcjogQ29kZU1pcnJvciwKLSAgICBmb2N1czogZnVuY3Rpb24oKXt3
aW5kb3cuZm9jdXMoKTsgZm9jdXNJbnB1dCh0aGlzKTsgb25Gb2N1cyh0aGlzKTsgZmFzdFBvbGwo
dGhpcyk7fSwKKyAgICBmb2N1czogZnVuY3Rpb24oKXt3aW5kb3cuZm9jdXMoKTsgZm9jdXNJbnB1
dCh0aGlzKTsgZmFzdFBvbGwodGhpcyk7fSwKIAogICAgIHNldE9wdGlvbjogZnVuY3Rpb24ob3B0
aW9uLCB2YWx1ZSkgewogICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsIG9sZCA9IG9w
dGlvbnNbb3B0aW9uXTsKQEAgLTMxNjUsMTcgKzMxODksMjMgQEAgd2luZG93LkNvZGVNaXJyb3Ig
PSAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgIGNsaWVudEhlaWdodDogc2Nyb2xsZXIuY2xp
ZW50SGVpZ2h0IC0gY28sIGNsaWVudFdpZHRoOiBzY3JvbGxlci5jbGllbnRXaWR0aCAtIGNvfTsK
ICAgICB9LAogCi0gICAgc2Nyb2xsSW50b1ZpZXc6IG9wZXJhdGlvbihudWxsLCBmdW5jdGlvbihw
b3MsIG1hcmdpbikgewotICAgICAgaWYgKHR5cGVvZiBwb3MgPT0gIm51bWJlciIpIHBvcyA9IFBv
cyhwb3MsIDApOworICAgIHNjcm9sbEludG9WaWV3OiBvcGVyYXRpb24obnVsbCwgZnVuY3Rpb24o
cmFuZ2UsIG1hcmdpbikgeworICAgICAgaWYgKHJhbmdlID09IG51bGwpIHJhbmdlID0ge2Zyb206
IHRoaXMuZG9jLnNlbC5oZWFkLCB0bzogbnVsbH07CisgICAgICBlbHNlIGlmICh0eXBlb2YgcmFu
Z2UgPT0gIm51bWJlciIpIHJhbmdlID0ge2Zyb206IFBvcyhyYW5nZSwgMCksIHRvOiBudWxsfTsK
KyAgICAgIGVsc2UgaWYgKHJhbmdlLmZyb20gPT0gbnVsbCkgcmFuZ2UgPSB7ZnJvbTogcmFuZ2Us
IHRvOiBudWxsfTsKKyAgICAgIGlmICghcmFuZ2UudG8pIHJhbmdlLnRvID0gcmFuZ2UuZnJvbTsK
ICAgICAgIGlmICghbWFyZ2luKSBtYXJnaW4gPSAwOwotICAgICAgdmFyIGNvb3JkcyA9IHBvczsK
IAotICAgICAgaWYgKCFwb3MgfHwgcG9zLmxpbmUgIT0gbnVsbCkgewotICAgICAgICB0aGlzLmN1
ck9wLnNjcm9sbFRvUG9zID0gcG9zID8gY2xpcFBvcyh0aGlzLmRvYywgcG9zKSA6IHRoaXMuZG9j
LnNlbC5oZWFkOwotICAgICAgICB0aGlzLmN1ck9wLnNjcm9sbFRvUG9zTWFyZ2luID0gbWFyZ2lu
OwotICAgICAgICBjb29yZHMgPSBjdXJzb3JDb29yZHModGhpcywgdGhpcy5jdXJPcC5zY3JvbGxU
b1Bvcyk7CisgICAgICB2YXIgY29vcmRzID0gcmFuZ2U7CisgICAgICBpZiAocmFuZ2UuZnJvbS5s
aW5lICE9IG51bGwpIHsKKyAgICAgICAgdGhpcy5jdXJPcC5zY3JvbGxUb1BvcyA9IHtmcm9tOiBy
YW5nZS5mcm9tLCB0bzogcmFuZ2UudG8sIG1hcmdpbjogbWFyZ2lufTsKKyAgICAgICAgY29vcmRz
ID0ge2Zyb206IGN1cnNvckNvb3Jkcyh0aGlzLCByYW5nZS5mcm9tKSwKKyAgICAgICAgICAgICAg
ICAgIHRvOiBjdXJzb3JDb29yZHModGhpcywgcmFuZ2UudG8pfTsKICAgICAgIH0KLSAgICAgIHZh
ciBzUG9zID0gY2FsY3VsYXRlU2Nyb2xsUG9zKHRoaXMsIGNvb3Jkcy5sZWZ0LCBjb29yZHMudG9w
IC0gbWFyZ2luLCBjb29yZHMucmlnaHQsIGNvb3Jkcy5ib3R0b20gKyBtYXJnaW4pOworICAgICAg
dmFyIHNQb3MgPSBjYWxjdWxhdGVTY3JvbGxQb3ModGhpcywgTWF0aC5taW4oY29vcmRzLmZyb20u
bGVmdCwgY29vcmRzLnRvLmxlZnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWF0aC5taW4oY29vcmRzLmZyb20udG9wLCBjb29yZHMudG8udG9wKSAtIG1hcmdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KGNvb3Jkcy5mcm9tLnJp
Z2h0LCBjb29yZHMudG8ucmlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWF0aC5tYXgoY29vcmRzLmZyb20uYm90dG9tLCBjb29yZHMudG8uYm90dG9tKSArIG1hcmdp
bik7CiAgICAgICB1cGRhdGVTY3JvbGxQb3ModGhpcywgc1Bvcy5zY3JvbGxMZWZ0LCBzUG9zLnNj
cm9sbFRvcCk7CiAgICAgfSksCiAKQEAgLTMyMDcsNiArMzIzNyw3IEBAIHdpbmRvdy5Db2RlTWly
cm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgY2xlYXJDYWNoZXModGhpcyk7CiAgICAgICByZXNl
dElucHV0KHRoaXMsIHRydWUpOwogICAgICAgdXBkYXRlU2Nyb2xsUG9zKHRoaXMsIGRvYy5zY3Jv
bGxMZWZ0LCBkb2Muc2Nyb2xsVG9wKTsKKyAgICAgIHNpZ25hbExhdGVyKHRoaXMsICJzd2FwRG9j
IiwgdGhpcywgb2xkKTsKICAgICAgIHJldHVybiBvbGQ7CiAgICAgfSksCiAKQEAgLTMyNTAsOCAr
MzI4MSwxNCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICBjbGVhckNh
Y2hlcyhjbSk7CiAgICAgcmVnQ2hhbmdlKGNtKTsKICAgfSwgdHJ1ZSk7CisgIG9wdGlvbigic3Bl
Y2lhbENoYXJzIiwgL1tcdFx1MDAwMC1cdTAwMTlcdTAwYWRcdTIwMGJcdTIwMjhcdTIwMjlcdWZl
ZmZdL2csIGZ1bmN0aW9uKGNtLCB2YWwpIHsKKyAgICBjbS5vcHRpb25zLnNwZWNpYWxDaGFycyA9
IG5ldyBSZWdFeHAodmFsLnNvdXJjZSArICh2YWwudGVzdCgiXHQiKSA/ICIiIDogInxcdCIpLCAi
ZyIpOworICAgIGNtLnJlZnJlc2goKTsKKyAgfSwgdHJ1ZSk7CisgIG9wdGlvbigic3BlY2lhbENo
YXJQbGFjZWhvbGRlciIsIGRlZmF1bHRTcGVjaWFsQ2hhclBsYWNlaG9sZGVyLCBmdW5jdGlvbihj
bSkge2NtLnJlZnJlc2goKTt9LCB0cnVlKTsKICAgb3B0aW9uKCJlbGVjdHJpY0NoYXJzIiwgdHJ1
ZSk7CiAgIG9wdGlvbigicnRsTW92ZVZpc3VhbGx5IiwgIXdpbmRvd3MpOworICBvcHRpb24oIndo
b2xlTGluZVVwZGF0ZUJlZm9yZSIsIHRydWUpOwogCiAgIG9wdGlvbigidGhlbWUiLCAiZGVmYXVs
dCIsIGZ1bmN0aW9uKGNtKSB7CiAgICAgdGhlbWVDaGFuZ2VkKGNtKTsKQEAgLTMyODEsOSArMzMx
OCwxNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgb3B0aW9uKCJsaW5l
TnVtYmVyRm9ybWF0dGVyIiwgZnVuY3Rpb24oaW50ZWdlcikge3JldHVybiBpbnRlZ2VyO30sIGd1
dHRlcnNDaGFuZ2VkLCB0cnVlKTsKICAgb3B0aW9uKCJzaG93Q3Vyc29yV2hlblNlbGVjdGluZyIs
IGZhbHNlLCB1cGRhdGVTZWxlY3Rpb24sIHRydWUpOwogCisgIG9wdGlvbigicmVzZXRTZWxlY3Rp
b25PbkNvbnRleHRNZW51IiwgdHJ1ZSk7CisKICAgb3B0aW9uKCJyZWFkT25seSIsIGZhbHNlLCBm
dW5jdGlvbihjbSwgdmFsKSB7Ci0gICAgaWYgKHZhbCA9PSAibm9jdXJzb3IiKSB7b25CbHVyKGNt
KTsgY20uZGlzcGxheS5pbnB1dC5ibHVyKCk7fQotICAgIGVsc2UgaWYgKCF2YWwpIHJlc2V0SW5w
dXQoY20sIHRydWUpOworICAgIGlmICh2YWwgPT0gIm5vY3Vyc29yIikgeworICAgICAgb25CbHVy
KGNtKTsKKyAgICAgIGNtLmRpc3BsYXkuaW5wdXQuYmx1cigpOworICAgICAgY20uZGlzcGxheS5k
aXNhYmxlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgIGNtLmRpc3BsYXkuZGlzYWJsZWQg
PSBmYWxzZTsKKyAgICAgIGlmICghdmFsKSByZXNldElucHV0KGNtLCB0cnVlKTsKKyAgICB9CiAg
IH0pOwogICBvcHRpb24oImRyYWdEcm9wIiwgdHJ1ZSk7CiAKQEAgLTM1MTcsNyArMzU2Miw4IEBA
IHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICBrZXlNYXAuYmFzaWMgPSB7CiAg
ICAgIkxlZnQiOiAiZ29DaGFyTGVmdCIsICJSaWdodCI6ICJnb0NoYXJSaWdodCIsICJVcCI6ICJn
b0xpbmVVcCIsICJEb3duIjogImdvTGluZURvd24iLAogICAgICJFbmQiOiAiZ29MaW5lRW5kIiwg
IkhvbWUiOiAiZ29MaW5lU3RhcnRTbWFydCIsICJQYWdlVXAiOiAiZ29QYWdlVXAiLCAiUGFnZURv
d24iOiAiZ29QYWdlRG93biIsCi0gICAgIkRlbGV0ZSI6ICJkZWxDaGFyQWZ0ZXIiLCAiQmFja3Nw
YWNlIjogImRlbENoYXJCZWZvcmUiLCAiVGFiIjogImRlZmF1bHRUYWIiLCAiU2hpZnQtVGFiIjog
ImluZGVudEF1dG8iLAorICAgICJEZWxldGUiOiAiZGVsQ2hhckFmdGVyIiwgIkJhY2tzcGFjZSI6
ICJkZWxDaGFyQmVmb3JlIiwgIlNoaWZ0LUJhY2tzcGFjZSI6ICJkZWxDaGFyQmVmb3JlIiwKKyAg
ICAiVGFiIjogImRlZmF1bHRUYWIiLCAiU2hpZnQtVGFiIjogImluZGVudEF1dG8iLAogICAgICJF
bnRlciI6ICJuZXdsaW5lQW5kSW5kZW50IiwgIkluc2VydCI6ICJ0b2dnbGVPdmVyd3JpdGUiCiAg
IH07CiAgIC8vIE5vdGUgdGhhdCB0aGUgc2F2ZSBhbmQgZmluZC1yZWxhdGVkIGNvbW1hbmRzIGFy
ZW4ndCBkZWZpbmVkIGJ5CkBAIC0zODIzLDcgKzM4NjksOSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICBpZiAoZG9jLmNtICYmICFkb2MuY20uY3VyT3ApIHJldHVybiBv
cGVyYXRpb24oZG9jLmNtLCBtYXJrVGV4dCkoZG9jLCBmcm9tLCB0bywgb3B0aW9ucywgdHlwZSk7
CiAKICAgICB2YXIgbWFya2VyID0gbmV3IFRleHRNYXJrZXIoZG9jLCB0eXBlKTsKLSAgICBpZiAo
dHlwZSA9PSAicmFuZ2UiICYmICFwb3NMZXNzKGZyb20sIHRvKSkgcmV0dXJuIG1hcmtlcjsKKyAg
ICBpZiAocG9zTGVzcyh0bywgZnJvbSkgfHwgcG9zRXEoZnJvbSwgdG8pICYmIHR5cGUgPT0gInJh
bmdlIiAmJgorICAgICAgICAhKG9wdGlvbnMuaW5jbHVzaXZlTGVmdCAmJiBvcHRpb25zLmluY2x1
c2l2ZVJpZ2h0KSkKKyAgICAgIHJldHVybiBtYXJrZXI7CiAgICAgaWYgKG9wdGlvbnMpIGNvcHlP
Ymoob3B0aW9ucywgbWFya2VyKTsKICAgICBpZiAobWFya2VyLnJlcGxhY2VkV2l0aCkgewogICAg
ICAgbWFya2VyLmNvbGxhcHNlZCA9IHRydWU7CkBAIC0zOTM5LDcgKzM5ODcsOSBAQCB3aW5kb3cu
Q29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICBpZiAob2xkKSBmb3IgKHZhciBpID0gMCwg
bnc7IGkgPCBvbGQubGVuZ3RoOyArK2kpIHsKICAgICAgIHZhciBzcGFuID0gb2xkW2ldLCBtYXJr
ZXIgPSBzcGFuLm1hcmtlcjsKICAgICAgIHZhciBzdGFydHNCZWZvcmUgPSBzcGFuLmZyb20gPT0g
bnVsbCB8fCAobWFya2VyLmluY2x1c2l2ZUxlZnQgPyBzcGFuLmZyb20gPD0gc3RhcnRDaCA6IHNw
YW4uZnJvbSA8IHN0YXJ0Q2gpOwotICAgICAgaWYgKHN0YXJ0c0JlZm9yZSB8fCBtYXJrZXIudHlw
ZSA9PSAiYm9va21hcmsiICYmIHNwYW4uZnJvbSA9PSBzdGFydENoICYmICghaXNJbnNlcnQgfHwg
IXNwYW4ubWFya2VyLmluc2VydExlZnQpKSB7CisgICAgICBpZiAoc3RhcnRzQmVmb3JlIHx8Cisg
ICAgICAgICAgKG1hcmtlci5pbmNsdXNpdmVMZWZ0ICYmIG1hcmtlci5pbmNsdXNpdmVSaWdodCB8
fCBtYXJrZXIudHlwZSA9PSAiYm9va21hcmsiKSAmJgorICAgICAgICAgIHNwYW4uZnJvbSA9PSBz
dGFydENoICYmICghaXNJbnNlcnQgfHwgIXNwYW4ubWFya2VyLmluc2VydExlZnQpKSB7CiAgICAg
ICAgIHZhciBlbmRzQWZ0ZXIgPSBzcGFuLnRvID09IG51bGwgfHwgKG1hcmtlci5pbmNsdXNpdmVS
aWdodCA/IHNwYW4udG8gPj0gc3RhcnRDaCA6IHNwYW4udG8gPiBzdGFydENoKTsKICAgICAgICAg
KG53IHx8IChudyA9IFtdKSkucHVzaCh7ZnJvbTogc3Bhbi5mcm9tLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0bzogZW5kc0FmdGVyID8gbnVsbCA6IHNwYW4udG8sCkBAIC00MjEy
LDYgKzQyNjIsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB0aGlz
LmhlaWdodCA9IGVzdGltYXRlSGVpZ2h0ID8gZXN0aW1hdGVIZWlnaHQodGhpcykgOiAxOwogICB9
OwogICBldmVudE1peGluKExpbmUpOworICBMaW5lLnByb3RvdHlwZS5saW5lTm8gPSBmdW5jdGlv
bigpIHsgcmV0dXJuIGxpbmVObyh0aGlzKTsgfTsKIAogICBmdW5jdGlvbiB1cGRhdGVMaW5lKGxp
bmUsIHRleHQsIG1hcmtlZFNwYW5zLCBlc3RpbWF0ZUhlaWdodCkgewogICAgIGxpbmUudGV4dCA9
IHRleHQ7CkBAIC00MjMyLDcgKzQyODMsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlv
bigpIHsKICAgLy8gUnVuIHRoZSBnaXZlbiBtb2RlJ3MgcGFyc2VyIG92ZXIgYSBsaW5lLCB1cGRh
dGUgdGhlIHN0eWxlcwogICAvLyBhcnJheSwgd2hpY2ggY29udGFpbnMgYWx0ZXJuYXRpbmcgZnJh
Z21lbnRzIG9mIHRleHQgYW5kIENTUwogICAvLyBjbGFzc2VzLgotICBmdW5jdGlvbiBydW5Nb2Rl
KGNtLCB0ZXh0LCBtb2RlLCBzdGF0ZSwgZikgeworICBmdW5jdGlvbiBydW5Nb2RlKGNtLCB0ZXh0
LCBtb2RlLCBzdGF0ZSwgZiwgZm9yY2VUb0VuZCkgewogICAgIHZhciBmbGF0dGVuU3BhbnMgPSBt
b2RlLmZsYXR0ZW5TcGFuczsKICAgICBpZiAoZmxhdHRlblNwYW5zID09IG51bGwpIGZsYXR0ZW5T
cGFucyA9IGNtLm9wdGlvbnMuZmxhdHRlblNwYW5zOwogICAgIHZhciBjdXJTdGFydCA9IDAsIGN1
clN0eWxlID0gbnVsbDsKQEAgLTQyNDEsNiArNDI5Miw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0g
KGZ1bmN0aW9uKCkgewogICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7CiAgICAgICBpZiAoc3Ry
ZWFtLnBvcyA+IGNtLm9wdGlvbnMubWF4SGlnaGxpZ2h0TGVuZ3RoKSB7CiAgICAgICAgIGZsYXR0
ZW5TcGFucyA9IGZhbHNlOworICAgICAgICBpZiAoZm9yY2VUb0VuZCkgcHJvY2Vzc0xpbmUoY20s
IHRleHQsIHN0YXRlLCBzdHJlYW0ucG9zKTsKICAgICAgICAgc3RyZWFtLnBvcyA9IHRleHQubGVu
Z3RoOwogICAgICAgICBzdHlsZSA9IG51bGw7CiAgICAgICB9IGVsc2UgewpAQCAtNDI2MCwxMiAr
NDMxMiwxNCBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB9CiAgIH0K
IAotICBmdW5jdGlvbiBoaWdobGlnaHRMaW5lKGNtLCBsaW5lLCBzdGF0ZSkgeworICBmdW5jdGlv
biBoaWdobGlnaHRMaW5lKGNtLCBsaW5lLCBzdGF0ZSwgZm9yY2VUb0VuZCkgewogICAgIC8vIEEg
c3R5bGVzIGFycmF5IGFsd2F5cyBzdGFydHMgd2l0aCBhIG51bWJlciBpZGVudGlmeWluZyB0aGUK
ICAgICAvLyBtb2RlL292ZXJsYXlzIHRoYXQgaXQgaXMgYmFzZWQgb24gKGZvciBlYXN5IGludmFs
aWRhdGlvbikuCiAgICAgdmFyIHN0ID0gW2NtLnN0YXRlLm1vZGVHZW5dOwogICAgIC8vIENvbXB1
dGUgdGhlIGJhc2UgYXJyYXkgb2Ygc3R5bGVzCi0gICAgcnVuTW9kZShjbSwgbGluZS50ZXh0LCBj
bS5kb2MubW9kZSwgc3RhdGUsIGZ1bmN0aW9uKGVuZCwgc3R5bGUpIHtzdC5wdXNoKGVuZCwgc3R5
bGUpO30pOworICAgIHJ1bk1vZGUoY20sIGxpbmUudGV4dCwgY20uZG9jLm1vZGUsIHN0YXRlLCBm
dW5jdGlvbihlbmQsIHN0eWxlKSB7CisgICAgICBzdC5wdXNoKGVuZCwgc3R5bGUpOworICAgIH0s
IGZvcmNlVG9FbmQpOwogCiAgICAgLy8gUnVuIG92ZXJsYXlzLCBhZGp1c3Qgc3R5bGUgYXJyYXku
CiAgICAgZm9yICh2YXIgbyA9IDA7IG8gPCBjbS5zdGF0ZS5vdmVybGF5cy5sZW5ndGg7ICsrbykg
ewpAQCAtNDMwNCwxMCArNDM1OCwxMSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigp
IHsKIAogICAvLyBMaWdodHdlaWdodCBmb3JtIG9mIGhpZ2hsaWdodCAtLSBwcm9jZWVkIG92ZXIg
dGhpcyBsaW5lIGFuZAogICAvLyB1cGRhdGUgc3RhdGUsIGJ1dCBkb24ndCBzYXZlIGEgc3R5bGUg
YXJyYXkuCi0gIGZ1bmN0aW9uIHByb2Nlc3NMaW5lKGNtLCBsaW5lLCBzdGF0ZSkgeworICBmdW5j
dGlvbiBwcm9jZXNzTGluZShjbSwgdGV4dCwgc3RhdGUsIHN0YXJ0QXQpIHsKICAgICB2YXIgbW9k
ZSA9IGNtLmRvYy5tb2RlOwotICAgIHZhciBzdHJlYW0gPSBuZXcgU3RyaW5nU3RyZWFtKGxpbmUu
dGV4dCwgY20ub3B0aW9ucy50YWJTaXplKTsKLSAgICBpZiAobGluZS50ZXh0ID09ICIiICYmIG1v
ZGUuYmxhbmtMaW5lKSBtb2RlLmJsYW5rTGluZShzdGF0ZSk7CisgICAgdmFyIHN0cmVhbSA9IG5l
dyBTdHJpbmdTdHJlYW0odGV4dCwgY20ub3B0aW9ucy50YWJTaXplKTsKKyAgICBzdHJlYW0uc3Rh
cnQgPSBzdHJlYW0ucG9zID0gc3RhcnRBdCB8fCAwOworICAgIGlmICh0ZXh0ID09ICIiICYmIG1v
ZGUuYmxhbmtMaW5lKSBtb2RlLmJsYW5rTGluZShzdGF0ZSk7CiAgICAgd2hpbGUgKCFzdHJlYW0u
ZW9sKCkgJiYgc3RyZWFtLnBvcyA8PSBjbS5vcHRpb25zLm1heEhpZ2hsaWdodExlbmd0aCkgewog
ICAgICAgbW9kZS50b2tlbihzdHJlYW0sIHN0YXRlKTsKICAgICAgIHN0cmVhbS5zdGFydCA9IHN0
cmVhbS5wb3M7CkBAIC00MzY0LDcgKzQ0MTksNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5j
dGlvbigpIHsKICAgICAvLyBXb3JrIGFyb3VuZCBwcm9ibGVtIHdpdGggdGhlIHJlcG9ydGVkIGRp
bWVuc2lvbnMgb2Ygc2luZ2xlLWNoYXIKICAgICAvLyBkaXJlY3Rpb24gc3BhbnMgb24gSUUgKGlz
c3VlICMxMTI5KS4gU2VlIGFsc28gdGhlIGNvbW1lbnQgaW4KICAgICAvLyBjdXJzb3JDb29yZHMu
Ci0gICAgaWYgKG1lYXN1cmUgJiYgaWUgJiYgKG9yZGVyID0gZ2V0T3JkZXIobGluZSkpKSB7Cisg
ICAgaWYgKG1lYXN1cmUgJiYgKGllIHx8IGllX2d0MTApICYmIChvcmRlciA9IGdldE9yZGVyKGxp
bmUpKSkgewogICAgICAgdmFyIGwgPSBvcmRlci5sZW5ndGggLSAxOwogICAgICAgaWYgKG9yZGVy
W2xdLmZyb20gPT0gb3JkZXJbbF0udG8pIC0tbDsKICAgICAgIHZhciBsYXN0ID0gb3JkZXJbbF0s
IHByZXYgPSBvcmRlcltsIC0gMV07CkBAIC00MzgyLDE3ICs0NDM3LDIzIEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIHJldHVybiBidWlsZGVyOwogICB9CiAKLSAgdmFy
IHRva2VuU3BlY2lhbENoYXJzID0gL1tcdFx1MDAwMC1cdTAwMTlcdTAwYWRcdTIwMGJcdTIwMjhc
dTIwMjlcdUZFRkZdL2c7CisgIGZ1bmN0aW9uIGRlZmF1bHRTcGVjaWFsQ2hhclBsYWNlaG9sZGVy
KGNoKSB7CisgICAgdmFyIHRva2VuID0gZWx0KCJzcGFuIiwgIlx1MjAyMiIsICJjbS1pbnZhbGlk
Y2hhciIpOworICAgIHRva2VuLnRpdGxlID0gIlxcdSIgKyBjaC5jaGFyQ29kZUF0KDApLnRvU3Ry
aW5nKDE2KTsKKyAgICByZXR1cm4gdG9rZW47CisgIH0KKwogICBmdW5jdGlvbiBidWlsZFRva2Vu
KGJ1aWxkZXIsIHRleHQsIHN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgdGl0bGUpIHsKICAg
ICBpZiAoIXRleHQpIHJldHVybjsKLSAgICBpZiAoIXRva2VuU3BlY2lhbENoYXJzLnRlc3QodGV4
dCkpIHsKKyAgICB2YXIgc3BlY2lhbCA9IGJ1aWxkZXIuY20ub3B0aW9ucy5zcGVjaWFsQ2hhcnM7
CisgICAgaWYgKCFzcGVjaWFsLnRlc3QodGV4dCkpIHsKICAgICAgIGJ1aWxkZXIuY29sICs9IHRl
eHQubGVuZ3RoOwogICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0
ZXh0KTsKICAgICB9IGVsc2UgewogICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCksIHBvcyA9IDA7CiAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICB0b2tlblNwZWNpYWxDaGFycy5sYXN0SW5kZXggPSBwb3M7Ci0gICAgICAgIHZhciBtID0gdG9r
ZW5TcGVjaWFsQ2hhcnMuZXhlYyh0ZXh0KTsKKyAgICAgICAgc3BlY2lhbC5sYXN0SW5kZXggPSBw
b3M7CisgICAgICAgIHZhciBtID0gc3BlY2lhbC5leGVjKHRleHQpOwogICAgICAgICB2YXIgc2tp
cHBlZCA9IG0gPyBtLmluZGV4IC0gcG9zIDogdGV4dC5sZW5ndGggLSBwb3M7CiAgICAgICAgIGlm
IChza2lwcGVkKSB7CiAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSh0ZXh0LnNsaWNlKHBvcywgcG9zICsgc2tpcHBlZCkpKTsKQEAgLTQ0MDUsOCAr
NDQ2Niw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgIGNv
bnRlbnQuYXBwZW5kQ2hpbGQoZWx0KCJzcGFuIiwgc3BhY2VTdHIodGFiV2lkdGgpLCAiY20tdGFi
IikpOwogICAgICAgICAgIGJ1aWxkZXIuY29sICs9IHRhYldpZHRoOwogICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgIHZhciB0b2tlbiA9IGVsdCgic3BhbiIsICJcdTIwMjIiLCAiY20taW52YWxp
ZGNoYXIiKTsKLSAgICAgICAgICB0b2tlbi50aXRsZSA9ICJcXHUiICsgbVswXS5jaGFyQ29kZUF0
KDApLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgICB2YXIgdG9rZW4gPSBidWlsZGVyLmNtLm9wdGlv
bnMuc3BlY2lhbENoYXJQbGFjZWhvbGRlcihtWzBdKTsKICAgICAgICAgICBjb250ZW50LmFwcGVu
ZENoaWxkKHRva2VuKTsKICAgICAgICAgICBidWlsZGVyLmNvbCArPSAxOwogICAgICAgICB9CkBA
IC00NDU3LDcgKzQ1MTcsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAg
ICAgIHJldHVybiBvdXQ7CiAgICAgfQogICAgIHJldHVybiBmdW5jdGlvbihidWlsZGVyLCB0ZXh0
LCBzdHlsZSwgc3RhcnRTdHlsZSwgZW5kU3R5bGUsIHRpdGxlKSB7Ci0gICAgICByZXR1cm4gaW5u
ZXIoYnVpbGRlciwgdGV4dC5yZXBsYWNlKC8gezMsfS8sIHNwbGl0KSwgc3R5bGUsIHN0YXJ0U3R5
bGUsIGVuZFN0eWxlLCB0aXRsZSk7CisgICAgICByZXR1cm4gaW5uZXIoYnVpbGRlciwgdGV4dC5y
ZXBsYWNlKC8gezMsfS9nLCBzcGxpdCksIHN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgdGl0
bGUpOwogICAgIH07CiAgIH0KIApAQCAtNDU1OSw3ICs0NjE5LDggQEAgd2luZG93LkNvZGVNaXJy
b3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIGxhc3RUZXh0ID0gbHN0KHRleHQpLCBsYXN0U3Bh
bnMgPSBzcGFuc0Zvcih0ZXh0Lmxlbmd0aCAtIDEpLCBubGluZXMgPSB0by5saW5lIC0gZnJvbS5s
aW5lOwogCiAgICAgLy8gRmlyc3QgYWRqdXN0IHRoZSBsaW5lIHN0cnVjdHVyZQotICAgIGlmIChm
cm9tLmNoID09IDAgJiYgdG8uY2ggPT0gMCAmJiBsYXN0VGV4dCA9PSAiIikgeworICAgIGlmIChm
cm9tLmNoID09IDAgJiYgdG8uY2ggPT0gMCAmJiBsYXN0VGV4dCA9PSAiIiAmJgorICAgICAgICAo
IWRvYy5jbSB8fCBkb2MuY20ub3B0aW9ucy53aG9sZUxpbmVVcGRhdGVCZWZvcmUpKSB7CiAgICAg
ICAvLyBUaGlzIGlzIGEgd2hvbGUtbGluZSByZXBsYWNlLiBUcmVhdGVkIHNwZWNpYWxseSB0byBt
YWtlCiAgICAgICAvLyBzdXJlIGxpbmUgb2JqZWN0cyBtb3ZlIHRoZSB3YXkgdGhleSBhcmUgc3Vw
cG9zZWQgdG8uCiAgICAgICBmb3IgKHZhciBpID0gMCwgZSA9IHRleHQubGVuZ3RoIC0gMSwgYWRk
ZWQgPSBbXTsgaSA8IGU7ICsraSkKQEAgLTU0NDYsNyArNTUwNyw3IEBAIHdpbmRvdy5Db2RlTWly
cm9yID0gKGZ1bmN0aW9uKCkgewogICAgIHJldHVybiB0cnVlOwogICB9CiAKLSAgdmFyIGlzRXh0
ZW5kaW5nQ2hhciA9IC9bXHUwMzAwLVx1MDM2Rlx1MDQ4My1cdTA0ODdcdTA0ODgtXHUwNDg5XHUw
NTkxLVx1MDVCRFx1MDVCRlx1MDVDMS1cdTA1QzJcdTA1QzQtXHUwNUM1XHUwNUM3XHUwNjEwLVx1
MDYxQVx1MDY0Qi1cdTA2NUZcdTA2NzBcdTA2RDYtXHUwNkRDXHUwNkRGLVx1MDZFNFx1MDZFNy1c
dTA2RThcdTA2RUEtXHUwNkVEXHVBNjZGXHVBNjcwLVx1QTY3Mlx1QTY3NC1cdUE2N0RcdUE2OUZc
dWRjMDAtXHVkZmZmXS87CisgIHZhciBpc0V4dGVuZGluZ0NoYXIgPSAvW1x1MDMwMC1cdTAzNkZc
dTA0ODMtXHUwNDg3XHUwNDg4LVx1MDQ4OVx1MDU5MS1cdTA1QkRcdTA1QkZcdTA1QzEtXHUwNUMy
XHUwNUM0LVx1MDVDNVx1MDVDN1x1MDYxMC1cdTA2MUFcdTA2NEItXHUwNjVGXHUwNjcwXHUwNkQ2
LVx1MDZEQ1x1MDZERi1cdTA2RTRcdTA2RTctXHUwNkU4XHUwNkVBLVx1MDZFRFx1QTY2Rlx1MURD
MOKAk1x1MURGRlx1MjBEMOKAk1x1MjBGRlx1QTY3MC1cdUE2NzJcdUE2NzQtXHVBNjdEXHVBNjlG
XHVkYzAwLVx1ZGZmZlx1RkUyMOKAk1x1RkUyRl0vOwogCiAgIC8vIERPTSBVVElMSVRJRVMKIApA
QCAtNTUyMCw3ICs1NTgxLDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAg
ICAgICAgIGlmICgvXHcvLnRlc3Qoc3RyLmNoYXJBdChpIC0gMikpICYmIC9bXlwtP1wuXS8udGVz
dChzdHIuY2hhckF0KGkpKSkgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChpID4gMiAmJiAvW1xk
XC4sXS8udGVzdChzdHIuY2hhckF0KGkgLSAyKSkgJiYgL1tcZFwuLF0vLnRlc3Qoc3RyLmNoYXJB
dChpKSkpIHJldHVybiBmYWxzZTsKICAgICAgIH0KLSAgICAgIHZhciByZXN1bHQgPSAvW34hIyUm
Kik9K31cXXxcIlwuPiw6O11bKHtbPF18LVteXC0/XC5cdTIwMTAtXHUyMDFmXHUyMDI2XXxcP1tc
d35gQCMkJVxeJiooXz0re1t8PjxdfOKApltcd35gQCMkJVxeJiooXz0re1s+PF0vLnRlc3Qoc3Ry
LnNsaWNlKGkgLSAxLCBpICsgMSkpOworICAgICAgdmFyIHJlc3VsdCA9IC9bfiEjJSYqKT0rfVxd
XFx8XCJcLj4sOjtdWyh7WzxdfC1bXlwtP1wuXHUyMDEwLVx1MjAxZlx1MjAyNl18XD9bXHd+YEAj
JCVcXiYqKF89K3tbfD48XXzigKZbXHd+YEAjJCVcXiYqKF89K3tbPjxdLy50ZXN0KHN0ci5zbGlj
ZShpIC0gMSwgaSArIDEpKTsKICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfTsKIApAQCAtNTg3
Nyw3ICs1OTM4LDcgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAKICAgLy8g
VEhFIEVORAogCi0gIENvZGVNaXJyb3IudmVyc2lvbiA9ICIzLjE2LjEiOworICBDb2RlTWlycm9y
LnZlcnNpb24gPSAiMy4yMC4wIjsKIAogICByZXR1cm4gQ29kZU1pcnJvcjsKIH0pKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2Rl
TWlycm9yL2NvZmZlZXNjcmlwdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29mZmVlc2NyaXB0LmpzCmluZGV4IGI3MjAzZjEyNGI5
OGEzNTkzYjg4ZmY0M2YxNDJlYmZjNTRhNzEyNzguLmU4YmZlNDhhMjQ4YmNhNmI2OTJiMWUwODQ4
ZDk2MDNjNWExNDNjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29mZmVlc2NyaXB0LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29mZmVlc2Ny
aXB0LmpzCkBAIC0yLDM0NyArMiwzNTMgQEAKICAqIExpbmsgdG8gdGhlIHByb2plY3QncyBHaXRI
dWIgcGFnZToKICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9waWNraGFyZHQvY29mZmVlc2NyaXB0LWNv
ZGVtaXJyb3ItbW9kZQogICovCi1Db2RlTWlycm9yLmRlZmluZU1vZGUoJ2NvZmZlZXNjcmlwdCcs
IGZ1bmN0aW9uKGNvbmYpIHsKLSAgICB2YXIgRVJST1JDTEFTUyA9ICdlcnJvcic7Ci0KLSAgICBm
dW5jdGlvbiB3b3JkUmVnZXhwKHdvcmRzKSB7Ci0gICAgICAgIHJldHVybiBuZXcgUmVnRXhwKCJe
KCgiICsgd29yZHMuam9pbigiKXwoIikgKyAiKSlcXGIiKTsKLSAgICB9Ci0KLSAgICB2YXIgc2lu
Z2xlT3BlcmF0b3JzID0gbmV3IFJlZ0V4cCgiXltcXCtcXC1cXCovJSZ8XFxefjw+IVw/XSIpOwot
ICAgIHZhciBzaW5nbGVEZWxpbWl0ZXJzID0gbmV3IFJlZ0V4cCgnXltcXChcXClcXFtcXF1cXHtc
XH0sOmA9O1xcLl0nKTsKLSAgICB2YXIgZG91YmxlT3BlcmF0b3JzID0gbmV3IFJlZ0V4cCgiXigo
XC0+KXwoXD0+KXwoXFwrXFwrKXwoXFwrXFw9KXwoXFwtXFwtKXwoXFwtXFw9KXwoXFwqXFwqKXwo
XFwqXFw9KXwoXFwvXFwvKXwoXFwvXFw9KXwoPT0pfCghPSl8KDw9KXwoPj0pfCg8Pil8KDw8KXwo
Pj4pfCgvLykpIik7Ci0gICAgdmFyIGRvdWJsZURlbGltaXRlcnMgPSBuZXcgUmVnRXhwKCJeKChc
XC5cXC4pfChcXCs9KXwoXFwtPSl8KFxcKj0pfCglPSl8KC89KXwoJj0pfChcXHw9KXwoXFxePSkp
Iik7Ci0gICAgdmFyIHRyaXBsZURlbGltaXRlcnMgPSBuZXcgUmVnRXhwKCJeKChcXC5cXC5cXC4p
fCgvLz0pfCg+Pj0pfCg8PD0pfChcXCpcXCo9KSkiKTsKLSAgICB2YXIgaWRlbnRpZmllcnMgPSBu
ZXcgUmVnRXhwKCJeW19BLVphLXokXVtfQS1aYS16JDAtOV0qIik7Ci0gICAgdmFyIHByb3BlcnRp
ZXMgPSBuZXcgUmVnRXhwKCJeKEB8dGhpc1wuKVtfQS1aYS16JF1bX0EtWmEteiQwLTldKiIpOwot
Ci0gICAgdmFyIHdvcmRPcGVyYXRvcnMgPSB3b3JkUmVnZXhwKFsnYW5kJywgJ29yJywgJ25vdCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMnLCAnaXNudCcsICdpbics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VvZicsICd0eXBl
b2YnXSk7Ci0gICAgdmFyIGluZGVudEtleXdvcmRzID0gWydmb3InLCAnd2hpbGUnLCAnbG9vcCcs
ICdpZicsICd1bmxlc3MnLCAnZWxzZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzd2l0
Y2gnLCAndHJ5JywgJ2NhdGNoJywgJ2ZpbmFsbHknLCAnY2xhc3MnXTsKLSAgICB2YXIgY29tbW9u
S2V5d29yZHMgPSBbJ2JyZWFrJywgJ2J5JywgJ2NvbnRpbnVlJywgJ2RlYnVnZ2VyJywgJ2RlbGV0
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdkbycsICdpbicsICdvZicsICduZXcnLCAn
cmV0dXJuJywgJ3RoZW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcycsICd0aHJv
dycsICd3aGVuJywgJ3VudGlsJ107Ci0KLSAgICB2YXIga2V5d29yZHMgPSB3b3JkUmVnZXhwKGlu
ZGVudEtleXdvcmRzLmNvbmNhdChjb21tb25LZXl3b3JkcykpOwotCi0gICAgaW5kZW50S2V5d29y
ZHMgPSB3b3JkUmVnZXhwKGluZGVudEtleXdvcmRzKTsKLQotCi0gICAgdmFyIHN0cmluZ1ByZWZp
eGVzID0gbmV3IFJlZ0V4cCgiXignezN9fFwiezN9fFsnXCJdKSIpOwotICAgIHZhciByZWdleFBy
ZWZpeGVzID0gbmV3IFJlZ0V4cCgiXigvezN9fC8pIik7Ci0gICAgdmFyIGNvbW1vbkNvbnN0YW50
cyA9IFsnSW5maW5pdHknLCAnTmFOJywgJ3VuZGVmaW5lZCcsICdudWxsJywgJ3RydWUnLCAnZmFs
c2UnLCAnb24nLCAnb2ZmJywgJ3llcycsICdubyddOwotICAgIHZhciBjb25zdGFudHMgPSB3b3Jk
UmVnZXhwKGNvbW1vbkNvbnN0YW50cyk7Ci0KLSAgICAvLyBUb2tlbml6ZXJzCi0gICAgZnVuY3Rp
b24gdG9rZW5CYXNlKHN0cmVhbSwgc3RhdGUpIHsKLSAgICAgICAgLy8gSGFuZGxlIHNjb3BlIGNo
YW5nZXMKLSAgICAgICAgaWYgKHN0cmVhbS5zb2woKSkgewotICAgICAgICAgICAgdmFyIHNjb3Bl
T2Zmc2V0ID0gc3RhdGUuc2NvcGVzWzBdLm9mZnNldDsKLSAgICAgICAgICAgIGlmIChzdHJlYW0u
ZWF0U3BhY2UoKSkgewotICAgICAgICAgICAgICAgIHZhciBsaW5lT2Zmc2V0ID0gc3RyZWFtLmlu
ZGVudGF0aW9uKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmVPZmZzZXQgPiBzY29wZU9mZnNl
dCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2luZGVudCc7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChsaW5lT2Zmc2V0IDwgc2NvcGVPZmZzZXQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICdkZWRlbnQnOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHNjb3BlT2Zmc2V0ID4gMCkgewotICAgICAgICAgICAgICAgICAgICBkZWRlbnQoc3RyZWFtLCBz
dGF0ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorQ29kZU1pcnJvci5kZWZp
bmVNb2RlKCJjb2ZmZWVzY3JpcHQiLCBmdW5jdGlvbihjb25mKSB7CisgIHZhciBFUlJPUkNMQVNT
ID0gImVycm9yIjsKKworICBmdW5jdGlvbiB3b3JkUmVnZXhwKHdvcmRzKSB7CisgICAgcmV0dXJu
IG5ldyBSZWdFeHAoIl4oKCIgKyB3b3Jkcy5qb2luKCIpfCgiKSArICIpKVxcYiIpOworICB9CisK
KyAgdmFyIG9wZXJhdG9ycyA9IC9eKD86LT58PT58XCtbKz1dP3wtW1wtPV0/fFwqW1wqPV0/fFwv
W1wvPV0/fFs9IV09fDxbPjxdPz0/fD4+Pz0/fCU9P3wmPT98XHw9P3xcXj0/fFx+fCF8XD8pLzsK
KyAgdmFyIGRlbGltaXRlcnMgPSAvXig/OlsoKVxbXF17fSw6YD07XXxcLlwuP1wuPykvOworICB2
YXIgaWRlbnRpZmllcnMgPSAvXltfQS1aYS16JF1bX0EtWmEteiQwLTldKi87CisgIHZhciBwcm9w
ZXJ0aWVzID0gL14oQHx0aGlzXC4pW19BLVphLXokXVtfQS1aYS16JDAtOV0qLzsKKworICB2YXIg
d29yZE9wZXJhdG9ycyA9IHdvcmRSZWdleHAoWyJhbmQiLCAib3IiLCAibm90IiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaXMiLCAiaXNudCIsICJpbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlb2YiLCAidHlwZW9mIl0pOworICB2YXIg
aW5kZW50S2V5d29yZHMgPSBbImZvciIsICJ3aGlsZSIsICJsb29wIiwgImlmIiwgInVubGVzcyIs
ICJlbHNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzd2l0Y2giLCAidHJ5IiwgImNhdGNo
IiwgImZpbmFsbHkiLCAiY2xhc3MiXTsKKyAgdmFyIGNvbW1vbktleXdvcmRzID0gWyJicmVhayIs
ICJieSIsICJjb250aW51ZSIsICJkZWJ1Z2dlciIsICJkZWxldGUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgImRvIiwgImluIiwgIm9mIiwgIm5ldyIsICJyZXR1cm4iLCAidGhlbiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAidGhpcyIsICJ0aHJvdyIsICJ3aGVuIiwgInVudGlsIl07CisK
KyAgdmFyIGtleXdvcmRzID0gd29yZFJlZ2V4cChpbmRlbnRLZXl3b3Jkcy5jb25jYXQoY29tbW9u
S2V5d29yZHMpKTsKKworICBpbmRlbnRLZXl3b3JkcyA9IHdvcmRSZWdleHAoaW5kZW50S2V5d29y
ZHMpOworCisKKyAgdmFyIHN0cmluZ1ByZWZpeGVzID0gL14oJ3szfXxcInszfXxbJ1wiXSkvOwor
ICB2YXIgcmVnZXhQcmVmaXhlcyA9IC9eKFwvezN9fFwvKS87CisgIHZhciBjb21tb25Db25zdGFu
dHMgPSBbIkluZmluaXR5IiwgIk5hTiIsICJ1bmRlZmluZWQiLCAibnVsbCIsICJ0cnVlIiwgImZh
bHNlIiwgIm9uIiwgIm9mZiIsICJ5ZXMiLCAibm8iXTsKKyAgdmFyIGNvbnN0YW50cyA9IHdvcmRS
ZWdleHAoY29tbW9uQ29uc3RhbnRzKTsKKworICAvLyBUb2tlbml6ZXJzCisgIGZ1bmN0aW9uIHRv
a2VuQmFzZShzdHJlYW0sIHN0YXRlKSB7CisgICAgLy8gSGFuZGxlIHNjb3BlIGNoYW5nZXMKKyAg
ICBpZiAoc3RyZWFtLnNvbCgpKSB7CisgICAgICBpZiAoc3RhdGUuc2NvcGUuYWxpZ24gPT09IG51
bGwpIHN0YXRlLnNjb3BlLmFsaWduID0gZmFsc2U7CisgICAgICB2YXIgc2NvcGVPZmZzZXQgPSBz
dGF0ZS5zY29wZS5vZmZzZXQ7CisgICAgICBpZiAoc3RyZWFtLmVhdFNwYWNlKCkpIHsKKyAgICAg
ICAgdmFyIGxpbmVPZmZzZXQgPSBzdHJlYW0uaW5kZW50YXRpb24oKTsKKyAgICAgICAgaWYgKGxp
bmVPZmZzZXQgPiBzY29wZU9mZnNldCAmJiBzdGF0ZS5zY29wZS50eXBlID09ICJjb2ZmZWUiKSB7
CisgICAgICAgICAgcmV0dXJuICJpbmRlbnQiOworICAgICAgICB9IGVsc2UgaWYgKGxpbmVPZmZz
ZXQgPCBzY29wZU9mZnNldCkgeworICAgICAgICAgIHJldHVybiAiZGVkZW50IjsKICAgICAgICAg
fQotICAgICAgICBpZiAoc3RyZWFtLmVhdFNwYWNlKCkpIHsKLSAgICAgICAgICAgIHJldHVybiBu
dWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGNoID0gc3RyZWFtLnBlZWsoKTsKLQotICAg
ICAgICAvLyBIYW5kbGUgZG9jY28gdGl0bGUgY29tbWVudCAoc2luZ2xlIGxpbmUpCi0gICAgICAg
IGlmIChzdHJlYW0ubWF0Y2goIiMjIyMiKSkgewotICAgICAgICAgICAgc3RyZWFtLnNraXBUb0Vu
ZCgpOwotICAgICAgICAgICAgcmV0dXJuICdjb21tZW50JzsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIEhhbmRsZSBtdWx0aSBsaW5lIGNvbW1lbnRzCi0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2go
IiMjIyIpKSB7Ci0gICAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IGxvbmdDb21tZW50OwotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgICAgICBy
ZXR1cm4gbnVsbDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzY29wZU9mZnNldCA+IDAp
IHsKKyAgICAgICAgICBkZWRlbnQoc3RyZWFtLCBzdGF0ZSk7CiAgICAgICAgIH0KKyAgICAgIH0K
KyAgICB9CisgICAgaWYgKHN0cmVhbS5lYXRTcGFjZSgpKSB7CisgICAgICByZXR1cm4gbnVsbDsK
KyAgICB9CiAKLSAgICAgICAgLy8gU2luZ2xlIGxpbmUgY29tbWVudAotICAgICAgICBpZiAoY2gg
PT09ICcjJykgewotICAgICAgICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOwotICAgICAgICAgICAg
cmV0dXJuICdjb21tZW50JzsKLSAgICAgICAgfQorICAgIHZhciBjaCA9IHN0cmVhbS5wZWVrKCk7
CiAKLSAgICAgICAgLy8gSGFuZGxlIG51bWJlciBsaXRlcmFscwotICAgICAgICBpZiAoc3RyZWFt
Lm1hdGNoKC9eLT9bMC05XC5dLywgZmFsc2UpKSB7Ci0gICAgICAgICAgICB2YXIgZmxvYXRMaXRl
cmFsID0gZmFsc2U7Ci0gICAgICAgICAgICAvLyBGbG9hdHMKLSAgICAgICAgICAgIGlmIChzdHJl
YW0ubWF0Y2goL14tP1xkKlwuXGQrKGVbXCtcLV0/XGQrKT8vaSkpIHsKLSAgICAgICAgICAgICAg
ZmxvYXRMaXRlcmFsID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdHJl
YW0ubWF0Y2goL14tP1xkK1wuXGQqLykpIHsKLSAgICAgICAgICAgICAgZmxvYXRMaXRlcmFsID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdHJlYW0ubWF0Y2goL14tP1wu
XGQrLykpIHsKLSAgICAgICAgICAgICAgZmxvYXRMaXRlcmFsID0gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKGZsb2F0TGl0ZXJhbCkgewotICAgICAgICAgICAgICAgIC8v
IHByZXZlbnQgZnJvbSBnZXR0aW5nIGV4dHJhIC4gb24gMS4uCi0gICAgICAgICAgICAgICAgaWYg
KHN0cmVhbS5wZWVrKCkgPT0gIi4iKXsKLSAgICAgICAgICAgICAgICAgICAgc3RyZWFtLmJhY2tV
cCgxKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdudW1iZXIn
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gSW50ZWdlcnMKLSAgICAgICAgICAgIHZh
ciBpbnRMaXRlcmFsID0gZmFsc2U7Ci0gICAgICAgICAgICAvLyBIZXgKLSAgICAgICAgICAgIGlm
IChzdHJlYW0ubWF0Y2goL14tPzB4WzAtOWEtZl0rL2kpKSB7Ci0gICAgICAgICAgICAgIGludExp
dGVyYWwgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRGVjaW1hbAotICAg
ICAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/WzEtOV1cZCooZVtcK1wtXT9cZCspPy8pKSB7
Ci0gICAgICAgICAgICAgICAgaW50TGl0ZXJhbCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAvLyBaZXJvIGJ5IGl0c2VsZiB3aXRoIG5vIG90aGVyIHBpZWNlIG9mIG51bWJlci4K
LSAgICAgICAgICAgIGlmIChzdHJlYW0ubWF0Y2goL14tPzAoPyFbXGR4XSkvaSkpIHsKLSAgICAg
ICAgICAgICAgaW50TGl0ZXJhbCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAoaW50TGl0ZXJhbCkgewotICAgICAgICAgICAgICAgIHJldHVybiAnbnVtYmVyJzsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQorICAgIC8vIEhhbmRsZSBkb2NjbyB0aXRsZSBjb21tZW50IChz
aW5nbGUgbGluZSkKKyAgICBpZiAoc3RyZWFtLm1hdGNoKCIjIyMjIikpIHsKKyAgICAgIHN0cmVh
bS5za2lwVG9FbmQoKTsKKyAgICAgIHJldHVybiAiY29tbWVudCI7CisgICAgfQogCi0gICAgICAg
IC8vIEhhbmRsZSBzdHJpbmdzCi0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2goc3RyaW5nUHJlZml4
ZXMpKSB7Ci0gICAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuRmFjdG9yeShzdHJlYW0u
Y3VycmVudCgpLCAnc3RyaW5nJyk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGUudG9rZW5pemUo
c3RyZWFtLCBzdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSGFuZGxlIHJlZ2V4IGxpdGVy
YWxzCi0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2gocmVnZXhQcmVmaXhlcykpIHsKLSAgICAgICAg
ICAgIGlmIChzdHJlYW0uY3VycmVudCgpICE9ICcvJyB8fCBzdHJlYW0ubWF0Y2goL14uKlwvLywg
ZmFsc2UpKSB7IC8vIHByZXZlbnQgaGlnaGxpZ2h0IG9mIGRpdmlzaW9uCi0gICAgICAgICAgICAg
ICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkZhY3Rvcnkoc3RyZWFtLmN1cnJlbnQoKSwgJ3N0cmlu
Zy0yJyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3Rh
dGUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzdHJlYW0uYmFja1Vw
KDEpOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgLy8gSGFuZGxlIG11bHRpIGxpbmUg
Y29tbWVudHMKKyAgICBpZiAoc3RyZWFtLm1hdGNoKCIjIyMiKSkgeworICAgICAgc3RhdGUudG9r
ZW5pemUgPSBsb25nQ29tbWVudDsKKyAgICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0s
IHN0YXRlKTsKKyAgICB9CiAKLSAgICAgICAgLy8gSGFuZGxlIG9wZXJhdG9ycyBhbmQgZGVsaW1p
dGVycwotICAgICAgICBpZiAoc3RyZWFtLm1hdGNoKHRyaXBsZURlbGltaXRlcnMpIHx8IHN0cmVh
bS5tYXRjaChkb3VibGVEZWxpbWl0ZXJzKSkgewotICAgICAgICAgICAgcmV0dXJuICdwdW5jdHVh
dGlvbic7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0cmVhbS5tYXRjaChkb3VibGVPcGVyYXRv
cnMpCi0gICAgICAgICAgICB8fCBzdHJlYW0ubWF0Y2goc2luZ2xlT3BlcmF0b3JzKQotICAgICAg
ICAgICAgfHwgc3RyZWFtLm1hdGNoKHdvcmRPcGVyYXRvcnMpKSB7Ci0gICAgICAgICAgICByZXR1
cm4gJ29wZXJhdG9yJzsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3RyZWFtLm1hdGNoKHNpbmds
ZURlbGltaXRlcnMpKSB7Ci0gICAgICAgICAgICByZXR1cm4gJ3B1bmN0dWF0aW9uJzsKLSAgICAg
ICAgfQorICAgIC8vIFNpbmdsZSBsaW5lIGNvbW1lbnQKKyAgICBpZiAoY2ggPT09ICIjIikgewor
ICAgICAgc3RyZWFtLnNraXBUb0VuZCgpOworICAgICAgcmV0dXJuICJjb21tZW50IjsKKyAgICB9
CiAKLSAgICAgICAgaWYgKHN0cmVhbS5tYXRjaChjb25zdGFudHMpKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gJ2F0b20nOworICAgIC8vIEhhbmRsZSBudW1iZXIgbGl0ZXJhbHMKKyAgICBpZiAoc3Ry
ZWFtLm1hdGNoKC9eLT9bMC05XC5dLywgZmFsc2UpKSB7CisgICAgICB2YXIgZmxvYXRMaXRlcmFs
ID0gZmFsc2U7CisgICAgICAvLyBGbG9hdHMKKyAgICAgIGlmIChzdHJlYW0ubWF0Y2goL14tP1xk
KlwuXGQrKGVbXCtcLV0/XGQrKT8vaSkpIHsKKyAgICAgICAgZmxvYXRMaXRlcmFsID0gdHJ1ZTsK
KyAgICAgIH0KKyAgICAgIGlmIChzdHJlYW0ubWF0Y2goL14tP1xkK1wuXGQqLykpIHsKKyAgICAg
ICAgZmxvYXRMaXRlcmFsID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmIChzdHJlYW0ubWF0Y2go
L14tP1wuXGQrLykpIHsKKyAgICAgICAgZmxvYXRMaXRlcmFsID0gdHJ1ZTsKKyAgICAgIH0KKwor
ICAgICAgaWYgKGZsb2F0TGl0ZXJhbCkgeworICAgICAgICAvLyBwcmV2ZW50IGZyb20gZ2V0dGlu
ZyBleHRyYSAuIG9uIDEuLgorICAgICAgICBpZiAoc3RyZWFtLnBlZWsoKSA9PSAiLiIpeworICAg
ICAgICAgIHN0cmVhbS5iYWNrVXAoMSk7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICJudW1i
ZXIiOworICAgICAgfQorICAgICAgLy8gSW50ZWdlcnMKKyAgICAgIHZhciBpbnRMaXRlcmFsID0g
ZmFsc2U7CisgICAgICAvLyBIZXgKKyAgICAgIGlmIChzdHJlYW0ubWF0Y2goL14tPzB4WzAtOWEt
Zl0rL2kpKSB7CisgICAgICAgIGludExpdGVyYWwgPSB0cnVlOworICAgICAgfQorICAgICAgLy8g
RGVjaW1hbAorICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXi0/WzEtOV1cZCooZVtcK1wtXT9cZCsp
Py8pKSB7CisgICAgICAgIGludExpdGVyYWwgPSB0cnVlOworICAgICAgfQorICAgICAgLy8gWmVy
byBieSBpdHNlbGYgd2l0aCBubyBvdGhlciBwaWVjZSBvZiBudW1iZXIuCisgICAgICBpZiAoc3Ry
ZWFtLm1hdGNoKC9eLT8wKD8hW1xkeF0pL2kpKSB7CisgICAgICAgIGludExpdGVyYWwgPSB0cnVl
OworICAgICAgfQorICAgICAgaWYgKGludExpdGVyYWwpIHsKKyAgICAgICAgcmV0dXJuICJudW1i
ZXIiOworICAgICAgfQorICAgIH0KIAotICAgICAgICBpZiAoc3RyZWFtLm1hdGNoKGtleXdvcmRz
KSkgewotICAgICAgICAgICAgcmV0dXJuICdrZXl3b3JkJzsKLSAgICAgICAgfQorICAgIC8vIEhh
bmRsZSBzdHJpbmdzCisgICAgaWYgKHN0cmVhbS5tYXRjaChzdHJpbmdQcmVmaXhlcykpIHsKKyAg
ICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5GYWN0b3J5KHN0cmVhbS5jdXJyZW50KCksICJzdHJp
bmciKTsKKyAgICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKKyAgICB9
CisgICAgLy8gSGFuZGxlIHJlZ2V4IGxpdGVyYWxzCisgICAgaWYgKHN0cmVhbS5tYXRjaChyZWdl
eFByZWZpeGVzKSkgeworICAgICAgaWYgKHN0cmVhbS5jdXJyZW50KCkgIT0gIi8iIHx8IHN0cmVh
bS5tYXRjaCgvXi4qXC8vLCBmYWxzZSkpIHsgLy8gcHJldmVudCBoaWdobGlnaHQgb2YgZGl2aXNp
b24KKyAgICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlbkZhY3Rvcnkoc3RyZWFtLmN1cnJlbnQo
KSwgInN0cmluZy0yIik7CisgICAgICAgIHJldHVybiBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0
YXRlKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHN0cmVhbS5iYWNrVXAoMSk7CisgICAgICB9
CisgICAgfQogCi0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2goaWRlbnRpZmllcnMpKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gJ3ZhcmlhYmxlJzsKLSAgICAgICAgfQorICAgIC8vIEhhbmRsZSBvcGVy
YXRvcnMgYW5kIGRlbGltaXRlcnMKKyAgICBpZiAoc3RyZWFtLm1hdGNoKG9wZXJhdG9ycykgfHwg
c3RyZWFtLm1hdGNoKHdvcmRPcGVyYXRvcnMpKSB7CisgICAgICByZXR1cm4gIm9wZXJhdG9yIjsK
KyAgICB9CisgICAgaWYgKHN0cmVhbS5tYXRjaChkZWxpbWl0ZXJzKSkgeworICAgICAgcmV0dXJu
ICJwdW5jdHVhdGlvbiI7CisgICAgfQogCi0gICAgICAgIGlmIChzdHJlYW0ubWF0Y2gocHJvcGVy
dGllcykpIHsKLSAgICAgICAgICAgIHJldHVybiAncHJvcGVydHknOwotICAgICAgICB9CisgICAg
aWYgKHN0cmVhbS5tYXRjaChjb25zdGFudHMpKSB7CisgICAgICByZXR1cm4gImF0b20iOworICAg
IH0KIAotICAgICAgICAvLyBIYW5kbGUgbm9uLWRldGVjdGVkIGl0ZW1zCi0gICAgICAgIHN0cmVh
bS5uZXh0KCk7Ci0gICAgICAgIHJldHVybiBFUlJPUkNMQVNTOworICAgIGlmIChzdHJlYW0ubWF0
Y2goa2V5d29yZHMpKSB7CisgICAgICByZXR1cm4gImtleXdvcmQiOwogICAgIH0KIAotICAgIGZ1
bmN0aW9uIHRva2VuRmFjdG9yeShkZWxpbWl0ZXIsIG91dGNsYXNzKSB7Ci0gICAgICAgIHZhciBz
aW5nbGVsaW5lID0gZGVsaW1pdGVyLmxlbmd0aCA9PSAxOwotICAgICAgICByZXR1cm4gZnVuY3Rp
b24oc3RyZWFtLCBzdGF0ZSkgewotICAgICAgICAgICAgd2hpbGUgKCFzdHJlYW0uZW9sKCkpIHsK
LSAgICAgICAgICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1teJyJcL1xcXS8pOwotICAgICAgICAg
ICAgICAgIGlmIChzdHJlYW0uZWF0KCdcXCcpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmVh
bS5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaW5nbGVsaW5lICYmIHN0cmVhbS5l
b2woKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dGNsYXNzOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJlYW0ubWF0Y2go
ZGVsaW1pdGVyKSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2Vu
QmFzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG91dGNsYXNzOwotICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmVhbS5lYXQoL1snIlwvXS8pOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzaW5nbGVs
aW5lKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbmYubW9kZS5zaW5nbGVMaW5lU3RyaW5nRXJy
b3JzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG91dGNsYXNzID0gRVJST1JDTEFTUzsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzdGF0ZS50b2tlbml6ZSA9
IHRva2VuQmFzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gb3V0Y2xhc3M7Ci0gICAgICAgIH07CisgICAgaWYgKHN0cmVhbS5tYXRjaChpZGVu
dGlmaWVycykpIHsKKyAgICAgIHJldHVybiAidmFyaWFibGUiOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uIGxvbmdDb21tZW50KHN0cmVhbSwgc3RhdGUpIHsKLSAgICAgICAgd2hpbGUgKCFzdHJlYW0u
ZW9sKCkpIHsKLSAgICAgICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW14jXS8pOwotICAgICAgICAg
ICAgaWYgKHN0cmVhbS5tYXRjaCgiIyMjIikpIHsKLSAgICAgICAgICAgICAgICBzdGF0ZS50b2tl
bml6ZSA9IHRva2VuQmFzZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHN0cmVhbS5lYXRXaGlsZSgiIyIpOwotICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiAiY29tbWVudCI7CisgICAgaWYgKHN0cmVhbS5tYXRjaChwcm9wZXJ0aWVzKSkgeworICAg
ICAgcmV0dXJuICJwcm9wZXJ0eSI7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gaW5kZW50KHN0cmVh
bSwgc3RhdGUsIHR5cGUpIHsKLSAgICAgICAgdHlwZSA9IHR5cGUgfHwgJ2NvZmZlZSc7Ci0gICAg
ICAgIHZhciBpbmRlbnRVbml0ID0gMDsKLSAgICAgICAgaWYgKHR5cGUgPT09ICdjb2ZmZWUnKSB7
Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLnNjb3Blcy5sZW5ndGg7IGkr
KykgewotICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zY29wZXNbaV0udHlwZSA9PT0gJ2NvZmZl
ZScpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5kZW50VW5pdCA9IHN0YXRlLnNjb3Blc1tpXS5v
ZmZzZXQgKyBjb25mLmluZGVudFVuaXQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAvLyBIYW5kbGUgbm9uLWRldGVjdGVk
IGl0ZW1zCisgICAgc3RyZWFtLm5leHQoKTsKKyAgICByZXR1cm4gRVJST1JDTEFTUzsKKyAgfQor
CisgIGZ1bmN0aW9uIHRva2VuRmFjdG9yeShkZWxpbWl0ZXIsIG91dGNsYXNzKSB7CisgICAgdmFy
IHNpbmdsZWxpbmUgPSBkZWxpbWl0ZXIubGVuZ3RoID09IDE7CisgICAgcmV0dXJuIGZ1bmN0aW9u
KHN0cmVhbSwgc3RhdGUpIHsKKyAgICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7CisgICAgICAg
IHN0cmVhbS5lYXRXaGlsZSgvW14nIlwvXFxdLyk7CisgICAgICAgIGlmIChzdHJlYW0uZWF0KCJc
XCIpKSB7CisgICAgICAgICAgc3RyZWFtLm5leHQoKTsKKyAgICAgICAgICBpZiAoc2luZ2xlbGlu
ZSAmJiBzdHJlYW0uZW9sKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBvdXRjbGFzczsKKyAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc3RyZWFtLm1hdGNoKGRlbGltaXRlcikpIHsKKyAg
ICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IHRva2VuQmFzZTsKKyAgICAgICAgICByZXR1cm4gb3V0
Y2xhc3M7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbmRlbnRVbml0ID0gc3RyZWFt
LmNvbHVtbigpICsgc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGg7CisgICAgICAgICAgc3RyZWFtLmVh
dCgvWyciXC9dLyk7CiAgICAgICAgIH0KLSAgICAgICAgc3RhdGUuc2NvcGVzLnVuc2hpZnQoewot
ICAgICAgICAgICAgb2Zmc2V0OiBpbmRlbnRVbml0LAotICAgICAgICAgICAgdHlwZTogdHlwZQot
ICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBkZWRlbnQoc3RyZWFtLCBzdGF0ZSkg
ewotICAgICAgICBpZiAoc3RhdGUuc2NvcGVzLmxlbmd0aCA9PSAxKSByZXR1cm47Ci0gICAgICAg
IGlmIChzdGF0ZS5zY29wZXNbMF0udHlwZSA9PT0gJ2NvZmZlZScpIHsKLSAgICAgICAgICAgIHZh
ciBfaW5kZW50ID0gc3RyZWFtLmluZGVudGF0aW9uKCk7Ci0gICAgICAgICAgICB2YXIgX2luZGVu
dF9pbmRleCA9IC0xOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0ZS5zY29w
ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAoX2luZGVudCA9PT0gc3RhdGUu
c2NvcGVzW2ldLm9mZnNldCkgewotICAgICAgICAgICAgICAgICAgICBfaW5kZW50X2luZGV4ID0g
aTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKF9pbmRlbnRfaW5kZXggPT09IC0xKSB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSAo
c3RhdGUuc2NvcGVzWzBdLm9mZnNldCAhPT0gX2luZGVudCkgewotICAgICAgICAgICAgICAgIHN0
YXRlLnNjb3Blcy5zaGlmdCgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgfQorICAgICAgaWYgKHNpbmdsZWxpbmUpIHsKKyAgICAgICAgaWYgKGNvbmYu
bW9kZS5zaW5nbGVMaW5lU3RyaW5nRXJyb3JzKSB7CisgICAgICAgICAgb3V0Y2xhc3MgPSBFUlJP
UkNMQVNTOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RhdGUuc2NvcGVzLnNoaWZ0
KCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgc3RhdGUudG9rZW5pemUg
PSB0b2tlbkJhc2U7CiAgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHJldHVybiBvdXRjbGFzczsK
KyAgICB9OworICB9CisKKyAgZnVuY3Rpb24gbG9uZ0NvbW1lbnQoc3RyZWFtLCBzdGF0ZSkgewor
ICAgIHdoaWxlICghc3RyZWFtLmVvbCgpKSB7CisgICAgICBzdHJlYW0uZWF0V2hpbGUoL1teI10v
KTsKKyAgICAgIGlmIChzdHJlYW0ubWF0Y2goIiMjIyIpKSB7CisgICAgICAgIHN0YXRlLnRva2Vu
aXplID0gdG9rZW5CYXNlOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHN0cmVhbS5l
YXRXaGlsZSgiIyIpOwogICAgIH0KLQotICAgIGZ1bmN0aW9uIHRva2VuTGV4ZXIoc3RyZWFtLCBz
dGF0ZSkgewotICAgICAgICB2YXIgc3R5bGUgPSBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRl
KTsKLSAgICAgICAgdmFyIGN1cnJlbnQgPSBzdHJlYW0uY3VycmVudCgpOwotCi0gICAgICAgIC8v
IEhhbmRsZSAnLicgY29ubmVjdGVkIGlkZW50aWZpZXJzCi0gICAgICAgIGlmIChjdXJyZW50ID09
PSAnLicpIHsKLSAgICAgICAgICAgIHN0eWxlID0gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0
ZSk7Ci0gICAgICAgICAgICBjdXJyZW50ID0gc3RyZWFtLmN1cnJlbnQoKTsKLSAgICAgICAgICAg
IGlmICgvXlwuW1x3JF0rJC8udGVzdChjdXJyZW50KSkgewotICAgICAgICAgICAgICAgIHJldHVy
biAndmFyaWFibGUnOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gRVJST1JDTEFTUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEhh
bmRsZSBzY29wZSBjaGFuZ2VzLgotICAgICAgICBpZiAoY3VycmVudCA9PT0gJ3JldHVybicpIHsK
LSAgICAgICAgICAgIHN0YXRlLmRlZGVudCArPSAxOwotICAgICAgICB9Ci0gICAgICAgIGlmICgo
KGN1cnJlbnQgPT09ICctPicgfHwgY3VycmVudCA9PT0gJz0+JykgJiYKLSAgICAgICAgICAgICAg
ICAgICFzdGF0ZS5sYW1iZGEgJiYKLSAgICAgICAgICAgICAgICAgIHN0YXRlLnNjb3Blc1swXS50
eXBlID09ICdjb2ZmZWUnICYmCi0gICAgICAgICAgICAgICAgICBzdHJlYW0ucGVlaygpID09PSAn
JykKLSAgICAgICAgICAgICAgIHx8IHN0eWxlID09PSAnaW5kZW50JykgewotICAgICAgICAgICAg
aW5kZW50KHN0cmVhbSwgc3RhdGUpOwotICAgICAgICB9Ci0gICAgICAgIHZhciBkZWxpbWl0ZXJf
aW5kZXggPSAnWyh7Jy5pbmRleE9mKGN1cnJlbnQpOwotICAgICAgICBpZiAoZGVsaW1pdGVyX2lu
ZGV4ICE9PSAtMSkgewotICAgICAgICAgICAgaW5kZW50KHN0cmVhbSwgc3RhdGUsICddKX0nLnNs
aWNlKGRlbGltaXRlcl9pbmRleCwgZGVsaW1pdGVyX2luZGV4KzEpKTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoaW5kZW50S2V5d29yZHMuZXhlYyhjdXJyZW50KSl7Ci0gICAgICAgICAgICBpbmRl
bnQoc3RyZWFtLCBzdGF0ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGN1cnJlbnQgPT0gJ3Ro
ZW4nKXsKLSAgICAgICAgICAgIGRlZGVudChzdHJlYW0sIHN0YXRlKTsKLSAgICAgICAgfQotCi0K
LSAgICAgICAgaWYgKHN0eWxlID09PSAnZGVkZW50JykgewotICAgICAgICAgICAgaWYgKGRlZGVu
dChzdHJlYW0sIHN0YXRlKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUkNMQVNTOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGRlbGltaXRlcl9pbmRleCA9ICddKX0n
LmluZGV4T2YoY3VycmVudCk7Ci0gICAgICAgIGlmIChkZWxpbWl0ZXJfaW5kZXggIT09IC0xKSB7
Ci0gICAgICAgICAgICBpZiAoZGVkZW50KHN0cmVhbSwgc3RhdGUpKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEVSUk9SQ0xBU1M7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKHN0YXRlLmRlZGVudCA+IDAgJiYgc3RyZWFtLmVvbCgpICYmIHN0YXRlLnNjb3Blc1swXS50
eXBlID09ICdjb2ZmZWUnKSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGUuc2NvcGVzLmxlbmd0aCA+
IDEpIHN0YXRlLnNjb3Blcy5zaGlmdCgpOwotICAgICAgICAgICAgc3RhdGUuZGVkZW50IC09IDE7
CisgICAgcmV0dXJuICJjb21tZW50IjsKKyAgfQorCisgIGZ1bmN0aW9uIGluZGVudChzdHJlYW0s
IHN0YXRlLCB0eXBlKSB7CisgICAgdHlwZSA9IHR5cGUgfHwgImNvZmZlZSI7CisgICAgdmFyIG9m
ZnNldCA9IDAsIGFsaWduID0gZmFsc2UsIGFsaWduT2Zmc2V0ID0gbnVsbDsKKyAgICBmb3IgKHZh
ciBzY29wZSA9IHN0YXRlLnNjb3BlOyBzY29wZTsgc2NvcGUgPSBzY29wZS5wcmV2KSB7CisgICAg
ICBpZiAoc2NvcGUudHlwZSA9PT0gImNvZmZlZSIpIHsKKyAgICAgICAgb2Zmc2V0ID0gc2NvcGUu
b2Zmc2V0ICsgY29uZi5pbmRlbnRVbml0OworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9
CisgICAgaWYgKHR5cGUgIT09ICJjb2ZmZWUiKSB7CisgICAgICBhbGlnbiA9IG51bGw7CisgICAg
ICBhbGlnbk9mZnNldCA9IHN0cmVhbS5jb2x1bW4oKSArIHN0cmVhbS5jdXJyZW50KCkubGVuZ3Ro
OworICAgIH0gZWxzZSBpZiAoc3RhdGUuc2NvcGUuYWxpZ24pIHsKKyAgICAgIHN0YXRlLnNjb3Bl
LmFsaWduID0gZmFsc2U7CisgICAgfQorICAgIHN0YXRlLnNjb3BlID0geworICAgICAgb2Zmc2V0
OiBvZmZzZXQsCisgICAgICB0eXBlOiB0eXBlLAorICAgICAgcHJldjogc3RhdGUuc2NvcGUsCisg
ICAgICBhbGlnbjogYWxpZ24sCisgICAgICBhbGlnbk9mZnNldDogYWxpZ25PZmZzZXQKKyAgICB9
OworICB9CisKKyAgZnVuY3Rpb24gZGVkZW50KHN0cmVhbSwgc3RhdGUpIHsKKyAgICBpZiAoIXN0
YXRlLnNjb3BlLnByZXYpIHJldHVybjsKKyAgICBpZiAoc3RhdGUuc2NvcGUudHlwZSA9PT0gImNv
ZmZlZSIpIHsKKyAgICAgIHZhciBfaW5kZW50ID0gc3RyZWFtLmluZGVudGF0aW9uKCk7CisgICAg
ICB2YXIgbWF0Y2hlZCA9IGZhbHNlOworICAgICAgZm9yICh2YXIgc2NvcGUgPSBzdGF0ZS5zY29w
ZTsgc2NvcGU7IHNjb3BlID0gc2NvcGUucHJldikgeworICAgICAgICBpZiAoX2luZGVudCA9PT0g
c2NvcGUub2Zmc2V0KSB7CisgICAgICAgICAgbWF0Y2hlZCA9IHRydWU7CisgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gc3R5bGU7CisgICAgICB9CisgICAgICBp
ZiAoIW1hdGNoZWQpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgICB3aGls
ZSAoc3RhdGUuc2NvcGUucHJldiAmJiBzdGF0ZS5zY29wZS5vZmZzZXQgIT09IF9pbmRlbnQpIHsK
KyAgICAgICAgc3RhdGUuc2NvcGUgPSBzdGF0ZS5zY29wZS5wcmV2OworICAgICAgfQorICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICBzdGF0ZS5zY29wZSA9IHN0YXRlLnNj
b3BlLnByZXY7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24g
dG9rZW5MZXhlcihzdHJlYW0sIHN0YXRlKSB7CisgICAgdmFyIHN0eWxlID0gc3RhdGUudG9rZW5p
emUoc3RyZWFtLCBzdGF0ZSk7CisgICAgdmFyIGN1cnJlbnQgPSBzdHJlYW0uY3VycmVudCgpOwor
CisgICAgLy8gSGFuZGxlICIuIiBjb25uZWN0ZWQgaWRlbnRpZmllcnMKKyAgICBpZiAoY3VycmVu
dCA9PT0gIi4iKSB7CisgICAgICBzdHlsZSA9IHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUp
OworICAgICAgY3VycmVudCA9IHN0cmVhbS5jdXJyZW50KCk7CisgICAgICBpZiAoL15cLltcdyRd
KyQvLnRlc3QoY3VycmVudCkpIHsKKyAgICAgICAgcmV0dXJuICJ2YXJpYWJsZSI7CisgICAgICB9
IGVsc2UgeworICAgICAgICByZXR1cm4gRVJST1JDTEFTUzsKKyAgICAgIH0KICAgICB9CiAKLSAg
ICB2YXIgZXh0ZXJuYWwgPSB7Ci0gICAgICAgIHN0YXJ0U3RhdGU6IGZ1bmN0aW9uKGJhc2Vjb2x1
bW4pIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgIHRva2VuaXplOiB0b2tl
bkJhc2UsCi0gICAgICAgICAgICAgIHNjb3BlczogW3tvZmZzZXQ6YmFzZWNvbHVtbiB8fCAwLCB0
eXBlOidjb2ZmZWUnfV0sCi0gICAgICAgICAgICAgIGxhc3RUb2tlbjogbnVsbCwKLSAgICAgICAg
ICAgICAgbGFtYmRhOiBmYWxzZSwKLSAgICAgICAgICAgICAgZGVkZW50OiAwCi0gICAgICAgICAg
fTsKLSAgICAgICAgfSwKLQotICAgICAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkg
ewotICAgICAgICAgICAgdmFyIHN0eWxlID0gdG9rZW5MZXhlcihzdHJlYW0sIHN0YXRlKTsKLQot
ICAgICAgICAgICAgc3RhdGUubGFzdFRva2VuID0ge3N0eWxlOnN0eWxlLCBjb250ZW50OiBzdHJl
YW0uY3VycmVudCgpfTsKLQotICAgICAgICAgICAgaWYgKHN0cmVhbS5lb2woKSAmJiBzdHJlYW0u
bGFtYmRhKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUubGFtYmRhID0gZmFsc2U7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBzdHlsZTsKLSAgICAgICAgfSwKKyAgICAvLyBI
YW5kbGUgc2NvcGUgY2hhbmdlcy4KKyAgICBpZiAoY3VycmVudCA9PT0gInJldHVybiIpIHsKKyAg
ICAgIHN0YXRlLmRlZGVudCArPSAxOworICAgIH0KKyAgICBpZiAoKChjdXJyZW50ID09PSAiLT4i
IHx8IGN1cnJlbnQgPT09ICI9PiIpICYmCisgICAgICAgICAhc3RhdGUubGFtYmRhICYmCisgICAg
ICAgICAhc3RyZWFtLnBlZWsoKSkKKyAgICAgICAgfHwgc3R5bGUgPT09ICJpbmRlbnQiKSB7Cisg
ICAgICBpbmRlbnQoc3RyZWFtLCBzdGF0ZSk7CisgICAgfQorICAgIHZhciBkZWxpbWl0ZXJfaW5k
ZXggPSAiWyh7Ii5pbmRleE9mKGN1cnJlbnQpOworICAgIGlmIChkZWxpbWl0ZXJfaW5kZXggIT09
IC0xKSB7CisgICAgICBpbmRlbnQoc3RyZWFtLCBzdGF0ZSwgIl0pfSIuc2xpY2UoZGVsaW1pdGVy
X2luZGV4LCBkZWxpbWl0ZXJfaW5kZXgrMSkpOworICAgIH0KKyAgICBpZiAoaW5kZW50S2V5d29y
ZHMuZXhlYyhjdXJyZW50KSl7CisgICAgICBpbmRlbnQoc3RyZWFtLCBzdGF0ZSk7CisgICAgfQor
ICAgIGlmIChjdXJyZW50ID09ICJ0aGVuIil7CisgICAgICBkZWRlbnQoc3RyZWFtLCBzdGF0ZSk7
CisgICAgfQogCi0gICAgICAgIGluZGVudDogZnVuY3Rpb24oc3RhdGUpIHsKLSAgICAgICAgICAg
IGlmIChzdGF0ZS50b2tlbml6ZSAhPSB0b2tlbkJhc2UpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmV0dXJuIHN0YXRlLnNjb3Blc1sw
XS5vZmZzZXQ7Ci0gICAgICAgIH0sCisgICAgaWYgKHN0eWxlID09PSAiZGVkZW50IikgeworICAg
ICAgaWYgKGRlZGVudChzdHJlYW0sIHN0YXRlKSkgeworICAgICAgICByZXR1cm4gRVJST1JDTEFT
UzsKKyAgICAgIH0KKyAgICB9CisgICAgZGVsaW1pdGVyX2luZGV4ID0gIl0pfSIuaW5kZXhPZihj
dXJyZW50KTsKKyAgICBpZiAoZGVsaW1pdGVyX2luZGV4ICE9PSAtMSkgeworICAgICAgd2hpbGUg
KHN0YXRlLnNjb3BlLnR5cGUgPT0gImNvZmZlZSIgJiYgc3RhdGUuc2NvcGUucHJldikKKyAgICAg
ICAgc3RhdGUuc2NvcGUgPSBzdGF0ZS5zY29wZS5wcmV2OworICAgICAgaWYgKHN0YXRlLnNjb3Bl
LnR5cGUgPT0gY3VycmVudCkKKyAgICAgICAgc3RhdGUuc2NvcGUgPSBzdGF0ZS5zY29wZS5wcmV2
OworICAgIH0KKyAgICBpZiAoc3RhdGUuZGVkZW50ID4gMCAmJiBzdHJlYW0uZW9sKCkgJiYgc3Rh
dGUuc2NvcGUudHlwZSA9PSAiY29mZmVlIikgeworICAgICAgaWYgKHN0YXRlLnNjb3BlLnByZXYp
IHN0YXRlLnNjb3BlID0gc3RhdGUuc2NvcGUucHJldjsKKyAgICAgIHN0YXRlLmRlZGVudCAtPSAx
OworICAgIH0KIAotICAgICAgICBsaW5lQ29tbWVudDogIiMiLAotICAgICAgICBmb2xkOiAiaW5k
ZW50IgotICAgIH07Ci0gICAgcmV0dXJuIGV4dGVybmFsOworICAgIHJldHVybiBzdHlsZTsKKyAg
fQorCisgIHZhciBleHRlcm5hbCA9IHsKKyAgICBzdGFydFN0YXRlOiBmdW5jdGlvbihiYXNlY29s
dW1uKSB7CisgICAgICByZXR1cm4geworICAgICAgICB0b2tlbml6ZTogdG9rZW5CYXNlLAorICAg
ICAgICBzY29wZToge29mZnNldDpiYXNlY29sdW1uIHx8IDAsIHR5cGU6ImNvZmZlZSIsIHByZXY6
IG51bGwsIGFsaWduOiBmYWxzZX0sCisgICAgICAgIGxhc3RUb2tlbjogbnVsbCwKKyAgICAgICAg
bGFtYmRhOiBmYWxzZSwKKyAgICAgICAgZGVkZW50OiAwCisgICAgICB9OworICAgIH0sCisKKyAg
ICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgdmFyIGZpbGxBbGlnbiA9
IHN0YXRlLnNjb3BlLmFsaWduID09PSBudWxsICYmIHN0YXRlLnNjb3BlOworICAgICAgaWYgKGZp
bGxBbGlnbiAmJiBzdHJlYW0uc29sKCkpIGZpbGxBbGlnbi5hbGlnbiA9IGZhbHNlOworCisgICAg
ICB2YXIgc3R5bGUgPSB0b2tlbkxleGVyKHN0cmVhbSwgc3RhdGUpOworICAgICAgaWYgKGZpbGxB
bGlnbiAmJiBzdHlsZSAmJiBzdHlsZSAhPSAiY29tbWVudCIpIGZpbGxBbGlnbi5hbGlnbiA9IHRy
dWU7CisKKyAgICAgIHN0YXRlLmxhc3RUb2tlbiA9IHtzdHlsZTpzdHlsZSwgY29udGVudDogc3Ry
ZWFtLmN1cnJlbnQoKX07CisKKyAgICAgIGlmIChzdHJlYW0uZW9sKCkgJiYgc3RyZWFtLmxhbWJk
YSkgeworICAgICAgICBzdGF0ZS5sYW1iZGEgPSBmYWxzZTsKKyAgICAgIH0KKworICAgICAgcmV0
dXJuIHN0eWxlOworICAgIH0sCisKKyAgICBpbmRlbnQ6IGZ1bmN0aW9uKHN0YXRlLCB0ZXh0KSB7
CisgICAgICBpZiAoc3RhdGUudG9rZW5pemUgIT0gdG9rZW5CYXNlKSByZXR1cm4gMDsKKyAgICAg
IHZhciBzY29wZSA9IHN0YXRlLnNjb3BlOworICAgICAgdmFyIGNsb3NlciA9IHRleHQgJiYgIl0p
fSIuaW5kZXhPZih0ZXh0LmNoYXJBdCgwKSkgPiAtMTsKKyAgICAgIGlmIChjbG9zZXIpIHdoaWxl
IChzY29wZS50eXBlID09ICJjb2ZmZWUiICYmIHNjb3BlLnByZXYpIHNjb3BlID0gc2NvcGUucHJl
djsKKyAgICAgIHZhciBjbG9zZXMgPSBjbG9zZXIgJiYgc2NvcGUudHlwZSA9PT0gdGV4dC5jaGFy
QXQoMCk7CisgICAgICBpZiAoc2NvcGUuYWxpZ24pCisgICAgICAgIHJldHVybiBzY29wZS5hbGln
bk9mZnNldCAtIChjbG9zZXMgPyAxIDogMCk7CisgICAgICBlbHNlCisgICAgICAgIHJldHVybiAo
Y2xvc2VzID8gc2NvcGUucHJldiA6IHNjb3BlKS5vZmZzZXQ7CisgICAgfSwKKworICAgIGxpbmVD
b21tZW50OiAiIyIsCisgICAgZm9sZDogImluZGVudCIKKyAgfTsKKyAgcmV0dXJuIGV4dGVybmFs
OwogfSk7CiAKLUNvZGVNaXJyb3IuZGVmaW5lTUlNRSgndGV4dC94LWNvZmZlZXNjcmlwdCcsICdj
b2ZmZWVzY3JpcHQnKTsKK0NvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC94LWNvZmZlZXNjcmlw
dCIsICJjb2ZmZWVzY3JpcHQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY3NzLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jc3MuanMKaW5kZXggMDg1
YjExOWRlNGRmYzgyZjVmNzQzY2E1MmEyZjgwNDU5MGNhNWY0MS4uZDhjMzBjZjMzZDZmZTFiNWI0
NTJmMzllNmZhYTBhYWU5YTM2MWFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jc3MuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jc3MuanMKQEAg
LTMsNyArMyw3IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiY3NzIiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKIAogICBpZiAoIXBhcnNlckNvbmZpZy5wcm9wZXJ0eUtleXdvcmRz
KSBwYXJzZXJDb25maWcgPSBDb2RlTWlycm9yLnJlc29sdmVNb2RlKCJ0ZXh0L2NzcyIpOwogCi0g
IHZhciBpbmRlbnRVbml0ID0gY29uZmlnLmluZGVudFVuaXQsCisgIHZhciBpbmRlbnRVbml0ID0g
Y29uZmlnLmluZGVudFVuaXQgfHwgY29uZmlnLnRhYlNpemUgfHwgMiwKICAgICAgIGhvb2tzID0g
cGFyc2VyQ29uZmlnLmhvb2tzIHx8IHt9LAogICAgICAgYXRNZWRpYVR5cGVzID0gcGFyc2VyQ29u
ZmlnLmF0TWVkaWFUeXBlcyB8fCB7fSwKICAgICAgIGF0TWVkaWFGZWF0dXJlcyA9IHBhcnNlckNv
bmZpZy5hdE1lZGlhRmVhdHVyZXMgfHwge30sCkBAIC0zNyw3ICszNyw3IEBAIENvZGVNaXJyb3Iu
ZGVmaW5lTW9kZSgiY3NzIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAg
IHN0cmVhbS5tYXRjaCgvXlxzKlx3Ki8pOwogICAgICAgcmV0dXJuIHJldCgia2V5d29yZCIsICJp
bXBvcnRhbnQiKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSkgeworICAgIGVs
c2UgaWYgKC9cZC8udGVzdChjaCkgfHwgY2ggPT0gIi4iICYmIHN0cmVhbS5lYXQoL1xkLykpIHsK
ICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3LiVdLyk7CiAgICAgICByZXR1cm4gcmV0KCJudW1i
ZXIiLCAidW5pdCIpOwogICAgIH0KQEAgLTI1OSw4ICsyNTksMTMgQEAgQ29kZU1pcnJvci5kZWZp
bmVNb2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgfQog
ICAgICAgZWxzZSBpZiAodHlwZSA9PSAifSIpIHsKICAgICAgICAgaWYgKGNvbnRleHQgPT0gImlu
dGVycG9sYXRpb24iKSBzdHlsZSA9ICJvcGVyYXRvciI7Ci0gICAgICAgIHN0YXRlLnN0YWNrLnBv
cCgpOwotICAgICAgICBpZiAoY29udGV4dCA9PSAicHJvcGVydHlWYWx1ZSIpIHN0YXRlLnN0YWNr
LnBvcCgpOworICAgICAgICAvLyBQb3Agb2ZmIGVuZCBvZiBhcnJheSB1bnRpbCB7IGlzIHJlYWNo
ZWQKKyAgICAgICAgd2hpbGUoc3RhdGUuc3RhY2subGVuZ3RoKXsKKyAgICAgICAgICB2YXIgcmVt
b3ZlZCA9IHN0YXRlLnN0YWNrLnBvcCgpOworICAgICAgICAgIGlmKHJlbW92ZWQuaW5kZXhPZigi
eyIpID4gLTEgfHwgcmVtb3ZlZCA9PSAiYmxvY2siIHx8IHJlbW92ZWQgPT0gInJ1bGUiKXsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgfQogICAgICAg
ZWxzZSBpZiAodHlwZSA9PSAiaW50ZXJwb2xhdGlvbiIpIHN0YXRlLnN0YWNrLnB1c2goImludGVy
cG9sYXRpb24iKTsKICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIkBtZWRpYSIpIHN0YXRlLnN0YWNr
LnB1c2goIkBtZWRpYSIpOwpAQCAtMjc4LDExICsyODMsMTMgQEAgQ29kZU1pcnJvci5kZWZpbmVN
b2RlKCJjc3MiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgICAgICBlbHNl
IHN0YXRlLnN0YWNrLnB1c2goIigiKTsKICAgICAgIH0KICAgICAgIGVsc2UgaWYgKHR5cGUgPT0g
IikiKSB7Ci0gICAgICAgIGlmIChjb250ZXh0ID09ICJwcm9wZXJ0eVZhbHVlIikgewotICAgICAg
ICAgIC8vIEluIEBtZWRpYVR5cGUoIHdpdGhvdXQgY2xvc2luZyA7IGFmdGVyIHByb3BlcnR5VmFs
dWUKLSAgICAgICAgICBzdGF0ZS5zdGFjay5wb3AoKTsKKyAgICAgICAgLy8gUG9wIG9mZiBlbmQg
b2YgYXJyYXkgdW50aWwgKCBpcyByZWFjaGVkCisgICAgICAgIHdoaWxlKHN0YXRlLnN0YWNrLmxl
bmd0aCl7CisgICAgICAgICAgdmFyIHJlbW92ZWQgPSBzdGF0ZS5zdGFjay5wb3AoKTsKKyAgICAg
ICAgICBpZihyZW1vdmVkLmluZGV4T2YoIigiKSA+IC0xKXsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBzdGF0ZS5zdGFjay5wb3AoKTsKICAgICAg
IH0KICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIjoiICYmIHN0YXRlLmxhc3RUb2tlbiA9PSAicHJv
cGVydHkiKSBzdGF0ZS5zdGFjay5wdXNoKCJwcm9wZXJ0eVZhbHVlIik7CiAgICAgICBlbHNlIGlm
IChjb250ZXh0ID09ICJwcm9wZXJ0eVZhbHVlIiAmJiB0eXBlID09ICI7Iikgc3RhdGUuc3RhY2su
cG9wKCk7CkBAIC02MDIsNiArNjA5LDExIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiY3NzIiwg
ZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gWyJ2YXJpYWJsZSIsICJ2YXJpYWJsZSJdOwogICAgICAgfSwKKyAgICAgICIsIjogZnVuY3Rp
b24oc3RyZWFtLCBzdGF0ZSkgeworICAgICAgICBpZiAoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2su
bGVuZ3RoIC0gMV0gPT0gInByb3BlcnR5VmFsdWUiICYmIHN0cmVhbS5tYXRjaCgvXiAqXCQvLCBm
YWxzZSkpIHsKKyAgICAgICAgICByZXR1cm4gWyJvcGVyYXRvciIsICI7Il07CisgICAgICAgIH0K
KyAgICAgIH0sCiAgICAgICAiLyI6IGZ1bmN0aW9uKHN0cmVhbSwgc3RhdGUpIHsKICAgICAgICAg
aWYgKHN0cmVhbS5lYXQoIi8iKSkgewogICAgICAgICAgIHN0cmVhbS5za2lwVG9FbmQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nv
ZGVNaXJyb3IvaHRtbG1peGVkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9odG1sbWl4ZWQuanMKaW5kZXggZWMwYzIxZDI0YWQ4YzE5
OGY4NGEwNmVhYWNjMWY3ZTY3MDIzZGFjYS4uYjU5ZWYzN2VkYmUxMDEzN2QwNmE3OTVlOGIzMzA1
MDk4Mzg4Yjc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9odG1sbWl4ZWQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9odG1sbWl4ZWQuanMKQEAg
LTQ0LDcgKzQ0LDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJodG1sbWl4ZWQiLCBmdW5jdGlv
bihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIGlmIChjbG9zZSA+IC0xKSBzdHJlYW0uYmFj
a1VwKGN1ci5sZW5ndGggLSBjbG9zZSk7CiAgICAgZWxzZSBpZiAobSA9IGN1ci5tYXRjaCgvPFwv
PyQvKSkgewogICAgICAgc3RyZWFtLmJhY2tVcChjdXIubGVuZ3RoKTsKLSAgICAgIGlmICghc3Ry
ZWFtLm1hdGNoKHBhdCwgZmFsc2UpKSBzdHJlYW0ubWF0Y2goY3VyWzBdKTsKKyAgICAgIGlmICgh
c3RyZWFtLm1hdGNoKHBhdCwgZmFsc2UpKSBzdHJlYW0ubWF0Y2goY3VyKTsKICAgICB9CiAgICAg
cmV0dXJuIHN0eWxlOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2phdmFzY3JpcHQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2phdmFzY3JpcHQu
anMKaW5kZXggZThhY2UzMmQ4OTZhYzFjMDgzZDVhYjMxNWYxODQ3OTA5NjgzYjI2Ni4uZjI3YzA2
MzQ2YzYzZWU5MTE4MDQ4ZjI1MjI2NTk3Y2YxYTRiMjZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9qYXZhc2NyaXB0
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nv
ZGVNaXJyb3IvamF2YXNjcmlwdC5qcwpAQCAtMjEsNyArMjEsOCBAQCBDb2RlTWlycm9yLmRlZmlu
ZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAg
ICAgImZvciI6IGt3KCJmb3IiKSwgInN3aXRjaCI6IGt3KCJzd2l0Y2giKSwgImNhc2UiOiBrdygi
Y2FzZSIpLCAiZGVmYXVsdCI6IGt3KCJkZWZhdWx0IiksCiAgICAgICAiaW4iOiBvcGVyYXRvciwg
InR5cGVvZiI6IG9wZXJhdG9yLCAiaW5zdGFuY2VvZiI6IG9wZXJhdG9yLAogICAgICAgInRydWUi
OiBhdG9tLCAiZmFsc2UiOiBhdG9tLCAibnVsbCI6IGF0b20sICJ1bmRlZmluZWQiOiBhdG9tLCAi
TmFOIjogYXRvbSwgIkluZmluaXR5IjogYXRvbSwKLSAgICAgICJ0aGlzIjoga3coInRoaXMiKQor
ICAgICAgInRoaXMiOiBrdygidGhpcyIpLCAibW9kdWxlIjoga3coIm1vZHVsZSIpLCAiY2xhc3Mi
OiBrdygiY2xhc3MiKSwgInN1cGVyIjoga3coImF0b20iKSwKKyAgICAgICJ5aWVsZCI6IEMsICJl
eHBvcnQiOiBrdygiZXhwb3J0IiksICJpbXBvcnQiOiBrdygiaW1wb3J0IiksICJleHRlbmRzIjog
QwogICAgIH07CiAKICAgICAvLyBFeHRlbmQgdGhlICdub3JtYWwnIGtleXdvcmRzIHdpdGggdGhl
IFR5cGVTY3JpcHQgbGFuZ3VhZ2UgZXh0ZW5zaW9ucwpAQCAtMzAsNyArMzEsNiBAQCBDb2RlTWly
cm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZp
ZykgewogICAgICAgdmFyIHRzS2V5d29yZHMgPSB7CiAgICAgICAgIC8vIG9iamVjdC1saWtlIHRo
aW5ncwogICAgICAgICAiaW50ZXJmYWNlIjoga3coImludGVyZmFjZSIpLAotICAgICAgICAiY2xh
c3MiOiBrdygiY2xhc3MiKSwKICAgICAgICAgImV4dGVuZHMiOiBrdygiZXh0ZW5kcyIpLAogICAg
ICAgICAiY29uc3RydWN0b3IiOiBrdygiY29uc3RydWN0b3IiKSwKIApAQCAtNDAsOCArNDAsNiBA
QCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBh
cnNlckNvbmZpZykgewogICAgICAgICAicHJvdGVjdGVkIjoga3coInByb3RlY3RlZCIpLAogICAg
ICAgICAic3RhdGljIjoga3coInN0YXRpYyIpLAogCi0gICAgICAgICJzdXBlciI6IGt3KCJzdXBl
ciIpLAotCiAgICAgICAgIC8vIHR5cGVzCiAgICAgICAgICJzdHJpbmciOiB0eXBlLCAibnVtYmVy
IjogdHlwZSwgImJvb2wiOiB0eXBlLCAiYW55IjogdHlwZQogICAgICAgfTsKQEAgLTU2LDExICs1
NCw2IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZp
ZywgcGFyc2VyQ29uZmlnKSB7CiAKICAgdmFyIGlzT3BlcmF0b3JDaGFyID0gL1srXC0qJiU9PD4h
P3x+Xl0vOwogCi0gIGZ1bmN0aW9uIGNoYWluKHN0cmVhbSwgc3RhdGUsIGYpIHsKLSAgICBzdGF0
ZS50b2tlbml6ZSA9IGY7Ci0gICAgcmV0dXJuIGYoc3RyZWFtLCBzdGF0ZSk7Ci0gIH0KLQogICBm
dW5jdGlvbiBuZXh0VW50aWxVbmVzY2FwZWQoc3RyZWFtLCBlbmQpIHsKICAgICB2YXIgZXNjYXBl
ZCA9IGZhbHNlLCBuZXh0OwogICAgIHdoaWxlICgobmV4dCA9IHN0cmVhbS5uZXh0KCkpICE9IG51
bGwpIHsKQEAgLTc4LDUwICs3MSw1MSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3Jp
cHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIHR5cGUgPSB0cDsgY29u
dGVudCA9IGNvbnQ7CiAgICAgcmV0dXJuIHN0eWxlOwogICB9Ci0gIGZ1bmN0aW9uIGpzVG9rZW5C
YXNlKHN0cmVhbSwgc3RhdGUpIHsKKyAgZnVuY3Rpb24gdG9rZW5CYXNlKHN0cmVhbSwgc3RhdGUp
IHsKICAgICB2YXIgY2ggPSBzdHJlYW0ubmV4dCgpOwotICAgIGlmIChjaCA9PSAnIicgfHwgY2gg
PT0gIiciKQotICAgICAgcmV0dXJuIGNoYWluKHN0cmVhbSwgc3RhdGUsIGpzVG9rZW5TdHJpbmco
Y2gpKTsKLSAgICBlbHNlIGlmIChjaCA9PSAiLiIgJiYgc3RyZWFtLm1hdGNoKC9eXGQrKD86W2VF
XVsrXC1dP1xkKyk/LykpCisgICAgaWYgKGNoID09ICciJyB8fCBjaCA9PSAiJyIpIHsKKyAgICAg
IHN0YXRlLnRva2VuaXplID0gdG9rZW5TdHJpbmcoY2gpOworICAgICAgcmV0dXJuIHN0YXRlLnRv
a2VuaXplKHN0cmVhbSwgc3RhdGUpOworICAgIH0gZWxzZSBpZiAoY2ggPT0gIi4iICYmIHN0cmVh
bS5tYXRjaCgvXlxkKyg/OltlRV1bK1wtXT9cZCspPy8pKSB7CiAgICAgICByZXR1cm4gcmV0KCJu
dW1iZXIiLCAibnVtYmVyIik7Ci0gICAgZWxzZSBpZiAoL1tcW1xde31cKFwpLDtcOlwuXS8udGVz
dChjaCkpCisgICAgfSBlbHNlIGlmIChjaCA9PSAiLiIgJiYgc3RyZWFtLm1hdGNoKCIuLiIpKSB7
CisgICAgICByZXR1cm4gcmV0KCJzcHJlYWQiLCAibWV0YSIpOworICAgIH0gZWxzZSBpZiAoL1tc
W1xde31cKFwpLDtcOlwuXS8udGVzdChjaCkpIHsKICAgICAgIHJldHVybiByZXQoY2gpOwotICAg
IGVsc2UgaWYgKGNoID09ICIwIiAmJiBzdHJlYW0uZWF0KC94L2kpKSB7CisgICAgfSBlbHNlIGlm
IChjaCA9PSAiPSIgJiYgc3RyZWFtLmVhdCgiPiIpKSB7CisgICAgICByZXR1cm4gcmV0KCI9PiIp
OworICAgIH0gZWxzZSBpZiAoY2ggPT0gIjAiICYmIHN0cmVhbS5lYXQoL3gvaSkpIHsKICAgICAg
IHN0cmVhbS5lYXRXaGlsZSgvW1xkYS1mXS9pKTsKICAgICAgIHJldHVybiByZXQoIm51bWJlciIs
ICJudW1iZXIiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSkgeworICAgIH0g
ZWxzZSBpZiAoL1xkLy50ZXN0KGNoKSkgewogICAgICAgc3RyZWFtLm1hdGNoKC9eXGQqKD86XC5c
ZCopPyg/OltlRV1bK1wtXT9cZCspPy8pOwogICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgIm51
bWJlciIpOwotICAgIH0KLSAgICBlbHNlIGlmIChjaCA9PSAiLyIpIHsKKyAgICB9IGVsc2UgaWYg
KGNoID09ICIvIikgewogICAgICAgaWYgKHN0cmVhbS5lYXQoIioiKSkgewotICAgICAgICByZXR1
cm4gY2hhaW4oc3RyZWFtLCBzdGF0ZSwganNUb2tlbkNvbW1lbnQpOwotICAgICAgfQotICAgICAg
ZWxzZSBpZiAoc3RyZWFtLmVhdCgiLyIpKSB7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9r
ZW5Db21tZW50OworICAgICAgICByZXR1cm4gdG9rZW5Db21tZW50KHN0cmVhbSwgc3RhdGUpOwor
ICAgICAgfSBlbHNlIGlmIChzdHJlYW0uZWF0KCIvIikpIHsKICAgICAgICAgc3RyZWFtLnNraXBU
b0VuZCgpOwogICAgICAgICByZXR1cm4gcmV0KCJjb21tZW50IiwgImNvbW1lbnQiKTsKLSAgICAg
IH0KLSAgICAgIGVsc2UgaWYgKHN0YXRlLmxhc3RUeXBlID09ICJvcGVyYXRvciIgfHwgc3RhdGUu
bGFzdFR5cGUgPT0gImtleXdvcmQgYyIgfHwKLSAgICAgICAgICAgICAgIC9eW1xbe31cKCw7Ol0k
Ly50ZXN0KHN0YXRlLmxhc3RUeXBlKSkgeworICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sYXN0VHlw
ZSA9PSAib3BlcmF0b3IiIHx8IHN0YXRlLmxhc3RUeXBlID09ICJrZXl3b3JkIGMiIHx8CisgICAg
ICAgICAgICAgICBzdGF0ZS5sYXN0VHlwZSA9PSAic29mIiB8fCAvXltcW3t9XCgsOzpdJC8udGVz
dChzdGF0ZS5sYXN0VHlwZSkpIHsKICAgICAgICAgbmV4dFVudGlsVW5lc2NhcGVkKHN0cmVhbSwg
Ii8iKTsKICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bZ2lteV0vKTsgLy8gJ3knIGlzICJzdGlj
a3kiIG9wdGlvbiBpbiBNb3ppbGxhCiAgICAgICAgIHJldHVybiByZXQoInJlZ2V4cCIsICJzdHJp
bmctMiIpOwotICAgICAgfQotICAgICAgZWxzZSB7CisgICAgICB9IGVsc2UgewogICAgICAgICBz
dHJlYW0uZWF0V2hpbGUoaXNPcGVyYXRvckNoYXIpOwogICAgICAgICByZXR1cm4gcmV0KCJvcGVy
YXRvciIsIG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOwogICAgICAgfQotICAgIH0KLSAgICBlbHNl
IGlmIChjaCA9PSAiIyIpIHsKKyAgICB9IGVsc2UgaWYgKGNoID09ICJgIikgeworICAgICAgc3Rh
dGUudG9rZW5pemUgPSB0b2tlblF1YXNpOworICAgICAgcmV0dXJuIHRva2VuUXVhc2koc3RyZWFt
LCBzdGF0ZSk7CisgICAgfSBlbHNlIGlmIChjaCA9PSAiIyIpIHsKICAgICAgIHN0cmVhbS5za2lw
VG9FbmQoKTsKICAgICAgIHJldHVybiByZXQoImVycm9yIiwgImVycm9yIik7Ci0gICAgfQotICAg
IGVsc2UgaWYgKGlzT3BlcmF0b3JDaGFyLnRlc3QoY2gpKSB7CisgICAgfSBlbHNlIGlmIChpc09w
ZXJhdG9yQ2hhci50ZXN0KGNoKSkgewogICAgICAgc3RyZWFtLmVhdFdoaWxlKGlzT3BlcmF0b3JD
aGFyKTsKICAgICAgIHJldHVybiByZXQoIm9wZXJhdG9yIiwgbnVsbCwgc3RyZWFtLmN1cnJlbnQo
KSk7Ci0gICAgfQotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICBzdHJlYW0uZWF0V2hp
bGUoL1tcd1wkX10vKTsKICAgICAgIHZhciB3b3JkID0gc3RyZWFtLmN1cnJlbnQoKSwga25vd24g
PSBrZXl3b3Jkcy5wcm9wZXJ0eUlzRW51bWVyYWJsZSh3b3JkKSAmJiBrZXl3b3Jkc1t3b3JkXTsK
ICAgICAgIHJldHVybiAoa25vd24gJiYgc3RhdGUubGFzdFR5cGUgIT0gIi4iKSA/IHJldChrbm93
bi50eXBlLCBrbm93bi5zdHlsZSwgd29yZCkgOgpAQCAtMTI5LDE5ICsxMjMsMTkgQEAgQ29kZU1p
cnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25m
aWcpIHsKICAgICB9CiAgIH0KIAotICBmdW5jdGlvbiBqc1Rva2VuU3RyaW5nKHF1b3RlKSB7Cisg
IGZ1bmN0aW9uIHRva2VuU3RyaW5nKHF1b3RlKSB7CiAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0cmVh
bSwgc3RhdGUpIHsKICAgICAgIGlmICghbmV4dFVudGlsVW5lc2NhcGVkKHN0cmVhbSwgcXVvdGUp
KQotICAgICAgICBzdGF0ZS50b2tlbml6ZSA9IGpzVG9rZW5CYXNlOworICAgICAgICBzdGF0ZS50
b2tlbml6ZSA9IHRva2VuQmFzZTsKICAgICAgIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmci
KTsKICAgICB9OwogICB9CiAKLSAgZnVuY3Rpb24ganNUb2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0
ZSkgeworICBmdW5jdGlvbiB0b2tlbkNvbW1lbnQoc3RyZWFtLCBzdGF0ZSkgewogICAgIHZhciBt
YXliZUVuZCA9IGZhbHNlLCBjaDsKICAgICB3aGlsZSAoY2ggPSBzdHJlYW0ubmV4dCgpKSB7CiAg
ICAgICBpZiAoY2ggPT0gIi8iICYmIG1heWJlRW5kKSB7Ci0gICAgICAgIHN0YXRlLnRva2VuaXpl
ID0ganNUb2tlbkJhc2U7CisgICAgICAgIHN0YXRlLnRva2VuaXplID0gdG9rZW5CYXNlOwogICAg
ICAgICBicmVhazsKICAgICAgIH0KICAgICAgIG1heWJlRW5kID0gKGNoID09ICIqIik7CkBAIC0x
NDksNiArMTQzLDUwIEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0
aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgcmV0dXJuIHJldCgiY29tbWVudCIsICJj
b21tZW50Iik7CiAgIH0KIAorICBmdW5jdGlvbiB0b2tlblF1YXNpKHN0cmVhbSwgc3RhdGUpIHsK
KyAgICB2YXIgZXNjYXBlZCA9IGZhbHNlLCBuZXh0OworICAgIHdoaWxlICgobmV4dCA9IHN0cmVh
bS5uZXh0KCkpICE9IG51bGwpIHsKKyAgICAgIGlmICghZXNjYXBlZCAmJiAobmV4dCA9PSAiYCIg
fHwgbmV4dCA9PSAiJCIgJiYgc3RyZWFtLmVhdCgieyIpKSkgeworICAgICAgICBzdGF0ZS50b2tl
bml6ZSA9IHRva2VuQmFzZTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBlc2NhcGVk
ID0gIWVzY2FwZWQgJiYgbmV4dCA9PSAiXFwiOworICAgIH0KKyAgICByZXR1cm4gcmV0KCJxdWFz
aSIsICJzdHJpbmctMiIsIHN0cmVhbS5jdXJyZW50KCkpOworICB9CisKKyAgdmFyIGJyYWNrZXRz
ID0gIihbe31dKSI7CisgIC8vIFRoaXMgaXMgYSBjcnVkZSBsb29rYWhlYWQgdHJpY2sgdG8gdHJ5
IGFuZCBub3RpY2UgdGhhdCB3ZSdyZQorICAvLyBwYXJzaW5nIHRoZSBhcmd1bWVudCBwYXR0ZXJu
cyBmb3IgYSBmYXQtYXJyb3cgZnVuY3Rpb24gYmVmb3JlIHdlCisgIC8vIGFjdHVhbGx5IGhpdCB0
aGUgYXJyb3cgdG9rZW4uIEl0IG9ubHkgd29ya3MgaWYgdGhlIGFycm93IGlzIG9uCisgIC8vIHRo
ZSBzYW1lIGxpbmUgYXMgdGhlIGFyZ3VtZW50cyBhbmQgdGhlcmUncyBubyBzdHJhbmdlIG5vaXNl
CisgIC8vIChjb21tZW50cykgaW4gYmV0d2Vlbi4gRmFsbGJhY2sgaXMgdG8gb25seSBub3RpY2Ug
d2hlbiB3ZSBoaXQgdGhlCisgIC8vIGFycm93LCBhbmQgbm90IGRlY2xhcmUgdGhlIGFyZ3VtZW50
cyBhcyBsb2NhbHMgZm9yIHRoZSBhcnJvdworICAvLyBib2R5LgorICBmdW5jdGlvbiBmaW5kRmF0
QXJyb3coc3RyZWFtLCBzdGF0ZSkgeworICAgIGlmIChzdGF0ZS5mYXRBcnJvd0F0KSBzdGF0ZS5m
YXRBcnJvd0F0ID0gbnVsbDsKKyAgICB2YXIgYXJyb3cgPSBzdHJlYW0uc3RyaW5nLmluZGV4T2Yo
Ij0+Iiwgc3RyZWFtLnN0YXJ0KTsKKyAgICBpZiAoYXJyb3cgPCAwKSByZXR1cm47CisKKyAgICB2
YXIgZGVwdGggPSAwLCBzYXdTb21ldGhpbmcgPSBmYWxzZTsKKyAgICBmb3IgKHZhciBwb3MgPSBh
cnJvdyAtIDE7IHBvcyA+PSAwOyAtLXBvcykgeworICAgICAgdmFyIGNoID0gc3RyZWFtLnN0cmlu
Zy5jaGFyQXQocG9zKTsKKyAgICAgIHZhciBicmFja2V0ID0gYnJhY2tldHMuaW5kZXhPZihjaCk7
CisgICAgICBpZiAoYnJhY2tldCA+PSAwICYmIGJyYWNrZXQgPCAzKSB7CisgICAgICAgIGlmICgh
ZGVwdGgpIHsgKytwb3M7IGJyZWFrOyB9CisgICAgICAgIGlmICgtLWRlcHRoID09IDApIGJyZWFr
OworICAgICAgfSBlbHNlIGlmIChicmFja2V0ID49IDMgJiYgYnJhY2tldCA8IDYpIHsKKyAgICAg
ICAgKytkZXB0aDsKKyAgICAgIH0gZWxzZSBpZiAoL1skXHddLy50ZXN0KGNoKSkgeworICAgICAg
ICBzYXdTb21ldGhpbmcgPSB0cnVlOworICAgICAgfSBlbHNlIGlmIChzYXdTb21ldGhpbmcgJiYg
IWRlcHRoKSB7CisgICAgICAgICsrcG9zOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9
CisgICAgaWYgKHNhd1NvbWV0aGluZyAmJiAhZGVwdGgpIHN0YXRlLmZhdEFycm93QXQgPSBwb3M7
CisgIH0KKwogICAvLyBQYXJzZXIKIAogICB2YXIgYXRvbWljVHlwZXMgPSB7ImF0b20iOiB0cnVl
LCAibnVtYmVyIjogdHJ1ZSwgInZhcmlhYmxlIjogdHJ1ZSwgInN0cmluZyI6IHRydWUsICJyZWdl
eHAiOiB0cnVlLCAidGhpcyI6IHRydWV9OwpAQCAtMTY1LDYgKzIwMywxMCBAQCBDb2RlTWlycm9y
LmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykg
ewogICBmdW5jdGlvbiBpblNjb3BlKHN0YXRlLCB2YXJuYW1lKSB7CiAgICAgZm9yICh2YXIgdiA9
IHN0YXRlLmxvY2FsVmFyczsgdjsgdiA9IHYubmV4dCkKICAgICAgIGlmICh2Lm5hbWUgPT0gdmFy
bmFtZSkgcmV0dXJuIHRydWU7CisgICAgZm9yICh2YXIgY3ggPSBzdGF0ZS5jb250ZXh0OyBjeDsg
Y3ggPSBjeC5wcmV2KSB7CisgICAgICBmb3IgKHZhciB2ID0gY3gudmFyczsgdjsgdiA9IHYubmV4
dCkKKyAgICAgICAgaWYgKHYubmFtZSA9PSB2YXJuYW1lKSByZXR1cm4gdHJ1ZTsKKyAgICB9CiAg
IH0KIAogICBmdW5jdGlvbiBwYXJzZUpTKHN0YXRlLCBzdHlsZSwgdHlwZSwgY29udGVudCwgc3Ry
ZWFtKSB7CkBAIC0yMTEsNyArMjUzLDggQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2Ny
aXB0IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgIHN0YXRlLmxvY2Fs
VmFycyA9IHtuYW1lOiB2YXJuYW1lLCBuZXh0OiBzdGF0ZS5sb2NhbFZhcnN9OwogICAgIH0gZWxz
ZSB7CiAgICAgICBpZiAoaW5MaXN0KHN0YXRlLmdsb2JhbFZhcnMpKSByZXR1cm47Ci0gICAgICBz
dGF0ZS5nbG9iYWxWYXJzID0ge25hbWU6IHZhcm5hbWUsIG5leHQ6IHN0YXRlLmdsb2JhbFZhcnN9
OworICAgICAgaWYgKHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzKQorICAgICAgICBzdGF0ZS5nbG9i
YWxWYXJzID0ge25hbWU6IHZhcm5hbWUsIG5leHQ6IHN0YXRlLmdsb2JhbFZhcnN9OwogICAgIH0K
ICAgfQogCkBAIC0yNTMsMTYgKzI5NiwxNSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFz
Y3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIH07CiAgIH0KIAot
ICBmdW5jdGlvbiBzdGF0ZW1lbnQodHlwZSkgewotICAgIGlmICh0eXBlID09ICJ2YXIiKSByZXR1
cm4gY29udChwdXNobGV4KCJ2YXJkZWYiKSwgdmFyZGVmMSwgZXhwZWN0KCI7IiksIHBvcGxleCk7
CisgIGZ1bmN0aW9uIHN0YXRlbWVudCh0eXBlLCB2YWx1ZSkgeworICAgIGlmICh0eXBlID09ICJ2
YXIiKSByZXR1cm4gY29udChwdXNobGV4KCJ2YXJkZWYiLCB2YWx1ZS5sZW5ndGgpLCB2YXJkZWYs
IGV4cGVjdCgiOyIpLCBwb3BsZXgpOwogICAgIGlmICh0eXBlID09ICJrZXl3b3JkIGEiKSByZXR1
cm4gY29udChwdXNobGV4KCJmb3JtIiksIGV4cHJlc3Npb24sIHN0YXRlbWVudCwgcG9wbGV4KTsK
ICAgICBpZiAodHlwZSA9PSAia2V5d29yZCBiIikgcmV0dXJuIGNvbnQocHVzaGxleCgiZm9ybSIp
LCBzdGF0ZW1lbnQsIHBvcGxleCk7CiAgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gY29udChw
dXNobGV4KCJ9IiksIGJsb2NrLCBwb3BsZXgpOwogICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJu
IGNvbnQoKTsKICAgICBpZiAodHlwZSA9PSAiaWYiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3Jt
IiksIGV4cHJlc3Npb24sIHN0YXRlbWVudCwgcG9wbGV4LCBtYXliZWVsc2UpOwogICAgIGlmICh0
eXBlID09ICJmdW5jdGlvbiIpIHJldHVybiBjb250KGZ1bmN0aW9uZGVmKTsKLSAgICBpZiAodHlw
ZSA9PSAiZm9yIikgcmV0dXJuIGNvbnQocHVzaGxleCgiZm9ybSIpLCBleHBlY3QoIigiKSwgcHVz
aGxleCgiKSIpLCBmb3JzcGVjMSwgZXhwZWN0KCIpIiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvcGxleCwgc3RhdGVtZW50LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09
ICJmb3IiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIGZvcnNwZWMsIHBvcGxleCwgc3Rh
dGVtZW50LCBwb3BsZXgpOwogICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHJldHVybiBjb250
KHB1c2hsZXgoInN0YXQiKSwgbWF5YmVsYWJlbCk7CiAgICAgaWYgKHR5cGUgPT0gInN3aXRjaCIp
IHJldHVybiBjb250KHB1c2hsZXgoImZvcm0iKSwgZXhwcmVzc2lvbiwgcHVzaGxleCgifSIsICJz
d2l0Y2giKSwgZXhwZWN0KCJ7IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJsb2NrLCBwb3BsZXgsIHBvcGxleCk7CkBAIC0yNzAsNiArMzEyLDEwIEBAIENvZGVNaXJy
b3IuZGVmaW5lTW9kZSgiamF2YXNjcmlwdCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmln
KSB7CiAgICAgaWYgKHR5cGUgPT0gImRlZmF1bHQiKSByZXR1cm4gY29udChleHBlY3QoIjoiKSk7
CiAgICAgaWYgKHR5cGUgPT0gImNhdGNoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiZm9ybSIpLCBw
dXNoY29udGV4dCwgZXhwZWN0KCIoIiksIGZ1bmFyZywgZXhwZWN0KCIpIiksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50LCBwb3BsZXgsIHBvcGNvbnRleHQp
OworICAgIGlmICh0eXBlID09ICJtb2R1bGUiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiks
IHB1c2hjb250ZXh0LCBhZnRlck1vZHVsZSwgcG9wY29udGV4dCwgcG9wbGV4KTsKKyAgICBpZiAo
dHlwZSA9PSAiY2xhc3MiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIGNsYXNzTmFtZSwg
b2JqbGl0LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJleHBvcnQiKSByZXR1cm4gY29udChw
dXNobGV4KCJmb3JtIiksIGFmdGVyRXhwb3J0LCBwb3BsZXgpOworICAgIGlmICh0eXBlID09ICJp
bXBvcnQiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIGFmdGVySW1wb3J0LCBwb3BsZXgp
OwogICAgIHJldHVybiBwYXNzKHB1c2hsZXgoInN0YXQiKSwgZXhwcmVzc2lvbiwgZXhwZWN0KCI7
IiksIHBvcGxleCk7CiAgIH0KICAgZnVuY3Rpb24gZXhwcmVzc2lvbih0eXBlKSB7CkBAIC0yNzks
MTQgKzMyNSwyMCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlv
bihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIHJldHVybiBleHByZXNzaW9uSW5uZXIodHlw
ZSwgdHJ1ZSk7CiAgIH0KICAgZnVuY3Rpb24gZXhwcmVzc2lvbklubmVyKHR5cGUsIG5vQ29tbWEp
IHsKKyAgICBpZiAoY3guc3RhdGUuZmF0QXJyb3dBdCA9PSBjeC5zdHJlYW0uc3RhcnQpIHsKKyAg
ICAgIHZhciBib2R5ID0gbm9Db21tYSA/IGFycm93Qm9keU5vQ29tbWEgOiBhcnJvd0JvZHk7Cisg
ICAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hjb250ZXh0LCBjb21tYXNlcChw
YXR0ZXJuLCAiKSIpLCBleHBlY3QoIj0+IiksIGJvZHksIHBvcGNvbnRleHQpOworICAgICAgZWxz
ZSBpZiAodHlwZSA9PSAidmFyaWFibGUiKSByZXR1cm4gcGFzcyhwdXNoY29udGV4dCwgcGF0dGVy
biwgZXhwZWN0KCI9PiIpLCBib2R5LCBwb3Bjb250ZXh0KTsKKyAgICB9CisKICAgICB2YXIgbWF5
YmVvcCA9IG5vQ29tbWEgPyBtYXliZW9wZXJhdG9yTm9Db21tYSA6IG1heWJlb3BlcmF0b3JDb21t
YTsKICAgICBpZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIHJldHVybiBjb250
KG1heWJlb3ApOwogICAgIGlmICh0eXBlID09ICJmdW5jdGlvbiIpIHJldHVybiBjb250KGZ1bmN0
aW9uZGVmKTsKICAgICBpZiAodHlwZSA9PSAia2V5d29yZCBjIikgcmV0dXJuIGNvbnQobm9Db21t
YSA/IG1heWJlZXhwcmVzc2lvbk5vQ29tbWEgOiBtYXliZWV4cHJlc3Npb24pOwotICAgIGlmICh0
eXBlID09ICIoIikgcmV0dXJuIGNvbnQocHVzaGxleCgiKSIpLCBtYXliZWV4cHJlc3Npb24sIGV4
cGVjdCgiKSIpLCBwb3BsZXgsIG1heWJlb3ApOwotICAgIGlmICh0eXBlID09ICJvcGVyYXRvciIp
IHJldHVybiBjb250KG5vQ29tbWEgPyBleHByZXNzaW9uTm9Db21tYSA6IGV4cHJlc3Npb24pOwot
ICAgIGlmICh0eXBlID09ICJbIikgcmV0dXJuIGNvbnQocHVzaGxleCgiXSIpLCBjb21tYXNlcChl
eHByZXNzaW9uTm9Db21tYSwgIl0iKSwgcG9wbGV4LCBtYXliZW9wKTsKLSAgICBpZiAodHlwZSA9
PSAieyIpIHJldHVybiBjb250KHB1c2hsZXgoIn0iKSwgY29tbWFzZXAob2JqcHJvcCwgIn0iKSwg
cG9wbGV4LCBtYXliZW9wKTsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hs
ZXgoIikiKSwgbWF5YmVleHByZXNzaW9uLCBjb21wcmVoZW5zaW9uLCBleHBlY3QoIikiKSwgcG9w
bGV4LCBtYXliZW9wKTsKKyAgICBpZiAodHlwZSA9PSAib3BlcmF0b3IiIHx8IHR5cGUgPT0gInNw
cmVhZCIpIHJldHVybiBjb250KG5vQ29tbWEgPyBleHByZXNzaW9uTm9Db21tYSA6IGV4cHJlc3Np
b24pOworICAgIGlmICh0eXBlID09ICJbIikgcmV0dXJuIGNvbnQocHVzaGxleCgiXSIpLCBleHBy
ZXNzaW9uTm9Db21tYSwgbWF5YmVBcnJheUNvbXByZWhlbnNpb24sIHBvcGxleCwgbWF5YmVvcCk7
CisgICAgaWYgKHR5cGUgPT0gInsiKSByZXR1cm4gY29udChjb21tYXNlcChvYmpwcm9wLCAifSIp
LCBtYXliZW9wKTsKICAgICByZXR1cm4gY29udCgpOwogICB9CiAgIGZ1bmN0aW9uIG1heWJlZXhw
cmVzc2lvbih0eXBlKSB7CkBAIC0zMDUsMTYgKzM1Nyw0MCBAQCBDb2RlTWlycm9yLmRlZmluZU1v
ZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICBmdW5j
dGlvbiBtYXliZW9wZXJhdG9yTm9Db21tYSh0eXBlLCB2YWx1ZSwgbm9Db21tYSkgewogICAgIHZh
ciBtZSA9IG5vQ29tbWEgPT0gZmFsc2UgPyBtYXliZW9wZXJhdG9yQ29tbWEgOiBtYXliZW9wZXJh
dG9yTm9Db21tYTsKICAgICB2YXIgZXhwciA9IG5vQ29tbWEgPT0gZmFsc2UgPyBleHByZXNzaW9u
IDogZXhwcmVzc2lvbk5vQ29tbWE7CisgICAgaWYgKHZhbHVlID09ICI9PiIpIHJldHVybiBjb250
KHB1c2hjb250ZXh0LCBub0NvbW1hID8gYXJyb3dCb2R5Tm9Db21tYSA6IGFycm93Qm9keSwgcG9w
Y29udGV4dCk7CiAgICAgaWYgKHR5cGUgPT0gIm9wZXJhdG9yIikgewogICAgICAgaWYgKC9cK1wr
fC0tLy50ZXN0KHZhbHVlKSkgcmV0dXJuIGNvbnQobWUpOwogICAgICAgaWYgKHZhbHVlID09ICI/
IikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbiwgZXhwZWN0KCI6IiksIGV4cHIpOwogICAgICAgcmV0
dXJuIGNvbnQoZXhwcik7CiAgICAgfQorICAgIGlmICh0eXBlID09ICJxdWFzaSIpIHsgY3guY2Mu
cHVzaChtZSk7IHJldHVybiBxdWFzaSh2YWx1ZSk7IH0KICAgICBpZiAodHlwZSA9PSAiOyIpIHJl
dHVybjsKLSAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiLCAiY2Fs
bCIpLCBjb21tYXNlcChleHByZXNzaW9uTm9Db21tYSwgIikiKSwgcG9wbGV4LCBtZSk7CisgICAg
aWYgKHR5cGUgPT0gIigiKSByZXR1cm4gY29udChjb21tYXNlcChleHByZXNzaW9uTm9Db21tYSwg
IikiLCAiY2FsbCIpLCBtZSk7CiAgICAgaWYgKHR5cGUgPT0gIi4iKSByZXR1cm4gY29udChwcm9w
ZXJ0eSwgbWUpOwogICAgIGlmICh0eXBlID09ICJbIikgcmV0dXJuIGNvbnQocHVzaGxleCgiXSIp
LCBtYXliZWV4cHJlc3Npb24sIGV4cGVjdCgiXSIpLCBwb3BsZXgsIG1lKTsKICAgfQorICBmdW5j
dGlvbiBxdWFzaSh2YWx1ZSkgeworICAgIGlmICghdmFsdWUpIGRlYnVnZ2VyOworICAgIGlmICh2
YWx1ZS5zbGljZSh2YWx1ZS5sZW5ndGggLSAyKSAhPSAiJHsiKSByZXR1cm4gY29udCgpOworICAg
IHJldHVybiBjb250KGV4cHJlc3Npb24sIGNvbnRpbnVlUXVhc2kpOworICB9CisgIGZ1bmN0aW9u
IGNvbnRpbnVlUXVhc2kodHlwZSkgeworICAgIGlmICh0eXBlID09ICJ9IikgeworICAgICAgY3gu
bWFya2VkID0gInN0cmluZy0yIjsKKyAgICAgIGN4LnN0YXRlLnRva2VuaXplID0gdG9rZW5RdWFz
aTsKKyAgICAgIHJldHVybiBjb250KCk7CisgICAgfQorICB9CisgIGZ1bmN0aW9uIGFycm93Qm9k
eSh0eXBlKSB7CisgICAgZmluZEZhdEFycm93KGN4LnN0cmVhbSwgY3guc3RhdGUpOworICAgIGlm
ICh0eXBlID09ICJ7IikgcmV0dXJuIHBhc3Moc3RhdGVtZW50KTsKKyAgICByZXR1cm4gcGFzcyhl
eHByZXNzaW9uKTsKKyAgfQorICBmdW5jdGlvbiBhcnJvd0JvZHlOb0NvbW1hKHR5cGUpIHsKKyAg
ICBmaW5kRmF0QXJyb3coY3guc3RyZWFtLCBjeC5zdGF0ZSk7CisgICAgaWYgKHR5cGUgPT0gInsi
KSByZXR1cm4gcGFzcyhzdGF0ZW1lbnQpOworICAgIHJldHVybiBwYXNzKGV4cHJlc3Npb25Ob0Nv
bW1hKTsKKyAgfQogICBmdW5jdGlvbiBtYXliZWxhYmVsKHR5cGUpIHsKICAgICBpZiAodHlwZSA9
PSAiOiIpIHJldHVybiBjb250KHBvcGxleCwgc3RhdGVtZW50KTsKICAgICByZXR1cm4gcGFzcyht
YXliZW9wZXJhdG9yQ29tbWEsIGV4cGVjdCgiOyIpLCBwb3BsZXgpOwpAQCAtMzI4LDE2ICs0MDQs
MjEgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0IiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKICAgICAgIGlmICh2YWx1ZSA9PSAiZ2V0IiB8fCB2YWx1ZSA9PSAi
c2V0IikgcmV0dXJuIGNvbnQoZ2V0dGVyU2V0dGVyKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0g
Im51bWJlciIgfHwgdHlwZSA9PSAic3RyaW5nIikgewogICAgICAgY3gubWFya2VkID0gdHlwZSAr
ICIgcHJvcGVydHkiOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAiWyIpIHsKKyAgICAgIHJldHVy
biBjb250KGV4cHJlc3Npb24sIGV4cGVjdCgiXSIpLCBhZnRlcnByb3ApOwogICAgIH0KLSAgICBp
ZiAoYXRvbWljVHlwZXMuaGFzT3duUHJvcGVydHkodHlwZSkpIHJldHVybiBjb250KGV4cGVjdCgi
OiIpLCBleHByZXNzaW9uTm9Db21tYSk7CisgICAgaWYgKGF0b21pY1R5cGVzLmhhc093blByb3Bl
cnR5KHR5cGUpKSByZXR1cm4gY29udChhZnRlcnByb3ApOwogICB9CiAgIGZ1bmN0aW9uIGdldHRl
clNldHRlcih0eXBlKSB7Ci0gICAgaWYgKHR5cGUgPT0gIjoiKSByZXR1cm4gY29udChleHByZXNz
aW9uKTsKLSAgICBpZiAodHlwZSAhPSAidmFyaWFibGUiKSByZXR1cm4gY29udChleHBlY3QoIjoi
KSwgZXhwcmVzc2lvbik7CisgICAgaWYgKHR5cGUgIT0gInZhcmlhYmxlIikgcmV0dXJuIHBhc3Mo
YWZ0ZXJwcm9wKTsKICAgICBjeC5tYXJrZWQgPSAicHJvcGVydHkiOwogICAgIHJldHVybiBjb250
KGZ1bmN0aW9uZGVmKTsKICAgfQotICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQpIHsKKyAg
ZnVuY3Rpb24gYWZ0ZXJwcm9wKHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAiOiIpIHJldHVybiBj
b250KGV4cHJlc3Npb25Ob0NvbW1hKTsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBwYXNz
KGZ1bmN0aW9uZGVmKTsKKyAgfQorICBmdW5jdGlvbiBjb21tYXNlcCh3aGF0LCBlbmQsIGluZm8p
IHsKICAgICBmdW5jdGlvbiBwcm9jZWVkKHR5cGUpIHsKICAgICAgIGlmICh0eXBlID09ICIsIikg
ewogICAgICAgICB2YXIgbGV4ID0gY3guc3RhdGUubGV4aWNhbDsKQEAgLTM0OSw3ICs0MzAsOCBA
QCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFzY3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBh
cnNlckNvbmZpZykgewogICAgIH0KICAgICByZXR1cm4gZnVuY3Rpb24odHlwZSkgewogICAgICAg
aWYgKHR5cGUgPT0gZW5kKSByZXR1cm4gY29udCgpOwotICAgICAgZWxzZSByZXR1cm4gcGFzcyh3
aGF0LCBwcm9jZWVkKTsKKyAgICAgIGlmIChpbmZvID09PSBmYWxzZSkgcmV0dXJuIHBhc3Mod2hh
dCwgcHJvY2VlZCk7CisgICAgICByZXR1cm4gcGFzcyhwdXNobGV4KGVuZCwgaW5mbyksIHdoYXQs
IHByb2NlZWQsIHBvcGxleCk7CiAgICAgfTsKICAgfQogICBmdW5jdGlvbiBibG9jayh0eXBlKSB7
CkBAIC0zNTcsNjcgKzQzOSwxMjEgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJqYXZhc2NyaXB0
IiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICByZXR1cm4gcGFzcyhzdGF0
ZW1lbnQsIGJsb2NrKTsKICAgfQogICBmdW5jdGlvbiBtYXliZXR5cGUodHlwZSkgewotICAgIGlm
ICh0eXBlID09ICI6IikgcmV0dXJuIGNvbnQodHlwZWRlZik7Ci0gICAgcmV0dXJuIHBhc3MoKTsK
KyAgICBpZiAoaXNUUyAmJiB0eXBlID09ICI6IikgcmV0dXJuIGNvbnQodHlwZWRlZik7CiAgIH0K
ICAgZnVuY3Rpb24gdHlwZWRlZih0eXBlKSB7CiAgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIil7
Y3gubWFya2VkID0gInZhcmlhYmxlLTMiOyByZXR1cm4gY29udCgpO30KLSAgICByZXR1cm4gcGFz
cygpOwogICB9Ci0gIGZ1bmN0aW9uIHZhcmRlZjEodHlwZSwgdmFsdWUpIHsKLSAgICBpZiAodHlw
ZSA9PSAidmFyaWFibGUiKSB7CisgIGZ1bmN0aW9uIHZhcmRlZigpIHsKKyAgICByZXR1cm4gcGFz
cyhwYXR0ZXJuLCBtYXliZXR5cGUsIG1heWJlQXNzaWduLCB2YXJkZWZDb250KTsKKyAgfQorICBm
dW5jdGlvbiBwYXR0ZXJuKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxl
IikgeyByZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBjb250KCk7IH0KKyAgICBpZiAodHlwZSA9PSAi
WyIpIHJldHVybiBjb250KGNvbW1hc2VwKHBhdHRlcm4sICJdIikpOworICAgIGlmICh0eXBlID09
ICJ7IikgcmV0dXJuIGNvbnQoY29tbWFzZXAocHJvcHBhdHRlcm4sICJ9IikpOworICB9CisgIGZ1
bmN0aW9uIHByb3BwYXR0ZXJuKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInZhcmlh
YmxlIiAmJiAhY3guc3RyZWFtLm1hdGNoKC9eXHMqOi8sIGZhbHNlKSkgewogICAgICAgcmVnaXN0
ZXIodmFsdWUpOwotICAgICAgcmV0dXJuIGlzVFMgPyBjb250KG1heWJldHlwZSwgdmFyZGVmMikg
OiBjb250KHZhcmRlZjIpOworICAgICAgcmV0dXJuIGNvbnQobWF5YmVBc3NpZ24pOwogICAgIH0K
LSAgICByZXR1cm4gcGFzcygpOworICAgIGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIGN4Lm1hcmtl
ZCA9ICJwcm9wZXJ0eSI7CisgICAgcmV0dXJuIGNvbnQoZXhwZWN0KCI6IiksIHBhdHRlcm4sIG1h
eWJlQXNzaWduKTsKKyAgfQorICBmdW5jdGlvbiBtYXliZUFzc2lnbihfdHlwZSwgdmFsdWUpIHsK
KyAgICBpZiAodmFsdWUgPT0gIj0iKSByZXR1cm4gY29udChleHByZXNzaW9uTm9Db21tYSk7CiAg
IH0KLSAgZnVuY3Rpb24gdmFyZGVmMih0eXBlLCB2YWx1ZSkgewotICAgIGlmICh2YWx1ZSA9PSAi
PSIpIHJldHVybiBjb250KGV4cHJlc3Npb25Ob0NvbW1hLCB2YXJkZWYyKTsKLSAgICBpZiAodHlw
ZSA9PSAiLCIpIHJldHVybiBjb250KHZhcmRlZjEpOworICBmdW5jdGlvbiB2YXJkZWZDb250KHR5
cGUpIHsKKyAgICBpZiAodHlwZSA9PSAiLCIpIHJldHVybiBjb250KHZhcmRlZik7CiAgIH0KICAg
ZnVuY3Rpb24gbWF5YmVlbHNlKHR5cGUsIHZhbHVlKSB7CiAgICAgaWYgKHR5cGUgPT0gImtleXdv
cmQgYiIgJiYgdmFsdWUgPT0gImVsc2UiKSByZXR1cm4gY29udChwdXNobGV4KCJmb3JtIiksIHN0
YXRlbWVudCwgcG9wbGV4KTsKICAgfQorICBmdW5jdGlvbiBmb3JzcGVjKHR5cGUpIHsKKyAgICBp
ZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hsZXgoIikiKSwgZm9yc3BlYzEsIGV4cGVj
dCgiKSIpKTsKKyAgfQogICBmdW5jdGlvbiBmb3JzcGVjMSh0eXBlKSB7Ci0gICAgaWYgKHR5cGUg
PT0gInZhciIpIHJldHVybiBjb250KHZhcmRlZjEsIGV4cGVjdCgiOyIpLCBmb3JzcGVjMik7Cisg
ICAgaWYgKHR5cGUgPT0gInZhciIpIHJldHVybiBjb250KHZhcmRlZiwgZXhwZWN0KCI7IiksIGZv
cnNwZWMyKTsKICAgICBpZiAodHlwZSA9PSAiOyIpIHJldHVybiBjb250KGZvcnNwZWMyKTsKLSAg
ICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSByZXR1cm4gY29udChmb3JtYXliZWluKTsKKyAgICBp
ZiAodHlwZSA9PSAidmFyaWFibGUiKSByZXR1cm4gY29udChmb3JtYXliZWlub2YpOwogICAgIHJl
dHVybiBwYXNzKGV4cHJlc3Npb24sIGV4cGVjdCgiOyIpLCBmb3JzcGVjMik7CiAgIH0KLSAgZnVu
Y3Rpb24gZm9ybWF5YmVpbihfdHlwZSwgdmFsdWUpIHsKLSAgICBpZiAodmFsdWUgPT0gImluIikg
cmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7CisgIGZ1bmN0aW9uIGZvcm1heWJlaW5vZihfdHlwZSwg
dmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gImluIiB8fCB2YWx1ZSA9PSAib2YiKSB7IGN4Lm1h
cmtlZCA9ICJrZXl3b3JkIjsgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7IH0KICAgICByZXR1cm4g
Y29udChtYXliZW9wZXJhdG9yQ29tbWEsIGZvcnNwZWMyKTsKICAgfQogICBmdW5jdGlvbiBmb3Jz
cGVjMih0eXBlLCB2YWx1ZSkgewogICAgIGlmICh0eXBlID09ICI7IikgcmV0dXJuIGNvbnQoZm9y
c3BlYzMpOwotICAgIGlmICh2YWx1ZSA9PSAiaW4iKSByZXR1cm4gY29udChleHByZXNzaW9uKTsK
KyAgICBpZiAodmFsdWUgPT0gImluIiB8fCB2YWx1ZSA9PSAib2YiKSB7IGN4Lm1hcmtlZCA9ICJr
ZXl3b3JkIjsgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7IH0KICAgICByZXR1cm4gcGFzcyhleHBy
ZXNzaW9uLCBleHBlY3QoIjsiKSwgZm9yc3BlYzMpOwogICB9CiAgIGZ1bmN0aW9uIGZvcnNwZWMz
KHR5cGUpIHsKICAgICBpZiAodHlwZSAhPSAiKSIpIGNvbnQoZXhwcmVzc2lvbik7CiAgIH0KICAg
ZnVuY3Rpb24gZnVuY3Rpb25kZWYodHlwZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gIioi
KSB7Y3gubWFya2VkID0gImtleXdvcmQiOyByZXR1cm4gY29udChmdW5jdGlvbmRlZik7fQogICAg
IGlmICh0eXBlID09ICJ2YXJpYWJsZSIpIHtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBjb250KGZ1
bmN0aW9uZGVmKTt9Ci0gICAgaWYgKHR5cGUgPT0gIigiKSByZXR1cm4gY29udChwdXNobGV4KCIp
IiksIHB1c2hjb250ZXh0LCBjb21tYXNlcChmdW5hcmcsICIpIiksIHBvcGxleCwgc3RhdGVtZW50
LCBwb3Bjb250ZXh0KTsKKyAgICBpZiAodHlwZSA9PSAiKCIpIHJldHVybiBjb250KHB1c2hjb250
ZXh0LCBjb21tYXNlcChmdW5hcmcsICIpIiksIHN0YXRlbWVudCwgcG9wY29udGV4dCk7CisgIH0K
KyAgZnVuY3Rpb24gZnVuYXJnKHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAic3ByZWFkIikgcmV0
dXJuIGNvbnQoZnVuYXJnKTsKKyAgICByZXR1cm4gcGFzcyhwYXR0ZXJuLCBtYXliZXR5cGUpOwor
ICB9CisgIGZ1bmN0aW9uIGNsYXNzTmFtZSh0eXBlLCB2YWx1ZSkgeworICAgIGlmICh0eXBlID09
ICJ2YXJpYWJsZSIpIHtyZWdpc3Rlcih2YWx1ZSk7IHJldHVybiBjb250KGNsYXNzTmFtZUFmdGVy
KTt9CisgIH0KKyAgZnVuY3Rpb24gY2xhc3NOYW1lQWZ0ZXIoX3R5cGUsIHZhbHVlKSB7CisgICAg
aWYgKHZhbHVlID09ICJleHRlbmRzIikgcmV0dXJuIGNvbnQoZXhwcmVzc2lvbik7CisgIH0KKyAg
ZnVuY3Rpb24gb2JqbGl0KHR5cGUpIHsKKyAgICBpZiAodHlwZSA9PSAieyIpIHJldHVybiBjb250
KGNvbW1hc2VwKG9ianByb3AsICJ9IikpOworICB9CisgIGZ1bmN0aW9uIGFmdGVyTW9kdWxlKHR5
cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUgPT0gInN0cmluZyIpIHJldHVybiBjb250KHN0YXRl
bWVudCk7CisgICAgaWYgKHR5cGUgPT0gInZhcmlhYmxlIikgeyByZWdpc3Rlcih2YWx1ZSk7IHJl
dHVybiBjb250KG1heWJlRnJvbSk7IH0KKyAgfQorICBmdW5jdGlvbiBhZnRlckV4cG9ydChfdHlw
ZSwgdmFsdWUpIHsKKyAgICBpZiAodmFsdWUgPT0gIioiKSB7IGN4Lm1hcmtlZCA9ICJrZXl3b3Jk
IjsgcmV0dXJuIGNvbnQobWF5YmVGcm9tLCBleHBlY3QoIjsiKSk7IH0KKyAgICBpZiAodmFsdWUg
PT0gImRlZmF1bHQiKSB7IGN4Lm1hcmtlZCA9ICJrZXl3b3JkIjsgcmV0dXJuIGNvbnQoZXhwcmVz
c2lvbiwgZXhwZWN0KCI7IikpOyB9CisgICAgcmV0dXJuIHBhc3Moc3RhdGVtZW50KTsKKyAgfQor
ICBmdW5jdGlvbiBhZnRlckltcG9ydCh0eXBlKSB7CisgICAgaWYgKHR5cGUgPT0gInN0cmluZyIp
IHJldHVybiBjb250KCk7CisgICAgcmV0dXJuIHBhc3MoaW1wb3J0U3BlYywgbWF5YmVGcm9tKTsK
KyAgfQorICBmdW5jdGlvbiBpbXBvcnRTcGVjKHR5cGUsIHZhbHVlKSB7CisgICAgaWYgKHR5cGUg
PT0gInsiKSByZXR1cm4gY29udChjb21tYXNlcChpbXBvcnRTcGVjLCAifSIpKTsKKyAgICBpZiAo
dHlwZSA9PSAidmFyaWFibGUiKSByZWdpc3Rlcih2YWx1ZSk7CisgICAgcmV0dXJuIGNvbnQoKTsK
KyAgfQorICBmdW5jdGlvbiBtYXliZUZyb20oX3R5cGUsIHZhbHVlKSB7CisgICAgaWYgKHZhbHVl
ID09ICJmcm9tIikgeyBjeC5tYXJrZWQgPSAia2V5d29yZCI7IHJldHVybiBjb250KGV4cHJlc3Np
b24pOyB9CisgIH0KKyAgZnVuY3Rpb24gbWF5YmVBcnJheUNvbXByZWhlbnNpb24odHlwZSkgewor
ICAgIGlmICh0eXBlID09ICJmb3IiKSByZXR1cm4gcGFzcyhjb21wcmVoZW5zaW9uKTsKKyAgICBp
ZiAodHlwZSA9PSAiLCIpIHJldHVybiBjb250KGNvbW1hc2VwKGV4cHJlc3Npb25Ob0NvbW1hLCAi
XSIsIGZhbHNlKSk7CisgICAgcmV0dXJuIHBhc3MoY29tbWFzZXAoZXhwcmVzc2lvbk5vQ29tbWEs
ICJdIiwgZmFsc2UpKTsKICAgfQotICBmdW5jdGlvbiBmdW5hcmcodHlwZSwgdmFsdWUpIHsKLSAg
ICBpZiAodHlwZSA9PSAidmFyaWFibGUiKSB7cmVnaXN0ZXIodmFsdWUpOyByZXR1cm4gaXNUUyA/
IGNvbnQobWF5YmV0eXBlKSA6IGNvbnQoKTt9CisgIGZ1bmN0aW9uIGNvbXByZWhlbnNpb24odHlw
ZSkgeworICAgIGlmICh0eXBlID09ICJmb3IiKSByZXR1cm4gY29udChmb3JzcGVjLCBjb21wcmVo
ZW5zaW9uKTsKKyAgICBpZiAodHlwZSA9PSAiaWYiKSByZXR1cm4gY29udChleHByZXNzaW9uLCBj
b21wcmVoZW5zaW9uKTsKICAgfQogCiAgIC8vIEludGVyZmFjZQogCiAgIHJldHVybiB7CiAgICAg
c3RhcnRTdGF0ZTogZnVuY3Rpb24oYmFzZWNvbHVtbikgewotICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgdG9rZW5pemU6IGpzVG9rZW5CYXNlLAotICAgICAgICBsYXN0VHlwZTogbnVsbCwKKyAgICAg
IHZhciBzdGF0ZSA9IHsKKyAgICAgICAgdG9rZW5pemU6IHRva2VuQmFzZSwKKyAgICAgICAgbGFz
dFR5cGU6ICJzb2YiLAogICAgICAgICBjYzogW10sCiAgICAgICAgIGxleGljYWw6IG5ldyBKU0xl
eGljYWwoKGJhc2Vjb2x1bW4gfHwgMCkgLSBpbmRlbnRVbml0LCAwLCAiYmxvY2siLCBmYWxzZSks
CiAgICAgICAgIGxvY2FsVmFyczogcGFyc2VyQ29uZmlnLmxvY2FsVmFycywKLSAgICAgICAgZ2xv
YmFsVmFyczogcGFyc2VyQ29uZmlnLmdsb2JhbFZhcnMsCiAgICAgICAgIGNvbnRleHQ6IHBhcnNl
ckNvbmZpZy5sb2NhbFZhcnMgJiYge3ZhcnM6IHBhcnNlckNvbmZpZy5sb2NhbFZhcnN9LAogICAg
ICAgICBpbmRlbnRlZDogMAogICAgICAgfTsKKyAgICAgIGlmIChwYXJzZXJDb25maWcuZ2xvYmFs
VmFycykgc3RhdGUuZ2xvYmFsVmFycyA9IHBhcnNlckNvbmZpZy5nbG9iYWxWYXJzOworICAgICAg
cmV0dXJuIHN0YXRlOwogICAgIH0sCiAKICAgICB0b2tlbjogZnVuY3Rpb24oc3RyZWFtLCBzdGF0
ZSkgewpAQCAtNDI1LDggKzU2MSw5IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamF2YXNjcmlw
dCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAgIGlmICghc3RhdGUu
bGV4aWNhbC5oYXNPd25Qcm9wZXJ0eSgiYWxpZ24iKSkKICAgICAgICAgICBzdGF0ZS5sZXhpY2Fs
LmFsaWduID0gZmFsc2U7CiAgICAgICAgIHN0YXRlLmluZGVudGVkID0gc3RyZWFtLmluZGVudGF0
aW9uKCk7CisgICAgICAgIGZpbmRGYXRBcnJvdyhzdHJlYW0sIHN0YXRlKTsKICAgICAgIH0KLSAg
ICAgIGlmIChzdGF0ZS50b2tlbml6ZSAhPSBqc1Rva2VuQ29tbWVudCAmJiBzdHJlYW0uZWF0U3Bh
Y2UoKSkgcmV0dXJuIG51bGw7CisgICAgICBpZiAoc3RhdGUudG9rZW5pemUgIT0gdG9rZW5Db21t
ZW50ICYmIHN0cmVhbS5lYXRTcGFjZSgpKSByZXR1cm4gbnVsbDsKICAgICAgIHZhciBzdHlsZSA9
IHN0YXRlLnRva2VuaXplKHN0cmVhbSwgc3RhdGUpOwogICAgICAgaWYgKHR5cGUgPT0gImNvbW1l
bnQiKSByZXR1cm4gc3R5bGU7CiAgICAgICBzdGF0ZS5sYXN0VHlwZSA9IHR5cGUgPT0gIm9wZXJh
dG9yIiAmJiAoY29udGVudCA9PSAiKysiIHx8IGNvbnRlbnQgPT0gIi0tIikgPyAiaW5jZGVjIiA6
IHR5cGU7CkBAIC00MzQsMjEgKzU3MSwyMSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImphdmFz
Y3JpcHQiLCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICAgIH0sCiAKICAgICBp
bmRlbnQ6IGZ1bmN0aW9uKHN0YXRlLCB0ZXh0QWZ0ZXIpIHsKLSAgICAgIGlmIChzdGF0ZS50b2tl
bml6ZSA9PSBqc1Rva2VuQ29tbWVudCkgcmV0dXJuIENvZGVNaXJyb3IuUGFzczsKLSAgICAgIGlm
IChzdGF0ZS50b2tlbml6ZSAhPSBqc1Rva2VuQmFzZSkgcmV0dXJuIDA7CisgICAgICBpZiAoc3Rh
dGUudG9rZW5pemUgPT0gdG9rZW5Db21tZW50KSByZXR1cm4gQ29kZU1pcnJvci5QYXNzOworICAg
ICAgaWYgKHN0YXRlLnRva2VuaXplICE9IHRva2VuQmFzZSkgcmV0dXJuIDA7CiAgICAgICB2YXIg
Zmlyc3RDaGFyID0gdGV4dEFmdGVyICYmIHRleHRBZnRlci5jaGFyQXQoMCksIGxleGljYWwgPSBz
dGF0ZS5sZXhpY2FsOwogICAgICAgLy8gS2x1ZGdlIHRvIHByZXZlbnQgJ21heWJlbHNlJyBmcm9t
IGJsb2NraW5nIGxleGljYWwgc2NvcGUgcG9wcwogICAgICAgZm9yICh2YXIgaSA9IHN0YXRlLmNj
Lmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgIHZhciBjID0gc3RhdGUuY2NbaV07
CiAgICAgICAgIGlmIChjID09IHBvcGxleCkgbGV4aWNhbCA9IGxleGljYWwucHJldjsKLSAgICAg
ICAgZWxzZSBpZiAoYyAhPSBtYXliZWVsc2UgfHwgL15lbHNlXGIvLnRlc3QodGV4dEFmdGVyKSkg
YnJlYWs7CisgICAgICAgIGVsc2UgaWYgKGMgIT0gbWF5YmVlbHNlKSBicmVhazsKICAgICAgIH0K
ICAgICAgIGlmIChsZXhpY2FsLnR5cGUgPT0gInN0YXQiICYmIGZpcnN0Q2hhciA9PSAifSIpIGxl
eGljYWwgPSBsZXhpY2FsLnByZXY7CiAgICAgICBpZiAoc3RhdGVtZW50SW5kZW50ICYmIGxleGlj
YWwudHlwZSA9PSAiKSIgJiYgbGV4aWNhbC5wcmV2LnR5cGUgPT0gInN0YXQiKQogICAgICAgICBs
ZXhpY2FsID0gbGV4aWNhbC5wcmV2OwogICAgICAgdmFyIHR5cGUgPSBsZXhpY2FsLnR5cGUsIGNs
b3NpbmcgPSBmaXJzdENoYXIgPT0gdHlwZTsKIAotICAgICAgaWYgKHR5cGUgPT0gInZhcmRlZiIp
IHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKHN0YXRlLmxhc3RUeXBlID09ICJvcGVyYXRvciIg
fHwgc3RhdGUubGFzdFR5cGUgPT0gIiwiID8gNCA6IDApOworICAgICAgaWYgKHR5cGUgPT0gInZh
cmRlZiIpIHJldHVybiBsZXhpY2FsLmluZGVudGVkICsgKHN0YXRlLmxhc3RUeXBlID09ICJvcGVy
YXRvciIgfHwgc3RhdGUubGFzdFR5cGUgPT0gIiwiID8gbGV4aWNhbC5pbmZvICsgMSA6IDApOwog
ICAgICAgZWxzZSBpZiAodHlwZSA9PSAiZm9ybSIgJiYgZmlyc3RDaGFyID09ICJ7IikgcmV0dXJu
IGxleGljYWwuaW5kZW50ZWQ7CiAgICAgICBlbHNlIGlmICh0eXBlID09ICJmb3JtIikgcmV0dXJu
IGxleGljYWwuaW5kZW50ZWQgKyBpbmRlbnRVbml0OwogICAgICAgZWxzZSBpZiAodHlwZSA9PSAi
c3RhdCIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9F
eHRlcm5hbC9Db2RlTWlycm9yL2xlc3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2xlc3MuanMKaW5kZXggODM4NGIzY2Q3NmIzMWE5
ZTM2MjI2NjQ2Yjk5MWRkZjAwYTc2NTg2MS4uZGEzOTA3NDg1MTg4MDBhYmM4ZjNmNmNkY2E5MjAy
MzNkZjdhMmVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9sZXNzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbGVzcy5qcwpAQCAtMzIsOSArMzIs
OSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImxlc3MiLCBmdW5jdGlvbihjb25maWcpIHsKICAg
ICAgICAgcmV0dXJuIHRva2VuU0NvbW1lbnQoc3RyZWFtLCBzdGF0ZSk7CiAgICAgICB9IGVsc2Ug
ewogICAgICAgICBpZih0eXBlID09ICJzdHJpbmciIHx8IHR5cGUgPT0gIigiKSByZXR1cm4gcmV0
KCJzdHJpbmciLCAic3RyaW5nIik7Ci0gICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNr
Lmxlbmd0aC0xXSAhPSB1bmRlZmluZWQpIHJldHVybiByZXQobnVsbCwgY2gpOworICAgICAgICBp
ZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gIT09IHVuZGVmaW5lZCkgcmV0dXJu
IHJldChudWxsLCBjaCk7CiAgICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1xhLXpBLVowLTlcLV8u
XHNdLyk7Ci0gICAgICAgIGlmKCAvXC98XCl8Iy8udGVzdChzdHJlYW0ucGVlaygpIHx8IChzdHJl
YW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpID09ICIpIikpICB8fCBzdHJlYW0uZW9sKCkg
KXJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsgLy8gbGV0IHVybCgvaW1hZ2VzL2xvZ28u
cG5nKSB3aXRob3V0IHF1b3RlcyByZXR1cm4gYXMgc3RyaW5nCisgICAgICAgIGlmKCAvXC98XCl8
Iy8udGVzdChzdHJlYW0ucGVlaygpIHx8IChzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVl
aygpID09PSAiKSIpKSAgfHwgc3RyZWFtLmVvbCgpIClyZXR1cm4gcmV0KCJzdHJpbmciLCAic3Ry
aW5nIik7IC8vIGxldCB1cmwoL2ltYWdlcy9sb2dvLnBuZykgd2l0aG91dCBxdW90ZXMgcmV0dXJu
IGFzIHN0cmluZwogICAgICAgfQogICAgIH0gZWxzZSBpZiAoY2ggPT0gIiEiKSB7CiAgICAgICBz
dHJlYW0ubWF0Y2goL15ccypcdyovKTsKQEAgLTY2LDEwICs2NiwxMyBAQCBDb2RlTWlycm9yLmRl
ZmluZU1vZGUoImxlc3MiLCBmdW5jdGlvbihjb25maWcpIHsKICAgICAgICAgcmV0dXJuIHJldChu
dWxsLCBjaCk7CiAgICAgICB9CiAgICAgfSBlbHNlIGlmIChjaCA9PSAiLiIpIHsKLSAgICAgIGlm
KHR5cGUgPT0gIigiIHx8IHR5cGUgPT0gInN0cmluZyIpcmV0dXJuIHJldCgic3RyaW5nIiwgInN0
cmluZyIpOyAvLyBhbGxvdyB1cmwoLi4vaW1hZ2UucG5nKQorICAgICAgaWYodHlwZSA9PSAiKCIp
cmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIpOyAvLyBhbGxvdyB1cmwoLi4vaW1hZ2UucG5n
KQogICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXGEtekEtWjAtOVwtX10vKTsKLSAgICAgIGlmKHN0
cmVhbS5wZWVrKCkgPT0gIiAiKXN0cmVhbS5lYXRTcGFjZSgpOwotICAgICAgaWYoc3RyZWFtLnBl
ZWsoKSA9PSAiKSIpcmV0dXJuIHJldCgibnVtYmVyIiwgInVuaXQiKTsvL3JnYmEoMCwwLDAsLjI1
KTsKKyAgICAgIGlmKHN0cmVhbS5wZWVrKCkgPT09ICIgIilzdHJlYW0uZWF0U3BhY2UoKTsKKyAg
ICAgIGlmKHN0cmVhbS5wZWVrKCkgPT09ICIpIiB8fCB0eXBlID09PSAiOiIpcmV0dXJuIHJldCgi
bnVtYmVyIiwgInVuaXQiKTsvL3JnYmEoMCwwLDAsLjI1KTsKKyAgICAgIGVsc2UgaWYoc3RyZWFt
LmN1cnJlbnQoKS5sZW5ndGggPjEpeworICAgICAgICBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFj
ay5sZW5ndGgtMV0gPT09ICJydWxlIiAmJiBzdHJlYW0ucGVlaygpLm1hdGNoKC97fCx8XCt8XCgv
KSA9PT0gbnVsbClyZXR1cm4gcmV0KCJudW1iZXIiLCAidW5pdCIpOworICAgICAgfQogICAgICAg
cmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwogICAgIH0gZWxzZSBpZiAoY2ggPT0gIiMiKSB7CiAg
ICAgICAvL3dlIGRvbid0IGVhdCB3aGl0ZS1zcGFjZSwgd2Ugd2FudCB0aGUgaGV4IGNvbG9yIGFu
ZCBvciBpZCBvbmx5CkBAIC04MiwyMSArODUsMjQgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJs
ZXNzIiwgZnVuY3Rpb24oY29uZmlnKSB7CiAgICAgICAgICAgLy9lYXQgd2hpdGUtc3BhY2UKICAg
ICAgICAgICBzdHJlYW0uZWF0U3BhY2UoKTsKICAgICAgICAgICAvL3doZW4gaGV4IHZhbHVlIGRl
Y2xhcmF0aW9uIGRvZXNuJ3QgZW5kIHdpdGggWzssXSBidXQgaXMgZG9lcyB3aXRoIGEgc2xhc2gv
Y2MgY29tbWVudCB0cmVhdCBpdCBhcyBhbiBpZCwganVzdCBsaWtlIHRoZSBvdGhlciBoZXggdmFs
dWVzIHRoYXQgZG9uJ3QgZW5kIHdpdGhbOyxdCi0gICAgICAgICAgaWYoIC9bXC88Pi4oKXshJCVe
JipfXC1cXD89K1x8Iyd+YF0vLnRlc3Qoc3RyZWFtLnBlZWsoKSkgKXJldHVybiByZXQoImF0b20i
LCAidGFnIik7CisgICAgICAgICAgaWYoIC9bXC88Pi4oKXshJCVeJipfXC1cXD89K1x8Iyd+YF0v
LnRlc3Qoc3RyZWFtLnBlZWsoKSkgKXsKKyAgICAgICAgICAgIGlmKHR5cGUgPT09ICJzZWxlY3Qt
b3AiKXJldHVybiByZXQoIm51bWJlciIsICJ1bml0Iik7IGVsc2UgcmV0dXJuIHJldCgiYXRvbSIs
ICJ0YWciKTsKKyAgICAgICAgICB9CiAgICAgICAgICAgLy8jdGltZSB7IGNvbG9yOiAjYWFhIH0K
ICAgICAgICAgICBlbHNlIGlmKHN0cmVhbS5wZWVrKCkgPT0gIn0iIClyZXR1cm4gcmV0KCJudW1i
ZXIiLCAidW5pdCIpOwogICAgICAgICAgIC8vd2UgaGF2ZSBhIHZhbGlkIGhleCBjb2xvciB2YWx1
ZSwgcGFyc2UgYXMgaWQgd2hlbmV2ZXIgYW4gZWxlbWVudC9jbGFzcyBpcyBkZWZpbmVkIGFmdGVy
IHRoZSBoZXgoaWQpIHZhbHVlIGUuZy4gI2VlZSBhYWEgfHwgI2VlZSAuYWFhCi0gICAgICAgICAg
ICBlbHNlIGlmKCAvW2EtekEtWlxcXS8udGVzdChzdHJlYW0ucGVlaygpKSApcmV0dXJuIHJldCgi
YXRvbSIsICJ0YWciKTsKKyAgICAgICAgICBlbHNlIGlmKCAvW2EtekEtWlxcXS8udGVzdChzdHJl
YW0ucGVlaygpKSApcmV0dXJuIHJldCgiYXRvbSIsICJ0YWciKTsKICAgICAgICAgICAvL3doZW4g
YSBoZXggdmFsdWUgaXMgb24gdGhlIGVuZCBvZiBhIGxpbmUsIHBhcnNlIGFzIGlkCi0gICAgICAg
ICAgICAgIGVsc2UgaWYoc3RyZWFtLmVvbCgpKXJldHVybiByZXQoImF0b20iLCAidGFnIik7Cisg
ICAgICAgICAgZWxzZSBpZihzdHJlYW0uZW9sKCkpcmV0dXJuIHJldCgiYXRvbSIsICJ0YWciKTsK
ICAgICAgICAgICAvL2RlZmF1bHQKLSAgICAgICAgICAgICAgICBlbHNlIHJldHVybiByZXQoIm51
bWJlciIsICJ1bml0Iik7CisgICAgICAgICAgZWxzZSByZXR1cm4gcmV0KCJudW1iZXIiLCAidW5p
dCIpOwogICAgICAgICB9IGVsc2Ugey8vd2hlbiBub3QgYSB2YWxpZCBoZXh2YWx1ZSBpbiB0aGUg
Y3VycmVudCBzdHJlYW0gZS5nLiAjZm9vdGVyCiAgICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9b
XHdcXFwtXS8pOwotICAgICAgICAgIHJldHVybiByZXQoImF0b20iLCAidGFnIik7CisgICAgICAg
ICAgcmV0dXJuIHJldCgiYXRvbSIsIHN0cmVhbS5jdXJyZW50KCkpOwogICAgICAgICB9CiAgICAg
ICB9IGVsc2Ugey8vd2hlbiBub3QgYSB2YWxpZCBoZXh2YWx1ZSBsZW5ndGgKICAgICAgICAgc3Ry
ZWFtLmVhdFdoaWxlKC9bXHdcXFwtXS8pOworICAgICAgICBpZihzdGF0ZS5zdGFja1tzdGF0ZS5z
dGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4gcmV0KCJhdG9tIiwgc3RyZWFtLmN1cnJl
bnQoKSk7cmV0dXJuIHJldCgiYXRvbSIsIHN0cmVhbS5jdXJyZW50KCkpOwogICAgICAgICByZXR1
cm4gcmV0KCJhdG9tIiwgInRhZyIpOwogICAgICAgfQogICAgIH0gZWxzZSBpZiAoY2ggPT0gIiYi
KSB7CkBAIC0xMDQsMTcgKzExMCwzMyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImxlc3MiLCBm
dW5jdGlvbihjb25maWcpIHsKICAgICAgIHJldHVybiByZXQobnVsbCwgY2gpOwogICAgIH0gZWxz
ZSB7CiAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1fJS57XS8pOwotICAgICAgaWYodHlw
ZSA9PSAic3RyaW5nIil7Ci0gICAgICAgIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsK
KyAgICAgIGlmKHN0cmVhbS5jdXJyZW50KCkubWF0Y2goL1xcLykgIT09IG51bGwpeworICAgICAg
ICBpZihzdHJlYW0uY3VycmVudCgpLmNoYXJBdChzdHJlYW0uY3VycmVudCgpLmxlbmd0aC0xKSA9
PT0gIlxcIil7CisgICAgICAgICAgc3RyZWFtLmVhdCgvXCd8XCJ8XCl8XCgvKTsKKyAgICAgICAg
ICB3aGlsZShzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1fJS57XS8pKXsKKyAgICAgICAgICAgIHN0
cmVhbS5lYXQoL1wnfFwifFwpfFwoLyk7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiBy
ZXQoInN0cmluZyIsIHN0cmVhbS5jdXJyZW50KCkpOworICAgICAgICB9CisgICAgICB9IC8vZWxz
ZSBpZih0eXBlID09PSAidGFnIilyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CisgICAgICAgIGVs
c2UgaWYodHlwZSA9PSAic3RyaW5nIil7CisgICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0
YWNrLmxlbmd0aC0xXSA9PT0gInsiICYmIHN0cmVhbS5wZWVrKCkgPT09ICI6IilyZXR1cm4gcmV0
KCJ2YXJpYWJsZSIsICJ2YXJpYWJsZSIpOworICAgICAgICBpZihzdHJlYW0ucGVlaygpID09PSAi
LyIpc3RyZWFtLmVhdFdoaWxlKC9bXHdcXFwtXyUuezpcL10vKTsKKyAgICAgICAgcmV0dXJuIHJl
dCh0eXBlLCBzdHJlYW0uY3VycmVudCgpKTsKICAgICAgIH0gZWxzZSBpZihzdHJlYW0uY3VycmVu
dCgpLm1hdGNoKC8oXmh0dHAkfF5odHRwcyQpLykgIT0gbnVsbCl7CiAgICAgICAgIHN0cmVhbS5l
YXRXaGlsZSgvW1x3XFxcLV8lLns6XC9dLyk7CisgICAgICAgIGlmKHN0cmVhbS5wZWVrKCkgPT09
ICIvIilzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1fJS57OlwvXS8pOwogICAgICAgICByZXR1cm4g
cmV0KCJzdHJpbmciLCAic3RyaW5nIik7CiAgICAgICB9IGVsc2UgaWYoc3RyZWFtLnBlZWsoKSA9
PSAiPCIgfHwgc3RyZWFtLnBlZWsoKSA9PSAiPiIgfHwgc3RyZWFtLnBlZWsoKSA9PSAiKyIpewor
ICAgICAgICBpZih0eXBlID09PSAiKCIgJiYgKHN0cmVhbS5jdXJyZW50KCkgPT09ICJuIiB8fCBz
dHJlYW0uY3VycmVudCgpID09PSAiLW4iKSlyZXR1cm4gcmV0KCJzdHJpbmciLCBzdHJlYW0uY3Vy
cmVudCgpKTsKICAgICAgICAgcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwogICAgICAgfSBlbHNl
IGlmKCAvXCgvLnRlc3Qoc3RyZWFtLnBlZWsoKSkgKXsKKyAgICAgICAgaWYoc3RyZWFtLmN1cnJl
bnQoKSA9PT0gIndoZW4iKXJldHVybiByZXQoInZhcmlhYmxlIiwidmFyaWFibGUiKTsKKyAgICAg
ICAgZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJAbWVkaWEi
ICYmIHN0cmVhbS5jdXJyZW50KCkgPT09ICJhbmQiKXJldHVybiByZXQoInZhcmlhYmxlIixzdHJl
YW0uY3VycmVudCgpKTsKICAgICAgICAgcmV0dXJuIHJldChudWxsLCBjaCk7Ci0gICAgICB9IGVs
c2UgaWYgKHN0cmVhbS5wZWVrKCkgPT0gIi8iICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxl
bmd0aC0xXSAhPSB1bmRlZmluZWQpeyAvLyB1cmwoZGlyL2NlbnRlci9pbWFnZS5wbmcpCi0gICAg
ICAgIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsKKyAgICAgIH0gZWxzZSBpZiAoc3Ry
ZWFtLnBlZWsoKSA9PSAiLyIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICE9
PSB1bmRlZmluZWQpeyAvLyB1cmwoZGlyL2NlbnRlci9pbWFnZS5wbmcpCisgICAgICAgIGlmKHN0
cmVhbS5wZWVrKCkgPT09ICIvIilzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1fJS57OlwvXS8pOwor
ICAgICAgICByZXR1cm4gcmV0KCJzdHJpbmciLCBzdHJlYW0uY3VycmVudCgpKTsKICAgICAgIH0g
ZWxzZSBpZiggc3RyZWFtLmN1cnJlbnQoKS5tYXRjaCgvXC1cZHxcLS5cZC8pICl7IC8vIG1hdGNo
IGUuZy46IC01cHggLTAuNCBldGMuLi4gb25seSBjb2xvcml6ZSB0aGUgbWludXMgc2lnbgogICAg
ICAgICAvL2NvbW1tZW50IG91dCB0aGVzZSAyIGNvbW1lbnQgaWYgeW91IHdhbnQgdGhlIG1pbnVz
IHNpZ24gdG8gYmUgcGFyc2VkIGFzIG51bGwgLTUwMHB4CiAgICAgICAgIC8vc3RyZWFtLmJhY2tV
cChzdHJlYW0uY3VycmVudCgpLmxlbmd0aC0xKTsKQEAgLTEyOSwxNCArMTUxLDMzIEBAIENvZGVN
aXJyb3IuZGVmaW5lTW9kZSgibGVzcyIsIGZ1bmN0aW9uKGNvbmZpZykgewogICAgICAgICBpZigg
L1t7PD4uYS16QS1aXC9dLy50ZXN0KHN0cmVhbS5wZWVrKCkpICB8fCBzdHJlYW0uZW9sKCkgKXJl
dHVybiByZXQoInRhZyIsICJ0YWciKTsgLy8gZS5nLiBidXR0b24uaWNvbi1wbHVzCiAgICAgICAg
IHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsgLy8gbGV0IHVybCgvaW1hZ2VzL2xvZ28u
cG5nKSB3aXRob3V0IHF1b3RlcyByZXR1cm4gYXMgc3RyaW5nCiAgICAgICB9IGVsc2UgaWYoIHN0
cmVhbS5lb2woKSB8fCBzdHJlYW0ucGVlaygpID09ICJbIiB8fCBzdHJlYW0ucGVlaygpID09ICIj
IiB8fCB0eXBlID09ICJ0YWciICl7CisKICAgICAgICAgaWYoc3RyZWFtLmN1cnJlbnQoKS5zdWJz
dHJpbmcoc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGgtMSxzdHJlYW0uY3VycmVudCgpLmxlbmd0aCkg
PT0gInsiKXN0cmVhbS5iYWNrVXAoMSk7CisgICAgICAgIGVsc2UgaWYoc3RhdGUuc3RhY2tbc3Rh
dGUuc3RhY2subGVuZ3RoLTFdID09PSAiYm9yZGVyLWNvbG9yIiB8fCBzdGF0ZS5zdGFja1tzdGF0
ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJiYWNrZ3JvdW5kLXBvc2l0aW9uIiB8fCBzdGF0ZS5zdGFj
a1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJmb250LWZhbWlseSIpcmV0dXJuIHJldChudWxs
LCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZih0eXBlID09PSAidGFnIilyZXR1
cm4gcmV0KCJ0YWciLCAidGFnIik7CisgICAgICAgIGVsc2UgaWYoKHR5cGUgPT09ICI6IiB8fCB0
eXBlID09PSAidW5pdCIpICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0g
InJ1bGUiKXJldHVybiByZXQobnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIGVsc2Ug
aWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAicnVsZSIgJiYgdHlwZSA9
PT0gInRhZyIpcmV0dXJuIHJldCgic3RyaW5nIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAg
IGVsc2UgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAiOyIgJiYgdHlw
ZSA9PT0gIjoiKXJldHVybiByZXQobnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIC8v
ZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICI7IiB8fCB0eXBl
ID09PSAiIilyZXR1cm4gcmV0KCJ2YXJpYWJsZSIsIHN0cmVhbS5jdXJyZW50KCkpOworICAgICAg
ICBlbHNlIGlmKHN0cmVhbS5wZWVrKCkgPT09ICIjIiAmJiB0eXBlICE9PSB1bmRlZmluZWQgJiYg
dHlwZS5tYXRjaCgvXCt8LHx0YWd8c2VsZWN0XC1vcHx9fHt8Oy9nKSA9PT0gbnVsbClyZXR1cm4g
cmV0KCJzdHJpbmciLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZih0eXBlID09
PSAidmFyaWFibGUiKXJldHVybiByZXQobnVsbCwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAg
IGVsc2UgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAieyIgJiYgdHlw
ZSA9PT0gImNvbW1lbnQiKXJldHVybiByZXQoInZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQoKSk7
CisgICAgICAgIGVsc2UgaWYoc3RhdGUuc3RhY2subGVuZ3RoID09PSAwICYmICh0eXBlID09PSAi
OyIgfHwgdHlwZSA9PT0gImNvbW1lbnQiKSlyZXR1cm4gcmV0KCJ0YWciLCBzdHJlYW0uY3VycmVu
dCgpKTsKKyAgICAgICAgZWxzZSBpZigoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFd
ID09PSAieyIgfHwgdHlwZSA9PT0gIjsiKSAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGgtMV0gIT09ICJAbWVkaWF7IilyZXR1cm4gcmV0KCJ2YXJpYWJsZSIsIHN0cmVhbS5jdXJyZW50
KCkpOworICAgICAgICBlbHNlIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0yXSA9
PT0gInsiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gIjsiKXJldHVy
biByZXQoInZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisKICAgICAgICAgcmV0dXJuIHJl
dCgidGFnIiwgInRhZyIpOwogICAgICAgfSBlbHNlIGlmKHR5cGUgPT0gImNvbXBhcmUiIHx8IHR5
cGUgPT0gImEiIHx8IHR5cGUgPT0gIigiKXsKICAgICAgICAgcmV0dXJuIHJldCgic3RyaW5nIiwg
InN0cmluZyIpOwogICAgICAgfSBlbHNlIGlmKHR5cGUgPT0gInwiIHx8IHN0cmVhbS5jdXJyZW50
KCkgPT0gIi0iIHx8IHR5cGUgPT0gIlsiKXsKLSAgICAgICAgaWYodHlwZSA9PSAifCIgKXJldHVy
biByZXQoInRhZyIsICJ0YWciKTsKKyAgICAgICAgaWYodHlwZSA9PSAifCIgJiYgc3RyZWFtLnBl
ZWsoKS5tYXRjaCgvXF18PXxcfi8pICE9PSBudWxsKXJldHVybiByZXQoIm51bWJlciIsIHN0cmVh
bS5jdXJyZW50KCkpOworICAgICAgICBlbHNlIGlmKHR5cGUgPT0gInwiIClyZXR1cm4gcmV0KCJ0
YWciLCAidGFnIik7CisgICAgICAgIGVsc2UgaWYodHlwZSA9PSAiWyIpeworICAgICAgICAgIHN0
cmVhbS5lYXRXaGlsZSgvXHdcLS8pOworICAgICAgICAgIHJldHVybiByZXQoIm51bWJlciIsIHN0
cmVhbS5jdXJyZW50KCkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXQobnVsbCwgY2gp
OwotICAgICAgfSBlbHNlIGlmKHN0cmVhbS5wZWVrKCkgPT0gIjoiKSB7CisgICAgICB9IGVsc2Ug
aWYoKHN0cmVhbS5wZWVrKCkgPT0gIjoiKSB8fCAoIHN0cmVhbS5lYXRTcGFjZSgpICYmIHN0cmVh
bS5wZWVrKCkgPT0gIjoiKSkgewogICAgICAgICBzdHJlYW0ubmV4dCgpOwogICAgICAgICB2YXIg
dF92ID0gc3RyZWFtLnBlZWsoKSA9PSAiOiIgPyB0cnVlIDogZmFsc2U7CiAgICAgICAgIGlmKCF0
X3YpewpAQCAtMTUyLDExICsxOTMsNTAgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJsZXNzIiwg
ZnVuY3Rpb24oY29uZmlnKSB7CiAgICAgICAgICAgc3RyZWFtLmJhY2tVcCgxKTsKICAgICAgICAg
fQogICAgICAgICBpZih0X3YpcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOyBlbHNlIHJldHVybiBy
ZXQoInZhcmlhYmxlIiwgInZhcmlhYmxlIik7Ci0gICAgICB9IGVsc2UgaWYoc3RhdGUuc3RhY2tb
c3RhdGUuc3RhY2subGVuZ3RoLTFdICA9PT0gImZvbnQtZmFtaWx5Iil7CisgICAgICB9IGVsc2Ug
aWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICA9PT0gImZvbnQtZmFtaWx5IiB8
fCBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gID09PSAiYmFja2dyb3VuZC1wb3Np
dGlvbiIgfHwgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICA9PT0gImJvcmRlci1j
b2xvciIpewogICAgICAgICByZXR1cm4gcmV0KG51bGwsIG51bGwpOwogICAgICAgfSBlbHNlIHsK
LSAgICAgICAgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAieyIgfHwg
dHlwZSA9PT0gInNlbGVjdC1vcCIgIHx8IChzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgt
MV0gPT09ICJydWxlIiAmJiB0eXBlID09PSAiLCIpIClyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7
Ci0gICAgICAgIHJldHVybiByZXQoInZhcmlhYmxlIiwgInZhcmlhYmxlIik7CisKKyAgICAgICAg
aWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSBudWxsICYmIHR5cGUgPT09
ICI6IilyZXR1cm4gcmV0KG51bGwsIHN0cmVhbS5jdXJyZW50KCkpOworCisgICAgICAgIC8vZWxz
ZSBpZigodHlwZSA9PT0gIikiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9
PT0gInJ1bGUiKSB8fCAoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTJdID09PSAieyIg
JiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAicnVsZSIgJiYgdHlwZSA9
PT0gInZhcmlhYmxlIikpcmV0dXJuIHJldChudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKKworICAg
ICAgICBlbHNlIGlmKC9cXnxcJC8udGVzdChzdHJlYW0uY3VycmVudCgpKSAmJiBzdHJlYW0ucGVl
aygpLm1hdGNoKC9cfnw9LykgIT09IG51bGwpcmV0dXJuIHJldCgic3RyaW5nIiwgInN0cmluZyIp
Oy8vYXR0Xj12YWwKKworICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICJ1bml0IiAmJiBzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4gcmV0KG51bGwsICJ1
bml0Iik7CisgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gInVuaXQiICYmIHN0YXRlLnN0YWNrW3N0
YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gIjsiKXJldHVybiByZXQobnVsbCwgInVuaXQiKTsKKyAg
ICAgICAgZWxzZSBpZih0eXBlID09PSAiKSIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVu
Z3RoLTFdID09PSAicnVsZSIpcmV0dXJuIHJldChudWxsLCAidW5pdCIpOworICAgICAgICBlbHNl
IGlmKHR5cGUgJiYgdHlwZS5tYXRjaCgiQCIpICE9PSBudWxsICAmJiBzdGF0ZS5zdGFja1tzdGF0
ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIilyZXR1cm4gcmV0KG51bGwsICJ1bml0Iik7Cisg
ICAgICAgIC8vZWxzZSBpZih0eXBlID09PSAidW5pdCIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3Rh
Y2subGVuZ3RoLTFdID09PSAicnVsZSIpcmV0dXJuIHJldChudWxsLCBzdHJlYW0uY3VycmVudCgp
KTsKKworICAgICAgICBlbHNlIGlmKCh0eXBlID09PSAiOyIgfHwgdHlwZSA9PT0gIn0iIHx8IHR5
cGUgPT09ICIsIikgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAiOyIp
cmV0dXJuIHJldCgidGFnIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIGVsc2UgaWYoKHR5
cGUgPT09ICI7IiAmJiBzdHJlYW0ucGVlaygpICE9PSB1bmRlZmluZWQgJiYgc3RyZWFtLnBlZWso
KS5tYXRjaCgve3wuLykgPT09IG51bGwpIHx8ICh0eXBlID09PSAiOyIgJiYgc3RyZWFtLmVhdFNw
YWNlKCkgJiYgc3RyZWFtLnBlZWsoKS5tYXRjaCgve3wuLykgPT09IG51bGwpKXJldHVybiByZXQo
InZhcmlhYmxlIiwgc3RyZWFtLmN1cnJlbnQoKSk7CisgICAgICAgIGVsc2UgaWYoKHR5cGUgPT09
ICJAbWVkaWEiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gIkBtZWRp
YSIpIHx8IHR5cGUgPT09ICJAbmFtZXNwYWNlIilyZXR1cm4gcmV0KCJ0YWciLCBzdHJlYW0uY3Vy
cmVudCgpKTsKKworICAgICAgICBlbHNlIGlmKHR5cGUgPT09ICJ7IiAgJiYgc3RhdGUuc3RhY2tb
c3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAiOyIgJiYgc3RyZWFtLnBlZWsoKSA9PT0gInsiKXJl
dHVybiByZXQoInRhZyIsICJ0YWciKTsKKyAgICAgICAgZWxzZSBpZigodHlwZSA9PT0gInsiIHx8
IHR5cGUgPT09ICI6IikgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAi
OyIpcmV0dXJuIHJldChudWxsLCBzdHJlYW0uY3VycmVudCgpKTsKKyAgICAgICAgZWxzZSBpZigo
c3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAieyIgJiYgc3RyZWFtLmVhdFNw
YWNlKCkgJiYgc3RyZWFtLnBlZWsoKS5tYXRjaCgvLnwjLykgPT09IG51bGwpIHx8IHR5cGUgPT09
ICJzZWxlY3Qtb3AiICB8fCAoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAi
cnVsZSIgJiYgdHlwZSA9PT0gIiwiKSApcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOworICAgICAg
ICBlbHNlIGlmKHR5cGUgPT09ICJ2YXJpYWJsZSIgJiYgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2su
bGVuZ3RoLTFdID09PSAicnVsZSIpcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOworICAgICAgICBl
bHNlIGlmKChzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpID09PSAieyIpIHx8IHN0
cmVhbS5lb2woKSB8fCBzdHJlYW0ucGVlaygpID09PSAieyIpcmV0dXJuIHJldCgidGFnIiwgInRh
ZyIpOworICAgICAgICAvL3RoaXMgb25lIG1lc3NlcyB1cCBpbmRlbnRhdGlvbgorICAgICAgICAv
L2Vsc2UgaWYoKHR5cGUgPT09ICJ9IiAmJiBzdHJlYW0ucGVlaygpICE9PSAiOiIpIHx8ICh0eXBl
ID09PSAifSIgJiYgc3RyZWFtLmVhdFNwYWNlKCkgJiYgc3RyZWFtLnBlZWsoKSAhPT0gIjoiKSly
ZXR1cm4odHlwZSwgInRhZyIpOworCisgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIikiICYmIChz
dHJlYW0uY3VycmVudCgpID09ICJhbmQiIHx8IHN0cmVhbS5jdXJyZW50KCkgPT0gImFuZCAiKSly
ZXR1cm4gcmV0KCJ2YXJpYWJsZSIsICJ2YXJpYWJsZSIpOworICAgICAgICBlbHNlIGlmKHR5cGUg
PT09ICIpIiAmJiAoc3RyZWFtLmN1cnJlbnQoKSA9PSAid2hlbiIgfHwgc3RyZWFtLmN1cnJlbnQo
KSA9PSAid2hlbiAiKSlyZXR1cm4gcmV0KCJ2YXJpYWJsZSIsICJ2YXJpYWJsZSIpOworICAgICAg
ICBlbHNlIGlmKHR5cGUgPT09ICIpIiB8fCB0eXBlID09PSAiY29tbWVudCIgfHwgdHlwZSA9PT0g
InsiKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKKyAgICAgICAgZWxzZSBpZihzdHJlYW0uc29s
KCkpcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOworICAgICAgICBlbHNlIGlmKChzdHJlYW0uZWF0
U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpID09PSAiIyIpIHx8IHN0cmVhbS5wZWVrKCkgPT09ICIj
IilyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7CisgICAgICAgIGVsc2UgaWYoc3RhdGUuc3RhY2su
bGVuZ3RoID09PSAwKXJldHVybiByZXQoInRhZyIsICJ0YWciKTsKKyAgICAgICAgZWxzZSBpZih0
eXBlID09PSAiOyIgJiYgc3RyZWFtLnBlZWsoKSAhPT0gdW5kZWZpbmVkICYmIHN0cmVhbS5wZWVr
KCkubWF0Y2goL15bLnxcI10vZykgIT09IG51bGwpcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwor
CisgICAgICAgIGVsc2UgaWYodHlwZSA9PT0gIjoiKXtzdHJlYW0uZWF0U3BhY2UoKTtyZXR1cm4g
cmV0KG51bGwsIHN0cmVhbS5jdXJyZW50KCkpO30KKworICAgICAgICBlbHNlIGlmKHN0cmVhbS5j
dXJyZW50KCkgPT09ICJhbmQgIiB8fCBzdHJlYW0uY3VycmVudCgpID09PSAiYW5kIilyZXR1cm4g
cmV0KCJ2YXJpYWJsZSIsIHN0cmVhbS5jdXJyZW50KCkpOworICAgICAgICBlbHNlIGlmKHR5cGUg
PT09ICI7IiAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJ7IilyZXR1
cm4gcmV0KCJ2YXJpYWJsZSIsIHN0cmVhbS5jdXJyZW50KCkpOworCisgICAgICAgIGVsc2UgaWYo
c3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdID09PSAicnVsZSIpcmV0dXJuIHJldChu
dWxsLCBzdHJlYW0uY3VycmVudCgpKTsKKworICAgICAgICByZXR1cm4gcmV0KCJ0YWciLCBzdHJl
YW0uY3VycmVudCgpKTsKICAgICAgIH0KICAgICB9CiAgIH0KQEAgLTIzNCwyMCArMzE0LDMwIEBA
IENvZGVNaXJyb3IuZGVmaW5lTW9kZSgibGVzcyIsIGZ1bmN0aW9uKGNvbmZpZykgewogICAgICAg
ZWxzZSBpZiAodHlwZSA9PSAifSIpIHN0YXRlLnN0YWNrLnBvcCgpOwogICAgICAgZWxzZSBpZiAo
dHlwZSA9PSAiQG1lZGlhIikgc3RhdGUuc3RhY2sucHVzaCgiQG1lZGlhIik7CiAgICAgICBlbHNl
IGlmIChzdHJlYW0uY3VycmVudCgpID09PSAiZm9udC1mYW1pbHkiKSBzdGF0ZS5zdGFja1tzdGF0
ZS5zdGFjay5sZW5ndGgtMV0gPSAiZm9udC1mYW1pbHkiOworICAgICAgZWxzZSBpZiAoc3RyZWFt
LmN1cnJlbnQoKSA9PT0gImJhY2tncm91bmQtcG9zaXRpb24iKSBzdGF0ZS5zdGFja1tzdGF0ZS5z
dGFjay5sZW5ndGgtMV0gPSAiYmFja2dyb3VuZC1wb3NpdGlvbiI7CisgICAgICBlbHNlIGlmIChz
dHJlYW0uY3VycmVudCgpID09PSAiYm9yZGVyLWNvbG9yIikgc3RhdGUuc3RhY2tbc3RhdGUuc3Rh
Y2subGVuZ3RoLTFdID0gImJvcmRlci1jb2xvciI7CiAgICAgICBlbHNlIGlmIChjb250ZXh0ID09
ICJ7IiAmJiB0eXBlICE9ICJjb21tZW50IiAmJiB0eXBlICE9PSAidGFnIikgc3RhdGUuc3RhY2su
cHVzaCgicnVsZSIpOwogICAgICAgZWxzZSBpZiAoc3RyZWFtLnBlZWsoKSA9PT0gIjoiICYmIHN0
cmVhbS5jdXJyZW50KCkubWF0Y2goL0B8Iy8pID09PSBudWxsKSBzdHlsZSA9IHR5cGU7CisgICAg
ICBpZih0eXBlID09PSAiOyIgJiYgKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9
PSAiZm9udC1mYW1pbHkiIHx8IHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PSAi
YmFja2dyb3VuZC1wb3NpdGlvbiIgfHwgc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFd
ID09ICJib3JkZXItY29sb3IiKSlzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPSBz
dHJlYW0uY3VycmVudCgpOworICAgICAgZWxzZSBpZih0eXBlID09PSAidGFnIiAmJiBzdHJlYW0u
cGVlaygpID09PSAiKSIgJiYgc3RyZWFtLmN1cnJlbnQoKS5tYXRjaCgvXDovKSA9PT0gbnVsbCl7
dHlwZSA9IG51bGw7IHN0eWxlID0gbnVsbDt9CisgICAgICAvLyA/Pz8/CisgICAgICBlbHNlIGlm
KCh0eXBlID09PSAidmFyaWFibGUiICYmIHN0cmVhbS5wZWVrKCkgPT09ICIpIikgfHwgKHR5cGUg
PT09ICJ2YXJpYWJsZSIgJiYgc3RyZWFtLmVhdFNwYWNlKCkgJiYgc3RyZWFtLnBlZWsoKSA9PT0g
IikiKSlyZXR1cm4gcmV0KG51bGwsc3RyZWFtLmN1cnJlbnQoKSk7CiAgICAgICByZXR1cm4gc3R5
bGU7CiAgICAgfSwKIAogICAgIGluZGVudDogZnVuY3Rpb24oc3RhdGUsIHRleHRBZnRlcikgewog
ICAgICAgdmFyIG4gPSBzdGF0ZS5zdGFjay5sZW5ndGg7Ci0KICAgICAgIGlmICgvXlx9Ly50ZXN0
KHRleHRBZnRlcikpCi0gICAgICAgIG4gLT0gc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3Ro
LTFdID09ICJydWxlIiA/IDIgOiAxOworICAgICAgICBuIC09IHN0YXRlLnN0YWNrW3N0YXRlLnN0
YWNrLmxlbmd0aC0xXSA9PT0gInJ1bGUiID8gMiA6IDE7CisgICAgICBlbHNlIGlmIChzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMl0gPT09ICJ7IikKKyAgICAgICAgbiAtPSBzdGF0ZS5z
dGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gPT09ICJydWxlIiA/IDEgOiAwOwogICAgICAgcmV0
dXJuIHN0YXRlLmJhc2VJbmRlbnQgKyBuICogaW5kZW50VW5pdDsKICAgICB9LAogCi0gICAgZWxl
Y3RyaWNDaGFyczogIn0iCisgICAgZWxlY3RyaWNDaGFyczogIn0iLAorICAgIGJsb2NrQ29tbWVu
dFN0YXJ0OiAiLyoiLAorICAgIGJsb2NrQ29tbWVudEVuZDogIiovIiwKKyAgICBsaW5lQ29tbWVu
dDogIi8vIgogICB9OwogfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbWF0Y2hicmFja2V0cy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbWF0Y2hi
cmFja2V0cy5qcwppbmRleCAxMzFmZTgzMWZkYzc2NjJiYjZmMjU5ZDQzNjc1ZGVmYjE5ZmU3NmVk
Li45ZDliMzg4MmY3YzVkYTQ3MTA3YTFkOWE3ZDk2YmVkMDlhYzYyMDg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL21h
dGNoYnJhY2tldHMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RXh0ZXJuYWwvQ29kZU1pcnJvci9tYXRjaGJyYWNrZXRzLmpzCkBAIC04LDYgKzgsNyBAQAogICBm
dW5jdGlvbiBmaW5kTWF0Y2hpbmdCcmFja2V0KGNtLCB3aGVyZSwgc3RyaWN0KSB7CiAgICAgdmFy
IHN0YXRlID0gY20uc3RhdGUubWF0Y2hCcmFja2V0czsKICAgICB2YXIgbWF4U2NhbkxlbiA9IChz
dGF0ZSAmJiBzdGF0ZS5tYXhTY2FuTGluZUxlbmd0aCkgfHwgMTAwMDA7CisgICAgdmFyIG1heFNj
YW5MaW5lcyA9IChzdGF0ZSAmJiBzdGF0ZS5tYXhTY2FuTGluZXMpIHx8IDEwMDsKIAogICAgIHZh
ciBjdXIgPSB3aGVyZSB8fCBjbS5nZXRDdXJzb3IoKSwgbGluZSA9IGNtLmdldExpbmVIYW5kbGUo
Y3VyLmxpbmUpLCBwb3MgPSBjdXIuY2ggLSAxOwogICAgIHZhciBtYXRjaCA9IChwb3MgPj0gMCAm
JiBtYXRjaGluZ1tsaW5lLnRleHQuY2hhckF0KHBvcyldKSB8fCBtYXRjaGluZ1tsaW5lLnRleHQu
Y2hhckF0KCsrcG9zKV07CkBAIC0zMiw3ICszMyw3IEBACiAgICAgICAgIH0KICAgICAgIH0KICAg
ICB9Ci0gICAgZm9yICh2YXIgaSA9IGN1ci5saW5lLCBmb3VuZCwgZSA9IGZvcndhcmQgPyBNYXRo
Lm1pbihpICsgMTAwLCBjbS5saW5lQ291bnQoKSkgOiBNYXRoLm1heCgtMSwgaSAtIDEwMCk7IGkg
IT0gZTsgaSs9ZCkgeworICAgIGZvciAodmFyIGkgPSBjdXIubGluZSwgZm91bmQsIGUgPSBmb3J3
YXJkID8gTWF0aC5taW4oaSArIG1heFNjYW5MaW5lcywgY20ubGluZUNvdW50KCkpIDogTWF0aC5t
YXgoLTEsIGkgLSBtYXhTY2FuTGluZXMpOyBpICE9IGU7IGkrPWQpIHsKICAgICAgIGlmIChpID09
IGN1ci5saW5lKSBmb3VuZCA9IHNjYW4obGluZSwgaSwgcG9zKTsKICAgICAgIGVsc2UgZm91bmQg
PSBzY2FuKGNtLmdldExpbmVIYW5kbGUoaSksIGkpOwogICAgICAgaWYgKGZvdW5kKSBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFs
L0NvZGVNaXJyb3IvcGxhY2Vob2xkZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3BsYWNlaG9sZGVyLmpzCmluZGV4IDE4ZjlkZmYz
YWJhMGQxMTRkMDYxYzQ3MGIzMWE2MjZkMjE1MmFlZmUuLjc0OGFmZTcyNzVhNmM4YTY3YjE0MTNi
YmFmMmU5NDYzZTE3OWRhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvcGxhY2Vob2xkZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9wbGFjZWhv
bGRlci5qcwpAQCAtMiwxMiArMiwxMCBAQAogICBDb2RlTWlycm9yLmRlZmluZU9wdGlvbigicGxh
Y2Vob2xkZXIiLCAiIiwgZnVuY3Rpb24oY20sIHZhbCwgb2xkKSB7CiAgICAgdmFyIHByZXYgPSBv
bGQgJiYgb2xkICE9IENvZGVNaXJyb3IuSW5pdDsKICAgICBpZiAodmFsICYmICFwcmV2KSB7Ci0g
ICAgICBjbS5vbigiZm9jdXMiLCBvbkZvY3VzKTsKICAgICAgIGNtLm9uKCJibHVyIiwgb25CbHVy
KTsKICAgICAgIGNtLm9uKCJjaGFuZ2UiLCBvbkNoYW5nZSk7CiAgICAgICBvbkNoYW5nZShjbSk7
CiAgICAgfSBlbHNlIGlmICghdmFsICYmIHByZXYpIHsKLSAgICAgIGNtLm9mZigiZm9jdXMiLCBv
bkZvY3VzKTsKICAgICAgIGNtLm9mZigiYmx1ciIsIG9uQmx1cik7CiAgICAgICBjbS5vZmYoImNo
YW5nZSIsIG9uQ2hhbmdlKTsKICAgICAgIGNsZWFyUGxhY2Vob2xkZXIoY20pOwpAQCAtMzMsOSAr
MzEsNiBAQAogICAgIGNtLmRpc3BsYXkubGluZVNwYWNlLmluc2VydEJlZm9yZShlbHQsIGNtLmRp
c3BsYXkubGluZVNwYWNlLmZpcnN0Q2hpbGQpOwogICB9CiAKLSAgZnVuY3Rpb24gb25Gb2N1cyhj
bSkgewotICAgIGNsZWFyUGxhY2Vob2xkZXIoY20pOwotICB9CiAgIGZ1bmN0aW9uIG9uQmx1cihj
bSkgewogICAgIGlmIChpc0VtcHR5KGNtKSkgc2V0UGxhY2Vob2xkZXIoY20pOwogICB9CkBAIC00
Myw3ICszOCw2IEBACiAgICAgdmFyIHdyYXBwZXIgPSBjbS5nZXRXcmFwcGVyRWxlbWVudCgpLCBl
bXB0eSA9IGlzRW1wdHkoY20pOwogICAgIHdyYXBwZXIuY2xhc3NOYW1lID0gd3JhcHBlci5jbGFz
c05hbWUucmVwbGFjZSgiIENvZGVNaXJyb3ItZW1wdHkiLCAiIikgKyAoZW1wdHkgPyAiIENvZGVN
aXJyb3ItZW1wdHkiIDogIiIpOwogCi0gICAgaWYgKGNtLmhhc0ZvY3VzKCkpIHJldHVybjsKICAg
ICBpZiAoZW1wdHkpIHNldFBsYWNlaG9sZGVyKGNtKTsKICAgICBlbHNlIGNsZWFyUGxhY2Vob2xk
ZXIoY20pOwogICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3J1bm1vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3J1bm1vZGUuanMKaW5kZXggYTdk
YTZkNzE4ZmNiMTJjZDgzODEzZWMyYWU2YmRlNjdhOTNiMjVhMi4uN2FhZmEyYWQ4ZjRjMDBiYmJh
ZTY1NDk5MzcwNDNjZjYwMTQ4MjZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9ydW5tb2RlLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvcnVubW9k
ZS5qcwpAQCAtNDksNyArNDksNyBAQCBDb2RlTWlycm9yLnJ1bk1vZGUgPSBmdW5jdGlvbihzdHJp
bmcsIG1vZGVzcGVjLCBjYWxsYmFjaywgb3B0aW9ucykgewogICAgIHZhciBzdHJlYW0gPSBuZXcg
Q29kZU1pcnJvci5TdHJpbmdTdHJlYW0obGluZXNbaV0pOwogICAgIHdoaWxlICghc3RyZWFtLmVv
bCgpKSB7CiAgICAgICB2YXIgc3R5bGUgPSBtb2RlLnRva2VuKHN0cmVhbSwgc3RhdGUpOwotICAg
ICAgY2FsbGJhY2soc3RyZWFtLmN1cnJlbnQoKSwgc3R5bGUsIGksIHN0cmVhbS5zdGFydCk7Cisg
ICAgICBjYWxsYmFjayhzdHJlYW0uY3VycmVudCgpLCBzdHlsZSwgaSwgc3RyZWFtLnN0YXJ0LCBz
dGF0ZSk7CiAgICAgICBzdHJlYW0uc3RhcnQgPSBzdHJlYW0ucG9zOwogICAgIH0KICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29k
ZU1pcnJvci9zZWFyY2hjdXJzb3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NlYXJjaGN1cnNvci5qcwppbmRleCAzZGEzZjA0ZThm
ZTczZjQ4ZGM4ZDExMjZhMDM1YjZiMGE4M2YwNmQ3Li5jMDM0ZDU4NjViOTIwNTY5MjJlYjU2NDFk
ZTc1YWQyZWVlMDU0YmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NlYXJjaGN1cnNvci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NlYXJjaGN1
cnNvci5qcwpAQCAtNjksOCArNjksOCBAQAogICAgICAgICB0aGlzLm1hdGNoZXMgPSBmdW5jdGlv
bihyZXZlcnNlLCBwb3MpIHsKICAgICAgICAgICB2YXIgbG4gPSBwb3MubGluZSwgaWR4ID0gKHJl
dmVyc2UgPyB0YXJnZXQubGVuZ3RoIC0gMSA6IDApLCBtYXRjaCA9IHRhcmdldFtpZHhdLCBsaW5l
ID0gZm9sZChkb2MuZ2V0TGluZShsbikpOwogICAgICAgICAgIHZhciBvZmZzZXRBID0gKHJldmVy
c2UgPyBsaW5lLmluZGV4T2YobWF0Y2gpICsgbWF0Y2gubGVuZ3RoIDogbGluZS5sYXN0SW5kZXhP
ZihtYXRjaCkpOwotICAgICAgICAgIGlmIChyZXZlcnNlID8gb2Zmc2V0QSA+PSBwb3MuY2ggfHwg
b2Zmc2V0QSAhPSBtYXRjaC5sZW5ndGgKLSAgICAgICAgICAgICAgOiBvZmZzZXRBIDw9IHBvcy5j
aCB8fCBvZmZzZXRBICE9IGxpbmUubGVuZ3RoIC0gbWF0Y2gubGVuZ3RoKQorICAgICAgICAgIGlm
IChyZXZlcnNlID8gb2Zmc2V0QSA+IHBvcy5jaCB8fCBvZmZzZXRBICE9IG1hdGNoLmxlbmd0aAor
ICAgICAgICAgICAgICA6IG9mZnNldEEgPCBwb3MuY2ggfHwgb2Zmc2V0QSAhPSBsaW5lLmxlbmd0
aCAtIG1hdGNoLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICBmb3IgKDs7
KSB7CiAgICAgICAgICAgICBpZiAocmV2ZXJzZSA/ICFsbiA6IGxuID09IGRvYy5saW5lQ291bnQo
KSAtIDEpIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3Ivc3FsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9zcWwuanMKaW5kZXggZTlkY2I3ZmQ3
NTQwYzNkNTFlZDcyZTkwZWU1YjJlNTVjZjcxMTU2MS4uM2JlNjhjYWExYTJhMGE0NjkwZDZmNzA3
ZjY4MzM0YThiYTQxNjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9zcWwuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9zcWwuanMKQEAgLTI2Miwx
MSArMjYyLDI0IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgic3FsIiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKICAgICBzdXBwb3J0OiBzZXQoIk9EQkNkb3RUYWJsZSBkb3VibGVR
dW90ZSBiaW5hcnlOdW1iZXIgaGV4TnVtYmVyIikKICAgfSk7CiAKKyAgQ29kZU1pcnJvci5kZWZp
bmVNSU1FKCJ0ZXh0L3gtbXNzcWwiLCB7CisgICAgbmFtZTogInNxbCIsCisgICAgY2xpZW50OiBz
ZXQoImNoYXJzZXQgY2xlYXIgY29ubmVjdCBlZGl0IGVnbyBleGl0IGdvIGhlbHAgbm9wYWdlciBu
b3RlZSBub3dhcm5pbmcgcGFnZXIgcHJpbnQgcHJvbXB0IHF1aXQgcmVoYXNoIHNvdXJjZSBzdGF0
dXMgc3lzdGVtIHRlZSIpLAorICAgIGtleXdvcmRzOiBzZXQoc3FsS2V5d29yZHMgKyAiYmVnaW4g
dHJpZ2dlciBwcm9jIHZpZXcgaW5kZXggZm9yIGFkZCBjb25zdHJhaW50IGtleSBwcmltYXJ5IGZv
cmVpZ24gY29sbGF0ZSBjbHVzdGVyZWQgbm9uY2x1c3RlcmVkIiksCisgICAgYnVpbHRpbjogc2V0
KCJiaWdpbnQgbnVtZXJpYyBiaXQgc21hbGxpbnQgZGVjaW1hbCBzbWFsbG1vbmV5IGludCB0aW55
aW50IG1vbmV5IGZsb2F0IHJlYWwgY2hhciB2YXJjaGFyIHRleHQgbmNoYXIgbnZhcmNoYXIgbnRl
eHQgYmluYXJ5IHZhcmJpbmFyeSBpbWFnZSBjdXJzb3IgdGltZXN0YW1wIGhpZXJhcmNoeWlkIHVu
aXF1ZWlkZW50aWZpZXIgc3FsX3ZhcmlhbnQgeG1sIHRhYmxlICIpLAorICAgIGF0b21zOiBzZXQo
ImZhbHNlIHRydWUgbnVsbCB1bmtub3duIiksCisgICAgb3BlcmF0b3JDaGFyczogL15bKitcLSU8
PiE9XS8sCisgICAgZGF0ZVNRTDogc2V0KCJkYXRlIGRhdGV0aW1lb2Zmc2V0IGRhdGV0aW1lMiBz
bWFsbGRhdGV0aW1lIGRhdGV0aW1lIHRpbWUiKSwKKyAgICBob29rczogeworICAgICAgIkAiOiAg
IGhvb2tWYXIKKyAgICB9CisgIH0pOworCiAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSgidGV4dC94
LW15c3FsIiwgewogICAgIG5hbWU6ICJzcWwiLAogICAgIGNsaWVudDogc2V0KCJjaGFyc2V0IGNs
ZWFyIGNvbm5lY3QgZWRpdCBlZ28gZXhpdCBnbyBoZWxwIG5vcGFnZXIgbm90ZWUgbm93YXJuaW5n
IHBhZ2VyIHByaW50IHByb21wdCBxdWl0IHJlaGFzaCBzb3VyY2Ugc3RhdHVzIHN5c3RlbSB0ZWUi
KSwKLSAgICBrZXl3b3Jkczogc2V0KHNxbEtleXdvcmRzICsgImFjY2Vzc2libGUgYWN0aW9uIGFk
ZCBhZnRlciBhbGdvcml0aG0gYWxsIGFuYWx5emUgYXNlbnNpdGl2ZSBhdCBhdXRob3JzIGF1dG9f
aW5jcmVtZW50IGF1dG9jb21taXQgYXZnIGF2Z19yb3dfbGVuZ3RoIGJlZm9yZSBiaW5hcnkgYmlu
bG9nIGJvdGggYnRyZWUgY2FjaGUgY2FsbCBjYXNjYWRlIGNhc2NhZGVkIGNhc2UgY2F0YWxvZ19u
YW1lIGNoYWluIGNoYW5nZSBjaGFuZ2VkIGNoYXJhY3RlciBjaGVjayBjaGVja3BvaW50IGNoZWNr
c3VtIGNsYXNzX29yaWdpbiBjbGllbnRfc3RhdGlzdGljcyBjbG9zZSBjb2FsZXNjZSBjb2RlIGNv
bGxhdGUgY29sbGF0aW9uIGNvbGxhdGlvbnMgY29sdW1uIGNvbHVtbnMgY29tbWVudCBjb21taXQg
Y29tbWl0dGVkIGNvbXBsZXRpb24gY29uY3VycmVudCBjb25kaXRpb24gY29ubmVjdGlvbiBjb25z
aXN0ZW50IGNvbnN0cmFpbnQgY29udGFpbnMgY29udGludWUgY29udHJpYnV0b3JzIGNvbnZlcnQg
Y3Jvc3MgY3VycmVudF9kYXRlIGN1cnJlbnRfdGltZSBjdXJyZW50X3RpbWVzdGFtcCBjdXJyZW50
X3VzZXIgY3Vyc29yIGRhdGEgZGF0YWJhc2UgZGF0YWJhc2VzIGRheV9ob3VyIGRheV9taWNyb3Nl
Y29uZCBkYXlfbWludXRlIGRheV9zZWNvbmQgZGVhbGxvY2F0ZSBkZWMgZGVjbGFyZSBkZWZhdWx0
IGRlbGF5X2tleV93cml0ZSBkZWxheWVkIGRlbGltaXRlciBkZXNfa2V5X2ZpbGUgZGVzY3JpYmUg
ZGV0ZXJtaW5pc3RpYyBkZXZfcG9wIGRldl9zYW1wIGRldmlhbmNlIGRpcmVjdG9yeSBkaXNhYmxl
IGRpc2NhcmQgZGlzdGluY3Ryb3cgZGl2IGR1YWwgZHVtcGZpbGUgZWFjaCBlbHNlaWYgZW5hYmxl
IGVuY2xvc2VkIGVuZCBlbmRzIGVuZ2luZSBlbmdpbmVzIGVudW0gZXJyb3JzIGVzY2FwZSBlc2Nh
cGVkIGV2ZW4gZXZlbnQgZXZlbnRzIGV2ZXJ5IGV4ZWN1dGUgZXhpc3RzIGV4aXQgZXhwbGFpbiBl
eHRlbmRlZCBmYXN0IGZldGNoIGZpZWxkIGZpZWxkcyBmaXJzdCBmbHVzaCBmb3IgZm9yY2UgZm9y
ZWlnbiBmb3VuZF9yb3dzIGZ1bGwgZnVsbHRleHQgZnVuY3Rpb24gZ2VuZXJhbCBnbG9iYWwgZ3Jh
bnQgZ3JhbnRzIGdyb3VwIGdyb3VwYnlfY29uY2F0IGhhbmRsZXIgaGFzaCBoZWxwIGhpZ2hfcHJp
b3JpdHkgaG9zdHMgaG91cl9taWNyb3NlY29uZCBob3VyX21pbnV0ZSBob3VyX3NlY29uZCBpZiBp
Z25vcmUgaWdub3JlX3NlcnZlcl9pZHMgaW1wb3J0IGluZGV4IGluZGV4X3N0YXRpc3RpY3MgaW5m
aWxlIGlubmVyIGlubm9kYiBpbm91dCBpbnNlbnNpdGl2ZSBpbnNlcnRfbWV0aG9kIGluc3RhbGwg
aW50ZXJ2YWwgaW52b2tlciBpc29sYXRpb24gaXRlcmF0ZSBrZXkga2V5cyBraWxsIGxhbmd1YWdl
IGxhc3QgbGVhZGluZyBsZWF2ZSBsZWZ0IGxldmVsIGxpbWl0IGxpbmVhciBsaW5lcyBsaXN0IGxv
YWQgbG9jYWwgbG9jYWx0aW1lIGxvY2FsdGltZXN0YW1wIGxvY2sgbG9ncyBsb3dfcHJpb3JpdHkg
bWFzdGVyIG1hc3Rlcl9oZWFydGJlYXRfcGVyaW9kIG1hc3Rlcl9zc2xfdmVyaWZ5X3NlcnZlcl9j
ZXJ0IG1hc3RlcnMgbWF0Y2ggbWF4IG1heF9yb3dzIG1heHZhbHVlIG1lc3NhZ2VfdGV4dCBtaWRk
bGVpbnQgbWlncmF0ZSBtaW4gbWluX3Jvd3MgbWludXRlX21pY3Jvc2Vjb25kIG1pbnV0ZV9zZWNv
bmQgbW9kIG1vZGUgbW9kaWZpZXMgbW9kaWZ5IG11dGV4IG15c3FsX2Vycm5vIG5hdHVyYWwgbmV4
dCBubyBub193cml0ZV90b19iaW5sb2cgb2ZmbGluZSBvZmZzZXQgb25lIG9ubGluZSBvcGVuIG9w
dGltaXplIG9wdGlvbiBvcHRpb25hbGx5IG91dCBvdXRlciBvdXRmaWxlIHBhY2tfa2V5cyBwYXJz
ZXIgcGFydGl0aW9uIHBhcnRpdGlvbnMgcGFzc3dvcmQgcGhhc2UgcGx1Z2luIHBsdWdpbnMgcHJl
cGFyZSBwcmVzZXJ2ZSBwcmV2IHByaW1hcnkgcHJpdmlsZWdlcyBwcm9jZWR1cmUgcHJvY2Vzc2xp
c3QgcHJvZmlsZSBwcm9maWxlcyBwdXJnZSBxdWVyeSBxdWljayByYW5nZSByZWFkIHJlYWRfd3Jp
dGUgcmVhZHMgcmVhbCByZWJ1aWxkIHJlY292ZXIgcmVmZXJlbmNlcyByZWdleHAgcmVsYXlsb2cg
cmVsZWFzZSByZW1vdmUgcmVuYW1lIHJlb3JnYW5pemUgcmVwYWlyIHJlcGVhdGFibGUgcmVwbGFj
ZSByZXF1aXJlIHJlc2lnbmFsIHJlc3RyaWN0IHJlc3VtZSByZXR1cm4gcmV0dXJucyByZXZva2Ug
cmlnaHQgcmxpa2Ugcm9sbGJhY2sgcm9sbHVwIHJvdyByb3dfZm9ybWF0IHJ0cmVlIHNhdmVwb2lu
dCBzY2hlZHVsZSBzY2hlbWEgc2NoZW1hX25hbWUgc2NoZW1hcyBzZWNvbmRfbWljcm9zZWNvbmQg
c2VjdXJpdHkgc2Vuc2l0aXZlIHNlcGFyYXRvciBzZXJpYWxpemFibGUgc2VydmVyIHNlc3Npb24g
c2hhcmUgc2hvdyBzaWduYWwgc2xhdmUgc2xvdyBzbWFsbGludCBzbmFwc2hvdCBzb25hbWUgc3Bh
dGlhbCBzcGVjaWZpYyBzcWwgc3FsX2JpZ19yZXN1bHQgc3FsX2J1ZmZlcl9yZXN1bHQgc3FsX2Nh
Y2hlIHNxbF9jYWxjX2ZvdW5kX3Jvd3Mgc3FsX25vX2NhY2hlIHNxbF9zbWFsbF9yZXN1bHQgc3Fs
ZXhjZXB0aW9uIHNxbHN0YXRlIHNxbHdhcm5pbmcgc3NsIHN0YXJ0IHN0YXJ0aW5nIHN0YXJ0cyBz
dGF0dXMgc3RkIHN0ZGRldiBzdGRkZXZfcG9wIHN0ZGRldl9zYW1wIHN0b3JhZ2Ugc3RyYWlnaHRf
am9pbiBzdWJjbGFzc19vcmlnaW4gc3VtIHN1c3BlbmQgdGFibGVfbmFtZSB0YWJsZV9zdGF0aXN0
aWNzIHRhYmxlcyB0YWJsZXNwYWNlIHRlbXBvcmFyeSB0ZXJtaW5hdGVkIHRvIHRyYWlsaW5nIHRy
YW5zYWN0aW9uIHRyaWdnZXIgdHJpZ2dlcnMgdHJ1bmNhdGUgdW5jb21taXR0ZWQgdW5kbyB1bmlu
c3RhbGwgdW5pcXVlIHVubG9jayB1cGdyYWRlIHVzYWdlIHVzZSB1c2VfZnJtIHVzZXIgdXNlcl9y
ZXNvdXJjZXMgdXNlcl9zdGF0aXN0aWNzIHVzaW5nIHV0Y19kYXRlIHV0Y190aW1lIHV0Y190aW1l
c3RhbXAgdmFsdWUgdmFyaWFibGVzIHZhcnlpbmcgdmlldyB2aWV3cyB3YXJuaW5ncyB3aGVuIHdo
aWxlIHdpdGggd29yayB3cml0ZSB4YSB4b3IgeWVhcl9tb250aCB6ZXJvZmlsbCBiZWdpbiBkbyB0
aGVuIGVsc2UgbG9vcCByZXBlYXQiKSwKLSAgICBidWlsdGluOiBzZXQoImJvb2wgYm9vbGVhbiBi
aXQgYmxvYiBkZWNpbWFsIGRvdWJsZSBlbnVtIGZsb2F0IGxvbmcgbG9uZ2Jsb2IgbG9uZ3RleHQg
bWVkaXVtIG1lZGl1bWJsb2IgbWVkaXVtaW50IG1lZGl1bXRleHQgdGltZSB0aW1lc3RhbXAgdGlu
eWJsb2IgdGlueWludCB0aW55dGV4dCB0ZXh0IGJpZ2ludCBpbnQgaW50MSBpbnQyIGludDMgaW50
NCBpbnQ4IGludGVnZXIgZmxvYXQgZmxvYXQ0IGZsb2F0OCBkb3VibGUgY2hhciB2YXJiaW5hcnkg
dmFyY2hhciB2YXJjaGFyYWN0ZXIgcHJlY2lzaW9uIGRhdGUgZGF0ZXRpbWUgeWVhciB1bnNpZ25l
ZCBzaWduZWQgbnVtZXJpYyIpLAorICAgIGtleXdvcmRzOiBzZXQoc3FsS2V5d29yZHMgKyAiYWNj
ZXNzaWJsZSBhY3Rpb24gYWRkIGFmdGVyIGFsZ29yaXRobSBhbGwgYW5hbHl6ZSBhc2Vuc2l0aXZl
IGF0IGF1dGhvcnMgYXV0b19pbmNyZW1lbnQgYXV0b2NvbW1pdCBhdmcgYXZnX3Jvd19sZW5ndGgg
YmVmb3JlIGJpbmFyeSBiaW5sb2cgYm90aCBidHJlZSBjYWNoZSBjYWxsIGNhc2NhZGUgY2FzY2Fk
ZWQgY2FzZSBjYXRhbG9nX25hbWUgY2hhaW4gY2hhbmdlIGNoYW5nZWQgY2hhcmFjdGVyIGNoZWNr
IGNoZWNrcG9pbnQgY2hlY2tzdW0gY2xhc3Nfb3JpZ2luIGNsaWVudF9zdGF0aXN0aWNzIGNsb3Nl
IGNvYWxlc2NlIGNvZGUgY29sbGF0ZSBjb2xsYXRpb24gY29sbGF0aW9ucyBjb2x1bW4gY29sdW1u
cyBjb21tZW50IGNvbW1pdCBjb21taXR0ZWQgY29tcGxldGlvbiBjb25jdXJyZW50IGNvbmRpdGlv
biBjb25uZWN0aW9uIGNvbnNpc3RlbnQgY29uc3RyYWludCBjb250YWlucyBjb250aW51ZSBjb250
cmlidXRvcnMgY29udmVydCBjcm9zcyBjdXJyZW50IGN1cnJlbnRfZGF0ZSBjdXJyZW50X3RpbWUg
Y3VycmVudF90aW1lc3RhbXAgY3VycmVudF91c2VyIGN1cnNvciBkYXRhIGRhdGFiYXNlIGRhdGFi
YXNlcyBkYXlfaG91ciBkYXlfbWljcm9zZWNvbmQgZGF5X21pbnV0ZSBkYXlfc2Vjb25kIGRlYWxs
b2NhdGUgZGVjIGRlY2xhcmUgZGVmYXVsdCBkZWxheV9rZXlfd3JpdGUgZGVsYXllZCBkZWxpbWl0
ZXIgZGVzX2tleV9maWxlIGRlc2NyaWJlIGRldGVybWluaXN0aWMgZGV2X3BvcCBkZXZfc2FtcCBk
ZXZpYW5jZSBkaWFnbm9zdGljcyBkaXJlY3RvcnkgZGlzYWJsZSBkaXNjYXJkIGRpc3RpbmN0cm93
IGRpdiBkdWFsIGR1bXBmaWxlIGVhY2ggZWxzZWlmIGVuYWJsZSBlbmNsb3NlZCBlbmQgZW5kcyBl
bmdpbmUgZW5naW5lcyBlbnVtIGVycm9ycyBlc2NhcGUgZXNjYXBlZCBldmVuIGV2ZW50IGV2ZW50
cyBldmVyeSBleGVjdXRlIGV4aXN0cyBleGl0IGV4cGxhaW4gZXh0ZW5kZWQgZmFzdCBmZXRjaCBm
aWVsZCBmaWVsZHMgZmlyc3QgZmx1c2ggZm9yIGZvcmNlIGZvcmVpZ24gZm91bmRfcm93cyBmdWxs
IGZ1bGx0ZXh0IGZ1bmN0aW9uIGdlbmVyYWwgZ2V0IGdsb2JhbCBncmFudCBncmFudHMgZ3JvdXAg
Z3JvdXBieV9jb25jYXQgaGFuZGxlciBoYXNoIGhlbHAgaGlnaF9wcmlvcml0eSBob3N0cyBob3Vy
X21pY3Jvc2Vjb25kIGhvdXJfbWludXRlIGhvdXJfc2Vjb25kIGlmIGlnbm9yZSBpZ25vcmVfc2Vy
dmVyX2lkcyBpbXBvcnQgaW5kZXggaW5kZXhfc3RhdGlzdGljcyBpbmZpbGUgaW5uZXIgaW5ub2Ri
IGlub3V0IGluc2Vuc2l0aXZlIGluc2VydF9tZXRob2QgaW5zdGFsbCBpbnRlcnZhbCBpbnZva2Vy
IGlzb2xhdGlvbiBpdGVyYXRlIGtleSBrZXlzIGtpbGwgbGFuZ3VhZ2UgbGFzdCBsZWFkaW5nIGxl
YXZlIGxlZnQgbGV2ZWwgbGltaXQgbGluZWFyIGxpbmVzIGxpc3QgbG9hZCBsb2NhbCBsb2NhbHRp
bWUgbG9jYWx0aW1lc3RhbXAgbG9jayBsb2dzIGxvd19wcmlvcml0eSBtYXN0ZXIgbWFzdGVyX2hl
YXJ0YmVhdF9wZXJpb2QgbWFzdGVyX3NzbF92ZXJpZnlfc2VydmVyX2NlcnQgbWFzdGVycyBtYXRj
aCBtYXggbWF4X3Jvd3MgbWF4dmFsdWUgbWVzc2FnZV90ZXh0IG1pZGRsZWludCBtaWdyYXRlIG1p
biBtaW5fcm93cyBtaW51dGVfbWljcm9zZWNvbmQgbWludXRlX3NlY29uZCBtb2QgbW9kZSBtb2Rp
ZmllcyBtb2RpZnkgbXV0ZXggbXlzcWxfZXJybm8gbmF0dXJhbCBuZXh0IG5vIG5vX3dyaXRlX3Rv
X2JpbmxvZyBvZmZsaW5lIG9mZnNldCBvbmUgb25saW5lIG9wZW4gb3B0aW1pemUgb3B0aW9uIG9w
dGlvbmFsbHkgb3V0IG91dGVyIG91dGZpbGUgcGFja19rZXlzIHBhcnNlciBwYXJ0aXRpb24gcGFy
dGl0aW9ucyBwYXNzd29yZCBwaGFzZSBwbHVnaW4gcGx1Z2lucyBwcmVwYXJlIHByZXNlcnZlIHBy
ZXYgcHJpbWFyeSBwcml2aWxlZ2VzIHByb2NlZHVyZSBwcm9jZXNzbGlzdCBwcm9maWxlIHByb2Zp
bGVzIHB1cmdlIHF1ZXJ5IHF1aWNrIHJhbmdlIHJlYWQgcmVhZF93cml0ZSByZWFkcyByZWFsIHJl
YnVpbGQgcmVjb3ZlciByZWZlcmVuY2VzIHJlZ2V4cCByZWxheWxvZyByZWxlYXNlIHJlbW92ZSBy
ZW5hbWUgcmVvcmdhbml6ZSByZXBhaXIgcmVwZWF0YWJsZSByZXBsYWNlIHJlcXVpcmUgcmVzaWdu
YWwgcmVzdHJpY3QgcmVzdW1lIHJldHVybiByZXR1cm5zIHJldm9rZSByaWdodCBybGlrZSByb2xs
YmFjayByb2xsdXAgcm93IHJvd19mb3JtYXQgcnRyZWUgc2F2ZXBvaW50IHNjaGVkdWxlIHNjaGVt
YSBzY2hlbWFfbmFtZSBzY2hlbWFzIHNlY29uZF9taWNyb3NlY29uZCBzZWN1cml0eSBzZW5zaXRp
dmUgc2VwYXJhdG9yIHNlcmlhbGl6YWJsZSBzZXJ2ZXIgc2Vzc2lvbiBzaGFyZSBzaG93IHNpZ25h
bCBzbGF2ZSBzbG93IHNtYWxsaW50IHNuYXBzaG90IHNvbmFtZSBzcGF0aWFsIHNwZWNpZmljIHNx
bCBzcWxfYmlnX3Jlc3VsdCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3FsX2NhbGNfZm91
bmRfcm93cyBzcWxfbm9fY2FjaGUgc3FsX3NtYWxsX3Jlc3VsdCBzcWxleGNlcHRpb24gc3Fsc3Rh
dGUgc3Fsd2FybmluZyBzc2wgc3RhcnQgc3RhcnRpbmcgc3RhcnRzIHN0YXR1cyBzdGQgc3RkZGV2
IHN0ZGRldl9wb3Agc3RkZGV2X3NhbXAgc3RvcmFnZSBzdHJhaWdodF9qb2luIHN1YmNsYXNzX29y
aWdpbiBzdW0gc3VzcGVuZCB0YWJsZV9uYW1lIHRhYmxlX3N0YXRpc3RpY3MgdGFibGVzIHRhYmxl
c3BhY2UgdGVtcG9yYXJ5IHRlcm1pbmF0ZWQgdG8gdHJhaWxpbmcgdHJhbnNhY3Rpb24gdHJpZ2dl
ciB0cmlnZ2VycyB0cnVuY2F0ZSB1bmNvbW1pdHRlZCB1bmRvIHVuaW5zdGFsbCB1bmlxdWUgdW5s
b2NrIHVwZ3JhZGUgdXNhZ2UgdXNlIHVzZV9mcm0gdXNlciB1c2VyX3Jlc291cmNlcyB1c2VyX3N0
YXRpc3RpY3MgdXNpbmcgdXRjX2RhdGUgdXRjX3RpbWUgdXRjX3RpbWVzdGFtcCB2YWx1ZSB2YXJp
YWJsZXMgdmFyeWluZyB2aWV3IHZpZXdzIHdhcm5pbmdzIHdoZW4gd2hpbGUgd2l0aCB3b3JrIHdy
aXRlIHhhIHhvciB5ZWFyX21vbnRoIHplcm9maWxsIGJlZ2luIGRvIHRoZW4gZWxzZSBsb29wIHJl
cGVhdCIpLAorICAgIGJ1aWx0aW46IHNldCgiYm9vbCBib29sZWFuIGJpdCBibG9iIGRlY2ltYWwg
ZG91YmxlIGZsb2F0IGxvbmcgbG9uZ2Jsb2IgbG9uZ3RleHQgbWVkaXVtIG1lZGl1bWJsb2IgbWVk
aXVtaW50IG1lZGl1bXRleHQgdGltZSB0aW1lc3RhbXAgdGlueWJsb2IgdGlueWludCB0aW55dGV4
dCB0ZXh0IGJpZ2ludCBpbnQgaW50MSBpbnQyIGludDMgaW50NCBpbnQ4IGludGVnZXIgZmxvYXQg
ZmxvYXQ0IGZsb2F0OCBkb3VibGUgY2hhciB2YXJiaW5hcnkgdmFyY2hhciB2YXJjaGFyYWN0ZXIg
cHJlY2lzaW9uIGRhdGUgZGF0ZXRpbWUgeWVhciB1bnNpZ25lZCBzaWduZWQgbnVtZXJpYyIpLAog
ICAgIGF0b21zOiBzZXQoImZhbHNlIHRydWUgbnVsbCB1bmtub3duIiksCiAgICAgb3BlcmF0b3JD
aGFyczogL15bKitcLSU8PiE9JnxeXS8sCiAgICAgZGF0ZVNRTDogc2V0KCJkYXRlIHRpbWUgdGlt
ZXN0YW1wIiksCkBAIC0yODEsOCArMjk0LDggQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJzcWwi
LCBmdW5jdGlvbihjb25maWcsIHBhcnNlckNvbmZpZykgewogICBDb2RlTWlycm9yLmRlZmluZU1J
TUUoInRleHQveC1tYXJpYWRiIiwgewogICAgIG5hbWU6ICJzcWwiLAogICAgIGNsaWVudDogc2V0
KCJjaGFyc2V0IGNsZWFyIGNvbm5lY3QgZWRpdCBlZ28gZXhpdCBnbyBoZWxwIG5vcGFnZXIgbm90
ZWUgbm93YXJuaW5nIHBhZ2VyIHByaW50IHByb21wdCBxdWl0IHJlaGFzaCBzb3VyY2Ugc3RhdHVz
IHN5c3RlbSB0ZWUiKSwKLSAgICBrZXl3b3Jkczogc2V0KHNxbEtleXdvcmRzICsgImFjY2Vzc2li
bGUgYWN0aW9uIGFkZCBhZnRlciBhbGdvcml0aG0gYWxsIGFsd2F5cyBhbmFseXplIGFzZW5zaXRp
dmUgYXQgYXV0aG9ycyBhdXRvX2luY3JlbWVudCBhdXRvY29tbWl0IGF2ZyBhdmdfcm93X2xlbmd0
aCBiZWZvcmUgYmluYXJ5IGJpbmxvZyBib3RoIGJ0cmVlIGNhY2hlIGNhbGwgY2FzY2FkZSBjYXNj
YWRlZCBjYXNlIGNhdGFsb2dfbmFtZSBjaGFpbiBjaGFuZ2UgY2hhbmdlZCBjaGFyYWN0ZXIgY2hl
Y2sgY2hlY2twb2ludCBjaGVja3N1bSBjbGFzc19vcmlnaW4gY2xpZW50X3N0YXRpc3RpY3MgY2xv
c2UgY29hbGVzY2UgY29kZSBjb2xsYXRlIGNvbGxhdGlvbiBjb2xsYXRpb25zIGNvbHVtbiBjb2x1
bW5zIGNvbW1lbnQgY29tbWl0IGNvbW1pdHRlZCBjb21wbGV0aW9uIGNvbmN1cnJlbnQgY29uZGl0
aW9uIGNvbm5lY3Rpb24gY29uc2lzdGVudCBjb25zdHJhaW50IGNvbnRhaW5zIGNvbnRpbnVlIGNv
bnRyaWJ1dG9ycyBjb252ZXJ0IGNyb3NzIGN1cnJlbnRfZGF0ZSBjdXJyZW50X3RpbWUgY3VycmVu
dF90aW1lc3RhbXAgY3VycmVudF91c2VyIGN1cnNvciBkYXRhIGRhdGFiYXNlIGRhdGFiYXNlcyBk
YXlfaG91ciBkYXlfbWljcm9zZWNvbmQgZGF5X21pbnV0ZSBkYXlfc2Vjb25kIGRlYWxsb2NhdGUg
ZGVjIGRlY2xhcmUgZGVmYXVsdCBkZWxheV9rZXlfd3JpdGUgZGVsYXllZCBkZWxpbWl0ZXIgZGVz
X2tleV9maWxlIGRlc2NyaWJlIGRldGVybWluaXN0aWMgZGV2X3BvcCBkZXZfc2FtcCBkZXZpYW5j
ZSBkaXJlY3RvcnkgZGlzYWJsZSBkaXNjYXJkIGRpc3RpbmN0cm93IGRpdiBkdWFsIGR1bXBmaWxl
IGVhY2ggZWxzZWlmIGVuYWJsZSBlbmNsb3NlZCBlbmQgZW5kcyBlbmdpbmUgZW5naW5lcyBlbnVt
IGVycm9ycyBlc2NhcGUgZXNjYXBlZCBldmVuIGV2ZW50IGV2ZW50cyBldmVyeSBleGVjdXRlIGV4
aXN0cyBleGl0IGV4cGxhaW4gZXh0ZW5kZWQgZmFzdCBmZXRjaCBmaWVsZCBmaWVsZHMgZmlyc3Qg
Zmx1c2ggZm9yIGZvcmNlIGZvcmVpZ24gZm91bmRfcm93cyBmdWxsIGZ1bGx0ZXh0IGZ1bmN0aW9u
IGdlbmVyYWwgZ2VuZXJhdGVkIGdsb2JhbCBncmFudCBncmFudHMgZ3JvdXAgZ3JvdXBieV9jb25j
YXQgaGFuZGxlciBoYXJkIGhhc2ggaGVscCBoaWdoX3ByaW9yaXR5IGhvc3RzIGhvdXJfbWljcm9z
ZWNvbmQgaG91cl9taW51dGUgaG91cl9zZWNvbmQgaWYgaWdub3JlIGlnbm9yZV9zZXJ2ZXJfaWRz
IGltcG9ydCBpbmRleCBpbmRleF9zdGF0aXN0aWNzIGluZmlsZSBpbm5lciBpbm5vZGIgaW5vdXQg
aW5zZW5zaXRpdmUgaW5zZXJ0X21ldGhvZCBpbnN0YWxsIGludGVydmFsIGludm9rZXIgaXNvbGF0
aW9uIGl0ZXJhdGUga2V5IGtleXMga2lsbCBsYW5ndWFnZSBsYXN0IGxlYWRpbmcgbGVhdmUgbGVm
dCBsZXZlbCBsaW1pdCBsaW5lYXIgbGluZXMgbGlzdCBsb2FkIGxvY2FsIGxvY2FsdGltZSBsb2Nh
bHRpbWVzdGFtcCBsb2NrIGxvZ3MgbG93X3ByaW9yaXR5IG1hc3RlciBtYXN0ZXJfaGVhcnRiZWF0
X3BlcmlvZCBtYXN0ZXJfc3NsX3ZlcmlmeV9zZXJ2ZXJfY2VydCBtYXN0ZXJzIG1hdGNoIG1heCBt
YXhfcm93cyBtYXh2YWx1ZSBtZXNzYWdlX3RleHQgbWlkZGxlaW50IG1pZ3JhdGUgbWluIG1pbl9y
b3dzIG1pbnV0ZV9taWNyb3NlY29uZCBtaW51dGVfc2Vjb25kIG1vZCBtb2RlIG1vZGlmaWVzIG1v
ZGlmeSBtdXRleCBteXNxbF9lcnJubyBuYXR1cmFsIG5leHQgbm8gbm9fd3JpdGVfdG9fYmlubG9n
IG9mZmxpbmUgb2Zmc2V0IG9uZSBvbmxpbmUgb3BlbiBvcHRpbWl6ZSBvcHRpb24gb3B0aW9uYWxs
eSBvdXQgb3V0ZXIgb3V0ZmlsZSBwYWNrX2tleXMgcGFyc2VyIHBhcnRpdGlvbiBwYXJ0aXRpb25z
IHBhc3N3b3JkIHBlcnNpc3RlbnQgcGhhc2UgcGx1Z2luIHBsdWdpbnMgcHJlcGFyZSBwcmVzZXJ2
ZSBwcmV2IHByaW1hcnkgcHJpdmlsZWdlcyBwcm9jZWR1cmUgcHJvY2Vzc2xpc3QgcHJvZmlsZSBw
cm9maWxlcyBwdXJnZSBxdWVyeSBxdWljayByYW5nZSByZWFkIHJlYWRfd3JpdGUgcmVhZHMgcmVh
bCByZWJ1aWxkIHJlY292ZXIgcmVmZXJlbmNlcyByZWdleHAgcmVsYXlsb2cgcmVsZWFzZSByZW1v
dmUgcmVuYW1lIHJlb3JnYW5pemUgcmVwYWlyIHJlcGVhdGFibGUgcmVwbGFjZSByZXF1aXJlIHJl
c2lnbmFsIHJlc3RyaWN0IHJlc3VtZSByZXR1cm4gcmV0dXJucyByZXZva2UgcmlnaHQgcmxpa2Ug
cm9sbGJhY2sgcm9sbHVwIHJvdyByb3dfZm9ybWF0IHJ0cmVlIHNhdmVwb2ludCBzY2hlZHVsZSBz
Y2hlbWEgc2NoZW1hX25hbWUgc2NoZW1hcyBzZWNvbmRfbWljcm9zZWNvbmQgc2VjdXJpdHkgc2Vu
c2l0aXZlIHNlcGFyYXRvciBzZXJpYWxpemFibGUgc2VydmVyIHNlc3Npb24gc2hhcmUgc2hvdyBz
aWduYWwgc2xhdmUgc2xvdyBzbWFsbGludCBzbmFwc2hvdCBzb2Z0IHNvbmFtZSBzcGF0aWFsIHNw
ZWNpZmljIHNxbCBzcWxfYmlnX3Jlc3VsdCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3Fs
X2NhbGNfZm91bmRfcm93cyBzcWxfbm9fY2FjaGUgc3FsX3NtYWxsX3Jlc3VsdCBzcWxleGNlcHRp
b24gc3Fsc3RhdGUgc3Fsd2FybmluZyBzc2wgc3RhcnQgc3RhcnRpbmcgc3RhcnRzIHN0YXR1cyBz
dGQgc3RkZGV2IHN0ZGRldl9wb3Agc3RkZGV2X3NhbXAgc3RvcmFnZSBzdHJhaWdodF9qb2luIHN1
YmNsYXNzX29yaWdpbiBzdW0gc3VzcGVuZCB0YWJsZV9uYW1lIHRhYmxlX3N0YXRpc3RpY3MgdGFi
bGVzIHRhYmxlc3BhY2UgdGVtcG9yYXJ5IHRlcm1pbmF0ZWQgdG8gdHJhaWxpbmcgdHJhbnNhY3Rp
b24gdHJpZ2dlciB0cmlnZ2VycyB0cnVuY2F0ZSB1bmNvbW1pdHRlZCB1bmRvIHVuaW5zdGFsbCB1
bmlxdWUgdW5sb2NrIHVwZ3JhZGUgdXNhZ2UgdXNlIHVzZV9mcm0gdXNlciB1c2VyX3Jlc291cmNl
cyB1c2VyX3N0YXRpc3RpY3MgdXNpbmcgdXRjX2RhdGUgdXRjX3RpbWUgdXRjX3RpbWVzdGFtcCB2
YWx1ZSB2YXJpYWJsZXMgdmFyeWluZyB2aWV3IHZpZXdzIHZpcnR1YWwgd2FybmluZ3Mgd2hlbiB3
aGlsZSB3aXRoIHdvcmsgd3JpdGUgeGEgeG9yIHllYXJfbW9udGggemVyb2ZpbGwgYmVnaW4gZG8g
dGhlbiBlbHNlIGxvb3AgcmVwZWF0IiksCi0gICAgYnVpbHRpbjogc2V0KCJib29sIGJvb2xlYW4g
Yml0IGJsb2IgZGVjaW1hbCBkb3VibGUgZW51bSBmbG9hdCBsb25nIGxvbmdibG9iIGxvbmd0ZXh0
IG1lZGl1bSBtZWRpdW1ibG9iIG1lZGl1bWludCBtZWRpdW10ZXh0IHRpbWUgdGltZXN0YW1wIHRp
bnlibG9iIHRpbnlpbnQgdGlueXRleHQgdGV4dCBiaWdpbnQgaW50IGludDEgaW50MiBpbnQzIGlu
dDQgaW50OCBpbnRlZ2VyIGZsb2F0IGZsb2F0NCBmbG9hdDggZG91YmxlIGNoYXIgdmFyYmluYXJ5
IHZhcmNoYXIgdmFyY2hhcmFjdGVyIHByZWNpc2lvbiBkYXRlIGRhdGV0aW1lIHllYXIgdW5zaWdu
ZWQgc2lnbmVkIG51bWVyaWMiKSwKKyAgICBrZXl3b3Jkczogc2V0KHNxbEtleXdvcmRzICsgImFj
Y2Vzc2libGUgYWN0aW9uIGFkZCBhZnRlciBhbGdvcml0aG0gYWxsIGFsd2F5cyBhbmFseXplIGFz
ZW5zaXRpdmUgYXQgYXV0aG9ycyBhdXRvX2luY3JlbWVudCBhdXRvY29tbWl0IGF2ZyBhdmdfcm93
X2xlbmd0aCBiZWZvcmUgYmluYXJ5IGJpbmxvZyBib3RoIGJ0cmVlIGNhY2hlIGNhbGwgY2FzY2Fk
ZSBjYXNjYWRlZCBjYXNlIGNhdGFsb2dfbmFtZSBjaGFpbiBjaGFuZ2UgY2hhbmdlZCBjaGFyYWN0
ZXIgY2hlY2sgY2hlY2twb2ludCBjaGVja3N1bSBjbGFzc19vcmlnaW4gY2xpZW50X3N0YXRpc3Rp
Y3MgY2xvc2UgY29hbGVzY2UgY29kZSBjb2xsYXRlIGNvbGxhdGlvbiBjb2xsYXRpb25zIGNvbHVt
biBjb2x1bW5zIGNvbW1lbnQgY29tbWl0IGNvbW1pdHRlZCBjb21wbGV0aW9uIGNvbmN1cnJlbnQg
Y29uZGl0aW9uIGNvbm5lY3Rpb24gY29uc2lzdGVudCBjb25zdHJhaW50IGNvbnRhaW5zIGNvbnRp
bnVlIGNvbnRyaWJ1dG9ycyBjb252ZXJ0IGNyb3NzIGN1cnJlbnQgY3VycmVudF9kYXRlIGN1cnJl
bnRfdGltZSBjdXJyZW50X3RpbWVzdGFtcCBjdXJyZW50X3VzZXIgY3Vyc29yIGRhdGEgZGF0YWJh
c2UgZGF0YWJhc2VzIGRheV9ob3VyIGRheV9taWNyb3NlY29uZCBkYXlfbWludXRlIGRheV9zZWNv
bmQgZGVhbGxvY2F0ZSBkZWMgZGVjbGFyZSBkZWZhdWx0IGRlbGF5X2tleV93cml0ZSBkZWxheWVk
IGRlbGltaXRlciBkZXNfa2V5X2ZpbGUgZGVzY3JpYmUgZGV0ZXJtaW5pc3RpYyBkZXZfcG9wIGRl
dl9zYW1wIGRldmlhbmNlIGRpYWdub3N0aWNzIGRpcmVjdG9yeSBkaXNhYmxlIGRpc2NhcmQgZGlz
dGluY3Ryb3cgZGl2IGR1YWwgZHVtcGZpbGUgZWFjaCBlbHNlaWYgZW5hYmxlIGVuY2xvc2VkIGVu
ZCBlbmRzIGVuZ2luZSBlbmdpbmVzIGVudW0gZXJyb3JzIGVzY2FwZSBlc2NhcGVkIGV2ZW4gZXZl
bnQgZXZlbnRzIGV2ZXJ5IGV4ZWN1dGUgZXhpc3RzIGV4aXQgZXhwbGFpbiBleHRlbmRlZCBmYXN0
IGZldGNoIGZpZWxkIGZpZWxkcyBmaXJzdCBmbHVzaCBmb3IgZm9yY2UgZm9yZWlnbiBmb3VuZF9y
b3dzIGZ1bGwgZnVsbHRleHQgZnVuY3Rpb24gZ2VuZXJhbCBnZW5lcmF0ZWQgZ2V0IGdsb2JhbCBn
cmFudCBncmFudHMgZ3JvdXAgZ3JvdXBieV9jb25jYXQgaGFuZGxlciBoYXJkIGhhc2ggaGVscCBo
aWdoX3ByaW9yaXR5IGhvc3RzIGhvdXJfbWljcm9zZWNvbmQgaG91cl9taW51dGUgaG91cl9zZWNv
bmQgaWYgaWdub3JlIGlnbm9yZV9zZXJ2ZXJfaWRzIGltcG9ydCBpbmRleCBpbmRleF9zdGF0aXN0
aWNzIGluZmlsZSBpbm5lciBpbm5vZGIgaW5vdXQgaW5zZW5zaXRpdmUgaW5zZXJ0X21ldGhvZCBp
bnN0YWxsIGludGVydmFsIGludm9rZXIgaXNvbGF0aW9uIGl0ZXJhdGUga2V5IGtleXMga2lsbCBs
YW5ndWFnZSBsYXN0IGxlYWRpbmcgbGVhdmUgbGVmdCBsZXZlbCBsaW1pdCBsaW5lYXIgbGluZXMg
bGlzdCBsb2FkIGxvY2FsIGxvY2FsdGltZSBsb2NhbHRpbWVzdGFtcCBsb2NrIGxvZ3MgbG93X3By
aW9yaXR5IG1hc3RlciBtYXN0ZXJfaGVhcnRiZWF0X3BlcmlvZCBtYXN0ZXJfc3NsX3ZlcmlmeV9z
ZXJ2ZXJfY2VydCBtYXN0ZXJzIG1hdGNoIG1heCBtYXhfcm93cyBtYXh2YWx1ZSBtZXNzYWdlX3Rl
eHQgbWlkZGxlaW50IG1pZ3JhdGUgbWluIG1pbl9yb3dzIG1pbnV0ZV9taWNyb3NlY29uZCBtaW51
dGVfc2Vjb25kIG1vZCBtb2RlIG1vZGlmaWVzIG1vZGlmeSBtdXRleCBteXNxbF9lcnJubyBuYXR1
cmFsIG5leHQgbm8gbm9fd3JpdGVfdG9fYmlubG9nIG9mZmxpbmUgb2Zmc2V0IG9uZSBvbmxpbmUg
b3BlbiBvcHRpbWl6ZSBvcHRpb24gb3B0aW9uYWxseSBvdXQgb3V0ZXIgb3V0ZmlsZSBwYWNrX2tl
eXMgcGFyc2VyIHBhcnRpdGlvbiBwYXJ0aXRpb25zIHBhc3N3b3JkIHBlcnNpc3RlbnQgcGhhc2Ug
cGx1Z2luIHBsdWdpbnMgcHJlcGFyZSBwcmVzZXJ2ZSBwcmV2IHByaW1hcnkgcHJpdmlsZWdlcyBw
cm9jZWR1cmUgcHJvY2Vzc2xpc3QgcHJvZmlsZSBwcm9maWxlcyBwdXJnZSBxdWVyeSBxdWljayBy
YW5nZSByZWFkIHJlYWRfd3JpdGUgcmVhZHMgcmVhbCByZWJ1aWxkIHJlY292ZXIgcmVmZXJlbmNl
cyByZWdleHAgcmVsYXlsb2cgcmVsZWFzZSByZW1vdmUgcmVuYW1lIHJlb3JnYW5pemUgcmVwYWly
IHJlcGVhdGFibGUgcmVwbGFjZSByZXF1aXJlIHJlc2lnbmFsIHJlc3RyaWN0IHJlc3VtZSByZXR1
cm4gcmV0dXJucyByZXZva2UgcmlnaHQgcmxpa2Ugcm9sbGJhY2sgcm9sbHVwIHJvdyByb3dfZm9y
bWF0IHJ0cmVlIHNhdmVwb2ludCBzY2hlZHVsZSBzY2hlbWEgc2NoZW1hX25hbWUgc2NoZW1hcyBz
ZWNvbmRfbWljcm9zZWNvbmQgc2VjdXJpdHkgc2Vuc2l0aXZlIHNlcGFyYXRvciBzZXJpYWxpemFi
bGUgc2VydmVyIHNlc3Npb24gc2hhcmUgc2hvdyBzaHV0ZG93biBzaWduYWwgc2xhdmUgc2xvdyBz
bWFsbGludCBzbmFwc2hvdCBzb2Z0IHNvbmFtZSBzcGF0aWFsIHNwZWNpZmljIHNxbCBzcWxfYmln
X3Jlc3VsdCBzcWxfYnVmZmVyX3Jlc3VsdCBzcWxfY2FjaGUgc3FsX2NhbGNfZm91bmRfcm93cyBz
cWxfbm9fY2FjaGUgc3FsX3NtYWxsX3Jlc3VsdCBzcWxleGNlcHRpb24gc3Fsc3RhdGUgc3Fsd2Fy
bmluZyBzc2wgc3RhcnQgc3RhcnRpbmcgc3RhcnRzIHN0YXR1cyBzdGQgc3RkZGV2IHN0ZGRldl9w
b3Agc3RkZGV2X3NhbXAgc3RvcmFnZSBzdHJhaWdodF9qb2luIHN1YmNsYXNzX29yaWdpbiBzdW0g
c3VzcGVuZCB0YWJsZV9uYW1lIHRhYmxlX3N0YXRpc3RpY3MgdGFibGVzIHRhYmxlc3BhY2UgdGVt
cG9yYXJ5IHRlcm1pbmF0ZWQgdG8gdHJhaWxpbmcgdHJhbnNhY3Rpb24gdHJpZ2dlciB0cmlnZ2Vy
cyB0cnVuY2F0ZSB1bmNvbW1pdHRlZCB1bmRvIHVuaW5zdGFsbCB1bmlxdWUgdW5sb2NrIHVwZ3Jh
ZGUgdXNhZ2UgdXNlIHVzZV9mcm0gdXNlciB1c2VyX3Jlc291cmNlcyB1c2VyX3N0YXRpc3RpY3Mg
dXNpbmcgdXRjX2RhdGUgdXRjX3RpbWUgdXRjX3RpbWVzdGFtcCB2YWx1ZSB2YXJpYWJsZXMgdmFy
eWluZyB2aWV3IHZpZXdzIHZpcnR1YWwgd2FybmluZ3Mgd2hlbiB3aGlsZSB3aXRoIHdvcmsgd3Jp
dGUgeGEgeG9yIHllYXJfbW9udGggemVyb2ZpbGwgYmVnaW4gZG8gdGhlbiBlbHNlIGxvb3AgcmVw
ZWF0IiksCisgICAgYnVpbHRpbjogc2V0KCJib29sIGJvb2xlYW4gYml0IGJsb2IgZGVjaW1hbCBk
b3VibGUgZmxvYXQgbG9uZyBsb25nYmxvYiBsb25ndGV4dCBtZWRpdW0gbWVkaXVtYmxvYiBtZWRp
dW1pbnQgbWVkaXVtdGV4dCB0aW1lIHRpbWVzdGFtcCB0aW55YmxvYiB0aW55aW50IHRpbnl0ZXh0
IHRleHQgYmlnaW50IGludCBpbnQxIGludDIgaW50MyBpbnQ0IGludDggaW50ZWdlciBmbG9hdCBm
bG9hdDQgZmxvYXQ4IGRvdWJsZSBjaGFyIHZhcmJpbmFyeSB2YXJjaGFyIHZhcmNoYXJhY3RlciBw
cmVjaXNpb24gZGF0ZSBkYXRldGltZSB5ZWFyIHVuc2lnbmVkIHNpZ25lZCBudW1lcmljIiksCiAg
ICAgYXRvbXM6IHNldCgiZmFsc2UgdHJ1ZSBudWxsIHVua25vd24iKSwKICAgICBvcGVyYXRvckNo
YXJzOiAvXlsqK1wtJTw+IT0mfF5dLywKICAgICBkYXRlU1FMOiBzZXQoImRhdGUgdGltZSB0aW1l
c3RhbXAiKSwKQEAgLTMxMyw4ICszMjYsNyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoInNxbCIs
IGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgbmFtZTogICAgICAgInNxbCIs
CiAgICAgY2xpZW50OiAgICAgc2V0KCJhcHBpbmZvIGFycmF5c2l6ZSBhdXRvY29tbWl0IGF1dG9w
cmludCBhdXRvcmVjb3ZlcnkgYXV0b3RyYWNlIGJsb2NrdGVybWluYXRvciBicmVhayBidGl0bGUg
Y21kc2VwIGNvbHNlcCBjb21wYXRpYmlsaXR5IGNvbXB1dGUgY29uY2F0IGNvcHljb21taXQgY29w
eXR5cGVjaGVjayBkZWZpbmUgZGVzY3JpYmUgZWNobyBlZGl0ZmlsZSBlbWJlZGRlZCBlc2NhcGUg
ZXhlYyBleGVjdXRlIGZlZWRiYWNrIGZsYWdnZXIgZmx1c2ggaGVhZGluZyBoZWFkc2VwIGluc3Rh
bmNlIGxpbmVzaXplIGxubyBsb2JvZmZzZXQgbG9nc291cmNlIGxvbmcgbG9uZ2NodW5rc2l6ZSBt
YXJrdXAgbmF0aXZlIG5ld3BhZ2UgbnVtZm9ybWF0IG51bXdpZHRoIHBhZ2VzaXplIHBhdXNlIHBu
byByZWNzZXAgcmVjc2VwY2hhciByZWxlYXNlIHJlcGZvb3RlciByZXBoZWFkZXIgc2VydmVyb3V0
cHV0IHNoaWZ0aW5vdXQgc2hvdyBzaG93bW9kZSBzaXplIHNwb29sIHNxbGJsYW5rbGluZXMgc3Fs
Y2FzZSBzcWxjb2RlIHNxbGNvbnRpbnVlIHNxbG51bWJlciBzcWxwbHVzY29tcGF0aWJpbGl0eSBz
cWxwcmVmaXggc3FscHJvbXB0IHNxbHRlcm1pbmF0b3Igc3VmZml4IHRhYiB0ZXJtIHRlcm1vdXQg
dGltZSB0aW1pbmcgdHJpbW91dCB0cmltc3Bvb2wgdHRpdGxlIHVuZGVybGluZSB2ZXJpZnkgdmVy
c2lvbiB3cmFwIiksCiAgICAga2V5d29yZHM6ICAgc2V0KCJhYm9ydCBhY2NlcHQgYWNjZXNzIGFk
ZCBhbGwgYWx0ZXIgYW5kIGFueSBhcnJheSBhcnJheWxlbiBhcyBhc2MgYXNzZXJ0IGFzc2lnbiBh
dCBhdHRyaWJ1dGVzIGF1ZGl0IGF1dGhvcml6YXRpb24gYXZnIGJhc2VfdGFibGUgYmVnaW4gYmV0
d2VlbiBiaW5hcnlfaW50ZWdlciBib2R5IGJvb2xlYW4gYnkgY2FzZSBjYXN0IGNoYXIgY2hhcl9i
YXNlIGNoZWNrIGNsb3NlIGNsdXN0ZXIgY2x1c3RlcnMgY29sYXV0aCBjb2x1bW4gY29tbWVudCBj
b21taXQgY29tcHJlc3MgY29ubmVjdCBjb25uZWN0ZWQgY29uc3RhbnQgY29uc3RyYWludCBjcmFz
aCBjcmVhdGUgY3VycmVudCBjdXJydmFsIGN1cnNvciBkYXRhX2Jhc2UgZGF0YWJhc2UgZGF0ZSBk
YmEgZGVhbGxvY2F0ZSBkZWJ1Z29mZiBkZWJ1Z29uIGRlY2ltYWwgZGVjbGFyZSBkZWZhdWx0IGRl
ZmluaXRpb24gZGVsYXkgZGVsZXRlIGRlc2MgZGlnaXRzIGRpc3Bvc2UgZGlzdGluY3QgZG8gZHJv
cCBlbHNlIGVsc2lmIGVuYWJsZSBlbmQgZW50cnkgZXNjYXBlIGV4Y2VwdGlvbiBleGNlcHRpb25f
aW5pdCBleGNoYW5nZSBleGNsdXNpdmUgZXhpc3RzIGV4aXQgZXh0ZXJuYWwgZmFzdCBmZXRjaCBm
aWxlIGZvciBmb3JjZSBmb3JtIGZyb20gZnVuY3Rpb24gZ2VuZXJpYyBnb3RvIGdyYW50IGdyb3Vw
IGhhdmluZyBpZGVudGlmaWVkIGlmIGltbWVkaWF0ZSBpbiBpbmNyZW1lbnQgaW5kZXggaW5kZXhl
cyBpbmRpY2F0b3IgaW5pdGlhbCBpbml0cmFucyBpbnNlcnQgaW50ZXJmYWNlIGludGVyc2VjdCBp
bnRvIGlzIGtleSBsZXZlbCBsaWJyYXJ5IGxpa2UgbGltaXRlZCBsb2NhbCBsb2NrIGxvZyBsb2dn
aW5nIGxvbmcgbG9vcCBtYXN0ZXIgbWF4ZXh0ZW50cyBtYXh0cmFucyBtZW1iZXIgbWluZXh0ZW50
cyBtaW51cyBtaXNsYWJlbCBtb2RlIG1vZGlmeSBtdWx0aXNldCBuZXcgbmV4dCBubyBub2F1ZGl0
IG5vY29tcHJlc3Mgbm9sb2dnaW5nIG5vcGFyYWxsZWwgbm90IG5vd2FpdCBudW1iZXJfYmFzZSBv
YmplY3Qgb2Ygb2ZmIG9mZmxpbmUgb24gb25saW5lIG9ubHkgb3BlbiBvcHRpb24gb3Igb3JkZXIg
b3V0IHBhY2thZ2UgcGFyYWxsZWwgcGFydGl0aW9uIHBjdGZyZWUgcGN0aW5jcmVhc2UgcGN0dXNl
ZCBwbHNfaW50ZWdlciBwb3NpdGl2ZSBwb3NpdGl2ZW4gcHJhZ21hIHByaW1hcnkgcHJpb3IgcHJp
dmF0ZSBwcml2aWxlZ2VzIHByb2NlZHVyZSBwdWJsaWMgcmFpc2UgcmFuZ2UgcmF3IHJlYWQgcmVi
dWlsZCByZWNvcmQgcmVmIHJlZmVyZW5jZXMgcmVmcmVzaCByZWxlYXNlIHJlbmFtZSByZXBsYWNl
IHJlc291cmNlIHJlc3RyaWN0IHJldHVybiByZXR1cm5pbmcgcmV2ZXJzZSByZXZva2Ugcm9sbGJh
Y2sgcm93IHJvd2lkIHJvd2xhYmVsIHJvd251bSByb3dzIHJ1biBzYXZlcG9pbnQgc2NoZW1hIHNl
Z21lbnQgc2VsZWN0IHNlcGFyYXRlIHNlc3Npb24gc2V0IHNoYXJlIHNuYXBzaG90IHNvbWUgc3Bh
Y2Ugc3BsaXQgc3FsIHN0YXJ0IHN0YXRlbWVudCBzdG9yYWdlIHN1YnR5cGUgc3VjY2Vzc2Z1bCBz
eW5vbnltIHRhYmF1dGggdGFibGUgdGFibGVzIHRhYmxlc3BhY2UgdGFzayB0ZXJtaW5hdGUgdGhl
biB0byB0cmlnZ2VyIHRydW5jYXRlIHR5cGUgdW5pb24gdW5pcXVlIHVubGltaXRlZCB1bnJlY292
ZXJhYmxlIHVudXNhYmxlIHVwZGF0ZSB1c2UgdXNpbmcgdmFsaWRhdGUgdmFsdWUgdmFsdWVzIHZh
cmlhYmxlIHZpZXcgdmlld3Mgd2hlbiB3aGVuZXZlciB3aGVyZSB3aGlsZSB3aXRoIHdvcmsiKSwK
LSAgICBmdW5jdGlvbnM6ICBzZXQoImFicyBhY29zIGFkZF9tb250aHMgYXNjaWkgYXNpbiBhdGFu
IGF0YW4yIGF2ZXJhZ2UgYmZpbGVuYW1lIGNlaWwgY2hhcnRvcm93aWQgY2hyIGNvbmNhdCBjb252
ZXJ0IGNvcyBjb3NoIGNvdW50IGRlY29kZSBkZXJlZiBkdWFsIGR1bXAgZHVwX3ZhbF9vbl9pbmRl
eCBlbXB0eSBlcnJvciBleHAgZmFsc2UgZmxvb3IgZm91bmQgZ2xiIGdyZWF0ZXN0IGhleHRvcmF3
IGluaXRjYXAgaW5zdHIgaW5zdHJiIGlzb3BlbiBsYXN0X2RheSBsZWFzdCBsZW5naHQgbGVuZ2h0
YiBsbiBsb3dlciBscGFkIGx0cmltIGx1YiBtYWtlX3JlZiBtYXggbWluIG1vZCBtb250aHNfYmV0
d2VlbiBuZXdfdGltZSBuZXh0X2RheSBuZXh0dmFsIG5sc19jaGFyc2V0X2RlY2xfbGVuIG5sc19j
aGFyc2V0X2lkIG5sc19jaGFyc2V0X25hbWUgbmxzX2luaXRjYXAgbmxzX2xvd2VyIG5sc19zb3J0
IG5sc191cHBlciBubHNzb3J0IG5vX2RhdGFfZm91bmQgbm90Zm91bmQgbnVsbCBudmwgb3RoZXJz
IHBvd2VyIHJhd3RvaGV4IHJlZnRvaGV4IHJvdW5kIHJvd2NvdW50IHJvd2lkdG9jaGFyIHJwYWQg
cnRyaW0gc2lnbiBzaW4gc2luaCBzb3VuZGV4IHNxbGNvZGUgc3FsZXJybSBzcXJ0IHN0ZGRldiBz
dWJzdHIgc3Vic3RyYiBzdW0gc3lzZGF0ZSB0YW4gdGFuaCB0b19jaGFyIHRvX2RhdGUgdG9fbGFi
ZWwgdG9fbXVsdGlfYnl0ZSB0b19udW1iZXIgdG9fc2luZ2xlX2J5dGUgdHJhbnNsYXRlIHRydWUg
dHJ1bmMgdWlkIHVwcGVyIHVzZXIgdXNlcmVudiB2YXJpYW5jZSB2c2l6ZSIpLAotICAgIGJ1aWx0
aW46ICAgIHNldCgiYmZpbGUgYmxvYiBjaGFyYWN0ZXIgY2xvYiBkZWMgZmxvYXQgaW50IGludGVn
ZXIgbWxzbGFiZWwgbmF0dXJhbCBuYXR1cmFsbiBuY2hhciBuY2xvYiBudW1iZXIgbnVtZXJpYyBu
dmFyY2hhcjIgcmVhbCByb3d0eXBlIHNpZ250eXBlIHNtYWxsaW50IHN0cmluZyB2YXJjaGFyIHZh
cmNoYXIyIiksCisgICAgYnVpbHRpbjogICAgc2V0KCJiZmlsZSBibG9iIGNoYXJhY3RlciBjbG9i
IGRlYyBmbG9hdCBpbnQgaW50ZWdlciBtbHNsYWJlbCBuYXR1cmFsIG5hdHVyYWxuIG5jaGFyIG5j
bG9iIG51bWJlciBudW1lcmljIG52YXJjaGFyMiByZWFsIHJvd3R5cGUgc2lnbnR5cGUgc21hbGxp
bnQgc3RyaW5nIHZhcmNoYXIgdmFyY2hhcjIgYWJzIGFjb3MgYWRkX21vbnRocyBhc2NpaSBhc2lu
IGF0YW4gYXRhbjIgYXZlcmFnZSBiZmlsZW5hbWUgY2VpbCBjaGFydG9yb3dpZCBjaHIgY29uY2F0
IGNvbnZlcnQgY29zIGNvc2ggY291bnQgZGVjb2RlIGRlcmVmIGR1YWwgZHVtcCBkdXBfdmFsX29u
X2luZGV4IGVtcHR5IGVycm9yIGV4cCBmYWxzZSBmbG9vciBmb3VuZCBnbGIgZ3JlYXRlc3QgaGV4
dG9yYXcgaW5pdGNhcCBpbnN0ciBpbnN0cmIgaXNvcGVuIGxhc3RfZGF5IGxlYXN0IGxlbmdodCBs
ZW5naHRiIGxuIGxvd2VyIGxwYWQgbHRyaW0gbHViIG1ha2VfcmVmIG1heCBtaW4gbW9kIG1vbnRo
c19iZXR3ZWVuIG5ld190aW1lIG5leHRfZGF5IG5leHR2YWwgbmxzX2NoYXJzZXRfZGVjbF9sZW4g
bmxzX2NoYXJzZXRfaWQgbmxzX2NoYXJzZXRfbmFtZSBubHNfaW5pdGNhcCBubHNfbG93ZXIgbmxz
X3NvcnQgbmxzX3VwcGVyIG5sc3NvcnQgbm9fZGF0YV9mb3VuZCBub3Rmb3VuZCBudWxsIG52bCBv
dGhlcnMgcG93ZXIgcmF3dG9oZXggcmVmdG9oZXggcm91bmQgcm93Y291bnQgcm93aWR0b2NoYXIg
cnBhZCBydHJpbSBzaWduIHNpbiBzaW5oIHNvdW5kZXggc3FsY29kZSBzcWxlcnJtIHNxcnQgc3Rk
ZGV2IHN1YnN0ciBzdWJzdHJiIHN1bSBzeXNkYXRlIHRhbiB0YW5oIHRvX2NoYXIgdG9fZGF0ZSB0
b19sYWJlbCB0b19tdWx0aV9ieXRlIHRvX251bWJlciB0b19zaW5nbGVfYnl0ZSB0cmFuc2xhdGUg
dHJ1ZSB0cnVuYyB1aWQgdXBwZXIgdXNlciB1c2VyZW52IHZhcmlhbmNlIHZzaXplIiksCiAgICAg
b3BlcmF0b3JDaGFyczogL15bKitcLSU8PiE9fl0vLAogICAgIGRhdGVTUUw6ICAgIHNldCgiZGF0
ZSB0aW1lIHRpbWVzdGFtcCIpLAogICAgIHN1cHBvcnQ6ICAgIHNldCgiZG91YmxlUXVvdGUgbkNo
YXJDYXN0IHplcm9sZXNzRmxvYXQgYmluYXJ5TnVtYmVyIGhleE51bWJlciIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9y
L3htbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0Nv
ZGVNaXJyb3IveG1sLmpzCmluZGV4IDUzMjg1Yzg0OGM2ZDYwN2E0YTVhZGY5ZWVlYWFmNDRiMDBl
N2E2MzMuLjRmNDllMDdmYWY1ZTQ1YzdkYmY0ZWFmNzM2YzlkNzk4MzQ4YjNhYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJy
b3IveG1sLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVy
bmFsL0NvZGVNaXJyb3IveG1sLmpzCkBAIC03Niw3ICs3Niw3IEBAIENvZGVNaXJyb3IuZGVmaW5l
TW9kZSgieG1sIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgICAgICAgdGFn
TmFtZSA9ICIiOwogICAgICAgICB2YXIgYzsKICAgICAgICAgd2hpbGUgKChjID0gc3RyZWFtLmVh
dCgvW15cc1x1MDBhMD08PlwiXCdcLz9dLykpKSB0YWdOYW1lICs9IGM7Ci0gICAgICAgIGlmICgh
dGFnTmFtZSkgcmV0dXJuICJlcnJvciI7CisgICAgICAgIGlmICghdGFnTmFtZSkgcmV0dXJuICJ0
YWcgZXJyb3IiOwogICAgICAgICB0eXBlID0gaXNDbG9zZSA/ICJjbG9zZVRhZyIgOiAib3BlblRh
ZyI7CiAgICAgICAgIHN0YXRlLnRva2VuaXplID0gaW5UYWc7CiAgICAgICAgIHJldHVybiAidGFn
IjsKQEAgLTEwOSw3ICsxMDksOSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoInhtbCIsIGZ1bmN0
aW9uKGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICB0eXBlID0gImVxdWFscyI7CiAgICAg
ICByZXR1cm4gbnVsbDsKICAgICB9IGVsc2UgaWYgKGNoID09ICI8IikgewotICAgICAgcmV0dXJu
ICJlcnJvciI7CisgICAgICBzdGF0ZS50b2tlbml6ZSA9IGluVGV4dDsKKyAgICAgIHZhciBuZXh0
ID0gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7CisgICAgICByZXR1cm4gbmV4dCA/IG5l
eHQgKyAiIGVycm9yIiA6ICJlcnJvciI7CiAgICAgfSBlbHNlIGlmICgvW1wnXCJdLy50ZXN0KGNo
KSkgewogICAgICAgc3RhdGUudG9rZW5pemUgPSBpbkF0dHJpYnV0ZShjaCk7CiAgICAgICBzdGF0
ZS5zdHJpbmdTdGFydENvbCA9IHN0cmVhbS5jb2x1bW4oKTsKQEAgLTI5OCw3ICszMDAsOSBAQCBD
b2RlTWlycm9yLmRlZmluZU1vZGUoInhtbCIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2VyQ29uZmln
KSB7CiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIHN0YXRlLnN0YXJ0T2ZMaW5lID0gZmFsc2U7
Ci0gICAgICByZXR1cm4gc2V0U3R5bGUgfHwgc3R5bGU7CisgICAgICBpZiAoc2V0U3R5bGUpCisg
ICAgICAgIHN0eWxlID0gc2V0U3R5bGUgPT0gImVycm9yIiA/IHN0eWxlICsgIiBlcnJvciIgOiBz
ZXRTdHlsZTsKKyAgICAgIHJldHVybiBzdHlsZTsKICAgICB9LAogCiAgICAgaW5kZW50OiBmdW5j
dGlvbihzdGF0ZSwgdGV4dEFmdGVyLCBmdWxsTGluZSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>