<?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>169844</bug_id>
          
          <creation_ts>2017-03-17 20:03:56 -0700</creation_ts>
          <short_desc>Fix os-build-fetcher.js and subprocess.js to make them work</short_desc>
          <delta_ts>2017-03-20 15:36:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Perf Dashboard</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1289235</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-17 20:03:56 -0700</bug_when>
    <thetext>Make the script added by https://trac.webkit.org/changeset/213976 work correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289238</commentid>
    <comment_count>1</comment_count>
      <attachid>304853</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-17 20:23:25 -0700</bug_when>
    <thetext>Created attachment 304853
Fixes bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289575</commentid>
    <comment_count>2</comment_count>
      <attachid>304853</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-20 14:32:43 -0700</bug_when>
    <thetext>Comment on attachment 304853
Fixes bugs

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289590</commentid>
    <comment_count>3</comment_count>
      <attachid>304853</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-20 15:06:58 -0700</bug_when>
    <thetext>Comment on attachment 304853
Fixes bugs

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289598</commentid>
    <comment_count>4</comment_count>
      <attachid>304853</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-20 15:36:44 -0700</bug_when>
    <thetext>Comment on attachment 304853
Fixes bugs

Clearing flags on attachment: 304853

Committed r214193: &lt;http://trac.webkit.org/changeset/214193&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1289599</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-20 15:36:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304853</attachid>
            <date>2017-03-17 20:23:25 -0700</date>
            <delta_ts>2017-03-20 15:36:44 -0700</delta_ts>
            <desc>Fixes bugs</desc>
            <filename>bug-169844-20170317202324.patch</filename>
            <type>text/plain</type>
            <size>36064</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0MTMyKQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ4IEBACisyMDE3LTAzLTE3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEZpeCBvcy1idWlsZC1mZXRjaGVyLmpzIGFuZCBzdWJwcm9jZXNzLmpzIHRvIG1h
a2UgdGhlbSB3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjk4NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgc2NyaXB0IGFkZGVkIGluIHIyMTM5NzYgaGFzIGEgYnVnIHRoYXQgaXQgY2FuIGV4
ZWN1dGUgY29tbWFuZHMgdG8gZmV0Y2ggc3ViY29tbWl0cyBpbiBwYXJhbGxlbC4KKyAgICAgICAg
U29tZSBjb21tYW5kcyB0byBwb2xsIHRoZSBsc2l0IG9mIHN5c3RlbSBjb21wb25lbnRzIGlzIG5v
dCBkZXNpcmFibGUgdG8gYmUgcmFuIGluIHBhcmFsbGVsLgorCisgICAgICAgICogc2VydmVyLXRl
c3RzL3Jlc291cmNlcy9tb2NrLXN1YnByb2Nlc3MuanM6CisgICAgICAgIChNb2NrU3VicHJvY2Vz
cyk6IFVzZSBjb25zdCBkZWNsYXJhdGlvbi4KKyAgICAgICAgKE1vY2tTdWJwcm9jZXNzLnJlc2V0
QW5kV2FpdEZvckludm9jYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKE1vY2tTdWJwcm9jZXNzLndh
aXRGb3JJbnZvY2F0aW9uKTogUmVuYW1lZCBmcm9tIHdhaXRpbmdGb3JJbnZvY2F0aW9uLiBBIGZ1
bmN0aW9uIG5hbWUgbXVzdCBiZSBhIHZlcmIuCisgICAgICAgIFNlZSBodHRwczovL3dlYmtpdC5v
cmcvY29kZS1zdHlsZS1ndWlkZWxpbmVzLyNuYW1lcy12ZXJiCisgICAgICAgIChNb2NrU3VicHJv
Y2Vzcy5yZXNldCk6IFNldCBpbnZvY2F0aW9ucy5sZW5ndGggdG8gMCBzbyB0aGF0IHRlc3RzIGNh
biBzdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgYXJyYXkKKyAgICAgICAgcmVnYXJkbGVzcyBvZiB3
aGV0aGVyIHJlc2V0IGlzIGNhbGxlZCBvciB3aGVuIGl0J3MgY2FsbGVkLgorCisgICAgICAgICog
c2VydmVyLXRlc3RzL3Rvb2xzLW9zLWJ1aWxkLWZldGNoZXItdGVzdHMuanM6IFVwZGF0ZWQgdGVz
dHMgcGVyIHRoZSBjb2RlIGNoYW5nZS4gTW9zdCBvZiBjb2RlcyBub3cKKyAgICAgICAgZXhwZWN0
IGVhY2ggY29tbWFuZCB0byBiZSByYW4gc2VwcmF0ZWx5LiBlLmcuIGlmIHRoZXJlIHdlcmUgdHdv
IGNvbW1hbmRzIHRvIHJ1biwgaW5zdGVhZCBvZiBleHBlY3RpbmcKKyAgICAgICAgdGhlbSB0byBi
ZSBib3RoIHJhbiwgYW5kIHJlc29sdmluZyBpbnZvY2F0aW9uIHByb21pc2VzLCB3ZSdkIHdhaXQg
Zm9yIG9uZSBjb21tYW5kIHRvIHJ1biwgcmVzb2x2ZSwKKyAgICAgICAgaXRzIHN1YmNvbW1hbmQg
dG8gcnVuLCBhbmQgdGhlbiBtb3ZlIG9udG8gdGhlIHNlY29uZCB0b3AtbGV2ZWwgY29tbWFuZC4g
QWxzbyB1c2UgYSBsb2NhbCByZWZlcmVuY2UKKyAgICAgICAgdG8gTW9ja1N1YnByb2Nlc3MuaW52
b2NhdGlvbnMgaW5zdGVhZCBvZiB1c2luZyB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUuCisKKyAg
ICAgICAgKiB0b29scy9qcy9vcy1idWlsZC1mZXRjaGVyLmpzOgorICAgICAgICAobWFwSW5TZXJp
YWxQcm9taXNlQ2hhaW4pOiBBZGRlZC4gQ2FsbGluZyBhIGNsb3N1cmUgdGhhdCByZXR1cm5zIGEg
cHJvbWlzZSBvbiBlYWNoIGl0ZW0gaW4gYW4gYXJyYXkKKyAgICAgICAgaW4gc2VyaWFsIChub3Qg
YXN5bmNocm9ub3VzKSBpcyBhIHZlcnkgY29tbW9uIHBhdHRlcm4gaW4gdGhpcyBjbGFzcy4KKyAg
ICAgICAgKE9TQnVpbGRGZXRjaGVyLmZldGNoQW5kUmVwb3J0QWxsSW5PcmRlcik6IEFkZGVkLgor
ICAgICAgICAoT1NCdWlsZEZldGNoZXIucHJvdG90eXBlLmZldGNoQW5kUmVwb3J0TmV3QnVpbGRz
KTogTG9nIHdoYXQgdGhlIG51bWJlciBvZiBidWlsZHMgYmVpbmcgc3VibWl0dGVkLgorICAgICAg
ICAoT1NCdWlsZEZldGNoZXIucHJvdG90eXBlLl9mZXRjaEF2YWlsYWJsZUJ1aWxkcyk6IEZpeGVk
IHRoZSBtYWluIGJ1Zy4gVXNpbmcgUHJvbWlzZS5hbGwgd291bGQgcmVzdWx0CisgICAgICAgIGlu
IGVhY2ggdG9wLWxldmVsIGNvbW1hbmQgdG8gYmUgZXhlY3VlZCBpbiBwYXJhbGxlbC4gU2luY2Ug
ZWFjaCBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkIGFzIHNvb24gYXMKKyAgICAgICAgaXRzIHBhcmVu
dCBjb21tYW5kIGlzIGV4ZWN1dGVkLCB0aGlzIHJlc3VsdHMgaW4gY29tbWFuZHMgdG8gYmUgZXhl
Y3V0ZWQgaW4gcGFyYWxsZWwuCisgICAgICAgIEFkZGVkIGEgd2hvbGUgYnVuY2ggb2YgbG9nZ2lu
ZyBzbyB0aGF0IHdlIGNhbiBhdCBsZWFzdCBkZXRlY3QgYSBidWcgbGlrZSB0aGlzIGluIHRoZSBm
dXR1cmUuCisgICAgICAgIChPU0J1aWxkRmV0Y2hlci5wcm90b3R5cGUuX2NvbW1pdHNGb3JBdmFp
bGFibGVCdWlsZHMpOiBDbGVhbnVwIHRoZSBjb2Rpbmcgc3R5bGUuCisgICAgICAgIChPU0J1aWxk
RmV0Y2hlci5wcm90b3R5cGUuX2FkZFN1YkNvbW1pdHNGb3JCdWlsZCk6IFVzZSBtYXBJblNlcmlh
bFByb21pc2VDaGFpbi4gVGlnaHRlbmVkIHRoZSBhc3NlcnRpb24KKyAgICAgICAgYWJvdXQgdGhl
IGNvbnRlbnQgcmV0dXJuZWQgYnkgYSBzdWJjb21tYW5kLgorCisgICAgICAgICogdG9vbHMvanMv
c3VicHJvY2Vzcy5qczogRml4ZWQgdGhlIGJ1ZyB0aGF0IHdlIHdlcmUgaW1wb3J0aW5nIHJlcXVp
cmUoJ2NoaWxkX3Byb2Nlc3MnKS5DaGlsZFByb2Nlc3MuCisgICAgICAgIGV4ZWNGaWxlIGlzIGRl
ZmluZWQgb24gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpIGl0c2VsZi4KKyAgICAgICAgKFN1YnBy
b2Nlc3MucHJvdG90eXBlLmV4ZWN1dGUpOiBGaXhlZCBhIHR5cG8uIHRoaXMuX2NoaWxkUHJvY2Vz
cyBkb2Vzbid0IGV4aXN0LgorICAgICAgICAoU3VicHJvY2Vzcyk6CisKKyAgICAgICAgKiB0b29s
cy9zeW5jLW9zLXZlcnNpb25zLmpzOiBSZW5hbWVkIGZyb20gdG9vbHMvcHVsbC1vcy12ZXJzaW9u
cy5qcy4KKyAgICAgICAgKHN5bmNMb29wKTogQ2xlYW5lZCB1cCB0aGUgY29kaW5nIHN0eWxlIGEg
bGl0dGxlLiBBbHNvIGFkZGVkIGxvZ2dpbmcgYWJvdXQgaG93IGxvbmcgd2UncmUgYWJvdXQgdG8g
c2xlZXAuCisKIDIwMTctMDMtMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQWRkIHRoZSBmaWxlIHVwbG9hZGluZyBjYXBhYmlsaXR5IHRvIHRoZSBwZXJmIGRh
c2hib2FyZC4KSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvdG9v
bHMtb3MtYnVpbGQtZmV0Y2hlci10ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Rvb2xzLW9zLWJ1aWxkLWZldGNoZXItdGVzdHMuanMJ
KHJldmlzaW9uIDIxNDA5OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvdG9vbHMtb3MtYnVpbGQtZmV0Y2hlci10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTI1
LDEwICsxMjUsMTAgQEAgZGVzY3JpYmUoJ09TQnVpbGRGZXRjaGVyJywgZnVuY3Rpb24oKSB7CiAg
ICAgICAgIGl0KCdzaG91bGQgb25seSByZXR1cm4gY29tbWl0cyB3aG9zZSBvcmRlcnMgYXJlIGhp
Z2hlciB0aGFuIHNwZWNpZmllZCBvcmRlcicsICgpID0+IHsKICAgICAgICAgICAgIGNvbnN0IGxv
Z2dlciA9IG5ldyBNb2NrTG9nZ2VyOwogICAgICAgICAgICAgY29uc3QgZmV0Y2h0ZXIgPSBuZXcg
T1NCdWlsZEZldGNoZXIobnVsbCwgbnVsbCwgbnVsbCwgTW9ja1N1YnByb2Nlc3MsIGxvZ2dlcik7
Ci0gICAgICAgICAgICBjb25zdCB3YWl0aW5nRm9ySW52b2NhdGlvblByb21pc2UgPSBNb2NrU3Vi
cHJvY2Vzcy53YWl0aW5nRm9ySW52b2NhdGlvbigpOworICAgICAgICAgICAgY29uc3Qgd2FpdEZv
ckludm9jYXRpb25Qcm9taXNlID0gTW9ja1N1YnByb2Nlc3Mud2FpdEZvckludm9jYXRpb24oKTsK
ICAgICAgICAgICAgIGNvbnN0IGZldGNoQ29tbWl0c1Byb21pc2UgPSBmZXRjaHRlci5fY29tbWl0
c0ZvckF2YWlsYWJsZUJ1aWxkcygnT1NYJywgWydsaXN0JywgJ2J1aWxkMSddLCAnXlxcLiokJywg
MTYwNDAwMDAwMCk7CiAKLSAgICAgICAgICAgIHJldHVybiB3YWl0aW5nRm9ySW52b2NhdGlvblBy
b21pc2UudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1cm4gd2FpdEZvckludm9jYXRpb25Q
cm9taXNlLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrU3Vi
cHJvY2Vzcy5pbnZvY2F0aW9ucy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5k
ZWVwRXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMF0uY29tbWFuZCwgWydsaXN0Jywg
J2J1aWxkMSddKTsKICAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1sw
XS5yZXNvbHZlKCcxNkQzMjFcbjE2RTMyMXpcblxuMTZGMzIxJyk7CkBAIC0xNDUsMTUgKzE0NSwx
NSBAQCBkZXNjcmliZSgnT1NCdWlsZEZldGNoZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgaXQo
J3Nob3VsZCBhZGQgc3ViLWNvbW1pdCBpbmZvIGZvciBjb21taXRzJywgKCkgPT4gewogICAgICAg
ICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAgICBjb25zdCBm
ZXRjaHRlciA9IG5ldyBPU0J1aWxkRmV0Y2hlcihudWxsLCBudWxsLCBudWxsLCBNb2NrU3VicHJv
Y2VzcywgbG9nZ2VyKTsKLSAgICAgICAgICAgIGNvbnN0IHdhaXRpbmdGb3JJbnZvY2F0aW9uUHJv
bWlzZSA9IE1vY2tTdWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAg
ICBjb25zdCB3YWl0Rm9ySW52b2NhdGlvblByb21pc2UgPSBNb2NrU3VicHJvY2Vzcy53YWl0Rm9y
SW52b2NhdGlvbigpOwogICAgICAgICAgICAgY29uc3QgYWRkU3ViQ29tbWl0UHJvbWlzZSA9IGZl
dGNodGVyLl9hZGRTdWJDb21taXRzRm9yQnVpbGQoW29zeENvbW1pdCwgYW5vdGhlck9TWENvbW1p
dF0sIFsnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbiddKTsKIAotICAgICAgICAgICAgcmV0
dXJuIHdhaXRpbmdGb3JJbnZvY2F0aW9uUHJvbWlzZS50aGVuKCgpID0+IHsKKyAgICAgICAgICAg
IHJldHVybiB3YWl0Rm9ySW52b2NhdGlvblByb21pc2UudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zLmxlbmd0aCwgMSk7
CiAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0
aW9uc1swXS5jb21tYW5kLCBbJ3N1YkNvbW1pdCcsICdmb3InLCAncmV2aXNpb24nLCAnU2llcnJh
MTZEMzInXSk7CiAgICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMF0u
cmVzb2x2ZShKU09OLnN0cmluZ2lmeShzdWJDb21taXRXaXRoV2ViS2l0KSk7CiAgICAgICAgICAg
ICAgICAgTW9ja1N1YnByb2Nlc3MucmVzZXQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTW9j
a1N1YnByb2Nlc3Mud2FpdGluZ0Zvckludm9jYXRpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gTW9ja1N1YnByb2Nlc3Mud2FpdEZvckludm9jYXRpb24oKTsKICAgICAgICAgICAgIH0pLnRo
ZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2NrU3VicHJvY2Vzcy5p
bnZvY2F0aW9ucy5sZW5ndGgsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
TW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMF0uY29tbWFuZCwgWydzdWJDb21taXQnLCAnZm9y
JywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2RTMyJ10pOwpAQCAtMTczLDEwICsxNzMsMTAgQEAgZGVz
Y3JpYmUoJ09TQnVpbGRGZXRjaGVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgIGl0KCdzaG91bGQg
ZmFpbCBpZiB0aGUgY29tbWFuZCB0byBnZXQgc3ViLWNvbW1pdCBpbmZvIGZhaWxzJywgKCkgPT4g
ewogICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAgICAg
ICBjb25zdCBmZXRjaHRlciA9IG5ldyBPU0J1aWxkRmV0Y2hlcihudWxsLCBudWxsLCBudWxsLCBN
b2NrU3VicHJvY2VzcywgbG9nZ2VyKTsKLSAgICAgICAgICAgIGNvbnN0IHdhaXRpbmdGb3JJbnZv
Y2F0aW9uUHJvbWlzZSA9IE1vY2tTdWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7Cisg
ICAgICAgICAgICBjb25zdCB3YWl0Rm9ySW52b2NhdGlvblByb21pc2UgPSBNb2NrU3VicHJvY2Vz
cy53YWl0Rm9ySW52b2NhdGlvbigpOwogICAgICAgICAgICAgY29uc3QgYWRkU3ViQ29tbWl0UHJv
bWlzZSA9IGZldGNodGVyLl9hZGRTdWJDb21taXRzRm9yQnVpbGQoW29zeENvbW1pdF0sIFsnc3Vi
Q29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbiddKQogCi0gICAgICAgICAgICByZXR1cm4gd2FpdGlu
Z0Zvckludm9jYXRpb25Qcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIHdh
aXRGb3JJbnZvY2F0aW9uUHJvbWlzZS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKICAgICAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNv
bW1hbmQsIFsnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbicsICdTaWVycmExNkQzMiddKTsK
ICAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5yZWplY3QoJ0Zh
aWxlZCBnZXR0aW5nIHN1Yi1jb21taXQnKTsKQEAgLTE5NCwxMCArMTk0LDEwIEBAIGRlc2NyaWJl
KCdPU0J1aWxkRmV0Y2hlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICBpdCgnc2hvdWxkIGZhaWwg
aWYgZW50cmllcyBpbiBzdWItY29tbWl0cyBkb2VzIG5vdCBjb250YWluIHJldmlzaW9uJywgKCkg
PT4gewogICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tMb2dnZXI7CiAgICAgICAg
ICAgICBjb25zdCBmZXRjaHRlciA9IG5ldyBPU0J1aWxkRmV0Y2hlcihudWxsLCBudWxsLCBudWxs
LCBNb2NrU3VicHJvY2VzcywgbG9nZ2VyKTsKLSAgICAgICAgICAgIGNvbnN0IHdhaXRpbmdGb3JJ
bnZvY2F0aW9uUHJvbWlzZSA9IE1vY2tTdWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7
CisgICAgICAgICAgICBjb25zdCB3YWl0Rm9ySW52b2NhdGlvblByb21pc2UgPSBNb2NrU3VicHJv
Y2Vzcy53YWl0Rm9ySW52b2NhdGlvbigpOwogICAgICAgICAgICAgY29uc3QgYWRkU3ViQ29tbWl0
UHJvbWlzZSA9IGZldGNodGVyLl9hZGRTdWJDb21taXRzRm9yQnVpbGQoW29zeENvbW1pdF0sIFsn
c3ViQ29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbiddKQogCi0gICAgICAgICAgICByZXR1cm4gd2Fp
dGluZ0Zvckludm9jYXRpb25Qcm9taXNlLnRoZW4oKCkgPT4geworICAgICAgICAgICAgcmV0dXJu
IHdhaXRGb3JJbnZvY2F0aW9uUHJvbWlzZS50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBh
c3NlcnQuZXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKICAgICAg
ICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBd
LmNvbW1hbmQsIFsnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbicsICdTaWVycmExNkQzMidd
KTsKICAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5yZXNvbHZl
KCd7IldlYktpdCI6eyJSYW5kb21LZXkiOiAiUmFuZG9tVmFsdWUifX0nKTsKQEAgLTIxMyw2ICsy
MTMsNyBAQCBkZXNjcmliZSgnT1NCdWlsZEZldGNoZXInLCBmdW5jdGlvbigpIHsKICAgICB9KQog
CiAgICAgZGVzY3JpYmUoJ09TQnVpbGRGZXRjaGVyLmZldGNoQW5kUmVwb3J0TmV3QnVpbGRzJywg
KCkgPT4geworICAgICAgICBjb25zdCBpbnZvY2F0aW9ucyA9IE1vY2tTdWJwcm9jZXNzLmludm9j
YXRpb25zOwogCiAgICAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAg
VGVzdFNlcnZlci5kYXRhYmFzZSgpLmNvbm5lY3Qoe2tlZXBBbGl2ZTogdHJ1ZX0pOwpAQCAtMjIy
LDcgKzIyMyw2IEBAIGRlc2NyaWJlKCdPU0J1aWxkRmV0Y2hlcicsIGZ1bmN0aW9uKCkgewogICAg
ICAgICAgICAgVGVzdFNlcnZlci5kYXRhYmFzZSgpLmRpc2Nvbm5lY3QoKTsKICAgICAgICAgfSk7
CiAKLQogICAgICAgICBpdCgnc2hvdWxkIHJlcG9ydCBhbGwgYnVpbGQgY29tbWl0cyB3aXRoIHN1
Yi1jb21taXRzJywgKCkgPT4gewogICAgICAgICAgICAgY29uc3QgbG9nZ2VyID0gbmV3IE1vY2tM
b2dnZXI7CiAgICAgICAgICAgICBjb25zdCBmZXRjaHRlciA9IG5ldyBPU0J1aWxkRmV0Y2hlcihj
b25maWcsIFRlc3RTZXJ2ZXIucmVtb3RlQVBJKCksIHNsYXZlQXV0aCwgTW9ja1N1YnByb2Nlc3Ms
IGxvZ2dlcik7CkBAIC0yNTAsNjYgKzI1MCw2MyBAQCBkZXNjcmliZSgnT1NCdWlsZEZldGNoZXIn
LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21t
aXRzJ10ubGVuZ3RoLCAxKTsKICAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzdWx0Wydj
b21taXRzJ11bMF1bJ3JldmlzaW9uJ10sICdTaWVycmExNkUzM2cnKTsKICAgICAgICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzdWx0Wydjb21taXRzJ11bMF1bJ29yZGVyJ10sIDE2MDQwMDMzMDcp
OwotICAgICAgICAgICAgICAgIGNvbnN0IHdhaXRpbmdGb3JJbnZvY2F0aW9uUHJvbWlzZSA9IE1v
Y2tTdWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgY29u
c3Qgd2FpdEZvckludm9jYXRpb25Qcm9taXNlID0gTW9ja1N1YnByb2Nlc3Mud2FpdEZvckludm9j
YXRpb24oKTsKICAgICAgICAgICAgICAgICBmZXRjaEF2YWlsYWJsZUJ1aWxkc1Byb21pc2UgPSBm
ZXRjaHRlci5fZmV0Y2hBdmFpbGFibGVCdWlsZHMoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
d2FpdGluZ0Zvckludm9jYXRpb25Qcm9taXNlOwotICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0
aW9uKCk7Ci0gICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBNb2Nr
U3VicHJvY2Vzcy5pbnZvY2F0aW9ucy5zb3J0KChpbnZvY2F0aW9uLCBhbnRvaGVySW52b2NhdGlv
bikgPT4gaW52b2NhdGlvblsnY29tbWFuZCddID4gYW50b2hlckludm9jYXRpb25bJ2NvbW1hbmQn
XSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRp
b25zLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrU3Vi
cHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnYWxsIG9zeCAxNkR4eCBi
dWlsZHMnXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrU3VicHJvY2Vz
cy5pbnZvY2F0aW9uc1sxXS5jb21tYW5kLCBbJ2xpc3QnLCAnYWxsIG9zeCAxNkV4eCBidWlsZHMn
XSk7Ci0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMF0ucmVzb2x2
ZSgnXG5cblNpZXJyYTE2RDY4XG5TaWVycmExNkQ2OVxuJyk7Ci0gICAgICAgICAgICAgICAgTW9j
a1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMV0ucmVzb2x2ZSgnXG5cblNpZXJyYTE2RTMyXG5TaWVy
cmExNkUzM1xuU2llcnJhMTZFMzNoXG5TaWVycmExNkUzNCcpOwotICAgICAgICAgICAgICAgIE1v
Y2tTdWJwcm9jZXNzLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9j
ZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRG
b3JJbnZvY2F0aW9uUHJvbWlzZTsKICAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAg
ICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zLnNvcnQoKGludm9jYXRpb24sIGFu
dG9oZXJJbnZvY2F0aW9uKSA9PiBpbnZvY2F0aW9uWydjb21tYW5kJ10gPiBhbnRvaGVySW52b2Nh
dGlvblsnY29tbWFuZCddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1N1YnBy
b2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAyKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVl
cEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdz
dWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2RDY5J10pOwotICAgICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMV0uY29t
bWFuZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcsICdmb3InLCAncmV2aXNpb24nLCAnU2llcnJhMTZF
MzNoJ10pOwotCi0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMF0u
cmVzb2x2ZShKU09OLnN0cmluZ2lmeShzdWJDb21taXRXaXRoV2ViS2l0KSk7Ci0gICAgICAgICAg
ICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMV0ucmVzb2x2ZShKU09OLnN0cmluZ2lm
eShhbm90aGVyU3ViQ29tbWl0V2l0aFdlYktpdCkpOwotICAgICAgICAgICAgICAgIE1vY2tTdWJw
cm9jZXNzLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNzLndh
aXRpbmdGb3JJbnZvY2F0aW9uKCk7Ci0gICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3Ro
LCAxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmlu
dm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3Jldmlz
aW9uJywgJ1NpZXJyYTE2RTM0J10pOwotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmlu
dm9jYXRpb25zWzBdLnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhX
ZWJLaXRBbmRKYXZhU2NyaXB0Q29yZSkpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChp
bnZvY2F0aW9ucy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwo
aW52b2NhdGlvbnNbMF0uY29tbWFuZCwgWydsaXN0JywgJ2FsbCBvc3ggMTZEeHggYnVpbGRzJ10p
OworICAgICAgICAgICAgICAgIGludm9jYXRpb25zWzBdLnJlc29sdmUoJ1xuXG5TaWVycmExNkQ2
OFxuU2llcnJhMTZENjlcbicpOworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vz
cy5yZXNldEFuZFdhaXRGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGludm9jYXRpb25zWzBdLmNvbW1hbmQs
IFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2RDY5J10p
OworICAgICAgICAgICAgICAgIGludm9jYXRpb25zWzBdLnJlc29sdmUoSlNPTi5zdHJpbmdpZnko
c3ViQ29tbWl0V2l0aFdlYktpdCkpOworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrU3VicHJv
Y2Vzcy5yZXNldEFuZFdhaXRGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICB9KS50aGVuKCgp
ID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW52b2NhdGlvbnMubGVuZ3RoLCAx
KTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGludm9jYXRpb25zWzBdLmNvbW1h
bmQsIFsnbGlzdCcsICdhbGwgb3N4IDE2RXh4IGJ1aWxkcyddKTsKKyAgICAgICAgICAgICAgICBp
bnZvY2F0aW9uc1swXS5yZXNvbHZlKCdcblxuU2llcnJhMTZFMzJcblNpZXJyYTE2RTMzXG5TaWVy
cmExNkUzM2hcblNpZXJyYTE2RTM0Jyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJw
cm9jZXNzLnJlc2V0QW5kV2FpdEZvckludm9jYXRpb24oKTsKKyAgICAgICAgICAgIH0pLnRoZW4o
KCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChpbnZvY2F0aW9ucy5sZW5ndGgs
IDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoaW52b2NhdGlvbnNbMF0uY29t
bWFuZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcsICdmb3InLCAncmV2aXNpb24nLCAnU2llcnJhMTZF
MzNoJ10pOworICAgICAgICAgICAgICAgIGludm9jYXRpb25zWzBdLnJlc29sdmUoSlNPTi5zdHJp
bmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhXZWJLaXQpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gTW9ja1N1YnByb2Nlc3MucmVzZXRBbmRXYWl0Rm9ySW52b2NhdGlvbigpOworICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGludm9jYXRp
b25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChpbnZvY2F0
aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbics
ICdTaWVycmExNkUzNCddKTsKKyAgICAgICAgICAgICAgICBpbnZvY2F0aW9uc1swXS5yZXNvbHZl
KEpTT04uc3RyaW5naWZ5KGFub3RoZXJTdWJDb21taXRXaXRoV2ViS2l0QW5kSmF2YVNjcmlwdENv
cmUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2hBdmFpbGFibGVCdWlsZHNQcm9taXNl
OwogICAgICAgICAgICAgfSkudGhlbigocmVzdWx0cykgPT4gewogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXN1bHRzLmxlbmd0aCwgMyk7CiAgICAgICAgICAgICAgICAgTW9ja1N1YnBy
b2Nlc3MucmVzZXQoKTsKICAgICAgICAgICAgICAgICBmZXRjaEFuZFJlcG9ydFByb21pc2UgPSBm
ZXRjaHRlci5mZXRjaEFuZFJlcG9ydE5ld0J1aWxkcygpOwotICAgICAgICAgICAgICAgIHJldHVy
biBNb2NrU3VicHJvY2Vzcy53YWl0aW5nRm9ySW52b2NhdGlvbigpOwotICAgICAgICAgICAgfSku
dGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNzLndhaXRp
bmdGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNz
LndhaXRGb3JJbnZvY2F0aW9uKCk7CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAg
ICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9ucy5zb3J0KChpbnZvY2F0aW9uLCBh
bnRvaGVySW52b2NhdGlvbikgPT4gaW52b2NhdGlvblsnY29tbWFuZCddID4gYW50b2hlckludm9j
YXRpb25bJ2NvbW1hbmQnXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKE1vY2tTdWJw
cm9jZXNzLmludm9jYXRpb25zLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRl
ZXBFcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAn
YWxsIG9zeCAxNkR4eCBidWlsZHMnXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1sxXS5jb21tYW5kLCBbJ2xpc3QnLCAnYWxsIG9z
eCAxNkV4eCBidWlsZHMnXSk7Ci0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2Nh
dGlvbnNbMF0ucmVzb2x2ZSgnXG5cblNpZXJyYTE2RDY4XG5TaWVycmExNkQ2OVxuJyk7Ci0gICAg
ICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMV0ucmVzb2x2ZSgnXG5cblNp
ZXJyYTE2RTMyXG5TaWVycmExNkUzM1xuU2llcnJhMTZFMzNoXG5TaWVycmExNkUzNCcpOwotICAg
ICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIE1vY2tTdWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7Ci0gICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9u
cy5zb3J0KChpbnZvY2F0aW9uLCBhbnRvaGVySW52b2NhdGlvbikgPT4gaW52b2NhdGlvblsnY29t
bWFuZCddID4gYW50b2hlckludm9jYXRpb25bJ2NvbW1hbmQnXSk7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zLmxlbmd0aCwgMik7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1sw
XS5jb21tYW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZpc2lvbicsICdTaWVy
cmExNkQ2OSddKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9j
ZXNzLmludm9jYXRpb25zWzFdLmNvbW1hbmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywg
J3JldmlzaW9uJywgJ1NpZXJyYTE2RTMzaCddKTsKLQotICAgICAgICAgICAgICAgIE1vY2tTdWJw
cm9jZXNzLmludm9jYXRpb25zWzBdLnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoc3ViQ29tbWl0V2l0
aFdlYktpdCkpOwotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzFd
LnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhXZWJLaXQpKTsKLQot
ICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIE1vY2tTdWJwcm9jZXNzLndhaXRpbmdGb3JJbnZvY2F0aW9uKCk7Ci0gICAgICAgICAg
ICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoTW9ja1N1YnBy
b2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJv
Y2Vzcy5pbnZvY2F0aW9uc1swXS5yZXNvbHZlKEpTT04uc3RyaW5naWZ5KGFub3RoZXJTdWJDb21t
aXRXaXRoV2ViS2l0QW5kSmF2YVNjcmlwdENvcmUpKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcs
ICdzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2RTM0J10pOworICAgICAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChpbnZvY2F0aW9ucy5sZW5ndGgsIDEpOworICAgICAgICAg
ICAgICAgIGFzc2VydC5kZWVwRXF1YWwoaW52b2NhdGlvbnNbMF0uY29tbWFuZCwgWydsaXN0Jywg
J2FsbCBvc3ggMTZEeHggYnVpbGRzJ10pOworICAgICAgICAgICAgICAgIGludm9jYXRpb25zWzBd
LnJlc29sdmUoJ1xuXG5TaWVycmExNkQ2OFxuU2llcnJhMTZENjlcbicpOworICAgICAgICAgICAg
ICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy5yZXNldEFuZFdhaXRGb3JJbnZvY2F0aW9uKCk7Cisg
ICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwo
aW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFs
KGludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3Jl
dmlzaW9uJywgJ1NpZXJyYTE2RDY5J10pOworICAgICAgICAgICAgICAgIGludm9jYXRpb25zWzBd
LnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoc3ViQ29tbWl0V2l0aFdlYktpdCkpOworICAgICAgICAg
ICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy5yZXNldEFuZFdhaXRGb3JJbnZvY2F0aW9uKCk7
CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVx
dWFsKGludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdhbGwgb3N4IDE2RXh4IGJ1aWxk
cyddKTsKKyAgICAgICAgICAgICAgICBpbnZvY2F0aW9uc1swXS5yZXNvbHZlKCdcblxuU2llcnJh
MTZFMzJcblNpZXJyYTE2RTMzXG5TaWVycmExNkUzM2hcblNpZXJyYTE2RTM0Jyk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIE1vY2tTdWJwcm9jZXNzLnJlc2V0QW5kV2FpdEZvckludm9jYXRpb24o
KTsKKyAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChpbnZvY2F0aW9ucy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoaW52b2NhdGlvbnNbMF0uY29tbWFuZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcsICdmb3In
LCAncmV2aXNpb24nLCAnU2llcnJhMTZFMzNoJ10pOworICAgICAgICAgICAgICAgIGludm9jYXRp
b25zWzBdLnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhXZWJLaXQp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3MucmVzZXRBbmRXYWl0Rm9y
SW52b2NhdGlvbigpOworICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0LmVxdWFsKGludm9jYXRpb25zLmxlbmd0aCwgMSk7CisgICAgICAgICAgICAgICAg
aW52b2NhdGlvbnNbMF0ucmVzb2x2ZShKU09OLnN0cmluZ2lmeShhbm90aGVyU3ViQ29tbWl0V2l0
aFdlYktpdEFuZEphdmFTY3JpcHRDb3JlKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBF
cXVhbChpbnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0JywgJ2Zvcics
ICdyZXZpc2lvbicsICdTaWVycmExNkUzNCddKTsKIAogICAgICAgICAgICAgICAgIHJldHVybiBm
ZXRjaEFuZFJlcG9ydFByb21pc2U7CiAgICAgICAgICAgICB9KS50aGVuKChyZXN1bHQpID0+IHsK
QEAgLTM4NiwxOCArMzgzLDE4IEBAIGRlc2NyaWJlKCdPU0J1aWxkRmV0Y2hlcicsIGZ1bmN0aW9u
KCkgewogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXS5sZW5n
dGgsIDEpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXVsw
XVsncmV2aXNpb24nXSwgJ1NpZXJyYTE2RTMzZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5l
cXVhbChyZXN1bHRbJ2NvbW1pdHMnXVswXVsnb3JkZXInXSwgMTYwNDAwMzMwNyk7Ci0gICAgICAg
ICAgICAgICAgY29uc3Qgd2FpdGluZ0Zvckludm9jYXRpb25Qcm9taXNlID0gTW9ja1N1YnByb2Nl
c3Mud2FpdGluZ0Zvckludm9jYXRpb24oKTsKKyAgICAgICAgICAgICAgICBjb25zdCB3YWl0Rm9y
SW52b2NhdGlvblByb21pc2UgPSBNb2NrU3VicHJvY2Vzcy53YWl0Rm9ySW52b2NhdGlvbigpOwog
ICAgICAgICAgICAgICAgIGZldGNoQW5kUmVwb3J0UHJvbWlzZSA9IGZldGNodGVyLmZldGNoQW5k
UmVwb3J0TmV3QnVpbGRzKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHdhaXRpbmdGb3JJbnZv
Y2F0aW9uUHJvbWlzZTsKLSAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICAgICAg
ICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy53YWl0aW5nRm9ySW52b2NhdGlvbigpOworICAgICAg
ICAgICAgICAgIHJldHVybiB3YWl0Rm9ySW52b2NhdGlvblByb21pc2U7CiAgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9u
cy5zb3J0KChpbnZvY2F0aW9uLCBhbnRvaGVySW52b2NhdGlvbikgPT4gaW52b2NhdGlvblsnY29t
bWFuZCddID4gYW50b2hlckludm9jYXRpb25bJ2NvbW1hbmQnXSk7Ci0gICAgICAgICAgICAgICAg
YXNzZXJ0LmVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zLmxlbmd0aCwgMik7Ci0gICAg
ICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1sw
XS5jb21tYW5kLCBbJ2xpc3QnLCAnYWxsIG9zeCAxNkR4eCBidWlsZHMnXSk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9uc1sxXS5jb21t
YW5kLCBbJ2xpc3QnLCAnYWxsIG9zeCAxNkV4eCBidWlsZHMnXSk7Ci0gICAgICAgICAgICAgICAg
TW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMF0ucmVzb2x2ZSgnXG5cblNpZXJyYTE2RDY4XG5T
aWVycmExNkQ2OVxuJyk7Ci0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlv
bnNbMV0ucmVzb2x2ZSgnXG5cblNpZXJyYTE2RTMyXG5TaWVycmExNkUzM1xuU2llcnJhMTZFMzNo
XG5TaWVycmExNkUzNCcpOworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChpbnZvY2F0aW9u
cy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoaW52b2NhdGlv
bnNbMF0uY29tbWFuZCwgWydsaXN0JywgJ2FsbCBvc3ggMTZEeHggYnVpbGRzJ10pOworICAgICAg
ICAgICAgICAgIGludm9jYXRpb25zWzBdLnJlc29sdmUoJ1xuXG5TaWVycmExNkQ2OFxuU2llcnJh
MTZENjlcbicpOworICAgICAgICAgICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy5yZXNldEFu
ZFdhaXRGb3JJbnZvY2F0aW9uKCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAg
ICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKKyAgICAgICAg
ICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcs
ICdhbGwgb3N4IDE2RXh4IGJ1aWxkcyddKTsKKyAgICAgICAgICAgICAgICBpbnZvY2F0aW9uc1sw
XS5yZXNvbHZlKCdcblxuU2llcnJhMTZFMzJcblNpZXJyYTE2RTMzXG5TaWVycmExNkUzM2hcblNp
ZXJyYTE2RTM0Jyk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZldGNoQW5kUmVwb3J0UHJvbWlz
ZTsKICAgICAgICAgICAgIH0pLnRoZW4oKHJlc3VsdCkgPT4gewogICAgICAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXN1bHRbJ3N0YXR1cyddLCAnT0snKTsKQEAgLTQ3MSwzNSArNDY4LDMyIEBA
IGRlc2NyaWJlKCdPU0J1aWxkRmV0Y2hlcicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXVswXVsncmV2aXNpb24nXSwgJ1NpZXJyYTE2
RTMzZycpOwogICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXN1bHRbJ2NvbW1pdHMnXVsw
XVsnb3JkZXInXSwgMTYwNDAwMzMwNyk7CiAKLSAgICAgICAgICAgICAgICBjb25zdCB3YWl0aW5n
Rm9ySW52b2NhdGlvblByb21pc2UgPSBNb2NrU3VicHJvY2Vzcy53YWl0aW5nRm9ySW52b2NhdGlv
bigpOworICAgICAgICAgICAgICAgIGNvbnN0IHdhaXRGb3JJbnZvY2F0aW9uUHJvbWlzZSA9IE1v
Y2tTdWJwcm9jZXNzLndhaXRGb3JJbnZvY2F0aW9uKCk7CiAgICAgICAgICAgICAgICAgZmV0Y2hB
bmRSZXBvcnRQcm9taXNlID0gZmV0Y2h0ZXIuZmV0Y2hBbmRSZXBvcnROZXdCdWlsZHMoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gd2FpdGluZ0Zvckludm9jYXRpb25Qcm9taXNlOworICAgICAg
ICAgICAgICAgIHJldHVybiB3YWl0Rm9ySW52b2NhdGlvblByb21pc2U7CiAgICAgICAgICAgICB9
KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3Mud2Fp
dGluZ0Zvckludm9jYXRpb24oKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoaW52b2Nh
dGlvbnMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZGVlcEVxdWFsKGludm9j
YXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdhbGwgb3N4IDE2RHh4IGJ1aWxkcyddKTsKKyAg
ICAgICAgICAgICAgICBpbnZvY2F0aW9uc1swXS5yZXNvbHZlKCdcblxuU2llcnJhMTZENjhcblNp
ZXJyYTE2RDY5XG4nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9ja1N1YnByb2Nlc3MucmVz
ZXRBbmRXYWl0Rm9ySW52b2NhdGlvbigpOwogICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMuc29ydCgoaW52b2NhdGlv
biwgYW50b2hlckludm9jYXRpb24pID0+IGludm9jYXRpb25bJ2NvbW1hbmQnXSA+IGFudG9oZXJJ
bnZvY2F0aW9uWydjb21tYW5kJ10pOwotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChNb2Nr
U3VicHJvY2Vzcy5pbnZvY2F0aW9ucy5sZW5ndGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dC5kZWVwRXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMF0uY29tbWFuZCwgWydsaXN0
JywgJ2FsbCBvc3ggMTZEeHggYnVpbGRzJ10pOwotICAgICAgICAgICAgICAgIGFzc2VydC5kZWVw
RXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnNbMV0uY29tbWFuZCwgWydsaXN0JywgJ2Fs
bCBvc3ggMTZFeHggYnVpbGRzJ10pOwotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmlu
dm9jYXRpb25zWzBdLnJlc29sdmUoJ1xuXG5TaWVycmExNkQ2OFxuU2llcnJhMTZENjlcbicpOwot
ICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzFdLnJlc29sdmUoJ1xu
XG5TaWVycmExNkUzMlxuU2llcnJhMTZFMzNcblNpZXJyYTE2RTMzaFxuU2llcnJhMTZFMzQnKTsK
LSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5yZXNldCgpOwotICAgICAgICAgICAgICAg
IHJldHVybiBNb2NrU3VicHJvY2Vzcy53YWl0aW5nRm9ySW52b2NhdGlvbigpOwotICAgICAgICAg
ICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2Nh
dGlvbnMuc29ydCgoaW52b2NhdGlvbiwgYW50b2hlckludm9jYXRpb24pID0+IGludm9jYXRpb25b
J2NvbW1hbmQnXSA+IGFudG9oZXJJbnZvY2F0aW9uWydjb21tYW5kJ10pOwotICAgICAgICAgICAg
ICAgIGFzc2VydC5lcXVhbChNb2NrU3VicHJvY2Vzcy5pbnZvY2F0aW9ucy5sZW5ndGgsIDIpOwot
ICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlv
bnNbMF0uY29tbWFuZCwgWydsaXN0JywgJ3N1YkNvbW1pdCcsICdmb3InLCAncmV2aXNpb24nLCAn
U2llcnJhMTZENjknXSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChNb2NrU3Vi
cHJvY2Vzcy5pbnZvY2F0aW9uc1sxXS5jb21tYW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0JywgJ2Zv
cicsICdyZXZpc2lvbicsICdTaWVycmExNkUzM2gnXSk7Ci0KKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAn
Zm9yJywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2RDY5J10pOwogICAgICAgICAgICAgICAgIE1vY2tT
dWJwcm9jZXNzLmludm9jYXRpb25zWzBdLnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoc3ViQ29tbWl0
V2l0aFdlYktpdCkpOwotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25z
WzFdLnJlc29sdmUoSlNPTi5zdHJpbmdpZnkoYW5vdGhlclN1YkNvbW1pdFdpdGhXZWJLaXQpKTsK
LSAgICAgICAgICAgICAgICBNb2NrU3VicHJvY2Vzcy5yZXNldCgpOwotICAgICAgICAgICAgICAg
IHJldHVybiBNb2NrU3VicHJvY2Vzcy53YWl0aW5nRm9ySW52b2NhdGlvbigpOworICAgICAgICAg
ICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy5yZXNldEFuZFdhaXRGb3JJbnZvY2F0aW9uKCk7
CiAgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1
YWwoTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKLSAgICAgICAgICAgICAg
ICBhc3NlcnQuZGVlcEVxdWFsKE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLmNvbW1hbmQs
IFsnbGlzdCcsICdzdWJDb21taXQnLCAnZm9yJywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2RTM0J10p
OwotICAgICAgICAgICAgICAgIE1vY2tTdWJwcm9jZXNzLmludm9jYXRpb25zWzBdLnJlamVjdCgn
Q29tbWFuZCBmYWlsZWQnKTsKLQorICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChpbnZvY2F0
aW9ucy5sZW5ndGgsIDEpOworICAgICAgICAgICAgICAgIGFzc2VydC5kZWVwRXF1YWwoaW52b2Nh
dGlvbnNbMF0uY29tbWFuZCwgWydsaXN0JywgJ2FsbCBvc3ggMTZFeHggYnVpbGRzJ10pOworICAg
ICAgICAgICAgICAgIGludm9jYXRpb25zWzBdLnJlc29sdmUoJ1xuXG5TaWVycmExNkUzMlxuU2ll
cnJhMTZFMzNcblNpZXJyYTE2RTMzaFxuU2llcnJhMTZFMzQnKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gTW9ja1N1YnByb2Nlc3MucmVzZXRBbmRXYWl0Rm9ySW52b2NhdGlvbigpOworICAgICAg
ICAgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChp
bnZvY2F0aW9uc1swXS5jb21tYW5kLCBbJ2xpc3QnLCAnc3ViQ29tbWl0JywgJ2ZvcicsICdyZXZp
c2lvbicsICdTaWVycmExNkUzM2gnXSk7CisgICAgICAgICAgICAgICAgaW52b2NhdGlvbnNbMF0u
cmVzb2x2ZShKU09OLnN0cmluZ2lmeShhbm90aGVyU3ViQ29tbWl0V2l0aFdlYktpdCkpOworICAg
ICAgICAgICAgICAgIHJldHVybiBNb2NrU3VicHJvY2Vzcy5yZXNldEFuZFdhaXRGb3JJbnZvY2F0
aW9uKCk7CisgICAgICAgICAgICB9KS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwoaW52b2NhdGlvbnMubGVuZ3RoLCAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZGVlcEVxdWFsKGludm9jYXRpb25zWzBdLmNvbW1hbmQsIFsnbGlzdCcsICdzdWJDb21taXQnLCAn
Zm9yJywgJ3JldmlzaW9uJywgJ1NpZXJyYTE2RTM0J10pOworICAgICAgICAgICAgICAgIGludm9j
YXRpb25zWzBdLnJlamVjdCgnQ29tbWFuZCBmYWlsZWQnKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmV0Y2hBbmRSZXBvcnRQcm9taXNlLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgICAg
ICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwogICAgICAgICAgICAg
ICAgIH0sIChlcnJvcl9vdXRwdXQpID0+IHsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stc3VicHJvY2Vzcy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3Jlc291cmNlcy9tb2NrLXN1
YnByb2Nlc3MuanMJKHJldmlzaW9uIDIxNDA5OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9y
Zy9zZXJ2ZXItdGVzdHMvcmVzb3VyY2VzL21vY2stc3VicHJvY2Vzcy5qcwkod29ya2luZyBjb3B5
KQpAQCAtMSw0ICsxLDQgQEAKLXZhciBNb2NrU3VicHJvY2VzcyA9IHsKK2NvbnN0IE1vY2tTdWJw
cm9jZXNzID0gewogICAgIGV4ZWN1dGU6IGZ1bmN0aW9uIChjb21tYW5kKQogICAgIHsKICAgICAg
ICAgY29uc3QgaW52b2NhdGlvbiA9IHtjb21tYW5kfTsKQEAgLTE2LDcgKzE2LDEyIEBAIHZhciBN
b2NrU3VicHJvY2VzcyA9IHsKICAgICAgICAgdGhpcy5pbnZvY2F0aW9ucy5wdXNoKGludm9jYXRp
b24pOwogICAgICAgICByZXR1cm4gaW52b2NhdGlvbi5wcm9taXNlOwogICAgIH0sCi0gICAgd2Fp
dGluZ0Zvckludm9jYXRpb246IGZ1bmN0aW9uICgpCisgICAgcmVzZXRBbmRXYWl0Rm9ySW52b2Nh
dGlvbjogZnVuY3Rpb24gKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVzZXQoKTsKKyAgICAgICAg
cmV0dXJuIHRoaXMud2FpdEZvckludm9jYXRpb24oKTsKKyAgICB9LAorICAgIHdhaXRGb3JJbnZv
Y2F0aW9uOiBmdW5jdGlvbiAoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl93YWl0aW5nSW52
b2NhdGlvbikgewogICAgICAgICAgICAgdGhpcy5fd2FpdGluZ0ludm9jYXRpb24gPSBuZXcgUHJv
bWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CkBAIC00Myw3ICs0OCw3IEBAIHZhciBN
b2NrU3VicHJvY2VzcyA9IHsKICAgICB9LAogICAgIHJlc2V0OiBmdW5jdGlvbiAoKQogICAgIHsK
LSAgICAgICAgTW9ja1N1YnByb2Nlc3MuaW52b2NhdGlvbnMgPSBbXTsKKyAgICAgICAgTW9ja1N1
YnByb2Nlc3MuaW52b2NhdGlvbnMubGVuZ3RoID0gMDsKICAgICAgICAgTW9ja1N1YnByb2Nlc3Mu
X3dhaXRpbmdJbnZvY2F0aW9uID0gbnVsbDsKICAgICAgICAgTW9ja1N1YnByb2Nlc3MuX3dhaXRp
bmdJbnZvY2F0aW9uUmVzb2x2ZXIgPSBudWxsOwogICAgIH0sCkluZGV4OiBXZWJzaXRlcy9wZXJm
LndlYmtpdC5vcmcvdG9vbHMvcHVsbC1vcy12ZXJzaW9ucy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJz
aXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvcHVsbC1vcy12ZXJzaW9ucy5qcwkocmV2aXNpb24g
MjE0MDk5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL3B1bGwtb3MtdmVyc2lv
bnMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NiArMCwwIEBACi0jIS91c3IvbG9jYWwvYmluL25v
ZGUKLSd1c2Ugc3RyaWN0JzsKLQotCi1sZXQgT1NCdWlsZEZldGNoZXIgPSByZXF1aXJlKCcuL2pz
L29zLWJ1aWxkLWZldGNoZXIuanMnKS5PU0J1aWxkRmV0Y2hlcjsKLWxldCBSZW1vdGVBUEkgPSBy
ZXF1aXJlKCcuL2pzL3JlbW90ZS5qcycpLlJlbW90ZUFQSTsKLWxldCBTdWJwcm9jZXNzID0gcmVx
dWlyZSgnLi9qcy9zdWJwcm9jZXNzLmpzJykuU3VicHJvY2VzczsKLWxldCBmcyA9IHJlcXVpcmUo
J2ZzJyk7Ci1sZXQgcGFyc2VBcmd1bWVudHMgPSByZXF1aXJlKCcuL2pzL3BhcnNlLWFyZ3VtZW50
cy5qcycpLnBhcnNlQXJndW1lbnRzOwotCi1mdW5jdGlvbiBtYWluKGFyZ3YpCi17Ci0gICAgbGV0
IG9wdGlvbnMgPSBwYXJzZUFyZ3VtZW50cyhhcmd2LCBbCi0gICAgICAgIHtuYW1lOiAnLS1vcy1j
b25maWctanNvbicsIHJlcXVpcmVkOiB0cnVlfSwKLSAgICAgICAge25hbWU6ICctLXNlcnZlci1j
b25maWctanNvbicsIHJlcXVpcmVkOiB0cnVlfSwKLSAgICAgICAge25hbWU6ICctLXNlY29uZHMt
dG8tc2xlZXAnLCB0eXBlOiBwYXJzZUZsb2F0LCBkZWZhdWx0OiA0MzIwMH0sCi0gICAgXSk7Ci0g
ICAgaWYgKCFvcHRpb25zKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzeW5jTG9vcChvcHRpb25z
KTsKLX0KLQotZnVuY3Rpb24gc3luY0xvb3Aob3B0aW9ucykKLXsKLSAgICBsZXQgb3NDb25maWdM
aXN0ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMob3B0aW9uc1snLS1vcy1jb25maWctanNv
biddLCAndXRmOCcpKTsKLSAgICBsZXQgc2VydmVyQ29uZmlnID0gSlNPTi5wYXJzZShmcy5yZWFk
RmlsZVN5bmMob3B0aW9uc1snLS1zZXJ2ZXItY29uZmlnLWpzb24nXSwgJ3V0ZjgnKSk7Ci0KLSAg
ICBjb25zdCByZW1vdGVBUEkgPSBuZXcgUmVtb3RlQVBJKHNlcnZlckNvbmZpZy5zZXJ2ZXIpOwot
Ci0gICAgUHJvbWlzZS5hbGwob3NDb25maWdMaXN0Lm1hcChvc0NvbmZpZyA9PiBuZXcgT1NCdWls
ZEZldGNoZXIob3NDb25maWcsIHJlbW90ZUFQSSwgc2VydmVyQ29uZmlnLnNsYXZlLCBuZXcgU3Vi
cHJvY2VzcywgY29uc29sZSkpKS50aGVuKChmZXRjaGVycykgPT4gewotICAgICAgICByZXR1cm4g
ZmV0Y2hlcnMucmVkdWNlKChwcm9taXNlLCBmZXRjaGVyKSA9PiB7Ci0gICAgICAgICAgICByZXR1
cm4gcHJvbWlzZS50aGVuKCgpID0+IGZldGNoZXIuZmV0Y2hBbmRSZXBvcnROZXdCdWlsZHMoKSk7
Ci0gICAgICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKTsKLSAgICB9KS5jYXRjaCgoZXJyb3IpID0+
IHsKLSAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7Ci0gICAgICAgIGlmICh0eXBlb2YoZXJy
b3Iuc3RhY2spID09ICdzdHJpbmcnKSB7Ci0gICAgICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGVy
cm9yLnN0YWNrLnNwbGl0KCdcbicpKQotICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobGlu
ZSk7Ci0gICAgICAgIH0KLSAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgc2V0VGlt
ZW91dChzeW5jTG9vcC5iaW5kKGdsb2JhbCwgb3B0aW9ucyksIG9wdGlvbnNbJy0tc2Vjb25kcy10
by1zbGVlcCddICogMTAwMCk7Ci0gICAgfSk7Ci19Ci0KLW1haW4ocHJvY2Vzcy5hcmd2KTsKSW5k
ZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLW9zLXZlcnNpb25zLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLW9zLXZlcnNp
b25zLmpzCShyZXZpc2lvbiAyMTQwOTkpCShmcm9tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy90
b29scy9wdWxsLW9zLXZlcnNpb25zLmpzOjIxNDA5OSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy90b29scy9zeW5jLW9zLXZlcnNpb25zLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDYgQEAKKyMhL3Vzci9sb2NhbC9iaW4vbm9kZQorJ3VzZSBzdHJpY3QnOworCisKK2xldCBPU0J1
aWxkRmV0Y2hlciA9IHJlcXVpcmUoJy4vanMvb3MtYnVpbGQtZmV0Y2hlci5qcycpLk9TQnVpbGRG
ZXRjaGVyOworbGV0IFJlbW90ZUFQSSA9IHJlcXVpcmUoJy4vanMvcmVtb3RlLmpzJykuUmVtb3Rl
QVBJOworbGV0IFN1YnByb2Nlc3MgPSByZXF1aXJlKCcuL2pzL3N1YnByb2Nlc3MuanMnKS5TdWJw
cm9jZXNzOworbGV0IGZzID0gcmVxdWlyZSgnZnMnKTsKK2xldCBwYXJzZUFyZ3VtZW50cyA9IHJl
cXVpcmUoJy4vanMvcGFyc2UtYXJndW1lbnRzLmpzJykucGFyc2VBcmd1bWVudHM7CisKK2Z1bmN0
aW9uIG1haW4oYXJndikKK3sKKyAgICBsZXQgb3B0aW9ucyA9IHBhcnNlQXJndW1lbnRzKGFyZ3Ys
IFsKKyAgICAgICAge25hbWU6ICctLW9zLWNvbmZpZy1qc29uJywgcmVxdWlyZWQ6IHRydWV9LAor
ICAgICAgICB7bmFtZTogJy0tc2VydmVyLWNvbmZpZy1qc29uJywgcmVxdWlyZWQ6IHRydWV9LAor
ICAgICAgICB7bmFtZTogJy0tc2Vjb25kcy10by1zbGVlcCcsIHR5cGU6IHBhcnNlRmxvYXQsIGRl
ZmF1bHQ6IDQzMjAwfSwKKyAgICBdKTsKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVy
bjsKKworICAgIHN5bmNMb29wKG9wdGlvbnMpOworfQorCitmdW5jdGlvbiBzeW5jTG9vcChvcHRp
b25zKQoreworICAgIGxldCBvc0NvbmZpZ0xpc3QgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3lu
YyhvcHRpb25zWyctLW9zLWNvbmZpZy1qc29uJ10sICd1dGY4JykpOworICAgIGxldCBzZXJ2ZXJD
b25maWcgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvcHRpb25zWyctLXNlcnZlci1jb25m
aWctanNvbiddLCAndXRmOCcpKTsKKworICAgIGNvbnN0IHJlbW90ZUFQSSA9IG5ldyBSZW1vdGVB
UEkoc2VydmVyQ29uZmlnLnNlcnZlcik7CisKKyAgICBQcm9taXNlLmFsbChvc0NvbmZpZ0xpc3Qu
bWFwKG9zQ29uZmlnID0+IG5ldyBPU0J1aWxkRmV0Y2hlcihvc0NvbmZpZywgcmVtb3RlQVBJLCBz
ZXJ2ZXJDb25maWcuc2xhdmUsIG5ldyBTdWJwcm9jZXNzLCBjb25zb2xlKSkpLnRoZW4oKGZldGNo
ZXJzKSA9PiB7CisgICAgICAgIHJldHVybiBmZXRjaGVycy5yZWR1Y2UoKHByb21pc2UsIGZldGNo
ZXIpID0+IHsKKyAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oKCkgPT4gZmV0Y2hlci5m
ZXRjaEFuZFJlcG9ydE5ld0J1aWxkcygpKTsKKyAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkp
OworICAgIH0pLmNhdGNoKChlcnJvcikgPT4geworICAgICAgICBjb25zb2xlLmVycm9yKGVycm9y
KTsKKyAgICAgICAgaWYgKHR5cGVvZihlcnJvci5zdGFjaykgPT0gJ3N0cmluZycpIHsKKyAgICAg
ICAgICAgIGZvciAobGV0IGxpbmUgb2YgZXJyb3Iuc3RhY2suc3BsaXQoJ1xuJykpCisgICAgICAg
ICAgICAgICAgY29uc29sZS5lcnJvcihsaW5lKTsKKyAgICAgICAgfQorICAgIH0pLnRoZW4oZnVu
Y3Rpb24gKCkgeworICAgICAgICBzZXRUaW1lb3V0KHN5bmNMb29wLmJpbmQoZ2xvYmFsLCBvcHRp
b25zKSwgb3B0aW9uc1snLS1zZWNvbmRzLXRvLXNsZWVwJ10gKiAxMDAwKTsKKyAgICB9KTsKK30K
KworbWFpbihwcm9jZXNzLmFyZ3YpOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rv
b2xzL3N5bmMtb3MtdmVyc2lvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3Rvb2xzL3N5bmMtb3MtdmVyc2lvbnMuanMJKHJldmlzaW9uIDIxNDA5OSkKKysrIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy90b29scy9zeW5jLW9zLXZlcnNpb25zLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxOCArMjgsMTcgQEAgZnVuY3Rpb24gc3luY0xvb3Aob3B0aW9ucykKIAog
ICAgIGNvbnN0IHJlbW90ZUFQSSA9IG5ldyBSZW1vdGVBUEkoc2VydmVyQ29uZmlnLnNlcnZlcik7
CiAKLSAgICBQcm9taXNlLmFsbChvc0NvbmZpZ0xpc3QubWFwKG9zQ29uZmlnID0+IG5ldyBPU0J1
aWxkRmV0Y2hlcihvc0NvbmZpZywgcmVtb3RlQVBJLCBzZXJ2ZXJDb25maWcuc2xhdmUsIG5ldyBT
dWJwcm9jZXNzLCBjb25zb2xlKSkpLnRoZW4oKGZldGNoZXJzKSA9PiB7Ci0gICAgICAgIHJldHVy
biBmZXRjaGVycy5yZWR1Y2UoKHByb21pc2UsIGZldGNoZXIpID0+IHsKLSAgICAgICAgICAgIHJl
dHVybiBwcm9taXNlLnRoZW4oKCkgPT4gZmV0Y2hlci5mZXRjaEFuZFJlcG9ydE5ld0J1aWxkcygp
KTsKLSAgICAgICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpOwotICAgIH0pLmNhdGNoKChlcnJvcikg
PT4geworICAgIGNvbnN0IGZldGNoZXJzID0gb3NDb25maWdMaXN0Lm1hcCgob3NDb25maWcpID0+
IG5ldyBPU0J1aWxkRmV0Y2hlcihvc0NvbmZpZywgcmVtb3RlQVBJLCBzZXJ2ZXJDb25maWcuc2xh
dmUsIG5ldyBTdWJwcm9jZXNzLCBjb25zb2xlKSk7CisgICAgT1NCdWlsZEZldGNoZXIuZmV0Y2hB
bmRSZXBvcnRBbGxJbk9yZGVyKGZldGNoZXJzKS5jYXRjaCgoZXJyb3IpID0+IHsKICAgICAgICAg
Y29uc29sZS5lcnJvcihlcnJvcik7CiAgICAgICAgIGlmICh0eXBlb2YoZXJyb3Iuc3RhY2spID09
ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGVycm9yLnN0YWNrLnNw
bGl0KCdcbicpKQogICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobGluZSk7CiAgICAgICAg
IH0KLSAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgc2V0VGltZW91dChzeW5jTG9v
cC5iaW5kKGdsb2JhbCwgb3B0aW9ucyksIG9wdGlvbnNbJy0tc2Vjb25kcy10by1zbGVlcCddICog
MTAwMCk7CisgICAgfSkudGhlbigoKSA9PiB7CisgICAgICAgIGNvbnN0IHNlY29uZHNUb1NsZWVw
ID0gb3B0aW9uc1snLS1zZWNvbmRzLXRvLXNsZWVwJ107CisgICAgICAgIGNvbnNvbGUubG9nKGBT
bGVlcGluZyBmb3IgJHtNYXRoLmZsb29yKHNlY29uZHNUb1NsZWVwIC8gMzYwMCl9aCAke01hdGgu
Zmxvb3Ioc2Vjb25kc1RvU2xlZXAgLyA2MCkgJSA2MH1tICR7c2Vjb25kc1RvU2xlZXAgJSA2MH1z
YCk7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc3luY0xvb3Aob3B0aW9ucyksIHNlY29uZHNU
b1NsZWVwICogMTAwMCk7CiAgICAgfSk7CiB9CiAKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0
Lm9yZy90b29scy9qcy9vcy1idWlsZC1mZXRjaGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYnNpdGVz
L3BlcmYud2Via2l0Lm9yZy90b29scy9qcy9vcy1idWlsZC1mZXRjaGVyLmpzCShyZXZpc2lvbiAy
MTQwOTkpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvb3MtYnVpbGQtZmV0
Y2hlci5qcwkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDE0IEBACiAKIGxldCBhc3NlcnQgPSBy
ZXF1aXJlKCdhc3NlcnQnKTsKIAorZnVuY3Rpb24gbWFwSW5TZXJpYWxQcm9taXNlQ2hhaW4obGlz
dCwgY2FsbGJhY2spCit7CisgICAgY29uc3QgcmVzdWx0cyA9IFtdOworICAgIHJldHVybiBsaXN0
LnJlZHVjZSgoY2hhaW5lZFByb21pc2UsIGl0ZW0pID0+IHsKKyAgICAgICAgcmV0dXJuIGNoYWlu
ZWRQcm9taXNlLnRoZW4oKCkgPT4gY2FsbGJhY2soaXRlbSkpLnRoZW4oKHJlc3VsdCkgPT4gcmVz
dWx0cy5wdXNoKHJlc3VsdCkpOworICAgIH0sIFByb21pc2UucmVzb2x2ZSgpKS50aGVuKCgpID0+
IHJlc3VsdHMpOworfQorCiBjbGFzcyBPU0J1aWxkRmV0Y2hlciB7CiAKICAgICBjb25zdHJ1Y3Rv
cihvc0NvbmZpZywgcmVtb3RlQVBJLCBzbGF2ZUF1dGgsIHN1YnByb2Nlc3MsIGxvZ2dlcikKQEAg
LTE0LDkgKzIyLDE1IEBAIGNsYXNzIE9TQnVpbGRGZXRjaGVyIHsKICAgICAgICAgdGhpcy5fc3Vi
cHJvY2VzcyA9IHN1YnByb2Nlc3M7CiAgICAgfQogCisgICAgc3RhdGljIGZldGNoQW5kUmVwb3J0
QWxsSW5PcmRlcihmZXRjaGVyTGlzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBtYXBJblNlcmlh
bFByb21pc2VDaGFpbihmZXRjaGVyTGlzdCwgKGZldGNoZXIpID0+IGZldGNoZXIuZmV0Y2hBbmRS
ZXBvcnROZXdCdWlsZHMoKSk7CisgICAgfQorCiAgICAgZmV0Y2hBbmRSZXBvcnROZXdCdWlsZHMo
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoQXZhaWxhYmxlQnVpbGRzKCkudGhl
bigocmVzdWx0cykgPT57CisgICAgICAgIHJldHVybiB0aGlzLl9mZXRjaEF2YWlsYWJsZUJ1aWxk
cygpLnRoZW4oKHJlc3VsdHMpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2coYFN1
Ym1pdHRpbmcgJHtyZXN1bHRzLmxlbmd0aH0gYnVpbGRzIGZvciAke3RoaXMuX29zQ29uZmlnWydu
YW1lJ119YCk7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0Q29tbWl0cyhyZXN1bHRz
KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMjcsMjQgKzQxLDI5IEBAIGNsYXNzIE9TQnVpbGRG
ZXRjaGVyIHsKICAgICAgICAgY29uc3QgcmVwb3NpdG9yeU5hbWUgPSBjb25maWdbJ25hbWUnXTsK
ICAgICAgICAgbGV0IGN1c3RvbUNvbW1hbmRzID0gY29uZmlnWydjdXN0b21Db21tYW5kcyddOwog
Ci0gICAgICAgIHJldHVybiBQcm9taXNlLmFsbChjdXN0b21Db21tYW5kcy5tYXAoKGNvbW1hbmQp
ID0+IHsKKyAgICAgICAgcmV0dXJuIG1hcEluU2VyaWFsUHJvbWlzZUNoYWluKGN1c3RvbUNvbW1h
bmRzLCAoY29tbWFuZCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0KGNvbW1hbmRbJ21pblJldmlz
aW9uJ10pOwogICAgICAgICAgICAgYXNzZXJ0KGNvbW1hbmRbJ21heFJldmlzaW9uJ10pOwogICAg
ICAgICAgICAgY29uc3QgbWluUmV2aXNpb25PcmRlciA9IHRoaXMuX2NvbXB1dGVPcmRlcihjb21t
YW5kWydtaW5SZXZpc2lvbiddKTsKICAgICAgICAgICAgIGNvbnN0IG1heFJldmlzaW9uT3JkZXIg
PSB0aGlzLl9jb21wdXRlT3JkZXIoY29tbWFuZFsnbWF4UmV2aXNpb24nXSk7CiAKLSAgICAgICAg
ICAgIGxldCBmZXRjaENvbW1pdHNQcm9taXNlID0gdGhpcy5fcmVtb3RlQVBJLmdldEpTT05XaXRo
U3RhdHVzKGAvYXBpL2NvbW1pdHMvJHtlc2NhcGUocmVwb3NpdG9yeU5hbWUpfS9sYXN0LXJlcG9y
dGVkP2Zyb209JHttaW5SZXZpc2lvbk9yZGVyfSZ0bz0ke21heFJldmlzaW9uT3JkZXJ9YCkudGhl
bigocmVzdWx0KSA9PiB7CisgICAgICAgICAgICBjb25zdCB1cmwgPSBgL2FwaS9jb21taXRzLyR7
ZXNjYXBlKHJlcG9zaXRvcnlOYW1lKX0vbGFzdC1yZXBvcnRlZD9mcm9tPSR7bWluUmV2aXNpb25P
cmRlcn0mdG89JHttYXhSZXZpc2lvbk9yZGVyfWA7CisKKyAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9yZW1vdGVBUEkuZ2V0SlNPTldpdGhTdGF0dXModXJsKS50aGVuKChyZXN1bHQpID0+IHsKICAg
ICAgICAgICAgICAgICBjb25zdCBtaW5PcmRlciA9IHJlc3VsdFsnY29tbWl0cyddLmxlbmd0aCA9
PSAxID8gcGFyc2VJbnQocmVzdWx0Wydjb21taXRzJ11bMF1bJ29yZGVyJ10pIDogMDsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tbWl0c0ZvckF2YWlsYWJsZUJ1aWxkcyhyZXBvc2l0
b3J5TmFtZSwgY29tbWFuZFsnY29tbWFuZCddLCBjb21tYW5kWydsaW5lc1RvSWdub3JlJ10sIG1p
bk9yZGVyKTsKLSAgICAgICAgICAgIH0pCi0KLSAgICAgICAgICAgIGlmICgnc3ViQ29tbWl0Q29t
bWFuZCcgaW4gY29tbWFuZCkKLSAgICAgICAgICAgICAgICBmZXRjaENvbW1pdHNQcm9taXNlID0g
ZmV0Y2hDb21taXRzUHJvbWlzZS50aGVuKChjb21taXRzKSA9PiB0aGlzLl9hZGRTdWJDb21taXRz
Rm9yQnVpbGQoY29tbWl0cywgY29tbWFuZFsnc3ViQ29tbWl0Q29tbWFuZCddKSk7CisgICAgICAg
ICAgICB9KS50aGVuKChjb21taXRzKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3QgbGFiZWwg
PSAnbmFtZScgaW4gY29tbWFuZCA/IGAiJHtjb21tYW5kWyduYW1lJ119ImAgOiBgImNvbW1hbmRb
J21pblJldmlzaW9uJ10iIHRvICJjb21tYW5kWydtYXhSZXZpc2lvbiddImA7CisgICAgICAgICAg
ICAgICAgdGhpcy5fbG9nZ2VyLmxvZyhgRm91bmQgJHtjb21taXRzLmxlbmd0aH0gYnVpbGRzIGZv
ciAke2xhYmVsfWApOworCisgICAgICAgICAgICAgICAgaWYgKCdzdWJDb21taXRDb21tYW5kJyBp
biBjb21tYW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5sb2coYFJlc29s
dmluZyBzdWJjb21taXRzIGZvciAiJHtsYWJlbH0iYCk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9hZGRTdWJDb21taXRzRm9yQnVpbGQoY29tbWl0cywgY29tbWFuZFsnc3ViQ29t
bWl0Q29tbWFuZCddKTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJldHVybiBm
ZXRjaENvbW1pdHNQcm9taXNlOwotICAgICAgICB9KSkudGhlbihyZXN1bHRzID0+IHsKLSAgICAg
ICAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCByZXN1bHRzKTsK
LSAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdHM7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSkudGhlbigocmVzdWx0cykgPT4gW10uY29uY2F0KC4uLnJlc3VsdHMp
KTsKICAgICB9CiAKICAgICBfY29tcHV0ZU9yZGVyKHJldmlzaW9uKQpAQCAtNjUsMjcgKzg0LDI3
IEBAIGNsYXNzIE9TQnVpbGRGZXRjaGVyIHsKICAgICAgICAgICAgIGxldCBsaW5lcyA9IG91dHB1
dC5zcGxpdCgnXG4nKTsKICAgICAgICAgICAgIGlmIChsaW5lc1RvSWdub3JlKXsKICAgICAgICAg
ICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAobGluZXNUb0lnbm9yZSk7Ci0gICAgICAg
ICAgICAgICAgbGluZXMgPSBsaW5lcy5maWx0ZXIoZnVuY3Rpb24obGluZSkge3JldHVybiAhcmVn
ZXguZXhlYyhsaW5lKTt9KTsKKyAgICAgICAgICAgICAgICBsaW5lcyA9IGxpbmVzLmZpbHRlcigo
bGluZSkgPT4gIXJlZ2V4LmV4ZWMobGluZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIGxpbmVzLm1hcChyZXZpc2lvbiA9PiAoe3JlcG9zaXRvcnksIHJldmlzaW9uLCAnb3Jk
ZXInOiB0aGlzLl9jb21wdXRlT3JkZXIocmV2aXNpb24pfSkpCi0gICAgICAgICAgICAgICAgLmZp
bHRlcihjb21taXQgPT4gY29tbWl0WydvcmRlciddID4gbWluT3JkZXIpOworICAgICAgICAgICAg
cmV0dXJuIGxpbmVzLm1hcCgocmV2aXNpb24pID0+ICh7cmVwb3NpdG9yeSwgcmV2aXNpb24sICdv
cmRlcic6IHRoaXMuX2NvbXB1dGVPcmRlcihyZXZpc2lvbil9KSkKKyAgICAgICAgICAgICAgICAu
ZmlsdGVyKChjb21taXQpID0+IGNvbW1pdFsnb3JkZXInXSA+IG1pbk9yZGVyKTsKICAgICAgICAg
fSk7CiAgICAgfQogCiAgICAgX2FkZFN1YkNvbW1pdHNGb3JCdWlsZChjb21taXRzLCBjb21tYW5k
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbW1pdHMucmVkdWNlKChwcm9taXNlLCBjb21taXQp
ID0+IHsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9zdWJwcm9jZXNzLmV4ZWN1dGUoY29tbWFuZC5jb25jYXQoY29t
bWl0WydyZXZpc2lvbiddKSk7Ci0gICAgICAgICAgICB9KS50aGVuKChzdWJDb21taXRPdXRwdXQp
ID0+IHsKKyAgICAgICAgcmV0dXJuIG1hcEluU2VyaWFsUHJvbWlzZUNoYWluKGNvbW1pdHMsIChj
b21taXQpID0+IHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdWJwcm9jZXNzLmV4ZWN1dGUo
Y29tbWFuZC5jb25jYXQoY29tbWl0WydyZXZpc2lvbiddKSkudGhlbigoc3ViQ29tbWl0T3V0cHV0
KSA9PiB7CiAgICAgICAgICAgICAgICAgY29uc3Qgc3ViQ29tbWl0cyA9IEpTT04ucGFyc2Uoc3Vi
Q29tbWl0T3V0cHV0KTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCByZXBvc2l0b3J5TmFtZSBp
biBzdWJDb21taXRzKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1YkNvbW1pdCA9IHN1
YkNvbW1pdHNbcmVwb3NpdG9yeU5hbWVdOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoc3Vi
Q29tbWl0WydyZXZpc2lvbiddKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmRlZXBFcXVh
bChPYmplY3Qua2V5cyhzdWJDb21taXQpLCBbJ3JldmlzaW9uJ10pOworICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQodHlwZW9mKHN1YkNvbW1pdFsncmV2aXNpb24nXSkgPT0gJ3N0cmluZycpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjb21taXRbJ3N1YkNvbW1pdHMnXSA9
IHN1YkNvbW1pdHM7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdDsKICAgICAgICAgICAg
IH0pOwotICAgICAgICB9LCBQcm9taXNlLnJlc29sdmUoKSkudGhlbigoKSA9PiBjb21taXRzKTsK
KyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgX3N1Ym1pdENvbW1pdHMoY29tbWl0cykKQEAgLTk0
LDUgKzExMyw2IEBAIGNsYXNzIE9TQnVpbGRGZXRjaGVyIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3JlbW90ZUFQSS5wb3N0SlNPTldpdGhTdGF0dXMoJy9hcGkvcmVwb3J0LWNvbW1pdHMvJywgY29t
bWl0c1RvUmVwb3J0KTsKICAgICB9CiB9CisKIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmlu
ZWQnKQogICAgIG1vZHVsZS5leHBvcnRzLk9TQnVpbGRGZXRjaGVyID0gT1NCdWlsZEZldGNoZXI7
CkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvc3VicHJvY2Vzcy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvc3VicHJvY2Vz
cy5qcwkocmV2aXNpb24gMjE0MDk5KQorKysgV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xz
L2pzL3N1YnByb2Nlc3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsMTAgQEAKICd1c2Ug
c3RyaWN0JzsKLWNvbnN0IGNoaWxkUHJvY2VzcyA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5D
aGlsZFByb2Nlc3M7Citjb25zdCBjaGlsZFByb2Nlc3MgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNz
Jyk7CiAKIGNsYXNzIFN1YnByb2Nlc3MgewogICAgIGV4ZWN1dGUoY29tbWFuZCkgewogICAgICAg
ICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICAgICAg
dGhpcy5fY2hpbGRQcm9jZXNzLmV4ZWNGaWxlKGNvbW1hbmRbMF0sIGNvbW1hbmQuc2xpY2UoMSks
IChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHsKKyAgICAgICAgICAgIGNoaWxkUHJvY2Vzcy5l
eGVjRmlsZShjb21tYW5kWzBdLCBjb21tYW5kLnNsaWNlKDEpLCAoZXJyb3IsIHN0ZG91dCwgc3Rk
ZXJyKSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKGVycm9yKQogICAgICAgICAgICAgICAgICAg
ICByZWplY3Qoc3RkZXJyKTsKICAgICAgICAgICAgICAgICBlbHNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>