<?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>159979</bug_id>
          
          <creation_ts>2016-07-20 11:36:46 -0700</creation_ts>
          <short_desc>Fix timeout of imported/w3c/WebCryptoAPI/idlharness.html</short_desc>
          <delta_ts>2016-07-20 18:59:07 -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>Tools / Tests</component>
          <version>WebKit Nightly Build</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>
          
          <blocked>159638</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>lforschler</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1212820</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-07-20 11:36:46 -0700</bug_when>
    <thetext>Fix timeout of imported/w3c/WebCryptoAPI/idlharness.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212823</commentid>
    <comment_count>1</comment_count>
      <attachid>284132</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2016-07-20 11:45:03 -0700</bug_when>
    <thetext>Created attachment 284132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212926</commentid>
    <comment_count>2</comment_count>
      <attachid>284132</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-20 16:15:37 -0700</bug_when>
    <thetext>Comment on attachment 284132
Patch

Clearing flags on attachment: 284132

Committed r203476: &lt;http://trac.webkit.org/changeset/203476&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212927</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-20 16:15:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284132</attachid>
            <date>2016-07-20 11:45:03 -0700</date>
            <delta_ts>2016-07-20 16:15:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159979-20160720114409.patch</filename>
            <type>text/plain</type>
            <size>129561</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzc5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTRiZjRlYmJlN2Y1M2RmNDBkNjJj
NDFjYWEwNGExMzAyOGY1NGExZi4uYmFhMTM5NGQxNGUwMTEwMjQ0MmUyZGY0NjM5N2ExMmYwMzAz
NzRlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA3LTIwICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHRpbWVvdXQgb2YgaW1wb3J0ZWQvdzNj
L1dlYkNyeXB0b0FQSS9pZGxoYXJuZXNzLmh0bWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgUmVtb3Zl
IHRoZSBza2lwIHR1cGxlIG9mIHRoZSB0ZXN0LgorCiAyMDE2LTA3LTE4ICBBbmRyZWFzIEtsaW5n
ICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBUaGVyZSBzaG91bGQgYmUgYSB3YXkgdG8g
c2ltdWxhdGUgbWVtb3J5IHByZXNzdXJlIGluIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggY2YyZWVmYzI5ZGU0ZTdjMGEyMzUwNjhlM2M1N2ZkZjk3NWIwN2Uz
Zi4uOGRiZDM3YzY2MmMxNzY1OWRkZjAyOWUyZDc5N2U0NTYwNjA3YjJjOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMTYtMDctMjAgIEppZXdlbiBU
YW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggdGltZW91dCBvZiBpbXBv
cnRlZC93M2MvV2ViQ3J5cHRvQVBJL2lkbGhhcm5lc3MuaHRtbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU5OTc5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG1pc3NpbmcgcmVzb3VyY2VzLgorCisg
ICAgICAgICogV2ViQ3J5cHRvQVBJL2lkbGhhcm5lc3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IFdlYkNyeXB0b0FQSS9pZGxoYXJuZXNzLmh0bWw6CisgICAgICAgICogcmVzb3VyY2VzL1dlYklE
TFBhcnNlci5qczogQWRkZWQuCisgICAgICAgICh0b2tlbmlzZSk6CisgICAgICAgIChXZWJJRExQ
YXJzZUVycm9yKToKKyAgICAgICAgKFdlYklETFBhcnNlRXJyb3IucHJvdG90eXBlLnRvU3RyaW5n
KToKKyAgICAgICAgKGVycm9yKToKKyAgICAgICAgKGNvbnN1bWUpOgorICAgICAgICAod3MpOgor
ICAgICAgICAoYWxsX3dzKToKKyAgICAgICAgKGludGVnZXJfdHlwZSk6CisgICAgICAgIChmbG9h
dF90eXBlKToKKyAgICAgICAgKHByaW1pdGl2ZV90eXBlKToKKyAgICAgICAgKGNvbnN0X3ZhbHVl
KToKKyAgICAgICAgKHR5cGVfc3VmZml4KToKKyAgICAgICAgKHNpbmdsZV90eXBlKToKKyAgICAg
ICAgKHVuaW9uX3R5cGUpOgorICAgICAgICAodHlwZSk6CisgICAgICAgIChhcmd1bWVudCk6Cisg
ICAgICAgIChhcmd1bWVudF9saXN0KToKKyAgICAgICAgKHR5cGVfcGFpcik6CisgICAgICAgIChz
aW1wbGVfZXh0ZW5kZWRfYXR0cik6CisgICAgICAgIChleHRlbmRlZF9hdHRycyk6CisgICAgICAg
IChkZWZhdWx0Xyk6CisgICAgICAgIChjb25zdF8pOgorICAgICAgICAoaW5oZXJpdGFuY2UpOgor
ICAgICAgICAob3BlcmF0aW9uX3Jlc3QpOgorICAgICAgICAoY2FsbGJhY2spOgorICAgICAgICAo
YXR0cmlidXRlKToKKyAgICAgICAgKHJldHVybl90eXBlKToKKyAgICAgICAgKG9wZXJhdGlvbik6
CisgICAgICAgIChpZGVudGlmaWVycyk6CisgICAgICAgIChzZXJpYWxpc2VyKToKKyAgICAgICAg
KGl0ZXJhYmxlX3R5cGUpOgorICAgICAgICAocmVhZG9ubHlfaXRlcmFibGVfdHlwZSk6CisgICAg
ICAgIChpdGVyYWJsZSk6CisgICAgICAgIChpbnRlcmZhY2VfKToKKyAgICAgICAgKHBhcnRpYWwp
OgorICAgICAgICAoZGljdGlvbmFyeSk6CisgICAgICAgIChleGNlcHRpb24pOgorICAgICAgICAo
ZW51bV8pOgorICAgICAgICAocGFyc2UpOgorICAgICAgICAqIHJlc291cmNlcy9pZGxoYXJuZXNz
LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbnN0VmFsdWUpOgorICAgICAgICAobWluT3ZlcmxvYWRM
ZW5ndGgpOgorICAgICAgICAodGhyb3dPclJlamVjdCk6CisgICAgICAgIChhd2FpdE5DYWxsYmFj
a3MpOgorICAgICAgICAocmV0dXJuLmZyb3VuZCk6CisgICAgICAgIChmcm91bmQpOgorICAgICAg
ICAoc2VsZi5JZGxBcnJheSk6CisgICAgICAgIChJZGxBcnJheS5wcm90b3R5cGUuYWRkX2lkbHMp
OgorICAgICAgICAoSWRsQXJyYXkucHJvdG90eXBlLmFkZF91bnRlc3RlZF9pZGxzKToKKyAgICAg
ICAgKElkbEFycmF5LnByb3RvdHlwZS5pbnRlcm5hbF9hZGRfaWRscyk6CisgICAgICAgIChJZGxB
cnJheS5wcm90b3R5cGUuYWRkX29iamVjdHMpOgorICAgICAgICAoSWRsQXJyYXkucHJvdG90eXBl
LnByZXZlbnRfbXVsdGlwbGVfdGVzdGluZyk6CisgICAgICAgIChJZGxBcnJheS5wcm90b3R5cGUu
cmVjdXJzaXZlbHlfZ2V0X2ltcGxlbWVudHMpOgorICAgICAgICAoZXhwb3NlZF9pbik6CisgICAg
ICAgIChJZGxBcnJheS5wcm90b3R5cGUudGVzdCk6CisgICAgICAgIChJZGxBcnJheS5wcm90b3R5
cGUuYXNzZXJ0X3R5cGVfaXMpOgorICAgICAgICAoSWRsT2JqZWN0KToKKyAgICAgICAgKElkbE9i
amVjdC5wcm90b3R5cGUudGVzdCk6CisgICAgICAgIChJZGxPYmplY3QucHJvdG90eXBlLmhhc19l
eHRlbmRlZF9hdHRyaWJ1dGUpOgorICAgICAgICAoSWRsSW50ZXJmYWNlKToKKyAgICAgICAgKElk
bEludGVyZmFjZS5wcm90b3R5cGUuaXNfY2FsbGJhY2spOgorICAgICAgICAoSWRsSW50ZXJmYWNl
LnByb3RvdHlwZS5oYXNfY29uc3RhbnRzKToKKyAgICAgICAgKElkbEludGVyZmFjZS5wcm90b3R5
cGUuaXNfZ2xvYmFsKToKKyAgICAgICAgKElkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdCk6Cisg
ICAgICAgIChJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3Rfc2VsZik6CisgICAgICAgIChJZGxJ
bnRlcmZhY2UucHJvdG90eXBlLnRlc3RfbWVtYmVyX2NvbnN0KToKKyAgICAgICAgKElkbEludGVy
ZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfYXR0cmlidXRlKToKKyAgICAgICAgKElkbEludGVy
ZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfb3BlcmF0aW9uKToKKyAgICAgICAgKElkbEludGVy
ZmFjZS5wcm90b3R5cGUuZG9fbWVtYmVyX29wZXJhdGlvbl9hc3NlcnRzKToKKyAgICAgICAgKElk
bEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfc3RyaW5naWZpZXIpOgorICAgICAgICAo
SWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcnMpOgorICAgICAgICAoSWRsSW50ZXJm
YWNlLnByb3RvdHlwZS50ZXN0X29iamVjdCk6CisgICAgICAgIChJZGxJbnRlcmZhY2UucHJvdG90
eXBlLnRlc3RfcHJpbWFyeV9pbnRlcmZhY2Vfb2YpOgorICAgICAgICAoSWRsSW50ZXJmYWNlLnBy
b3RvdHlwZS50ZXN0X2ludGVyZmFjZV9vZik6CisgICAgICAgIChJZGxJbnRlcmZhY2UucHJvdG90
eXBlLmhhc19zdHJpbmdpZmllcik6CisgICAgICAgIChJZGxJbnRlcmZhY2UucHJvdG90eXBlLmRv
X2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyk6CisgICAgICAgIChJZGxJbnRlcmZhY2VNZW1i
ZXIpOgorICAgICAgICAoY3JlYXRlX3N1aXRhYmxlX29iamVjdCk6CisgICAgICAgIChJZGxFbnVt
KToKKyAgICAgICAgKElkbFR5cGVkZWYpOgorCiAyMDE2LTA3LTE4ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIDIgZmlyc3QgcGFyYW1ldGVycyB0byBhZGRF
dmVudExpc3RlbmVyKCkgLyByZW1vdmVFdmVudExpc3RlbmVyKCkgc2hvdWxkIGJlIG1hbmRhdG9y
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZWY5YjNhMWQ4YTZmMTBmMjM0MGE2MzlkMGJlMTVhMGI1
NjRkNjg3ZC4uNjUwNDc4MjZmYmVlZTJhZDRiNTllOTA0NDcyNGExMzVhYTc4Njg1MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zCkBAIC0xMDM3LDcgKzEwMzcsNiBAQCBpbXBvcnRlZC93M2MvV2ViQ3J5cHRv
QVBJL2dlbmVyYXRlS2V5L3Rlc3Rfc3VjY2Vzc2VzX1JTQS1PQUVQLmh0bWwgWyBTa2lwIF0KIGlt
cG9ydGVkL3czYy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvdGVzdF9zdWNjZXNzZXNfUlNBLVBT
Uy5odG1sIFsgU2tpcCBdCiBpbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2dlbmVyYXRlS2V5L3Rl
c3Rfc3VjY2Vzc2VzX1JTQVNTQS1QS0NTMS12MV81Lmh0bWwgWyBTa2lwIF0KIGltcG9ydGVkL3cz
Yy9XZWJDcnlwdG9BUEkvZ2VuZXJhdGVLZXkvdGVzdF9zdWNjZXNzZXMuaHRtbCBbIFNraXAgXQot
aW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQSS9pZGxoYXJuZXNzLmh0bWwgWyBTa2lwIF0KIAogZWRp
dGluZy9kZWxldGluZy9kZWxldGUtZW1vamkuaHRtbCBbIFNsb3cgXQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2lkbGhhcm5lc3MtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQSS9pZGxoYXJuZXNzLWV4
cGVjdGVkLnR4dAppbmRleCA2ZWUzZjcxM2ZmMjk2MzY5ZDBiNDA1ZjgxZGQ2NDhmMDVhYzA0MDRj
Li5hYWM4NmFlOGNlOTYzODg5ZGU3YTlhNzQ5MGUwYmE4YWM4YWM0ZmIyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2lkbGhhcm5lc3MtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9XZWJDcnlwdG9BUEkvaWRsaGFybmVz
cy1leHBlY3RlZC50eHQKQEAgLTEsMiArMSw3MCBAQAotRkFJTDogVGltZWQgb3V0IHdhaXRpbmcg
Zm9yIG5vdGlmeURvbmUgdG8gYmUgY2FsbGVkCitEZXNjcmlwdGlvbgorCitUaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBXZWJDcnlwdG8gQVBJIG1hdGNo
IHdpdGggaXRzIFdlYklETCBkZWZpbml0aW9uLgorCisKK1BBU1MgQ3J5cHRvIGludGVyZmFjZTog
ZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFjZSBvYmplY3QgCitQQVNTIENyeXB0
byBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCAKK1BBU1MgQ3J5cHRvIGludGVyZmFjZSBvYmplY3Qg
bmFtZSAKK1BBU1MgQ3J5cHRvIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9m
IGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IAorUEFTUyBDcnlwdG8gaW50ZXJmYWNlOiBleGlz
dGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QncyAiY29u
c3RydWN0b3IiIHByb3BlcnR5IAorRkFJTCBDcnlwdG8gaW50ZXJmYWNlOiBhdHRyaWJ1dGUgc3Vi
dGxlIGFzc2VydF90cnVlOiBUaGUgcHJvdG90eXBlIG9iamVjdCBtdXN0IGhhdmUgYSBwcm9wZXJ0
eSAic3VidGxlIiBleHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorUEFTUyBDcnlwdG8gaW50ZXJmYWNl
OiBvcGVyYXRpb24gZ2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldykgCitQQVNTIENyeXB0
byBtdXN0IGJlIHByaW1hcnkgaW50ZXJmYWNlIG9mIGNyeXB0byAKK1BBU1MgU3RyaW5naWZpY2F0
aW9uIG9mIGNyeXB0byAKK0ZBSUwgQ3J5cHRvIGludGVyZmFjZTogY3J5cHRvIG11c3QgaW5oZXJp
dCBwcm9wZXJ0eSAic3VidGxlIiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAoMCkgYXNzZXJ0X2luaGVy
aXRzOiBwcm9wZXJ0eSAic3VidGxlIiBub3QgZm91bmQgaW4gcHJvdG90eXBlIGNoYWluCitQQVNT
IENyeXB0byBpbnRlcmZhY2U6IGNyeXB0byBtdXN0IGluaGVyaXQgcHJvcGVydHkgImdldFJhbmRv
bVZhbHVlcyIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgKDEpIAorUEFTUyBDcnlwdG8gaW50ZXJmYWNl
OiBjYWxsaW5nIGdldFJhbmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZpZXcpIG9uIGNyeXB0byB3aXRo
IHRvbyBmZXcgYXJndW1lbnRzIG11c3QgdGhyb3cgVHlwZUVycm9yIAorRkFJTCBDcnlwdG9LZXkg
aW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCBh
c3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJDcnlw
dG9LZXkiIGV4cGVjdGVkIHByb3BlcnR5ICJDcnlwdG9LZXkiIG1pc3NpbmcKK0ZBSUwgQ3J5cHRv
S2V5IGludGVyZmFjZSBvYmplY3QgbGVuZ3RoIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9l
cyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkNyeXB0b0tleSIgZXhwZWN0ZWQgcHJvcGVydHkgIkNy
eXB0b0tleSIgbWlzc2luZworRkFJTCBDcnlwdG9LZXkgaW50ZXJmYWNlIG9iamVjdCBuYW1lIGFz
c2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIkNyeXB0
b0tleSIgZXhwZWN0ZWQgcHJvcGVydHkgIkNyeXB0b0tleSIgbWlzc2luZworRkFJTCBDcnlwdG9L
ZXkgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3Rv
dHlwZSBvYmplY3QgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBw
cm9wZXJ0eSAiQ3J5cHRvS2V5IiBleHBlY3RlZCBwcm9wZXJ0eSAiQ3J5cHRvS2V5IiBtaXNzaW5n
CitGQUlMIENyeXB0b0tleSBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHkgYXNzZXJ0
X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQ3J5cHRvS2V5
IiBleHBlY3RlZCBwcm9wZXJ0eSAiQ3J5cHRvS2V5IiBtaXNzaW5nCitGQUlMIENyeXB0b0tleSBp
bnRlcmZhY2U6IGF0dHJpYnV0ZSB0eXBlIGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBu
b3QgaGF2ZSBvd24gcHJvcGVydHkgIkNyeXB0b0tleSIgZXhwZWN0ZWQgcHJvcGVydHkgIkNyeXB0
b0tleSIgbWlzc2luZworRkFJTCBDcnlwdG9LZXkgaW50ZXJmYWNlOiBhdHRyaWJ1dGUgZXh0cmFj
dGFibGUgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0
eSAiQ3J5cHRvS2V5IiBleHBlY3RlZCBwcm9wZXJ0eSAiQ3J5cHRvS2V5IiBtaXNzaW5nCitGQUlM
IENyeXB0b0tleSBpbnRlcmZhY2U6IGF0dHJpYnV0ZSBhbGdvcml0aG0gYXNzZXJ0X293bl9wcm9w
ZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiQ3J5cHRvS2V5IiBleHBlY3Rl
ZCBwcm9wZXJ0eSAiQ3J5cHRvS2V5IiBtaXNzaW5nCitGQUlMIENyeXB0b0tleSBpbnRlcmZhY2U6
IGF0dHJpYnV0ZSB1c2FnZXMgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZl
IG93biBwcm9wZXJ0eSAiQ3J5cHRvS2V5IiBleHBlY3RlZCBwcm9wZXJ0eSAiQ3J5cHRvS2V5IiBt
aXNzaW5nCitGQUlMIFN1YnRsZUNyeXB0byBpbnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVy
dGllcyBvZiBpbnRlcmZhY2Ugb2JqZWN0IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBu
b3QgaGF2ZSBvd24gcHJvcGVydHkgIlN1YnRsZUNyeXB0byIgZXhwZWN0ZWQgcHJvcGVydHkgIlN1
YnRsZUNyeXB0byIgbWlzc2luZworRkFJTCBTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlIG9iamVjdCBs
ZW5ndGggYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0
eSAiU3VidGxlQ3J5cHRvIiBleHBlY3RlZCBwcm9wZXJ0eSAiU3VidGxlQ3J5cHRvIiBtaXNzaW5n
CitGQUlMIFN1YnRsZUNyeXB0byBpbnRlcmZhY2Ugb2JqZWN0IG5hbWUgYXNzZXJ0X293bl9wcm9w
ZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiU3VidGxlQ3J5cHRvIiBleHBl
Y3RlZCBwcm9wZXJ0eSAiU3VidGxlQ3J5cHRvIiBtaXNzaW5nCitGQUlMIFN1YnRsZUNyeXB0byBp
bnRlcmZhY2U6IGV4aXN0ZW5jZSBhbmQgcHJvcGVydGllcyBvZiBpbnRlcmZhY2UgcHJvdG90eXBl
IG9iamVjdCBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3Bl
cnR5ICJTdWJ0bGVDcnlwdG8iIGV4cGVjdGVkIHByb3BlcnR5ICJTdWJ0bGVDcnlwdG8iIG1pc3Np
bmcKK0ZBSUwgU3VidGxlQ3J5cHRvIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVz
IG9mIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0J3MgImNvbnN0cnVjdG9yIiBwcm9wZXJ0eSBh
c3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJTdWJ0
bGVDcnlwdG8iIGV4cGVjdGVkIHByb3BlcnR5ICJTdWJ0bGVDcnlwdG8iIG1pc3NpbmcKK0ZBSUwg
U3VidGxlQ3J5cHRvIGludGVyZmFjZTogb3BlcmF0aW9uIGVuY3J5cHQoQWxnb3JpdGhtSWRlbnRp
ZmllcixDcnlwdG9LZXksQnVmZmVyU291cmNlKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRv
ZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJTdWJ0bGVDcnlwdG8iIGV4cGVjdGVkIHByb3BlcnR5
ICJTdWJ0bGVDcnlwdG8iIG1pc3NpbmcKK0ZBSUwgU3VidGxlQ3J5cHRvIGludGVyZmFjZTogb3Bl
cmF0aW9uIGRlY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllcixDcnlwdG9LZXksQnVmZmVyU291cmNl
KSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJT
dWJ0bGVDcnlwdG8iIGV4cGVjdGVkIHByb3BlcnR5ICJTdWJ0bGVDcnlwdG8iIG1pc3NpbmcKK0ZB
SUwgU3VidGxlQ3J5cHRvIGludGVyZmFjZTogb3BlcmF0aW9uIHNpZ24oQWxnb3JpdGhtSWRlbnRp
ZmllcixDcnlwdG9LZXksQnVmZmVyU291cmNlKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRv
ZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJTdWJ0bGVDcnlwdG8iIGV4cGVjdGVkIHByb3BlcnR5
ICJTdWJ0bGVDcnlwdG8iIG1pc3NpbmcKK0ZBSUwgU3VidGxlQ3J5cHRvIGludGVyZmFjZTogb3Bl
cmF0aW9uIHZlcmlmeShBbGdvcml0aG1JZGVudGlmaWVyLENyeXB0b0tleSxCdWZmZXJTb3VyY2Us
QnVmZmVyU291cmNlKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3du
IHByb3BlcnR5ICJTdWJ0bGVDcnlwdG8iIGV4cGVjdGVkIHByb3BlcnR5ICJTdWJ0bGVDcnlwdG8i
IG1pc3NpbmcKK0ZBSUwgU3VidGxlQ3J5cHRvIGludGVyZmFjZTogb3BlcmF0aW9uIGRpZ2VzdChB
bGdvcml0aG1JZGVudGlmaWVyLEJ1ZmZlclNvdXJjZSkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2Vs
ZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiU3VidGxlQ3J5cHRvIiBleHBlY3RlZCBwcm9w
ZXJ0eSAiU3VidGxlQ3J5cHRvIiBtaXNzaW5nCitGQUlMIFN1YnRsZUNyeXB0byBpbnRlcmZhY2U6
IG9wZXJhdGlvbiBnZW5lcmF0ZUtleShBbGdvcml0aG1JZGVudGlmaWVyLGJvb2xlYW4sW29iamVj
dCBPYmplY3RdKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUgb3duIHBy
b3BlcnR5ICJTdWJ0bGVDcnlwdG8iIGV4cGVjdGVkIHByb3BlcnR5ICJTdWJ0bGVDcnlwdG8iIG1p
c3NpbmcKK0ZBSUwgU3VidGxlQ3J5cHRvIGludGVyZmFjZTogb3BlcmF0aW9uIGRlcml2ZUtleShB
bGdvcml0aG1JZGVudGlmaWVyLENyeXB0b0tleSxBbGdvcml0aG1JZGVudGlmaWVyLGJvb2xlYW4s
W29iamVjdCBPYmplY3RdKSBhc3NlcnRfb3duX3Byb3BlcnR5OiBzZWxmIGRvZXMgbm90IGhhdmUg
b3duIHByb3BlcnR5ICJTdWJ0bGVDcnlwdG8iIGV4cGVjdGVkIHByb3BlcnR5ICJTdWJ0bGVDcnlw
dG8iIG1pc3NpbmcKK0ZBSUwgU3VidGxlQ3J5cHRvIGludGVyZmFjZTogb3BlcmF0aW9uIGRlcml2
ZUJpdHMoQWxnb3JpdGhtSWRlbnRpZmllcixDcnlwdG9LZXksdW5zaWduZWQgbG9uZykgYXNzZXJ0
X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiU3VidGxlQ3J5
cHRvIiBleHBlY3RlZCBwcm9wZXJ0eSAiU3VidGxlQ3J5cHRvIiBtaXNzaW5nCitGQUlMIFN1YnRs
ZUNyeXB0byBpbnRlcmZhY2U6IG9wZXJhdGlvbiBpbXBvcnRLZXkoS2V5Rm9ybWF0LFtvYmplY3Qg
T2JqZWN0XSxbb2JqZWN0IE9iamVjdF0sQWxnb3JpdGhtSWRlbnRpZmllcixib29sZWFuLFtvYmpl
Y3QgT2JqZWN0XSkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBoYXZlIG93biBw
cm9wZXJ0eSAiU3VidGxlQ3J5cHRvIiBleHBlY3RlZCBwcm9wZXJ0eSAiU3VidGxlQ3J5cHRvIiBt
aXNzaW5nCitGQUlMIFN1YnRsZUNyeXB0byBpbnRlcmZhY2U6IG9wZXJhdGlvbiBleHBvcnRLZXko
S2V5Rm9ybWF0LENyeXB0b0tleSkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBkb2VzIG5vdCBo
YXZlIG93biBwcm9wZXJ0eSAiU3VidGxlQ3J5cHRvIiBleHBlY3RlZCBwcm9wZXJ0eSAiU3VidGxl
Q3J5cHRvIiBtaXNzaW5nCitGQUlMIFN1YnRsZUNyeXB0byBpbnRlcmZhY2U6IG9wZXJhdGlvbiB3
cmFwS2V5KEtleUZvcm1hdCxDcnlwdG9LZXksQ3J5cHRvS2V5LEFsZ29yaXRobUlkZW50aWZpZXIp
IGFzc2VydF9vd25fcHJvcGVydHk6IHNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIlN1
YnRsZUNyeXB0byIgZXhwZWN0ZWQgcHJvcGVydHkgIlN1YnRsZUNyeXB0byIgbWlzc2luZworRkFJ
TCBTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlOiBvcGVyYXRpb24gdW53cmFwS2V5KEtleUZvcm1hdCxC
dWZmZXJTb3VyY2UsQ3J5cHRvS2V5LEFsZ29yaXRobUlkZW50aWZpZXIsQWxnb3JpdGhtSWRlbnRp
Zmllcixib29sZWFuLFtvYmplY3QgT2JqZWN0XSkgYXNzZXJ0X293bl9wcm9wZXJ0eTogc2VsZiBk
b2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiU3VidGxlQ3J5cHRvIiBleHBlY3RlZCBwcm9wZXJ0
eSAiU3VidGxlQ3J5cHRvIiBtaXNzaW5nCitGQUlMIFN1YnRsZUNyeXB0byBtdXN0IGJlIHByaW1h
cnkgaW50ZXJmYWNlIG9mIGNyeXB0by5zdWJ0bGUgYXNzZXJ0X2VxdWFsczogd3JvbmcgdHlwZW9m
IG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIFN0cmlu
Z2lmaWNhdGlvbiBvZiBjcnlwdG8uc3VidGxlIGFzc2VydF9lcXVhbHM6IHdyb25nIHR5cGVvZiBv
YmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBTdWJ0bGVD
cnlwdG8gaW50ZXJmYWNlOiBjcnlwdG8uc3VidGxlIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiZW5j
cnlwdCIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgKDApIGFzc2VydF9lcXVhbHM6IHdyb25nIHR5cGVv
ZiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBTdWJ0
bGVDcnlwdG8gaW50ZXJmYWNlOiBjYWxsaW5nIGVuY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllcixD
cnlwdG9LZXksQnVmZmVyU291cmNlKSBvbiBjcnlwdG8uc3VidGxlIHdpdGggdG9vIGZldyBhcmd1
bWVudHMgbXVzdCB0aHJvdyBUeXBlRXJyb3IgYXNzZXJ0X2VxdWFsczogd3JvbmcgdHlwZW9mIG9i
amVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIFN1YnRsZUNy
eXB0byBpbnRlcmZhY2U6IGNyeXB0by5zdWJ0bGUgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJkZWNy
eXB0IiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAoMSkgYXNzZXJ0X2VxdWFsczogd3JvbmcgdHlwZW9m
IG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIFN1YnRs
ZUNyeXB0byBpbnRlcmZhY2U6IGNhbGxpbmcgZGVjcnlwdChBbGdvcml0aG1JZGVudGlmaWVyLENy
eXB0b0tleSxCdWZmZXJTb3VyY2UpIG9uIGNyeXB0by5zdWJ0bGUgd2l0aCB0b28gZmV3IGFyZ3Vt
ZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciBhc3NlcnRfZXF1YWxzOiB3cm9uZyB0eXBlb2Ygb2Jq
ZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5lZCIKK0ZBSUwgU3VidGxlQ3J5
cHRvIGludGVyZmFjZTogY3J5cHRvLnN1YnRsZSBtdXN0IGluaGVyaXQgcHJvcGVydHkgInNpZ24i
IHdpdGggdGhlIHByb3BlciB0eXBlICgyKSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB0eXBlb2Ygb2Jq
ZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5lZCIKK0ZBSUwgU3VidGxlQ3J5
cHRvIGludGVyZmFjZTogY2FsbGluZyBzaWduKEFsZ29yaXRobUlkZW50aWZpZXIsQ3J5cHRvS2V5
LEJ1ZmZlclNvdXJjZSkgb24gY3J5cHRvLnN1YnRsZSB3aXRoIHRvbyBmZXcgYXJndW1lbnRzIG11
c3QgdGhyb3cgVHlwZUVycm9yIGFzc2VydF9lcXVhbHM6IHdyb25nIHR5cGVvZiBvYmplY3QgZXhw
ZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBTdWJ0bGVDcnlwdG8gaW50
ZXJmYWNlOiBjcnlwdG8uc3VidGxlIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAidmVyaWZ5IiB3aXRo
IHRoZSBwcm9wZXIgdHlwZSAoMykgYXNzZXJ0X2VxdWFsczogd3JvbmcgdHlwZW9mIG9iamVjdCBl
eHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIFN1YnRsZUNyeXB0byBp
bnRlcmZhY2U6IGNhbGxpbmcgdmVyaWZ5KEFsZ29yaXRobUlkZW50aWZpZXIsQ3J5cHRvS2V5LEJ1
ZmZlclNvdXJjZSxCdWZmZXJTb3VyY2UpIG9uIGNyeXB0by5zdWJ0bGUgd2l0aCB0b28gZmV3IGFy
Z3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciBhc3NlcnRfZXF1YWxzOiB3cm9uZyB0eXBlb2Yg
b2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5lZCIKK0ZBSUwgU3VidGxl
Q3J5cHRvIGludGVyZmFjZTogY3J5cHRvLnN1YnRsZSBtdXN0IGluaGVyaXQgcHJvcGVydHkgImRp
Z2VzdCIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgKDQpIGFzc2VydF9lcXVhbHM6IHdyb25nIHR5cGVv
ZiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBTdWJ0
bGVDcnlwdG8gaW50ZXJmYWNlOiBjYWxsaW5nIGRpZ2VzdChBbGdvcml0aG1JZGVudGlmaWVyLEJ1
ZmZlclNvdXJjZSkgb24gY3J5cHRvLnN1YnRsZSB3aXRoIHRvbyBmZXcgYXJndW1lbnRzIG11c3Qg
dGhyb3cgVHlwZUVycm9yIGFzc2VydF9lcXVhbHM6IHdyb25nIHR5cGVvZiBvYmplY3QgZXhwZWN0
ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBTdWJ0bGVDcnlwdG8gaW50ZXJm
YWNlOiBjcnlwdG8uc3VidGxlIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiZ2VuZXJhdGVLZXkiIHdp
dGggdGhlIHByb3BlciB0eXBlICg1KSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB0eXBlb2Ygb2JqZWN0
IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5lZCIKK0ZBSUwgU3VidGxlQ3J5cHRv
IGludGVyZmFjZTogY2FsbGluZyBnZW5lcmF0ZUtleShBbGdvcml0aG1JZGVudGlmaWVyLGJvb2xl
YW4sW29iamVjdCBPYmplY3RdKSBvbiBjcnlwdG8uc3VidGxlIHdpdGggdG9vIGZldyBhcmd1bWVu
dHMgbXVzdCB0aHJvdyBUeXBlRXJyb3IgYXNzZXJ0X2VxdWFsczogd3JvbmcgdHlwZW9mIG9iamVj
dCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIFN1YnRsZUNyeXB0
byBpbnRlcmZhY2U6IGNyeXB0by5zdWJ0bGUgbXVzdCBpbmhlcml0IHByb3BlcnR5ICJkZXJpdmVL
ZXkiIHdpdGggdGhlIHByb3BlciB0eXBlICg2KSBhc3NlcnRfZXF1YWxzOiB3cm9uZyB0eXBlb2Yg
b2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5lZCIKK0ZBSUwgU3VidGxl
Q3J5cHRvIGludGVyZmFjZTogY2FsbGluZyBkZXJpdmVLZXkoQWxnb3JpdGhtSWRlbnRpZmllcixD
cnlwdG9LZXksQWxnb3JpdGhtSWRlbnRpZmllcixib29sZWFuLFtvYmplY3QgT2JqZWN0XSkgb24g
Y3J5cHRvLnN1YnRsZSB3aXRoIHRvbyBmZXcgYXJndW1lbnRzIG11c3QgdGhyb3cgVHlwZUVycm9y
IGFzc2VydF9lcXVhbHM6IHdyb25nIHR5cGVvZiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0
IGdvdCAidW5kZWZpbmVkIgorRkFJTCBTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlOiBjcnlwdG8uc3Vi
dGxlIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiZGVyaXZlQml0cyIgd2l0aCB0aGUgcHJvcGVyIHR5
cGUgKDcpIGFzc2VydF9lcXVhbHM6IHdyb25nIHR5cGVvZiBvYmplY3QgZXhwZWN0ZWQgIm9iamVj
dCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlOiBjYWxs
aW5nIGRlcml2ZUJpdHMoQWxnb3JpdGhtSWRlbnRpZmllcixDcnlwdG9LZXksdW5zaWduZWQgbG9u
Zykgb24gY3J5cHRvLnN1YnRsZSB3aXRoIHRvbyBmZXcgYXJndW1lbnRzIG11c3QgdGhyb3cgVHlw
ZUVycm9yIGFzc2VydF9lcXVhbHM6IHdyb25nIHR5cGVvZiBvYmplY3QgZXhwZWN0ZWQgIm9iamVj
dCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJTCBTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlOiBjcnlw
dG8uc3VidGxlIG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiaW1wb3J0S2V5IiB3aXRoIHRoZSBwcm9w
ZXIgdHlwZSAoOCkgYXNzZXJ0X2VxdWFsczogd3JvbmcgdHlwZW9mIG9iamVjdCBleHBlY3RlZCAi
b2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIFN1YnRsZUNyeXB0byBpbnRlcmZhY2U6
IGNhbGxpbmcgaW1wb3J0S2V5KEtleUZvcm1hdCxbb2JqZWN0IE9iamVjdF0sW29iamVjdCBPYmpl
Y3RdLEFsZ29yaXRobUlkZW50aWZpZXIsYm9vbGVhbixbb2JqZWN0IE9iamVjdF0pIG9uIGNyeXB0
by5zdWJ0bGUgd2l0aCB0b28gZmV3IGFyZ3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciBhc3Nl
cnRfZXF1YWxzOiB3cm9uZyB0eXBlb2Ygb2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3Qg
InVuZGVmaW5lZCIKK0ZBSUwgU3VidGxlQ3J5cHRvIGludGVyZmFjZTogY3J5cHRvLnN1YnRsZSBt
dXN0IGluaGVyaXQgcHJvcGVydHkgImV4cG9ydEtleSIgd2l0aCB0aGUgcHJvcGVyIHR5cGUgKDkp
IGFzc2VydF9lcXVhbHM6IHdyb25nIHR5cGVvZiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0
IGdvdCAidW5kZWZpbmVkIgorRkFJTCBTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlOiBjYWxsaW5nIGV4
cG9ydEtleShLZXlGb3JtYXQsQ3J5cHRvS2V5KSBvbiBjcnlwdG8uc3VidGxlIHdpdGggdG9vIGZl
dyBhcmd1bWVudHMgbXVzdCB0aHJvdyBUeXBlRXJyb3IgYXNzZXJ0X2VxdWFsczogd3JvbmcgdHlw
ZW9mIG9iamVjdCBleHBlY3RlZCAib2JqZWN0IiBidXQgZ290ICJ1bmRlZmluZWQiCitGQUlMIFN1
YnRsZUNyeXB0byBpbnRlcmZhY2U6IGNyeXB0by5zdWJ0bGUgbXVzdCBpbmhlcml0IHByb3BlcnR5
ICJ3cmFwS2V5IiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAoMTApIGFzc2VydF9lcXVhbHM6IHdyb25n
IHR5cGVvZiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgorRkFJ
TCBTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlOiBjYWxsaW5nIHdyYXBLZXkoS2V5Rm9ybWF0LENyeXB0
b0tleSxDcnlwdG9LZXksQWxnb3JpdGhtSWRlbnRpZmllcikgb24gY3J5cHRvLnN1YnRsZSB3aXRo
IHRvbyBmZXcgYXJndW1lbnRzIG11c3QgdGhyb3cgVHlwZUVycm9yIGFzc2VydF9lcXVhbHM6IHdy
b25nIHR5cGVvZiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZpbmVkIgor
RkFJTCBTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlOiBjcnlwdG8uc3VidGxlIG11c3QgaW5oZXJpdCBw
cm9wZXJ0eSAidW53cmFwS2V5IiB3aXRoIHRoZSBwcm9wZXIgdHlwZSAoMTEpIGFzc2VydF9lcXVh
bHM6IHdyb25nIHR5cGVvZiBvYmplY3QgZXhwZWN0ZWQgIm9iamVjdCIgYnV0IGdvdCAidW5kZWZp
bmVkIgorRkFJTCBTdWJ0bGVDcnlwdG8gaW50ZXJmYWNlOiBjYWxsaW5nIHVud3JhcEtleShLZXlG
b3JtYXQsQnVmZmVyU291cmNlLENyeXB0b0tleSxBbGdvcml0aG1JZGVudGlmaWVyLEFsZ29yaXRo
bUlkZW50aWZpZXIsYm9vbGVhbixbb2JqZWN0IE9iamVjdF0pIG9uIGNyeXB0by5zdWJ0bGUgd2l0
aCB0b28gZmV3IGFyZ3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciBhc3NlcnRfZXF1YWxzOiB3
cm9uZyB0eXBlb2Ygb2JqZWN0IGV4cGVjdGVkICJvYmplY3QiIGJ1dCBnb3QgInVuZGVmaW5lZCIK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL1dlYkNyeXB0b0FQSS9pZGxo
YXJuZXNzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2lkbGhh
cm5lc3MuaHRtbAppbmRleCBlNDA2N2RlMmZkM2FjOWIzZjViNDA0MDUyYjY3MjM5NzkwYzNmZDY2
Li44NjUxYmY1MjY4YmM4NGU5ZTk2MmY1NDhmNTI0M2M2YmUyNDg2OTRlIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2lkbGhhcm5lc3MuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvV2ViQ3J5cHRvQVBJL2lkbGhhcm5lc3MuaHRtbApA
QCAtMSwzICsxLDQgQEAKKwogPCFkb2N0eXBlIGh0bWw+CiA8aHRtbD4KIDxoZWFkPgpAQCAtNyw4
ICs4LDggQEAKIAogPHNjcmlwdCBzcmM9Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Li4vLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9L3Jlc291cmNlcy9XZWJJRExQYXJzZXIuanM+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0vcmVzb3VyY2VzL2lkbGhhcm5lc3MuanM+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0uLi9yZXNvdXJjZXMvV2ViSURMUGFyc2VyLmpzPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Li4vcmVzb3VyY2VzL2lkbGhhcm5lc3MuanM+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9X
ZWJJRExQYXJzZXIuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvcmVzb3VyY2VzL1dlYklE
TFBhcnNlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTUwNGZjNmUxZmRlZmQxOWNjN2Y3MTgyMmUzZGJmZDRi
ZTVlNjc4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291
cmNlcy9XZWJJRExQYXJzZXIuanMKQEAgLTAsMCArMSwxMDEyIEBACisKKworKGZ1bmN0aW9uICgp
IHsKKyAgICB2YXIgdG9rZW5pc2UgPSBmdW5jdGlvbiAoc3RyKSB7CisgICAgICAgIHZhciB0b2tl
bnMgPSBbXQorICAgICAgICAsICAgcmUgPSB7CisgICAgICAgICAgICAgICAgImZsb2F0IjogICAg
ICAgIC9eLT8oKFswLTldK1wuWzAtOV0qfFswLTldKlwuWzAtOV0rKShbRWVdWy0rXT9bMC05XSsp
P3xbMC05XStbRWVdWy0rXT9bMC05XSspLworICAgICAgICAgICAgLCAgICJpbnRlZ2VyIjogICAg
ICAvXi0/KDAoW1h4XVswLTlBLUZhLWZdK3xbMC03XSopfFsxLTldWzAtOV0qKS8KKyAgICAgICAg
ICAgICwgICAiaWRlbnRpZmllciI6ICAgL15bQS1aX2Etel1bMC05QS1aX2Etel0qLworICAgICAg
ICAgICAgLCAgICJzdHJpbmciOiAgICAgICAvXiJbXiJdKiIvCisgICAgICAgICAgICAsICAgIndo
aXRlc3BhY2UiOiAgIC9eKD86W1x0XG5cciBdK3xbXHRcblxyIF0qKChcL1wvLip8XC9cKigufFxu
fFxyKSo/XCpcLylbXHRcblxyIF0qKSkrLworICAgICAgICAgICAgLCAgICJvdGhlciI6ICAgICAg
ICAvXlteXHRcblxyIDAtOUEtWl9hLXpdLworICAgICAgICAgICAgfQorICAgICAgICAsICAgdHlw
ZXMgPSBbXQorICAgICAgICA7CisgICAgICAgIGZvciAodmFyIGsgaW4gcmUpIHR5cGVzLnB1c2go
ayk7CisgICAgICAgIHdoaWxlIChzdHIubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgdmFyIG1h
dGNoZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gdHlwZXMubGVu
Z3RoOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIHR5cGUgPSB0eXBlc1tpXTsK
KyAgICAgICAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZShyZVt0eXBlXSwgZnVuY3Rpb24gKHRv
aykgeworICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6IHR5cGUsIHZhbHVl
OiB0b2sgfSk7CisgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgaWYgKG1hdGNoZWQpIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1h
dGNoZWQpIGNvbnRpbnVlOworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUb2tlbiBzdHJl
YW0gbm90IHByb2dyZXNzaW5nIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRva2VuczsK
KyAgICB9OworICAgIAorICAgIHZhciBwYXJzZSA9IGZ1bmN0aW9uICh0b2tlbnMsIG9wdCkgewor
ICAgICAgICB2YXIgbGluZSA9IDE7CisgICAgICAgIHRva2VucyA9IHRva2Vucy5zbGljZSgpOwor
ICAgICAgICAKKyAgICAgICAgdmFyIEZMT0FUID0gImZsb2F0IgorICAgICAgICAsICAgSU5UID0g
ImludGVnZXIiCisgICAgICAgICwgICBJRCA9ICJpZGVudGlmaWVyIgorICAgICAgICAsICAgU1RS
ID0gInN0cmluZyIKKyAgICAgICAgLCAgIE9USEVSID0gIm90aGVyIgorICAgICAgICA7CisgICAg
ICAgIAorICAgICAgICB2YXIgV2ViSURMUGFyc2VFcnJvciA9IGZ1bmN0aW9uIChzdHIsIGxpbmUs
IGlucHV0LCB0b2tlbnMpIHsKKyAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IHN0cjsKKyAgICAg
ICAgICAgIHRoaXMubGluZSA9IGxpbmU7CisgICAgICAgICAgICB0aGlzLmlucHV0ID0gaW5wdXQ7
CisgICAgICAgICAgICB0aGlzLnRva2VucyA9IHRva2VuczsKKyAgICAgICAgfTsKKyAgICAgICAg
V2ViSURMUGFyc2VFcnJvci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlICsgIiwgbGluZSAiICsgdGhpcy5saW5lICsgIiAo
dG9rZW5zOiAnIiArIHRoaXMuaW5wdXQgKyAiJylcbiIgKworICAgICAgICAgICAgICAgICAgIEpT
T04uc3RyaW5naWZ5KHRoaXMudG9rZW5zLCBudWxsLCA0KTsKKyAgICAgICAgfTsKKyAgICAgICAg
CisgICAgICAgIHZhciBlcnJvciA9IGZ1bmN0aW9uIChzdHIpIHsKKyAgICAgICAgICAgIHZhciB0
b2sgPSAiIiwgbnVtVG9rZW5zID0gMCwgbWF4VG9rZW5zID0gNTsKKyAgICAgICAgICAgIHdoaWxl
IChudW1Ub2tlbnMgPCBtYXhUb2tlbnMgJiYgdG9rZW5zLmxlbmd0aCA+IG51bVRva2Vucykgewor
ICAgICAgICAgICAgICAgIHRvayArPSB0b2tlbnNbbnVtVG9rZW5zXS52YWx1ZTsKKyAgICAgICAg
ICAgICAgICBudW1Ub2tlbnMrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5l
dyBXZWJJRExQYXJzZUVycm9yKHN0ciwgbGluZSwgdG9rLCB0b2tlbnMuc2xpY2UoMCwgNSkpOwor
ICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgdmFyIGxhc3RfdG9rZW4gPSBudWxsOworICAg
ICAgICAKKyAgICAgICAgdmFyIGNvbnN1bWUgPSBmdW5jdGlvbiAodHlwZSwgdmFsdWUpIHsKKyAg
ICAgICAgICAgIGlmICghdG9rZW5zLmxlbmd0aCB8fCB0b2tlbnNbMF0udHlwZSAhPT0gdHlwZSkg
cmV0dXJuOworICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gInVuZGVmaW5lZCIgfHwg
dG9rZW5zWzBdLnZhbHVlID09PSB2YWx1ZSkgeworICAgICAgICAgICAgICAgICBsYXN0X3Rva2Vu
ID0gdG9rZW5zLnNoaWZ0KCk7CisgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBJRCkgbGFz
dF90b2tlbi52YWx1ZSA9IGxhc3RfdG9rZW4udmFsdWUucmVwbGFjZSgvXl8vLCAiIik7CisgICAg
ICAgICAgICAgICAgIHJldHVybiBsYXN0X3Rva2VuOworICAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKyAgICAgICAgCisgICAgICAgIHZhciB3cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IGlmICghdG9rZW5zLmxlbmd0aCkgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRva2Vuc1swXS50
eXBlID09PSAid2hpdGVzcGFjZSIpIHsKKyAgICAgICAgICAgICAgICB2YXIgdCA9IHRva2Vucy5z
aGlmdCgpOworICAgICAgICAgICAgICAgIHQudmFsdWUucmVwbGFjZSgvXG4vZywgZnVuY3Rpb24g
KG0pIHsgbGluZSsrOyByZXR1cm4gbTsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHQ7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB2YXIgYWxsX3dzID0g
ZnVuY3Rpb24gKHN0b3JlLCBwZWEpIHsgLy8gcGVhID09IHBvc3QgZXh0ZW5kZWQgYXR0cmlidXRl
LCB0cGVhID0gc2FtZSBmb3IgdHlwZXMKKyAgICAgICAgICAgIHZhciB0ID0geyB0eXBlOiAid2hp
dGVzcGFjZSIsIHZhbHVlOiAiIiB9OworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgICAgICAgICB2YXIgdyA9IHdzKCk7CisgICAgICAgICAgICAgICAgaWYgKCF3KSBicmVhazsK
KyAgICAgICAgICAgICAgICB0LnZhbHVlICs9IHcudmFsdWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAodC52YWx1ZS5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0
b3JlKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gdC52YWx1ZQorICAgICAgICAgICAg
ICAgICAgICAsICAgcmUgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndzIjogICAg
ICAgICAgICAgICAgICAgL14oW1x0XG5cciBdKykvCisgICAgICAgICAgICAgICAgICAgICAgICAs
ICAgImxpbmUtY29tbWVudCI6ICAgICAgICAgL15cL1wvKC4qKVxuPy9tCisgICAgICAgICAgICAg
ICAgICAgICAgICAsICAgIm11bHRpbGluZS1jb21tZW50IjogICAgL15cL1wqKCg/Oi58XG58XHIp
Kj8pXCpcLy8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
LCAgIHdzVHlwZXMgPSBbXQorICAgICAgICAgICAgICAgICAgICA7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAodmFyIGsgaW4gcmUpIHdzVHlwZXMucHVzaChrKTsKKyAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKHcubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2hl
ZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIG4gPSB3
c1R5cGVzLmxlbmd0aDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciB0eXBlID0gd3NUeXBlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0g
dy5yZXBsYWNlKHJlW3R5cGVdLCBmdW5jdGlvbiAodG9rLCBtMSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdG9yZS5wdXNoKHsgdHlwZTogdHlwZSArIChwZWEgPyAoIi0iICsg
cGVhKSA6ICIiKSwgdmFsdWU6IG0xIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICIiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChtYXRjaGVkKSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkKSBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3VycHJpc2luZyB3aGl0ZSBzcGFjZSBj
b25zdHJ1Y3QuIik7IC8vIHRoaXMgc2hvdWxkbid0IGhhcHBlbgorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0OworICAgICAg
ICAgICAgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgdmFyIGludGVnZXJfdHlwZSA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciByZXQgPSAiIjsKKyAgICAgICAgICAgIGFs
bF93cygpOworICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJ1bnNpZ25lZCIpKSByZXQgPSAi
dW5zaWduZWQgIjsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgaWYgKGNvbnN1
bWUoSUQsICJzaG9ydCIpKSByZXR1cm4gcmV0ICsgInNob3J0IjsKKyAgICAgICAgICAgIGlmIChj
b25zdW1lKElELCAibG9uZyIpKSB7CisgICAgICAgICAgICAgICAgcmV0ICs9ICJsb25nIjsKKyAg
ICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShJRCwg
ImxvbmciKSkgcmV0dXJuIHJldCArICIgbG9uZyI7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXQpIGVycm9yKCJGYWlsZWQgdG8g
cGFyc2UgaW50ZWdlciB0eXBlIik7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB2YXIg
ZmxvYXRfdHlwZSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciByZXQgPSAiIjsKKyAg
ICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJ1bnJlc3Ry
aWN0ZWQiKSkgcmV0ID0gInVucmVzdHJpY3RlZCAiOworICAgICAgICAgICAgYWxsX3dzKCk7Cisg
ICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgImZsb2F0IikpIHJldHVybiByZXQgKyAiZmxvYXQi
OworICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJkb3VibGUiKSkgcmV0dXJuIHJldCArICJk
b3VibGUiOworICAgICAgICAgICAgaWYgKHJldCkgZXJyb3IoIkZhaWxlZCB0byBwYXJzZSBmbG9h
dCB0eXBlIik7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB2YXIgcHJpbWl0aXZlX3R5
cGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgbnVtX3R5cGUgPSBpbnRlZ2VyX3R5
cGUoKSB8fCBmbG9hdF90eXBlKCk7CisgICAgICAgICAgICBpZiAobnVtX3R5cGUpIHJldHVybiBu
dW1fdHlwZTsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgaWYgKGNvbnN1bWUo
SUQsICJib29sZWFuIikpIHJldHVybiAiYm9vbGVhbiI7CisgICAgICAgICAgICBpZiAoY29uc3Vt
ZShJRCwgImJ5dGUiKSkgcmV0dXJuICJieXRlIjsKKyAgICAgICAgICAgIGlmIChjb25zdW1lKElE
LCAib2N0ZXQiKSkgcmV0dXJuICJvY3RldCI7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAg
ICB2YXIgY29uc3RfdmFsdWUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBpZiAoY29uc3Vt
ZShJRCwgInRydWUiKSkgcmV0dXJuIHsgdHlwZTogImJvb2xlYW4iLCB2YWx1ZTogdHJ1ZSB9Owor
ICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJmYWxzZSIpKSByZXR1cm4geyB0eXBlOiAiYm9v
bGVhbiIsIHZhbHVlOiBmYWxzZSB9OworICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJudWxs
IikpIHJldHVybiB7IHR5cGU6ICJudWxsIiB9OworICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQs
ICJJbmZpbml0eSIpKSByZXR1cm4geyB0eXBlOiAiSW5maW5pdHkiLCBuZWdhdGl2ZTogZmFsc2Ug
fTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiTmFOIikpIHJldHVybiB7IHR5cGU6ICJO
YU4iIH07CisgICAgICAgICAgICB2YXIgcmV0ID0gY29uc3VtZShGTE9BVCkgfHwgY29uc3VtZShJ
TlQpOworICAgICAgICAgICAgaWYgKHJldCkgcmV0dXJuIHsgdHlwZTogIm51bWJlciIsIHZhbHVl
OiAxICogcmV0LnZhbHVlIH07CisgICAgICAgICAgICB2YXIgdG9rID0gY29uc3VtZShPVEhFUiwg
Ii0iKTsKKyAgICAgICAgICAgIGlmICh0b2spIHsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3Vt
ZShJRCwgIkluZmluaXR5IikpIHJldHVybiB7IHR5cGU6ICJJbmZpbml0eSIsIG5lZ2F0aXZlOiB0
cnVlIH07CisgICAgICAgICAgICAgICAgZWxzZSB0b2tlbnMudW5zaGlmdCh0b2spOworICAgICAg
ICAgICAgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgdmFyIHR5cGVfc3VmZml4ID0g
ZnVuY3Rpb24gKG9iaikgeworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAg
ICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIj8iKSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm51bGxhYmxlKSBlcnJvcigiQ2FuJ3QgbnVs
bGFibGUgbW9yZSB0aGFuIG9uY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgb2JqLm51bGxhYmxl
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoY29u
c3VtZShPVEhFUiwgIlsiKSkgeworICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIl0iKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVk
IGFycmF5IHR5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvYmouYXJyYXkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG9iai5hcnJheSA9IDE7CisgICAgICAgICAgICAgICAgICAg
ICAgICBvYmoubnVsbGFibGVBcnJheSA9IFtvYmoubnVsbGFibGVdOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgb2JqLmFycmF5Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBvYmoubnVsbGFibGVBcnJh
eS5wdXNoKG9iai5udWxsYWJsZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgb2JqLm51bGxhYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGVsc2UgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAg
ICAKKyAgICAgICAgdmFyIHNpbmdsZV90eXBlID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAg
dmFyIHByaW0gPSBwcmltaXRpdmVfdHlwZSgpCisgICAgICAgICAgICAsICAgcmV0ID0geyBzZXF1
ZW5jZTogZmFsc2UsIGdlbmVyaWM6IG51bGwsIG51bGxhYmxlOiBmYWxzZSwgYXJyYXk6IGZhbHNl
LCB1bmlvbjogZmFsc2UgfQorICAgICAgICAgICAgLCAgIG5hbWUKKyAgICAgICAgICAgICwgICB2
YWx1ZQorICAgICAgICAgICAgOworICAgICAgICAgICAgaWYgKHByaW0pIHsKKyAgICAgICAgICAg
ICAgICByZXQuaWRsVHlwZSA9IHByaW07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChuYW1lID0gY29uc3VtZShJRCkpIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG5hbWUu
dmFsdWU7CisgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICAgICAgLy8gR2Vu
ZXJpYyB0eXBlcworICAgICAgICAgICAgICAgIGlmIChjb25zdW1lKE9USEVSLCAiPCIpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIC8vIGJhY2t3YXJkcyBjb21wYXQKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHZhbHVlID09PSAic2VxdWVuY2UiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXQuc2VxdWVuY2UgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIHJldC5nZW5lcmljID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHJldC5pZGxU
eXBlID0gdHlwZSgpIHx8IGVycm9yKCJFcnJvciBwYXJzaW5nIGdlbmVyaWMgdHlwZSAiICsgdmFs
dWUpOworICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFjb25zdW1lKE9USEVSLCAiPiIpKSBlcnJvcigiVW50ZXJtaW5hdGVkIGdlbmVyaWMgdHlw
ZSAiICsgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICB0eXBlX3N1ZmZpeChyZXQpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSB2YWx1ZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0eXBlX3N1
ZmZpeChyZXQpOworICAgICAgICAgICAgaWYgKHJldC5udWxsYWJsZSAmJiAhcmV0LmFycmF5ICYm
IHJldC5pZGxUeXBlID09PSAiYW55IikgZXJyb3IoIlR5cGUgYW55IGNhbm5vdCBiZSBtYWRlIG51
bGxhYmxlIik7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9OworICAgICAgICAK
KyAgICAgICAgdmFyIHVuaW9uX3R5cGUgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBhbGxf
d3MoKTsKKyAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhFUiwgIigiKSkgcmV0dXJuOworICAg
ICAgICAgICAgdmFyIHJldCA9IHsgc2VxdWVuY2U6IGZhbHNlLCBnZW5lcmljOiBudWxsLCBudWxs
YWJsZTogZmFsc2UsIGFycmF5OiBmYWxzZSwgdW5pb246IHRydWUsIGlkbFR5cGU6IFtdIH07Cisg
ICAgICAgICAgICB2YXIgZnN0ID0gdHlwZSgpIHx8IGVycm9yKCJVbmlvbiB0eXBlIHdpdGggbm8g
Y29udGVudCIpOworICAgICAgICAgICAgcmV0LmlkbFR5cGUucHVzaChmc3QpOworICAgICAgICAg
ICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoSUQsICJvciIpKSBicmVhazsKKyAgICAgICAgICAgICAgICB2YXIg
dHlwID0gdHlwZSgpIHx8IGVycm9yKCJObyB0eXBlIGFmdGVyICdvcicgaW4gdW5pb24gdHlwZSIp
OworICAgICAgICAgICAgICAgIHJldC5pZGxUeXBlLnB1c2godHlwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhFUiwgIikiKSkgZXJyb3IoIlVudGVybWluYXRl
ZCB1bmlvbiB0eXBlIik7CisgICAgICAgICAgICB0eXBlX3N1ZmZpeChyZXQpOworICAgICAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIHZhciB0eXBlID0g
ZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcmV0dXJuIHNpbmdsZV90eXBlKCkgfHwgdW5pb25f
dHlwZSgpOworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgdmFyIGFyZ3VtZW50ID0gZnVu
Y3Rpb24gKHN0b3JlKSB7CisgICAgICAgICAgICB2YXIgcmV0ID0geyBvcHRpb25hbDogZmFsc2Us
IHZhcmlhZGljOiBmYWxzZSB9OworICAgICAgICAgICAgcmV0LmV4dEF0dHJzID0gZXh0ZW5kZWRf
YXR0cnMoc3RvcmUpOworICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7CisgICAgICAg
ICAgICB2YXIgb3B0X3Rva2VuID0gY29uc3VtZShJRCwgIm9wdGlvbmFsIik7CisgICAgICAgICAg
ICBpZiAob3B0X3Rva2VuKSB7CisgICAgICAgICAgICAgICAgcmV0Lm9wdGlvbmFsID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dC5pZGxUeXBlID0gdHlwZSgpOworICAgICAgICAgICAgaWYgKCFyZXQuaWRsVHlwZSkgeworICAg
ICAgICAgICAgICAgIGlmIChvcHRfdG9rZW4pIHRva2Vucy51bnNoaWZ0KG9wdF90b2tlbik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHR5
cGVfdG9rZW4gPSBsYXN0X3Rva2VuOworICAgICAgICAgICAgaWYgKCFyZXQub3B0aW9uYWwpIHsK
KyAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgICAgICBpZiAodG9rZW5zLmxl
bmd0aCA+PSAzICYmCisgICAgICAgICAgICAgICAgICAgIHRva2Vuc1swXS50eXBlID09PSAib3Ro
ZXIiICYmIHRva2Vuc1swXS52YWx1ZSA9PT0gIi4iICYmCisgICAgICAgICAgICAgICAgICAgIHRv
a2Vuc1sxXS50eXBlID09PSAib3RoZXIiICYmIHRva2Vuc1sxXS52YWx1ZSA9PT0gIi4iICYmCisg
ICAgICAgICAgICAgICAgICAgIHRva2Vuc1syXS50eXBlID09PSAib3RoZXIiICYmIHRva2Vuc1sy
XS52YWx1ZSA9PT0gIi4iCisgICAgICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAg
ICAgICB0b2tlbnMuc2hpZnQoKTsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnNoaWZ0KCk7
CisgICAgICAgICAgICAgICAgICAgIHRva2Vucy5zaGlmdCgpOworICAgICAgICAgICAgICAgICAg
ICByZXQudmFyaWFkaWMgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElE
KTsKKyAgICAgICAgICAgIGlmICghbmFtZSkgeworICAgICAgICAgICAgICAgIGlmIChvcHRfdG9r
ZW4pIHRva2Vucy51bnNoaWZ0KG9wdF90b2tlbik7CisgICAgICAgICAgICAgICAgdG9rZW5zLnVu
c2hpZnQodHlwZV90b2tlbik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0Lm5hbWUgPSBuYW1lLnZhbHVlOworICAgICAgICAgICAgaWYgKHJl
dC5vcHRpb25hbCkgeworICAgICAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgICAg
IHJldFsiZGVmYXVsdCJdID0gZGVmYXVsdF8oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHJldHVybiByZXQ7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB2YXIgYXJndW1lbnRf
bGlzdCA9IGZ1bmN0aW9uIChzdG9yZSkgeworICAgICAgICAgICAgdmFyIHJldCA9IFtdCisgICAg
ICAgICAgICAsICAgYXJnID0gYXJndW1lbnQoc3RvcmUgPyByZXQgOiBudWxsKQorICAgICAgICAg
ICAgOworICAgICAgICAgICAgaWYgKCFhcmcpIHJldHVybjsKKyAgICAgICAgICAgIHJldC5wdXNo
KGFyZyk7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGFsbF93
cyhzdG9yZSA/IHJldCA6IG51bGwpOworICAgICAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhF
UiwgIiwiKSkgcmV0dXJuIHJldDsKKyAgICAgICAgICAgICAgICB2YXIgbnh0ID0gYXJndW1lbnQo
c3RvcmUgPyByZXQgOiBudWxsKSB8fCBlcnJvcigiVHJhaWxpbmcgY29tbWEgaW4gYXJndW1lbnRz
IGxpc3QiKTsKKyAgICAgICAgICAgICAgICByZXQucHVzaChueHQpOworICAgICAgICAgICAgfQor
ICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgdmFyIHR5cGVfcGFpciA9IGZ1bmN0aW9uICgp
IHsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgdmFyIGsgPSB0eXBlKCk7Cisg
ICAgICAgICAgICBpZiAoIWspIHJldHVybjsKKyAgICAgICAgICAgIGFsbF93cygpCisgICAgICAg
ICAgICBpZiAoIWNvbnN1bWUoT1RIRVIsICIsIikpIHJldHVybjsKKyAgICAgICAgICAgIGFsbF93
cygpOworICAgICAgICAgICAgdmFyIHYgPSB0eXBlKCk7CisgICAgICAgICAgICBpZiAoIXYpIHJl
dHVybjsKKyAgICAgICAgICAgIHJldHVybiBbaywgdl07CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICB2YXIgc2ltcGxlX2V4dGVuZGVkX2F0dHIgPSBmdW5jdGlvbiAoc3RvcmUpIHsKKyAg
ICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKTsK
KyAgICAgICAgICAgIGlmICghbmFtZSkgcmV0dXJuOworICAgICAgICAgICAgdmFyIHJldCA9IHsK
KyAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLnZhbHVlCisgICAgICAgICAgICAsICAgImFyZ3Vt
ZW50cyI6IG51bGwKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAg
ICAgICAgIHZhciBlcSA9IGNvbnN1bWUoT1RIRVIsICI9Iik7CisgICAgICAgICAgICBpZiAoZXEp
IHsKKyAgICAgICAgICAgICAgICB2YXIgcmhzOworICAgICAgICAgICAgICAgIGFsbF93cygpOwor
ICAgICAgICAgICAgICAgIGlmIChyaHMgPSBjb25zdW1lKElEKSkgeworICAgICAgICAgICAgICAg
ICAgcmV0LnJocyA9IHJocworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChjb25zdW1lKE9USEVSLCAiKCIpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFtFeHBv
c2VkPShXaW5kb3csV29ya2VyKV0KKyAgICAgICAgICAgICAgICAgICAgcmhzID0gW107CisgICAg
ICAgICAgICAgICAgICAgIHZhciBpZCA9IGNvbnN1bWUoSUQpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICByaHMgPSBbaWQudmFsdWVdOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJzKHJocyk7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICIpIikgfHwgZXJyb3IoIlVuZXhw
ZWN0ZWQgdG9rZW4gaW4gZXh0ZW5kZWQgYXR0cmlidXRlIGFyZ3VtZW50IGxpc3Qgb3IgdHlwZSBw
YWlyIik7CisgICAgICAgICAgICAgICAgICAgIHJldC5yaHMgPSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlOiAiaWRlbnRpZmllci1saXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlOiByaHMKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgaWYgKCFyZXQucmhzKSByZXR1cm4gZXJyb3IoIk5vIHJpZ2h0IGhhbmQg
c2lkZSB0byBleHRlbmRlZCBhdHRyaWJ1dGUgYXNzaWdubWVudCIpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIigi
KSkgeworICAgICAgICAgICAgICAgIHZhciBhcmdzLCBwYWlyOworICAgICAgICAgICAgICAgIC8v
IFtDb25zdHJ1Y3RvcihET01TdHJpbmcgc3RyKV0KKyAgICAgICAgICAgICAgICBpZiAoYXJncyA9
IGFyZ3VtZW50X2xpc3Qoc3RvcmUpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldFsiYXJndW1l
bnRzIl0gPSBhcmdzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBbTWFw
Q2xhc3MoRE9NU3RyaW5nLCBET01TdHJpbmcpXQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHBh
aXIgPSB0eXBlX3BhaXIoKSkgeworICAgICAgICAgICAgICAgICAgICByZXQudHlwZVBhaXIgPSBw
YWlyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBbQ29uc3RydWN0b3Io
KV0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0WyJhcmd1
bWVudHMiXSA9IFtdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbGxfd3Mo
KTsKKyAgICAgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiKSIpIHx8IGVycm9yKCJVbmV4cGVj
dGVkIHRva2VuIGluIGV4dGVuZGVkIGF0dHJpYnV0ZSBhcmd1bWVudCBsaXN0IG9yIHR5cGUgcGFp
ciIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfTsK
KyAgICAgICAgCisgICAgICAgIC8vIE5vdGU6IHdlIHBhcnNlIHNvbWV0aGluZyBzaW1wbGVyIHRo
YW4gdGhlIG9mZmljaWFsIHN5bnRheC4gSXQncyBhbGwgdGhhdCBldmVyCisgICAgICAgIC8vIHNl
ZW1zIHRvIGJlIHVzZWQKKyAgICAgICAgdmFyIGV4dGVuZGVkX2F0dHJzID0gZnVuY3Rpb24gKHN0
b3JlKSB7CisgICAgICAgICAgICB2YXIgZWFzID0gW107CisgICAgICAgICAgICBhbGxfd3Moc3Rv
cmUpOworICAgICAgICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiWyIpKSByZXR1cm4gZWFzOwor
ICAgICAgICAgICAgZWFzWzBdID0gc2ltcGxlX2V4dGVuZGVkX2F0dHIoc3RvcmUpIHx8IGVycm9y
KCJFeHRlbmRlZCBhdHRyaWJ1dGUgd2l0aCBub3QgY29udGVudCIpOworICAgICAgICAgICAgYWxs
X3dzKCk7CisgICAgICAgICAgICB3aGlsZSAoY29uc3VtZShPVEhFUiwgIiwiKSkgeworICAgICAg
ICAgICAgICAgIGVhcy5wdXNoKHNpbXBsZV9leHRlbmRlZF9hdHRyKHN0b3JlKSB8fCBlcnJvcigi
VHJhaWxpbmcgY29tbWEgaW4gZXh0ZW5kZWQgYXR0cmlidXRlIikpOworICAgICAgICAgICAgICAg
IGFsbF93cygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIl0i
KSB8fCBlcnJvcigiTm8gZW5kIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZSIpOworICAgICAgICAgICAg
cmV0dXJuIGVhczsKKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIHZhciBkZWZhdWx0XyA9
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgaWYgKGNv
bnN1bWUoT1RIRVIsICI9IikpIHsKKyAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAg
ICAgICAgICB2YXIgZGVmID0gY29uc3RfdmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVm
KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkZWY7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoT1RIRVIsICJbIikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKE9USEVSLCAiXSIpKSBlcnJvcigiRGVmYXVsdCBzZXF1
ZW5jZSB2YWx1ZSBtdXN0IGJlIGVtcHR5Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7
IHR5cGU6ICJzZXF1ZW5jZSIsIHZhbHVlOiBbXSB9OworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9IGNvbnN1bWUo
U1RSKSB8fCBlcnJvcigiTm8gdmFsdWUgZm9yIGRlZmF1bHQiKTsKKyAgICAgICAgICAgICAgICAg
ICAgc3RyLnZhbHVlID0gc3RyLnZhbHVlLnJlcGxhY2UoL14iLywgIiIpLnJlcGxhY2UoLyIkLywg
IiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIHZhciBjb25zdF8g
PSBmdW5jdGlvbiAoc3RvcmUpIHsKKyAgICAgICAgICAgIGFsbF93cyhzdG9yZSwgInBlYSIpOwor
ICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAiY29uc3QiKSkgcmV0dXJuOworICAgICAgICAg
ICAgdmFyIHJldCA9IHsgdHlwZTogImNvbnN0IiwgbnVsbGFibGU6IGZhbHNlIH07CisgICAgICAg
ICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgIHZhciB0eXAgPSBwcmltaXRpdmVfdHlwZSgpOwor
ICAgICAgICAgICAgaWYgKCF0eXApIHsKKyAgICAgICAgICAgICAgICB0eXAgPSBjb25zdW1lKElE
KSB8fCBlcnJvcigiTm8gdHlwZSBmb3IgY29uc3QiKTsKKyAgICAgICAgICAgICAgICB0eXAgPSB0
eXAudmFsdWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXQuaWRsVHlwZSA9IHR5cDsK
KyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICI/
IikpIHsKKyAgICAgICAgICAgICAgICByZXQubnVsbGFibGUgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGFsbF93cygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25z
dW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBmb3IgY29uc3QiKTsKKyAgICAgICAgICAgIHJldC5u
YW1lID0gbmFtZS52YWx1ZTsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgY29u
c3VtZShPVEhFUiwgIj0iKSB8fCBlcnJvcigiTm8gdmFsdWUgYXNzaWdubWVudCBmb3IgY29uc3Qi
KTsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgdmFyIGNudCA9IGNvbnN0X3Zh
bHVlKCk7CisgICAgICAgICAgICBpZiAoY250KSByZXQudmFsdWUgPSBjbnQ7CisgICAgICAgICAg
ICBlbHNlIGVycm9yKCJObyB2YWx1ZSBmb3IgY29uc3QiKTsKKyAgICAgICAgICAgIGFsbF93cygp
OworICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVk
IGNvbnN0Iik7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9OworICAgICAgICAK
KyAgICAgICAgdmFyIGluaGVyaXRhbmNlID0gZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYWxs
X3dzKCk7CisgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIjoiKSkgeworICAgICAgICAg
ICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgICAgIHZhciBpbmggPSBjb25zdW1lKElEKSB8
fCBlcnJvciAoIk5vIHR5cGUgaW4gaW5oZXJpdGFuY2UiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gaW5oLnZhbHVlOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAg
ICAgdmFyIG9wZXJhdGlvbl9yZXN0ID0gZnVuY3Rpb24gKHJldCwgc3RvcmUpIHsKKyAgICAgICAg
ICAgIGFsbF93cygpOworICAgICAgICAgICAgaWYgKCFyZXQpIHJldCA9IHt9OworICAgICAgICAg
ICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKTsKKyAgICAgICAgICAgIHJldC5uYW1lID0gbmFtZSA/
IG5hbWUudmFsdWUgOiBudWxsOworICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICBj
b25zdW1lKE9USEVSLCAiKCIpIHx8IGVycm9yKCJJbnZhbGlkIG9wZXJhdGlvbiIpOworICAgICAg
ICAgICAgcmV0WyJhcmd1bWVudHMiXSA9IGFyZ3VtZW50X2xpc3Qoc3RvcmUpIHx8IFtdOworICAg
ICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAiKSIpIHx8IGVy
cm9yKCJVbnRlcm1pbmF0ZWQgb3BlcmF0aW9uIik7CisgICAgICAgICAgICBhbGxfd3MoKTsKKyAg
ICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBvcGVy
YXRpb24iKTsKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH07CisgICAgICAgIAor
ICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbiAoc3RvcmUpIHsKKyAgICAgICAgICAgIGFs
bF93cyhzdG9yZSwgInBlYSIpOworICAgICAgICAgICAgdmFyIHJldDsKKyAgICAgICAgICAgIGlm
ICghY29uc3VtZShJRCwgImNhbGxiYWNrIikpIHJldHVybjsKKyAgICAgICAgICAgIGFsbF93cygp
OworICAgICAgICAgICAgdmFyIHRvayA9IGNvbnN1bWUoSUQsICJpbnRlcmZhY2UiKTsKKyAgICAg
ICAgICAgIGlmICh0b2spIHsKKyAgICAgICAgICAgICAgICB0b2tlbnMudW5zaGlmdCh0b2spOwor
ICAgICAgICAgICAgICAgIHJldCA9IGludGVyZmFjZV8oKTsKKyAgICAgICAgICAgICAgICByZXQu
dHlwZSA9ICJjYWxsYmFjayBpbnRlcmZhY2UiOworICAgICAgICAgICAgICAgIHJldHVybiByZXQ7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVy
cm9yKCJObyBuYW1lIGZvciBjYWxsYmFjayIpOworICAgICAgICAgICAgcmV0ID0geyB0eXBlOiAi
Y2FsbGJhY2siLCBuYW1lOiBuYW1lLnZhbHVlIH07CisgICAgICAgICAgICBhbGxfd3MoKTsKKyAg
ICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI9IikgfHwgZXJyb3IoIk5vIGFzc2lnbm1lbnQgaW4g
Y2FsbGJhY2siKTsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgcmV0LmlkbFR5
cGUgPSByZXR1cm5fdHlwZSgpOworICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICBj
b25zdW1lKE9USEVSLCAiKCIpIHx8IGVycm9yKCJObyBhcmd1bWVudHMgaW4gY2FsbGJhY2siKTsK
KyAgICAgICAgICAgIHJldFsiYXJndW1lbnRzIl0gPSBhcmd1bWVudF9saXN0KHN0b3JlKSB8fCBb
XTsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIiki
KSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIGNhbGxiYWNrIik7CisgICAgICAgICAgICBhbGxfd3Mo
KTsKKyAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIlVudGVybWluYXRl
ZCBjYWxsYmFjayIpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfTsKKworICAg
ICAgICB2YXIgYXR0cmlidXRlID0gZnVuY3Rpb24gKHN0b3JlKSB7CisgICAgICAgICAgICBhbGxf
d3Moc3RvcmUsICJwZWEiKTsKKyAgICAgICAgICAgIHZhciBncmFiYmVkID0gW10KKyAgICAgICAg
ICAgICwgICByZXQgPSB7CisgICAgICAgICAgICAgICAgdHlwZTogICAgICAgICAgICJhdHRyaWJ1
dGUiCisgICAgICAgICAgICAsICAgInN0YXRpYyI6ICAgICAgIGZhbHNlCisgICAgICAgICAgICAs
ICAgc3RyaW5naWZpZXI6ICAgIGZhbHNlCisgICAgICAgICAgICAsICAgaW5oZXJpdDogICAgICAg
IGZhbHNlCisgICAgICAgICAgICAsICAgcmVhZG9ubHk6ICAgICAgIGZhbHNlCisgICAgICAgICAg
ICB9OworICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJzdGF0aWMiKSkgeworICAgICAgICAg
ICAgICAgIHJldFsic3RhdGljIl0gPSB0cnVlOworICAgICAgICAgICAgICAgIGdyYWJiZWQucHVz
aChsYXN0X3Rva2VuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbnN1
bWUoSUQsICJzdHJpbmdpZmllciIpKSB7CisgICAgICAgICAgICAgICAgcmV0LnN0cmluZ2lmaWVy
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBncmFiYmVkLnB1c2gobGFzdF90b2tlbik7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICB2YXIgdyA9IGFsbF93cygpOworICAgICAgICAgICAgaWYg
KHcpIGdyYWJiZWQucHVzaCh3KTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lKElELCAiaW5oZXJp
dCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJldFsic3RhdGljIl0gfHwgcmV0LnN0cmluZ2lm
aWVyKSBlcnJvcigiQ2Fubm90IGhhdmUgYSBzdGF0aWMgb3Igc3RyaW5naWZpZXIgaW5oZXJpdCIp
OworICAgICAgICAgICAgICAgIHJldC5pbmhlcml0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBn
cmFiYmVkLnB1c2gobGFzdF90b2tlbik7CisgICAgICAgICAgICAgICAgdmFyIHcgPSBhbGxfd3Mo
KTsKKyAgICAgICAgICAgICAgICBpZiAodykgZ3JhYmJlZC5wdXNoKHcpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJyZWFkb25seSIpKSB7CisgICAgICAgICAg
ICAgICAgcmV0LnJlYWRvbmx5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBncmFiYmVkLnB1c2go
bGFzdF90b2tlbik7CisgICAgICAgICAgICAgICAgdmFyIHcgPSBhbGxfd3MoKTsKKyAgICAgICAg
ICAgICAgICBpZiAodykgZ3JhYmJlZC5wdXNoKHcpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCFjb25zdW1lKElELCAiYXR0cmlidXRlIikpIHsKKyAgICAgICAgICAgICAgICB0b2tl
bnMgPSBncmFiYmVkLmNvbmNhdCh0b2tlbnMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgcmV0LmlkbFR5
cGUgPSB0eXBlKCkgfHwgZXJyb3IoIk5vIHR5cGUgaW4gYXR0cmlidXRlIik7CisgICAgICAgICAg
ICBpZiAocmV0LmlkbFR5cGUuc2VxdWVuY2UpIGVycm9yKCJBdHRyaWJ1dGVzIGNhbm5vdCBhY2Nl
cHQgc2VxdWVuY2UgdHlwZXMiKTsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAg
dmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBpbiBhdHRyaWJ1dGUiKTsK
KyAgICAgICAgICAgIHJldC5uYW1lID0gbmFtZS52YWx1ZTsKKyAgICAgICAgICAgIGFsbF93cygp
OworICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVk
IGF0dHJpYnV0ZSIpOworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfTsKKyAgICAg
ICAgCisgICAgICAgIHZhciByZXR1cm5fdHlwZSA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAg
IHZhciB0eXAgPSB0eXBlKCk7CisgICAgICAgICAgICBpZiAoIXR5cCkgeworICAgICAgICAgICAg
ICAgIGlmIChjb25zdW1lKElELCAidm9pZCIpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAidm9pZCI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgZXJyb3Io
Ik5vIHJldHVybiB0eXBlIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHlw
OworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgdmFyIG9wZXJhdGlvbiA9IGZ1bmN0aW9u
IChzdG9yZSkgeworICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7CisgICAgICAgICAg
ICB2YXIgcmV0ID0geworICAgICAgICAgICAgICAgIHR5cGU6ICAgICAgICAgICAib3BlcmF0aW9u
IgorICAgICAgICAgICAgLCAgIGdldHRlcjogICAgICAgICBmYWxzZQorICAgICAgICAgICAgLCAg
IHNldHRlcjogICAgICAgICBmYWxzZQorICAgICAgICAgICAgLCAgIGNyZWF0b3I6ICAgICAgICBm
YWxzZQorICAgICAgICAgICAgLCAgIGRlbGV0ZXI6ICAgICAgICBmYWxzZQorICAgICAgICAgICAg
LCAgIGxlZ2FjeWNhbGxlcjogICBmYWxzZQorICAgICAgICAgICAgLCAgICJzdGF0aWMiOiAgICAg
ICBmYWxzZQorICAgICAgICAgICAgLCAgIHN0cmluZ2lmaWVyOiAgICBmYWxzZQorICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgYWxsX3dz
KCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJnZXR0ZXIiKSkgcmV0LmdldHRl
ciA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgInNldHRlciIp
KSByZXQuc2V0dGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjb25zdW1lKElE
LCAiY3JlYXRvciIpKSByZXQuY3JlYXRvciA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoY29uc3VtZShJRCwgImRlbGV0ZXIiKSkgcmV0LmRlbGV0ZXIgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJsZWdhY3ljYWxsZXIiKSkgcmV0LmxlZ2FjeWNh
bGxlciA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxzZSBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChyZXQuZ2V0dGVyIHx8IHJldC5zZXR0ZXIgfHwgcmV0LmNyZWF0b3Ig
fHwgcmV0LmRlbGV0ZXIgfHwgcmV0LmxlZ2FjeWNhbGxlcikgeworICAgICAgICAgICAgICAgIGFs
bF93cygpOworICAgICAgICAgICAgICAgIHJldC5pZGxUeXBlID0gcmV0dXJuX3R5cGUoKTsKKyAg
ICAgICAgICAgICAgICBvcGVyYXRpb25fcmVzdChyZXQsIHN0b3JlKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQs
ICJzdGF0aWMiKSkgeworICAgICAgICAgICAgICAgIHJldFsic3RhdGljIl0gPSB0cnVlOworICAg
ICAgICAgICAgICAgIHJldC5pZGxUeXBlID0gcmV0dXJuX3R5cGUoKTsKKyAgICAgICAgICAgICAg
ICBvcGVyYXRpb25fcmVzdChyZXQsIHN0b3JlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgInN0cmlu
Z2lmaWVyIikpIHsKKyAgICAgICAgICAgICAgICByZXQuc3RyaW5naWZpZXIgPSB0cnVlOy0KKyAg
ICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhF
UiwgIjsiKSkgcmV0dXJuIHJldDsKKyAgICAgICAgICAgICAgICByZXQuaWRsVHlwZSA9IHJldHVy
bl90eXBlKCk7CisgICAgICAgICAgICAgICAgb3BlcmF0aW9uX3Jlc3QocmV0LCBzdG9yZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dC5pZGxUeXBlID0gcmV0dXJuX3R5cGUoKTsKKyAgICAgICAgICAgIGFsbF93cygpOworICAgICAg
ICAgICAgaWYgKGNvbnN1bWUoSUQsICJpdGVyYXRvciIpKSB7CisgICAgICAgICAgICAgICAgYWxs
X3dzKCk7CisgICAgICAgICAgICAgICAgcmV0LnR5cGUgPSAiaXRlcmF0b3IiOworICAgICAgICAg
ICAgICAgIGlmIChjb25zdW1lKElELCAib2JqZWN0IikpIHsKKyAgICAgICAgICAgICAgICAgICAg
cmV0Lml0ZXJhdG9yT2JqZWN0ID0gIm9iamVjdCI7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGNvbnN1bWUoT1RIRVIsICI9IikpIHsKKyAgICAgICAgICAgICAg
ICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJ
RCkgfHwgZXJyb3IoIk5vIHJpZ2h0IGhhbmQgc2lkZSBpbiBpdGVyYXRvciIpOworICAgICAgICAg
ICAgICAgICAgICByZXQuaXRlcmF0b3JPYmplY3QgPSBuYW1lLnZhbHVlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgICAgICBjb25zdW1l
KE9USEVSLCAiOyIpIHx8IGVycm9yKCJVbnRlcm1pbmF0ZWQgaXRlcmF0b3IiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgb3BlcmF0aW9uX3Jlc3QocmV0LCBzdG9yZSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAg
ICAgIHZhciBpZGVudGlmaWVycyA9IGZ1bmN0aW9uIChhcnIpIHsKKyAgICAgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICAgICAgaWYg
KGNvbnN1bWUoT1RIRVIsICIsIikpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIlRyYWls
aW5nIGNvbW1hIGluIGlkZW50aWZpZXJzIGxpc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgYXJy
LnB1c2gobmFtZS52YWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB2
YXIgc2VyaWFsaXNlciA9IGZ1bmN0aW9uIChzdG9yZSkgeworICAgICAgICAgICAgYWxsX3dzKHN0
b3JlLCAicGVhIik7CisgICAgICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJzZXJpYWxpemVyIikp
IHJldHVybjsKKyAgICAgICAgICAgIHZhciByZXQgPSB7IHR5cGU6ICJzZXJpYWxpemVyIiB9Owor
ICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIj0i
KSkgeworICAgICAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgICAgIGlmIChjb25z
dW1lKE9USEVSLCAieyIpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldC5wYXR0ZXJuTWFwID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICAgICAgICAg
IHZhciBpZCA9IGNvbnN1bWUoSUQpOworICAgICAgICAgICAgICAgICAgICBpZiAoaWQgJiYgaWQu
dmFsdWUgPT09ICJnZXR0ZXIiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMg
PSBbImdldHRlciJdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGlkICYmIGlkLnZhbHVlID09PSAiaW5oZXJpdCIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldC5uYW1lcyA9IFsiaW5oZXJpdCJdOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllcnMocmV0Lm5hbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChpZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0
Lm5hbWVzID0gW2lkLnZhbHVlXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJz
KHJldC5uYW1lcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXQubmFtZXMgPSBbXTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAg
ICAgICAgICAgY29uc3VtZShPVEhFUiwgIn0iKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIHNlcmlh
bGl6ZXIgcGF0dGVybiBtYXAiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoY29uc3VtZShPVEhFUiwgIlsiKSkgeworICAgICAgICAgICAgICAgICAgICByZXQu
cGF0dGVybkxpc3QgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFyIGlkID0gY29uc3VtZShJRCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpZCAmJiBpZC52YWx1ZSA9PT0gImdldHRlciIpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldC5uYW1lcyA9IFsiZ2V0dGVyIl07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dC5uYW1lcyA9IFtpZC52YWx1ZV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVy
cyhyZXQubmFtZXMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0Lm5hbWVzID0gW107CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICJdIikgfHwgZXJyb3IoIlVudGVybWluYXRlZCBzZXJp
YWxpemVyIHBhdHRlcm4gbGlzdCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBl
cnJvcigiSW52YWxpZCBzZXJpYWxpemVyIik7CisgICAgICAgICAgICAgICAgICAgIHJldC5uYW1l
ID0gbmFtZS52YWx1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYWxsX3dz
KCk7CisgICAgICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiVW50ZXJt
aW5hdGVkIHNlcmlhbGl6ZXIiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShPVEhFUiwgIjsiKSkgeworICAg
ICAgICAgICAgICAgIC8vIG5vb3AsIGp1c3QgcGFyc2luZworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0LmlkbFR5cGUgPSByZXR1cm5fdHlwZSgp
OworICAgICAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgICAgIHJldC5vcGVyYXRp
b24gPSBvcGVyYXRpb25fcmVzdChudWxsLCBzdG9yZSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gcmV0OworICAgICAgICB9OworCisgICAgICAgIHZhciBpdGVyYWJsZV90eXBl
ID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoY29uc3VtZShJRCwgIml0ZXJhYmxlIikp
IHJldHVybiAiaXRlcmFibGUiOworICAgICAgICAgICAgZWxzZSBpZiAoY29uc3VtZShJRCwgImxl
Z2FjeWl0ZXJhYmxlIikpIHJldHVybiAibGVnYWN5aXRlcmFibGUiOworICAgICAgICAgICAgZWxz
ZSBpZiAoY29uc3VtZShJRCwgIm1hcGxpa2UiKSkgcmV0dXJuICJtYXBsaWtlIjsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGNvbnN1bWUoSUQsICJzZXRsaWtlIikpIHJldHVybiAic2V0bGlrZSI7Cisg
ICAgICAgICAgICBlbHNlIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZWFkb25s
eV9pdGVyYWJsZV90eXBlID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBpZiAoY29uc3VtZShJ
RCwgIm1hcGxpa2UiKSkgcmV0dXJuICJtYXBsaWtlIjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNv
bnN1bWUoSUQsICJzZXRsaWtlIikpIHJldHVybiAic2V0bGlrZSI7CisgICAgICAgICAgICBlbHNl
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBpdGVyYWJsZSA9IGZ1bmN0aW9uIChz
dG9yZSkgeworICAgICAgICAgICAgYWxsX3dzKHN0b3JlLCAicGVhIik7CisgICAgICAgICAgICB2
YXIgZ3JhYmJlZCA9IFtdLAorICAgICAgICAgICAgICAgIHJldCA9IHt0eXBlOiBudWxsLCBpZGxU
eXBlOiBudWxsLCByZWFkb25seTogZmFsc2V9OworICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQs
ICJyZWFkb25seSIpKSB7CisgICAgICAgICAgICAgICAgcmV0LnJlYWRvbmx5ID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBncmFiYmVkLnB1c2gobGFzdF90b2tlbik7CisgICAgICAgICAgICAgICAg
dmFyIHcgPSBhbGxfd3MoKTsKKyAgICAgICAgICAgICAgICBpZiAodykgZ3JhYmJlZC5wdXNoKHcp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGNvbnN1bWVJdFR5cGUgPSByZXQucmVh
ZG9ubHkgPyByZWFkb25seV9pdGVyYWJsZV90eXBlIDogaXRlcmFibGVfdHlwZTsKKworICAgICAg
ICAgICAgdmFyIGl0dHlwZSA9IGNvbnN1bWVJdFR5cGUoKTsKKyAgICAgICAgICAgIGlmICghaXR0
eXBlKSB7CisgICAgICAgICAgICAgICAgdG9rZW5zID0gZ3JhYmJlZC5jb25jYXQodG9rZW5zKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciBzZWNvbmRUeXBlUmVxdWlyZWQgPSBpdHR5cGUgPT09ICJtYXBsaWtlIjsKKyAgICAgICAgICAg
IHZhciBzZWNvbmRUeXBlQWxsb3dlZCA9IHNlY29uZFR5cGVSZXF1aXJlZCB8fCBpdHR5cGUgPT09
ICJpdGVyYWJsZSI7CisgICAgICAgICAgICByZXQudHlwZSA9IGl0dHlwZTsKKyAgICAgICAgICAg
IGlmIChyZXQudHlwZSAhPT0gJ21hcGxpa2UnICYmIHJldC50eXBlICE9PSAnc2V0bGlrZScpCisg
ICAgICAgICAgICAgICAgZGVsZXRlIHJldC5yZWFkb25seTsKKyAgICAgICAgICAgIGFsbF93cygp
OworICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICI8IikpIHsKKyAgICAgICAgICAgICAg
ICByZXQuaWRsVHlwZSA9IHR5cGUoKSB8fCBlcnJvcigiRXJyb3IgcGFyc2luZyAiICsgaXR0eXBl
ICsgIiBkZWNsYXJhdGlvbiIpOworICAgICAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAg
ICAgICAgIGlmIChzZWNvbmRUeXBlQWxsb3dlZCkgeworICAgICAgICAgICAgICAgICAgICB2YXIg
dHlwZTIgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIiwi
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlMiA9IHR5cGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbF93cygp
OyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGlmICh0eXBlMikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldC5pZGxU
eXBlID0gW3JldC5pZGxUeXBlLCB0eXBlMl07CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYg
KHNlY29uZFR5cGVSZXF1aXJlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJNaXNz
aW5nIHNlY29uZCB0eXBlIGFyZ3VtZW50IGluICIgKyBpdHR5cGUgKyAiIGRlY2xhcmF0aW9uIik7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghY29uc3VtZShPVEhFUiwg
Ij4iKSkgZXJyb3IoIlVudGVybWluYXRlZCAiICsgaXR0eXBlICsgIiBkZWNsYXJhdGlvbiIpOwor
ICAgICAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAgICAgIGlmICghY29uc3VtZShP
VEhFUiwgIjsiKSkgZXJyb3IoIk1pc3Npbmcgc2VtaWNvbG9uIGFmdGVyICIgKyBpdHR5cGUgKyAi
IGRlY2xhcmF0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgZXJyb3IoIkVycm9yIHBhcnNpbmcgIiArIGl0dHlwZSArICIgZGVjbGFyYXRpb24i
KTsKKworICAgICAgICAgICAgcmV0dXJuIHJldDsgICAgICAgICAgICAKKyAgICAgICAgfSAgICAg
ICAgCisgICAgICAgIAorICAgICAgICB2YXIgaW50ZXJmYWNlXyA9IGZ1bmN0aW9uIChpc1BhcnRp
YWwsIHN0b3JlKSB7CisgICAgICAgICAgICBhbGxfd3MoaXNQYXJ0aWFsID8gbnVsbCA6IHN0b3Jl
LCAicGVhIik7CisgICAgICAgICAgICBpZiAoIWNvbnN1bWUoSUQsICJpbnRlcmZhY2UiKSkgcmV0
dXJuOworICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1
bWUoSUQpIHx8IGVycm9yKCJObyBuYW1lIGZvciBpbnRlcmZhY2UiKTsKKyAgICAgICAgICAgIHZh
ciBtZW1zID0gW10KKyAgICAgICAgICAgICwgICByZXQgPSB7CisgICAgICAgICAgICAgICAgdHlw
ZTogICAiaW50ZXJmYWNlIgorICAgICAgICAgICAgLCAgIG5hbWU6ICAgbmFtZS52YWx1ZQorICAg
ICAgICAgICAgLCAgIHBhcnRpYWw6ICAgIGZhbHNlCisgICAgICAgICAgICAsICAgbWVtYmVyczog
ICAgbWVtcworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmICghaXNQYXJ0aWFsKSByZXQu
aW5oZXJpdGFuY2UgPSBpbmhlcml0YW5jZSgpIHx8IG51bGw7CisgICAgICAgICAgICBhbGxfd3Mo
KTsKKyAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICJ7IikgfHwgZXJyb3IoIkJvZHlsZXNzIGlu
dGVyZmFjZSIpOworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBh
bGxfd3Moc3RvcmUgPyBtZW1zIDogbnVsbCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUo
T1RIRVIsICJ9IikpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIk1pc3Npbmcgc2VtaWNvbG9u
IGFmdGVyIGludGVyZmFjZSIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgZWEgPSBleHRlbmRlZF9hdHRycyhz
dG9yZSA/IG1lbXMgOiBudWxsKTsKKyAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAg
ICAgICAgICB2YXIgY250ID0gY29uc3RfKHN0b3JlID8gbWVtcyA6IG51bGwpOworICAgICAgICAg
ICAgICAgIGlmIChjbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgY250LmV4dEF0dHJzID0gZWE7
CisgICAgICAgICAgICAgICAgICAgIHJldC5tZW1iZXJzLnB1c2goY250KTsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZh
ciBtZW0gPSAob3B0LmFsbG93TmVzdGVkVHlwZWRlZnMgJiYgdHlwZWRlZihzdG9yZSA/IG1lbXMg
OiBudWxsKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmFibGUoc3RvcmUgPyBt
ZW1zIDogbnVsbCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXNlcihzdG9y
ZSA/IG1lbXMgOiBudWxsKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUo
c3RvcmUgPyBtZW1zIDogbnVsbCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0
aW9uKHN0b3JlID8gbWVtcyA6IG51bGwpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yKCJVbmtub3duIG1lbWJlciIpOworICAgICAgICAgICAgICAgIG1lbS5leHRBdHRycyA9IGVh
OworICAgICAgICAgICAgICAgIHJldC5tZW1iZXJzLnB1c2gobWVtKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIHZhciBwYXJ0aWFsID0gZnVuY3Rpb24gKHN0
b3JlKSB7CisgICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKKyAgICAgICAgICAgIGlm
ICghY29uc3VtZShJRCwgInBhcnRpYWwiKSkgcmV0dXJuOworICAgICAgICAgICAgdmFyIHRoaW5n
ID0gZGljdGlvbmFyeSh0cnVlLCBzdG9yZSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlu
dGVyZmFjZV8odHJ1ZSwgc3RvcmUpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigi
UGFydGlhbCBkb2Vzbid0IGFwcGx5IHRvIGFueXRoaW5nIik7CisgICAgICAgICAgICB0aGluZy5w
YXJ0aWFsID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB0aGluZzsKKyAgICAgICAgfTsKKyAg
ICAgICAgCisgICAgICAgIHZhciBkaWN0aW9uYXJ5ID0gZnVuY3Rpb24gKGlzUGFydGlhbCwgc3Rv
cmUpIHsKKyAgICAgICAgICAgIGFsbF93cyhpc1BhcnRpYWwgPyBudWxsIDogc3RvcmUsICJwZWEi
KTsKKyAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwgImRpY3Rpb25hcnkiKSkgcmV0dXJuOwor
ICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQp
IHx8IGVycm9yKCJObyBuYW1lIGZvciBkaWN0aW9uYXJ5Iik7CisgICAgICAgICAgICB2YXIgbWVt
cyA9IFtdCisgICAgICAgICAgICAsICAgcmV0ID0geworICAgICAgICAgICAgICAgIHR5cGU6ICAg
ImRpY3Rpb25hcnkiCisgICAgICAgICAgICAsICAgbmFtZTogICBuYW1lLnZhbHVlCisgICAgICAg
ICAgICAsICAgcGFydGlhbDogICAgZmFsc2UKKyAgICAgICAgICAgICwgICBtZW1iZXJzOiAgICBt
ZW1zCisgICAgICAgICAgICB9OworICAgICAgICAgICAgaWYgKCFpc1BhcnRpYWwpIHJldC5pbmhl
cml0YW5jZSA9IGluaGVyaXRhbmNlKCkgfHwgbnVsbDsKKyAgICAgICAgICAgIGFsbF93cygpOwor
ICAgICAgICAgICAgY29uc3VtZShPVEhFUiwgInsiKSB8fCBlcnJvcigiQm9keWxlc3MgZGljdGlv
bmFyeSIpOworICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBhbGxf
d3Moc3RvcmUgPyBtZW1zIDogbnVsbCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RI
RVIsICJ9IikpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIk1pc3Npbmcgc2VtaWNvbG9uIGFm
dGVyIGRpY3Rpb25hcnkiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIGVhID0gZXh0ZW5kZWRfYXR0cnMoc3Rv
cmUgPyBtZW1zIDogbnVsbCk7CisgICAgICAgICAgICAgICAgYWxsX3dzKHN0b3JlID8gbWVtcyA6
IG51bGwsICJwZWEiKTsKKyAgICAgICAgICAgICAgICB2YXIgcmVxdWlyZWQgPSBjb25zdW1lKElE
LCAicmVxdWlyZWQiKTsKKyAgICAgICAgICAgICAgICB2YXIgdHlwID0gdHlwZSgpIHx8IGVycm9y
KCJObyB0eXBlIGZvciBkaWN0aW9uYXJ5IG1lbWJlciIpOworICAgICAgICAgICAgICAgIGFsbF93
cygpOworICAgICAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJyb3IoIk5v
IG5hbWUgZm9yIGRpY3Rpb25hcnkgbWVtYmVyIik7CisgICAgICAgICAgICAgICAgdmFyIGRmbHQg
PSBkZWZhdWx0XygpOworICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZCAmJiBkZmx0KSBlcnJv
cigiUmVxdWlyZWQgbWVtYmVyIG11c3Qgbm90IGhhdmUgYSBkZWZhdWx0Iik7CisgICAgICAgICAg
ICAgICAgcmV0Lm1lbWJlcnMucHVzaCh7CisgICAgICAgICAgICAgICAgICAgIHR5cGU6ICAgICAg
ICJmaWVsZCIKKyAgICAgICAgICAgICAgICAsICAgbmFtZTogICAgICAgbmFtZS52YWx1ZQorICAg
ICAgICAgICAgICAgICwgICByZXF1aXJlZDogICAhIXJlcXVpcmVkCisgICAgICAgICAgICAgICAg
LCAgIGlkbFR5cGU6ICAgIHR5cAorICAgICAgICAgICAgICAgICwgICBleHRBdHRyczogICBlYQor
ICAgICAgICAgICAgICAgICwgICAiZGVmYXVsdCI6ICBkZmx0CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICAgICAgY29uc3VtZShPVEhF
UiwgIjsiKSB8fCBlcnJvcigiVW50ZXJtaW5hdGVkIGRpY3Rpb25hcnkgbWVtYmVyIik7CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB2YXIgZXhjZXB0aW9uID0g
ZnVuY3Rpb24gKHN0b3JlKSB7CisgICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKKyAg
ICAgICAgICAgIGlmICghY29uc3VtZShJRCwgImV4Y2VwdGlvbiIpKSByZXR1cm47CisgICAgICAg
ICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgIHZhciBuYW1lID0gY29uc3VtZShJRCkgfHwgZXJy
b3IoIk5vIG5hbWUgZm9yIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgdmFyIG1lbXMgPSBbXQor
ICAgICAgICAgICAgLCAgIHJldCA9IHsKKyAgICAgICAgICAgICAgICB0eXBlOiAgICJleGNlcHRp
b24iCisgICAgICAgICAgICAsICAgbmFtZTogICBuYW1lLnZhbHVlCisgICAgICAgICAgICAsICAg
bWVtYmVyczogICAgbWVtcworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIHJldC5pbmhlcml0
YW5jZSA9IGluaGVyaXRhbmNlKCkgfHwgbnVsbDsKKyAgICAgICAgICAgIGFsbF93cygpOworICAg
ICAgICAgICAgY29uc3VtZShPVEhFUiwgInsiKSB8fCBlcnJvcigiQm9keWxlc3MgZXhjZXB0aW9u
Iik7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgIGFsbF93cyhz
dG9yZSA/IG1lbXMgOiBudWxsKTsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwg
In0iKSkgeworICAgICAgICAgICAgICAgICAgICBhbGxfd3MoKTsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiTWlzc2luZyBzZW1pY29sb24gYWZ0ZXIg
ZXhjZXB0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHZhciBlYSA9IGV4dGVuZGVkX2F0dHJzKHN0b3JlID8g
bWVtcyA6IG51bGwpOworICAgICAgICAgICAgICAgIGFsbF93cyhzdG9yZSA/IG1lbXMgOiBudWxs
LCAicGVhIik7CisgICAgICAgICAgICAgICAgdmFyIGNudCA9IGNvbnN0XygpOworICAgICAgICAg
ICAgICAgIGlmIChjbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgY250LmV4dEF0dHJzID0gZWE7
CisgICAgICAgICAgICAgICAgICAgIHJldC5tZW1iZXJzLnB1c2goY250KTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB0
eXAgPSB0eXBlKCk7CisgICAgICAgICAgICAgICAgICAgIGFsbF93cygpOworICAgICAgICAgICAg
ICAgICAgICB2YXIgbmFtZSA9IGNvbnN1bWUoSUQpOworICAgICAgICAgICAgICAgICAgICBhbGxf
d3MoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0eXAgfHwgIW5hbWUgfHwgIWNvbnN1bWUo
T1RIRVIsICI7IikpIGVycm9yKCJVbmtub3duIG1lbWJlciBpbiBleGNlcHRpb24gYm9keSIpOwor
ICAgICAgICAgICAgICAgICAgICByZXQubWVtYmVycy5wdXNoKHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGU6ICAgICAgICJmaWVsZCIKKyAgICAgICAgICAgICAgICAgICAgLCAgIG5hbWU6
ICAgICAgIG5hbWUudmFsdWUKKyAgICAgICAgICAgICAgICAgICAgLCAgIGlkbFR5cGU6ICAgIHR5
cAorICAgICAgICAgICAgICAgICAgICAsICAgZXh0QXR0cnM6ICAgZWEKKyAgICAgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9Owor
ICAgICAgICAKKyAgICAgICAgdmFyIGVudW1fID0gZnVuY3Rpb24gKHN0b3JlKSB7CisgICAgICAg
ICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKKyAgICAgICAgICAgIGlmICghY29uc3VtZShJRCwg
ImVudW0iKSkgcmV0dXJuOworICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICB2YXIg
bmFtZSA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJObyBuYW1lIGZvciBlbnVtIik7CisgICAgICAg
ICAgICB2YXIgdmFscyA9IFtdCisgICAgICAgICAgICAsICAgcmV0ID0geworICAgICAgICAgICAg
ICAgIHR5cGU6ICAgImVudW0iCisgICAgICAgICAgICAsICAgbmFtZTogICBuYW1lLnZhbHVlCisg
ICAgICAgICAgICAsICAgdmFsdWVzOiB2YWxzCisgICAgICAgICAgICB9OworICAgICAgICAgICAg
YWxsX3dzKCk7CisgICAgICAgICAgICBjb25zdW1lKE9USEVSLCAieyIpIHx8IGVycm9yKCJObyBj
dXJseSBmb3IgZW51bSIpOworICAgICAgICAgICAgdmFyIHNhd19jb21tYSA9IGZhbHNlOworICAg
ICAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgICAgICBhbGxfd3Moc3RvcmUgPyB2
YWxzIDogbnVsbCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoT1RIRVIsICJ9IikpIHsK
KyAgICAgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnN1
bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIk5vIHNlbWljb2xvbiBhZnRlciBlbnVtIik7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHZhciB2YWwgPSBjb25zdW1lKFNUUikgfHwgZXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUg
aW4gZW51bSIpOworICAgICAgICAgICAgICAgIHJldC52YWx1ZXMucHVzaCh2YWwudmFsdWUucmVw
bGFjZSgvIi9nLCAiIikpOworICAgICAgICAgICAgICAgIGFsbF93cyhzdG9yZSA/IHZhbHMgOiBu
dWxsKTsKKyAgICAgICAgICAgICAgICBpZiAoY29uc3VtZShPVEhFUiwgIiwiKSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoc3RvcmUpIHZhbHMucHVzaCh7IHR5cGU6ICIsIiB9KTsKKyAgICAg
ICAgICAgICAgICAgICAgYWxsX3dzKHN0b3JlID8gdmFscyA6IG51bGwpOworICAgICAgICAgICAg
ICAgICAgICBzYXdfY29tbWEgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2F3X2NvbW1hID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAg
ICAgdmFyIHR5cGVkZWYgPSBmdW5jdGlvbiAoc3RvcmUpIHsKKyAgICAgICAgICAgIGFsbF93cyhz
dG9yZSwgInBlYSIpOworICAgICAgICAgICAgaWYgKCFjb25zdW1lKElELCAidHlwZWRlZiIpKSBy
ZXR1cm47CisgICAgICAgICAgICB2YXIgcmV0ID0geworICAgICAgICAgICAgICAgIHR5cGU6ICAg
InR5cGVkZWYiCisgICAgICAgICAgICB9OworICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAg
ICAgICByZXQudHlwZUV4dEF0dHJzID0gZXh0ZW5kZWRfYXR0cnMoKTsKKyAgICAgICAgICAgIGFs
bF93cyhzdG9yZSwgInRwZWEiKTsKKyAgICAgICAgICAgIHJldC5pZGxUeXBlID0gdHlwZSgpIHx8
IGVycm9yKCJObyB0eXBlIGluIHR5cGVkZWYiKTsKKyAgICAgICAgICAgIGFsbF93cygpOworICAg
ICAgICAgICAgdmFyIG5hbWUgPSBjb25zdW1lKElEKSB8fCBlcnJvcigiTm8gbmFtZSBpbiB0eXBl
ZGVmIik7CisgICAgICAgICAgICByZXQubmFtZSA9IG5hbWUudmFsdWU7CisgICAgICAgICAgICBh
bGxfd3MoKTsKKyAgICAgICAgICAgIGNvbnN1bWUoT1RIRVIsICI7IikgfHwgZXJyb3IoIlVudGVy
bWluYXRlZCB0eXBlZGVmIik7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9Owor
ICAgICAgICAKKyAgICAgICAgdmFyIGltcGxlbWVudHNfID0gZnVuY3Rpb24gKHN0b3JlKSB7Cisg
ICAgICAgICAgICBhbGxfd3Moc3RvcmUsICJwZWEiKTsKKyAgICAgICAgICAgIHZhciB0YXJnZXQg
PSBjb25zdW1lKElEKTsKKyAgICAgICAgICAgIGlmICghdGFyZ2V0KSByZXR1cm47CisgICAgICAg
ICAgICB2YXIgdyA9IGFsbF93cygpOworICAgICAgICAgICAgaWYgKGNvbnN1bWUoSUQsICJpbXBs
ZW1lbnRzIikpIHsKKyAgICAgICAgICAgICAgICB2YXIgcmV0ID0geworICAgICAgICAgICAgICAg
ICAgICB0eXBlOiAgICJpbXBsZW1lbnRzIgorICAgICAgICAgICAgICAgICwgICB0YXJnZXQ6IHRh
cmdldC52YWx1ZQorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgYWxsX3dzKCk7
CisgICAgICAgICAgICAgICAgdmFyIGltcCA9IGNvbnN1bWUoSUQpIHx8IGVycm9yKCJJbmNvbXBs
ZXRlIGltcGxlbWVudHMgc3RhdGVtZW50Iik7CisgICAgICAgICAgICAgICAgcmV0WyJpbXBsZW1l
bnRzIl0gPSBpbXAudmFsdWU7CisgICAgICAgICAgICAgICAgYWxsX3dzKCk7CisgICAgICAgICAg
ICAgICAgY29uc3VtZShPVEhFUiwgIjsiKSB8fCBlcnJvcigiTm8gdGVybWluYXRpbmcgOyBmb3Ig
aW1wbGVtZW50cyBzdGF0ZW1lbnQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gcm9sbGJh
Y2sKKyAgICAgICAgICAgICAgICB0b2tlbnMudW5zaGlmdCh3KTsKKyAgICAgICAgICAgICAgICB0
b2tlbnMudW5zaGlmdCh0YXJnZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAg
ICAKKyAgICAgICAgdmFyIGRlZmluaXRpb24gPSBmdW5jdGlvbiAoc3RvcmUpIHsKKyAgICAgICAg
ICAgIHJldHVybiAgY2FsbGJhY2soc3RvcmUpICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAg
ICAgICAgIGludGVyZmFjZV8oZmFsc2UsIHN0b3JlKSAgICB8fAorICAgICAgICAgICAgICAgICAg
ICBwYXJ0aWFsKHN0b3JlKSAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAgICAgZGlj
dGlvbmFyeShmYWxzZSwgc3RvcmUpICAgIHx8CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlv
bihzdG9yZSkgICAgICAgICAgICB8fAorICAgICAgICAgICAgICAgICAgICBlbnVtXyhzdG9yZSkg
ICAgICAgICAgICAgICAgfHwKKyAgICAgICAgICAgICAgICAgICAgdHlwZWRlZihzdG9yZSkgICAg
ICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudHNfKHN0b3JlKQorICAg
ICAgICAgICAgICAgICAgICA7CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB2YXIgZGVm
aW5pdGlvbnMgPSBmdW5jdGlvbiAoc3RvcmUpIHsKKyAgICAgICAgICAgIGlmICghdG9rZW5zLmxl
bmd0aCkgcmV0dXJuIFtdOworICAgICAgICAgICAgdmFyIGRlZnMgPSBbXTsKKyAgICAgICAgICAg
IHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgdmFyIGVhID0gZXh0ZW5kZWRfYXR0cnMo
c3RvcmUgPyBkZWZzIDogbnVsbCkKKyAgICAgICAgICAgICAgICAsICAgZGVmID0gZGVmaW5pdGlv
bihzdG9yZSA/IGRlZnMgOiBudWxsKTsKKyAgICAgICAgICAgICAgICBpZiAoIWRlZikgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoZWEubGVuZ3RoKSBlcnJvcigiU3RyYXkgZXh0ZW5kZWQgYXR0
cmlidXRlcyIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZGVmLmV4dEF0dHJzID0gZWE7CisgICAgICAgICAgICAgICAgZGVm
cy5wdXNoKGRlZik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZGVmczsKKyAg
ICAgICAgfTsKKyAgICAgICAgdmFyIHJlcyA9IGRlZmluaXRpb25zKG9wdC53cyk7CisgICAgICAg
IGlmICh0b2tlbnMubGVuZ3RoKSBlcnJvcigiVW5yZWNvZ25pc2VkIHRva2VucyIpOworICAgICAg
ICByZXR1cm4gcmVzOworICAgIH07CisKKyAgICB2YXIgaW5Ob2RlID0gdHlwZW9mIG1vZHVsZSAh
PT0gInVuZGVmaW5lZCIgJiYgbW9kdWxlLmV4cG9ydHMKKyAgICAsICAgb2JqID0geworICAgICAg
ICAgICAgcGFyc2U6ICBmdW5jdGlvbiAoc3RyLCBvcHQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IW9wdCkgb3B0ID0ge307CisgICAgICAgICAgICAgICAgdmFyIHRva2VucyA9IHRva2VuaXNlKHN0
cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlKHRva2Vucywgb3B0KTsKKyAgICAgICAg
ICAgIH0KKyAgICB9OworCisgICAgaWYgKGluTm9kZSkgbW9kdWxlLmV4cG9ydHMgPSBvYmo7Cisg
ICAgZWxzZSAgICAgICAgc2VsZi5XZWJJREwyID0gb2JqOworfSgpKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvaWRsaGFybmVzcy5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9yZXNvdXJjZXMvaWRsaGFybmVzcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDAy
ZWM1MGIzNjVjMGYzMDNhMmI5OTkyNzQ5YjVhMDdlMDIyZWFjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3Jlc291cmNlcy9pZGxoYXJuZXNzLmpzCkBAIC0wLDAg
KzEsMTg1MCBAQAorLyoKK0Rpc3RyaWJ1dGVkIHVuZGVyIGJvdGggdGhlIFczQyBUZXN0IFN1aXRl
IExpY2Vuc2UgWzFdIGFuZCB0aGUgVzNDCiszLWNsYXVzZSBCU0QgTGljZW5zZSBbMl0uIFRvIGNv
bnRyaWJ1dGUgdG8gYSBXM0MgVGVzdCBTdWl0ZSwgc2VlIHRoZQorcG9saWNpZXMgYW5kIGNvbnRy
aWJ1dGlvbiBmb3JtcyBbM10uCisKK1sxXSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xl
Z2FsLzIwMDgvMDQtdGVzdHN1aXRlLWxpY2Vuc2UKK1syXSBodHRwOi8vd3d3LnczLm9yZy9Db25z
b3J0aXVtL0xlZ2FsLzIwMDgvMDMtYnNkLWxpY2Vuc2UKK1szXSBodHRwOi8vd3d3LnczLm9yZy8y
MDA0LzEwLzI3LXRlc3RjYXNlcworKi8KKworLyogRm9yIHVzZXIgZG9jdW1lbnRhdGlvbiBzZWUg
ZG9jcy9pZGxoYXJuZXNzLm1kICovCisKKy8qKgorICogTm90ZXMgZm9yIHBlb3BsZSB3aG8gd2Fu
dCB0byBlZGl0IHRoaXMgZmlsZSAobm90IGp1c3QgdXNlIGl0IGFzIGEgbGlicmFyeSk6CisgKgor
ICogTW9zdCBvZiB0aGUgaW50ZXJlc3Rpbmcgc3R1ZmYgaGFwcGVucyBpbiB0aGUgZGVyaXZlZCBj
bGFzc2VzIG9mIElkbE9iamVjdCwKKyAqIGVzcGVjaWFsbHkgSWRsSW50ZXJmYWNlLiAgVGhlIGVu
dHJ5IHBvaW50IGZvciBhbGwgSWRsT2JqZWN0cyBpcyAudGVzdCgpLAorICogd2hpY2ggaXMgY2Fs
bGVkIGJ5IElkbEFycmF5LnRlc3QoKS4gIEFuIElkbE9iamVjdCBpcyBjb25jZXB0dWFsbHkganVz
dAorICogInRoaW5nIHdlIHdhbnQgdG8gcnVuIHRlc3RzIG9uIiwgYW5kIGFuIElkbEFycmF5IGlz
IGFuIGFycmF5IG9mIElkbE9iamVjdHMKKyAqIHdpdGggc29tZSBhZGRpdGlvbmFsIGRhdGEgdGhy
b3duIGluLgorICoKKyAqIFRoZSBvYmplY3QgbW9kZWwgaXMgYmFzZWQgb24gd2hhdCBXZWJJRExQ
YXJzZXIuanMgcHJvZHVjZXMsIHdoaWNoIGlzIGluIHR1cm4KKyAqIGJhc2VkIG9uIGl0cyBwZWdq
cyBncmFtbWFyLiAgSWYgeW91IHdhbnQgdG8gZmlndXJlIG91dCB3aGF0IHByb3BlcnRpZXMgYW4K
KyAqIG9iamVjdCB3aWxsIGhhdmUgZnJvbSBXZWJJRExQYXJzZXIuanMsIHRoZSBiZXN0IHdheSBp
cyB0byBsb29rIGF0IHRoZQorICogZ3JhbW1hcjoKKyAqCisgKiAgIGh0dHBzOi8vZ2l0aHViLmNv
bS9kYXJvYmluL3dlYmlkbC5qcy9ibG9iL21hc3Rlci9saWIvZ3JhbW1hci5wZWcKKyAqCisgKiBT
byBmb3IgaW5zdGFuY2U6CisgKgorICogICAvLyBpbnRlcmZhY2UgZGVmaW5pdGlvbgorICogICBp
bnRlcmZhY2UKKyAqICAgICAgID0gICBleHRBdHRyczpleHRlbmRlZEF0dHJpYnV0ZUxpc3Q/IFM/
ICJpbnRlcmZhY2UiIFMgbmFtZTppZGVudGlmaWVyIHcgaGVyaXQ6aWZJbmhlcml0YW5jZT8gdyAi
eyIgdyBtZW06aWZNZW1iZXIqIHcgIn0iIHcgIjsiIHcKKyAqICAgICAgICAgICB7IHJldHVybiB7
IHR5cGU6ICJpbnRlcmZhY2UiLCBuYW1lOiBuYW1lLCBpbmhlcml0YW5jZTogaGVyaXQsIG1lbWJl
cnM6IG1lbSwgZXh0QXR0cnM6IGV4dEF0dHJzIH07IH0KKyAqCisgKiBUaGlzIG1lYW5zIHRoYXQg
YW4gImludGVyZmFjZSIgb2JqZWN0IHdpbGwgaGF2ZSBhIC50eXBlIHByb3BlcnR5IGVxdWFsIHRv
CisgKiB0aGUgc3RyaW5nICJpbnRlcmZhY2UiLCBhIC5uYW1lIHByb3BlcnR5IGVxdWFsIHRvIHRo
ZSBpZGVudGlmaWVyIHRoYXQgdGhlCisgKiBwYXJzZXIgZm91bmQsIGFuIC5pbmhlcml0YW5jZSBw
cm9wZXJ0eSBlcXVhbCB0byBlaXRoZXIgbnVsbCBvciB0aGUgcmVzdWx0IG9mCisgKiB0aGUgImlm
SW5oZXJpdGFuY2UiIHByb2R1Y3Rpb24gZm91bmQgZWxzZXdoZXJlIGluIHRoZSBncmFtbWFyLCBh
bmQgc28gb24uCisgKiBBZnRlciBlYWNoIGdyYW1tYXRpY2FsIHByb2R1Y3Rpb24gaXMgYSBKYXZh
U2NyaXB0IGZ1bmN0aW9uIGluIGN1cmx5IGJyYWNlcworICogdGhhdCBnZXRzIGNhbGxlZCB3aXRo
IHN1aXRhYmxlIGFyZ3VtZW50cyBhbmQgcmV0dXJucyBzb21lIEphdmFTY3JpcHQgdmFsdWUuCisg
KgorICogKE5vdGUgdGhhdCB0aGUgdmVyc2lvbiBvZiBXZWJJRExQYXJzZXIuanMgd2UgdXNlIG1p
Z2h0IHNvbWV0aW1lcyBiZQorICogb3V0LW9mLWRhdGUgb3IgZm9ya2VkLikKKyAqCisgKiBUaGUg
bWVtYmVycyBhbmQgbWV0aG9kcyBvZiB0aGUgY2xhc3NlcyBkZWZpbmVkIGJ5IHRoaXMgZmlsZSBh
cmUgYWxsIGF0IGxlYXN0CisgKiBicmllZmx5IGRvY3VtZW50ZWQsIGhvcGVmdWxseS4KKyAqLwor
KGZ1bmN0aW9uKCl7CisidXNlIHN0cmljdCI7CisvLy8gSGVscGVycyAvLy8KK2Z1bmN0aW9uIGNv
bnN0VmFsdWUgKGNudCkgeworICAgIGlmIChjbnQudHlwZSA9PT0gIm51bGwiKSByZXR1cm4gbnVs
bDsKKyAgICBpZiAoY250LnR5cGUgPT09ICJOYU4iKSByZXR1cm4gTmFOOworICAgIGlmIChjbnQu
dHlwZSA9PT0gIkluZmluaXR5IikgcmV0dXJuIGNudC5uZWdhdGl2ZSA/IC1JbmZpbml0eSA6IElu
ZmluaXR5OworICAgIHJldHVybiBjbnQudmFsdWU7Cit9CisKK2Z1bmN0aW9uIG1pbk92ZXJsb2Fk
TGVuZ3RoKG92ZXJsb2FkcykgeworICAgIGlmICghb3ZlcmxvYWRzLmxlbmd0aCkgeworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gb3ZlcmxvYWRzLm1hcChmdW5jdGlvbihh
dHRyKSB7CisgICAgICAgIHJldHVybiBhdHRyLmFyZ3VtZW50cyA/IGF0dHIuYXJndW1lbnRzLmZp
bHRlcihmdW5jdGlvbihhcmcpIHsKKyAgICAgICAgICAgIHJldHVybiAhYXJnLm9wdGlvbmFsICYm
ICFhcmcudmFyaWFkaWM7CisgICAgICAgIH0pLmxlbmd0aCA6IDA7CisgICAgfSkKKyAgICAucmVk
dWNlKGZ1bmN0aW9uKG0sIG4pIHsgcmV0dXJuIE1hdGgubWluKG0sIG4pOyB9KTsKK30KKworZnVu
Y3Rpb24gdGhyb3dPclJlamVjdChhX3Rlc3QsIG9wZXJhdGlvbiwgZm4sIG9iaiwgYXJncywgIG1l
c3NhZ2UsIGNiKSB7CisgICAgaWYgKG9wZXJhdGlvbi5pZGxUeXBlLmdlbmVyaWMgIT09ICJQcm9t
aXNlIikgeworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBmbi5hcHBseShvYmosIGFyZ3MpOworICAgICAgICB9LCBtZXNzYWdl
KTsKKyAgICAgICAgY2IoKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0cnkgeworICAgICAgICAg
ICAgcHJvbWlzZV9yZWplY3RzKGFfdGVzdCwgbmV3IFR5cGVFcnJvcigpLCBmbi5hcHBseShvYmos
IGFyZ3MpKS50aGVuKGNiLCBjYik7CisgICAgICAgIH0gY2F0Y2ggKGUpeworICAgICAgICAgICAg
YV90ZXN0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgiVGhyb3dzIFwiIiArIGUgKyAiXCIgaW5zdGVhZCBvZiByZWplY3RpbmcgcHJvbWlzZSIpOwor
ICAgICAgICAgICAgICAgIGNiKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0K
K30KKworZnVuY3Rpb24gYXdhaXROQ2FsbGJhY2tzKG4sIGNiLCBjdHgpIHsKKyAgICB2YXIgY291
bnRlciA9IDA7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBjb3VudGVyKys7Cisg
ICAgICAgIGlmIChjb3VudGVyID49IG4pIHsKKyAgICAgICAgICAgIGNiKCk7CisgICAgICAgIH0K
KyAgICB9OworfQorCit2YXIgZnJvdW5kID0gKGZ1bmN0aW9uKCl7CisgICAgaWYgKE1hdGguZnJv
dW5kKSByZXR1cm4gTWF0aC5mcm91bmQ7CisKKyAgICB2YXIgYXJyID0gbmV3IEZsb2F0MzJBcnJh
eSgxKTsKKyAgICByZXR1cm4gZnVuY3Rpb24gZnJvdW5kKG4pIHsKKyAgICAgICAgYXJyWzBdID0g
bjsKKyAgICAgICAgcmV0dXJuIGFyclswXTsKKyAgICB9OworfSkoKTsKKworLy8vIElkbEFycmF5
IC8vLworLy8gRW50cnkgcG9pbnQKK3NlbGYuSWRsQXJyYXkgPSBmdW5jdGlvbigpCisvL0B7Cit7
CisgICAgLyoqCisgICAgICogQSBtYXAgZnJvbSBzdHJpbmdzIHRvIHRoZSBjb3JyZXNwb25kaW5n
IG5hbWVkIElkbE9iamVjdCwgc3VjaCBhcworICAgICAqIElkbEludGVyZmFjZSBvciBJZGxFeGNl
cHRpb24uICBUaGVzZSBhcmUgdGhlIHRoaW5ncyB0aGF0IHRlc3QoKSB3aWxsIHJ1bgorICAgICAq
IHRlc3RzIG9uLgorICAgICAqLworICAgIHRoaXMubWVtYmVycyA9IHt9OworCisgICAgLyoqCisg
ICAgICogQSBtYXAgZnJvbSBzdHJpbmdzIHRvIGFycmF5cyBvZiBzdHJpbmdzLiAgVGhlIGtleXMg
YXJlIGludGVyZmFjZSBvcgorICAgICAqIGV4Y2VwdGlvbiBuYW1lcywgYW5kIGFyZSBleHBlY3Rl
ZCB0byBhbHNvIGV4aXN0IGFzIGtleXMgaW4gdGhpcy5tZW1iZXJzCisgICAgICogKG90aGVyd2lz
ZSB0aGV5J2xsIGJlIGlnbm9yZWQpLiAgVGhpcyBpcyBwb3B1bGF0ZWQgYnkgYWRkX29iamVjdHMo
KSAtLQorICAgICAqIHNlZSBkb2N1bWVudGF0aW9uIGF0IHRoZSBzdGFydCBvZiB0aGUgZmlsZS4g
IFRoZSBhY3R1YWwgdGVzdHMgd2lsbCBiZQorICAgICAqIHJ1biBieSBjYWxsaW5nIHRoaXMubWVt
YmVyc1tuYW1lXS50ZXN0X29iamVjdChvYmopIGZvciBlYWNoIG9iaiBpbgorICAgICAqIHRoaXMu
b2JqZWN0c1tuYW1lXS4gIG9iaiBpcyBhIHN0cmluZyB0aGF0IHdpbGwgYmUgZXZhbCdkIHRvIHBy
b2R1Y2UgYQorICAgICAqIEphdmFTY3JpcHQgdmFsdWUsIHdoaWNoIGlzIHN1cHBvc2VkIHRvIGJl
IGFuIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlCisgICAgICogZ2l2ZW4gSWRsT2JqZWN0IChpbnRl
cmZhY2UsIGV4Y2VwdGlvbiwgZXRjLikuCisgICAgICovCisgICAgdGhpcy5vYmplY3RzID0ge307
CisKKyAgICAvKioKKyAgICAgKiBXaGVuIGFkZGluZyBtdWx0aXBsZSBjb2xsZWN0aW9ucyBvZiBJ
RExzIG9uZSBhdCBhIHRpbWUsIGFuIGVhcmxpZXIgb25lCisgICAgICogbWlnaHQgY29udGFpbiBh
IHBhcnRpYWwgaW50ZXJmYWNlIG9yIGltcGxlbWVudHMgc3RhdGVtZW50IHRoYXQgZGVwZW5kcwor
ICAgICAqIG9uIGEgbGF0ZXIgb25lLiAgU2F2ZSB0aGVzZSB1cCBhbmQgaGFuZGxlIHRoZW0gcmln
aHQgYmVmb3JlIHdlIHJ1bgorICAgICAqIHRlc3RzLgorICAgICAqCisgICAgICogLnBhcnRpYWxz
IGlzIHNpbXBseSBhbiBhcnJheSBvZiBvYmplY3RzIGZyb20gV2ViSURMUGFyc2VyLmpzJworICAg
ICAqICJwYXJ0aWFsaW50ZXJmYWNlIiBwcm9kdWN0aW9uLiAgLmltcGxlbWVudHMgbWFwcyBzdHJp
bmdzIHRvIGFycmF5cyBvZgorICAgICAqIHN0cmluZ3MsIHN1Y2ggdGhhdAorICAgICAqCisgICAg
ICogICBBIGltcGxlbWVudHMgQjsKKyAgICAgKiAgIEEgaW1wbGVtZW50cyBDOworICAgICAqICAg
RCBpbXBsZW1lbnRzIEU7CisgICAgICoKKyAgICAgKiByZXN1bHRzIGluIHsgQTogWyJCIiwgIkMi
XSwgRDogWyJFIl0gfS4KKyAgICAgKi8KKyAgICB0aGlzLnBhcnRpYWxzID0gW107CisgICAgdGhp
c1siaW1wbGVtZW50cyJdID0ge307Cit9OworCisvL0B9CitJZGxBcnJheS5wcm90b3R5cGUuYWRk
X2lkbHMgPSBmdW5jdGlvbihyYXdfaWRscykKKy8vQHsKK3sKKyAgICAvKiogRW50cnkgcG9pbnQu
ICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBiZWdpbm5pbmcgb2YgZmlsZS4gKi8KKyAgICB0aGlzLmlu
dGVybmFsX2FkZF9pZGxzKFdlYklETDIucGFyc2UocmF3X2lkbHMpKTsKK307CisKKy8vQH0KK0lk
bEFycmF5LnByb3RvdHlwZS5hZGRfdW50ZXN0ZWRfaWRscyA9IGZ1bmN0aW9uKHJhd19pZGxzKQor
Ly9AeworeworICAgIC8qKiBFbnRyeSBwb2ludC4gIFNlZSBkb2N1bWVudGF0aW9uIGF0IGJlZ2lu
bmluZyBvZiBmaWxlLiAqLworICAgIHZhciBwYXJzZWRfaWRscyA9IFdlYklETDIucGFyc2UocmF3
X2lkbHMpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyc2VkX2lkbHMubGVuZ3RoOyBpKysp
CisgICAgeworICAgICAgICBwYXJzZWRfaWRsc1tpXS51bnRlc3RlZCA9IHRydWU7CisgICAgICAg
IGlmICgibWVtYmVycyIgaW4gcGFyc2VkX2lkbHNbaV0pCisgICAgICAgIHsKKyAgICAgICAgICAg
IGZvciAodmFyIGogPSAwOyBqIDwgcGFyc2VkX2lkbHNbaV0ubWVtYmVycy5sZW5ndGg7IGorKykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwYXJzZWRfaWRsc1tpXS5tZW1iZXJzW2pd
LnVudGVzdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICB0
aGlzLmludGVybmFsX2FkZF9pZGxzKHBhcnNlZF9pZGxzKTsKK307CisKKy8vQH0KK0lkbEFycmF5
LnByb3RvdHlwZS5pbnRlcm5hbF9hZGRfaWRscyA9IGZ1bmN0aW9uKHBhcnNlZF9pZGxzKQorLy9A
eworeworICAgIC8qKgorICAgICAqIEludGVybmFsIGhlbHBlciBjYWxsZWQgYnkgYWRkX2lkbHMo
KSBhbmQgYWRkX3VudGVzdGVkX2lkbHMoKS4KKyAgICAgKiBwYXJzZWRfaWRscyBpcyBhbiBhcnJh
eSBvZiBvYmplY3RzIHRoYXQgY29tZSBmcm9tIFdlYklETFBhcnNlci5qcydzCisgICAgICogImRl
ZmluaXRpb25zIiBwcm9kdWN0aW9uLiAgVGhlIGFkZF91bnRlc3RlZF9pZGxzKCkgZW50cnkgcG9p
bnQKKyAgICAgKiBhZGRpdGlvbmFsbHkgc2V0cyBhbiAudW50ZXN0ZWQgcHJvcGVydHkgb24gZWFj
aCBvYmplY3QgKGFuZCBpdHMKKyAgICAgKiAubWVtYmVycykgc28gdGhhdCB0aGV5J2xsIGJlIHNr
aXBwZWQgYnkgdGVzdCgpIC0tIHRoZXknbGwgb25seSBiZQorICAgICAqIHVzZWQgZm9yIGJhc2Ug
aW50ZXJmYWNlcyBvZiB0ZXN0ZWQgaW50ZXJmYWNlcywgcmV0dXJuIHR5cGVzLCBldGMuCisgICAg
ICovCisgICAgcGFyc2VkX2lkbHMuZm9yRWFjaChmdW5jdGlvbihwYXJzZWRfaWRsKQorICAgIHsK
KyAgICAgICAgaWYgKHBhcnNlZF9pZGwudHlwZSA9PSAiaW50ZXJmYWNlIiAmJiBwYXJzZWRfaWRs
LnBhcnRpYWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMucGFydGlhbHMucHVzaChwYXJz
ZWRfaWRsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChw
YXJzZWRfaWRsLnR5cGUgPT0gImltcGxlbWVudHMiKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIShwYXJzZWRfaWRsLnRhcmdldCBpbiB0aGlzWyJpbXBsZW1lbnRzIl0pKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHRoaXNbImltcGxlbWVudHMiXVtwYXJzZWRfaWRsLnRhcmdl
dF0gPSBbXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXNbImltcGxlbWVudHMiXVtw
YXJzZWRfaWRsLnRhcmdldF0ucHVzaChwYXJzZWRfaWRsWyJpbXBsZW1lbnRzIl0pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgcGFyc2VkX2lkbC5hcnJheSA9IHRo
aXM7CisgICAgICAgIGlmIChwYXJzZWRfaWRsLm5hbWUgaW4gdGhpcy5tZW1iZXJzKQorICAgICAg
ICB7CisgICAgICAgICAgICB0aHJvdyAiRHVwbGljYXRlIGlkZW50aWZpZXIgIiArIHBhcnNlZF9p
ZGwubmFtZTsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2gocGFyc2VkX2lkbC50eXBlKQorICAg
ICAgICB7CisgICAgICAgIGNhc2UgImludGVyZmFjZSI6CisgICAgICAgICAgICB0aGlzLm1lbWJl
cnNbcGFyc2VkX2lkbC5uYW1lXSA9CisgICAgICAgICAgICAgICAgbmV3IElkbEludGVyZmFjZShw
YXJzZWRfaWRsLCAvKiBpc19jYWxsYmFjayA9ICovIGZhbHNlKTsKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgImRpY3Rpb25hcnkiOgorICAgICAgICAgICAgLy8gTm90aGluZyB0
byB0ZXN0LCBidXQgd2UgbmVlZCB0aGUgZGljdGlvbmFyeSBpbmZvIGFyb3VuZCBmb3IgdHlwZQor
ICAgICAgICAgICAgLy8gY2hlY2tzCisgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lk
bC5uYW1lXSA9IG5ldyBJZGxEaWN0aW9uYXJ5KHBhcnNlZF9pZGwpOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSAidHlwZWRlZiI6CisgICAgICAgICAgICB0aGlzLm1lbWJlcnNb
cGFyc2VkX2lkbC5uYW1lXSA9IG5ldyBJZGxUeXBlZGVmKHBhcnNlZF9pZGwpOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAiY2FsbGJhY2siOgorICAgICAgICAgICAgLy8gVE9E
TworICAgICAgICAgICAgY29uc29sZS5sb2coImNhbGxiYWNrIG5vdCB5ZXQgc3VwcG9ydGVkIik7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICJlbnVtIjoKKyAgICAgICAgICAg
IHRoaXMubWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdID0gbmV3IElkbEVudW0ocGFyc2VkX2lkbCk7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICJjYWxsYmFjayBpbnRlcmZhY2Ui
OgorICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0gPQorICAgICAgICAg
ICAgICAgIG5ldyBJZGxJbnRlcmZhY2UocGFyc2VkX2lkbCwgLyogaXNfY2FsbGJhY2sgPSAqLyB0
cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICB0aHJvdyBwYXJzZWRfaWRsLm5hbWUgKyAiOiAiICsgcGFyc2VkX2lkbC50eXBlICsgIiBub3Qg
eWV0IHN1cHBvcnRlZCI7CisgICAgICAgIH0KKyAgICB9LmJpbmQodGhpcykpOworfTsKKworLy9A
fQorSWRsQXJyYXkucHJvdG90eXBlLmFkZF9vYmplY3RzID0gZnVuY3Rpb24oZGljdCkKKy8vQHsK
K3sKKyAgICAvKiogRW50cnkgcG9pbnQuICBTZWUgZG9jdW1lbnRhdGlvbiBhdCBiZWdpbm5pbmcg
b2YgZmlsZS4gKi8KKyAgICBmb3IgKHZhciBrIGluIGRpY3QpCisgICAgeworICAgICAgICBpZiAo
ayBpbiB0aGlzLm9iamVjdHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXMub2JqZWN0c1tr
XSA9IHRoaXMub2JqZWN0c1trXS5jb25jYXQoZGljdFtrXSk7CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzLm9iamVjdHNba10gPSBkaWN0W2tdOwor
ICAgICAgICB9CisgICAgfQorfTsKKworLy9AfQorSWRsQXJyYXkucHJvdG90eXBlLnByZXZlbnRf
bXVsdGlwbGVfdGVzdGluZyA9IGZ1bmN0aW9uKG5hbWUpCisvL0B7Cit7CisgICAgLyoqIEVudHJ5
IHBvaW50LiAgU2VlIGRvY3VtZW50YXRpb24gYXQgYmVnaW5uaW5nIG9mIGZpbGUuICovCisgICAg
dGhpcy5tZW1iZXJzW25hbWVdLnByZXZlbnRfbXVsdGlwbGVfdGVzdGluZyA9IHRydWU7Cit9Owor
CisvL0B9CitJZGxBcnJheS5wcm90b3R5cGUucmVjdXJzaXZlbHlfZ2V0X2ltcGxlbWVudHMgPSBm
dW5jdGlvbihpbnRlcmZhY2VfbmFtZSkKKy8vQHsKK3sKKyAgICAvKioKKyAgICAgKiBIZWxwZXIg
ZnVuY3Rpb24gZm9yIHRlc3QoKS4gIFJldHVybnMgYW4gYXJyYXkgb2YgdGhpbmdzIHRoYXQgaW1w
bGVtZW50CisgICAgICogaW50ZXJmYWNlX25hbWUsIHNvIGlmIHRoZSBJREwgY29udGFpbnMKKyAg
ICAgKgorICAgICAqICAgQSBpbXBsZW1lbnRzIEI7CisgICAgICogICBCIGltcGxlbWVudHMgQzsK
KyAgICAgKiAgIEIgaW1wbGVtZW50cyBEOworICAgICAqCisgICAgICogdGhlbiByZWN1cnNpdmVs
eV9nZXRfaW1wbGVtZW50cygiQSIpIHNob3VsZCByZXR1cm4gWyJCIiwgIkMiLCAiRCJdLgorICAg
ICAqLworICAgIHZhciByZXQgPSB0aGlzWyJpbXBsZW1lbnRzIl1baW50ZXJmYWNlX25hbWVdOwor
ICAgIGlmIChyZXQgPT09IHVuZGVmaW5lZCkKKyAgICB7CisgICAgICAgIHJldHVybiBbXTsKKyAg
ICB9CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzWyJpbXBsZW1lbnRzIl1baW50ZXJmYWNl
X25hbWVdLmxlbmd0aDsgaSsrKQorICAgIHsKKyAgICAgICAgcmV0ID0gcmV0LmNvbmNhdCh0aGlz
LnJlY3Vyc2l2ZWx5X2dldF9pbXBsZW1lbnRzKHJldFtpXSkpOworICAgICAgICBpZiAocmV0Lmlu
ZGV4T2YocmV0W2ldKSAhPSByZXQubGFzdEluZGV4T2YocmV0W2ldKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgdGhyb3cgIkNpcmN1bGFyIGltcGxlbWVudHMgc3RhdGVtZW50cyBpbnZvbHZpbmcg
IiArIHJldFtpXTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmV0OworfTsKKworZnVu
Y3Rpb24gZXhwb3NlZF9pbihnbG9iYWxzKSB7CisgICAgaWYgKCdkb2N1bWVudCcgaW4gc2VsZikg
eworICAgICAgICByZXR1cm4gZ2xvYmFscy5pbmRleE9mKCJXaW5kb3ciKSA+PSAwOworICAgIH0K
KyAgICBpZiAoJ0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJyBpbiBzZWxmICYmCisgICAgICAg
IHNlbGYgaW5zdGFuY2VvZiBEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSkgeworICAgICAgICBy
ZXR1cm4gZ2xvYmFscy5pbmRleE9mKCJXb3JrZXIiKSA+PSAwIHx8CisgICAgICAgICAgICAgICBn
bG9iYWxzLmluZGV4T2YoIkRlZGljYXRlZFdvcmtlciIpID49IDA7CisgICAgfQorICAgIGlmICgn
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUnIGluIHNlbGYgJiYKKyAgICAgICAgc2VsZiBpbnN0YW5j
ZW9mIFNoYXJlZFdvcmtlckdsb2JhbFNjb3BlKSB7CisgICAgICAgIHJldHVybiBnbG9iYWxzLmlu
ZGV4T2YoIldvcmtlciIpID49IDAgfHwKKyAgICAgICAgICAgICAgIGdsb2JhbHMuaW5kZXhPZigi
U2hhcmVkV29ya2VyIikgPj0gMDsKKyAgICB9CisgICAgaWYgKCdTZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUnIGluIHNlbGYgJiYKKyAgICAgICAgc2VsZiBpbnN0YW5jZW9mIFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSkgeworICAgICAgICByZXR1cm4gZ2xvYmFscy5pbmRleE9mKCJXb3JrZXIiKSA+
PSAwIHx8CisgICAgICAgICAgICAgICBnbG9iYWxzLmluZGV4T2YoIlNlcnZpY2VXb3JrZXIiKSA+
PSAwOworICAgIH0KKyAgICB0aHJvdyAiVW5leHBlY3RlZCBnbG9iYWwgb2JqZWN0IjsKK30KKwor
Ly9AfQorSWRsQXJyYXkucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbigpCisvL0B7Cit7CisgICAg
LyoqIEVudHJ5IHBvaW50LiAgU2VlIGRvY3VtZW50YXRpb24gYXQgYmVnaW5uaW5nIG9mIGZpbGUu
ICovCisKKyAgICAvLyBGaXJzdCBtZXJnZSBpbiBhbGwgdGhlIHBhcnRpYWwgaW50ZXJmYWNlcyBh
bmQgaW1wbGVtZW50cyBzdGF0ZW1lbnRzIHdlCisgICAgLy8gZW5jb3VudGVyZWQuCisgICAgdGhp
cy5wYXJ0aWFscy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnNlZF9pZGwpCisgICAgeworICAgICAgICBp
ZiAoIShwYXJzZWRfaWRsLm5hbWUgaW4gdGhpcy5tZW1iZXJzKQorICAgICAgICB8fCAhKHRoaXMu
bWVtYmVyc1twYXJzZWRfaWRsLm5hbWVdIGluc3RhbmNlb2YgSWRsSW50ZXJmYWNlKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgdGhyb3cgIlBhcnRpYWwgaW50ZXJmYWNlICIgKyBwYXJzZWRfaWRs
Lm5hbWUgKyAiIHdpdGggbm8gb3JpZ2luYWwgaW50ZXJmYWNlIjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAocGFyc2VkX2lkbC5leHRBdHRycykKKyAgICAgICAgeworICAgICAgICAgICAgcGFyc2Vk
X2lkbC5leHRBdHRycy5mb3JFYWNoKGZ1bmN0aW9uKGV4dEF0dHIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5tZW1iZXJzW3BhcnNlZF9pZGwubmFtZV0uZXh0QXR0cnMucHVz
aChleHRBdHRyKTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIH0KKyAgICAg
ICAgcGFyc2VkX2lkbC5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24obWVtYmVyKQorICAgICAgICB7
CisgICAgICAgICAgICB0aGlzLm1lbWJlcnNbcGFyc2VkX2lkbC5uYW1lXS5tZW1iZXJzLnB1c2go
bmV3IElkbEludGVyZmFjZU1lbWJlcihtZW1iZXIpKTsKKyAgICAgICAgfS5iaW5kKHRoaXMpKTsK
KyAgICB9LmJpbmQodGhpcykpOworICAgIHRoaXMucGFydGlhbHMgPSBbXTsKKworICAgIGZvciAo
dmFyIGxocyBpbiB0aGlzWyJpbXBsZW1lbnRzIl0pCisgICAgeworICAgICAgICB0aGlzLnJlY3Vy
c2l2ZWx5X2dldF9pbXBsZW1lbnRzKGxocykuZm9yRWFjaChmdW5jdGlvbihyaHMpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBlcnJTdHIgPSBsaHMgKyAiIGltcGxlbWVudHMgIiArIHJocyAr
ICIsIGJ1dCAiOworICAgICAgICAgICAgaWYgKCEobGhzIGluIHRoaXMubWVtYmVycykpIHRocm93
IGVyclN0ciArIGxocyArICIgaXMgdW5kZWZpbmVkLiI7CisgICAgICAgICAgICBpZiAoISh0aGlz
Lm1lbWJlcnNbbGhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkpIHRocm93IGVyclN0ciArIGxo
cyArICIgaXMgbm90IGFuIGludGVyZmFjZS4iOworICAgICAgICAgICAgaWYgKCEocmhzIGluIHRo
aXMubWVtYmVycykpIHRocm93IGVyclN0ciArIHJocyArICIgaXMgdW5kZWZpbmVkLiI7CisgICAg
ICAgICAgICBpZiAoISh0aGlzLm1lbWJlcnNbcmhzXSBpbnN0YW5jZW9mIElkbEludGVyZmFjZSkp
IHRocm93IGVyclN0ciArIHJocyArICIgaXMgbm90IGFuIGludGVyZmFjZS4iOworICAgICAgICAg
ICAgdGhpcy5tZW1iZXJzW3Joc10ubWVtYmVycy5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlcikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbbGhzXS5tZW1iZXJzLnB1
c2gobmV3IElkbEludGVyZmFjZU1lbWJlcihtZW1iZXIpKTsKKyAgICAgICAgICAgIH0uYmluZCh0
aGlzKSk7CisgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgfQorICAgIHRoaXNbImltcGxlbWVu
dHMiXSA9IHt9OworCisgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5tZW1iZXJz
KS5mb3JFYWNoKGZ1bmN0aW9uKG1lbWJlck5hbWUpIHsKKyAgICAgICAgdmFyIG1lbWJlciA9IHRo
aXMubWVtYmVyc1ttZW1iZXJOYW1lXTsKKyAgICAgICAgaWYgKCEobWVtYmVyIGluc3RhbmNlb2Yg
SWRsSW50ZXJmYWNlKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgdmFyIGV4cG9zZWQgPSBtZW1iZXIuZXh0QXR0cnMuZmlsdGVyKGZ1bmN0aW9uKGEpIHsgcmV0
dXJuIGEubmFtZSA9PSAiRXhwb3NlZCIgfSk7CisgICAgICAgIGlmIChleHBvc2VkLmxlbmd0aCA+
IDEpIHsKKyAgICAgICAgICAgIHRocm93ICJVbmV4cGVjdGVkIEV4cG9zZWQgZXh0ZW5kZWQgYXR0
cmlidXRlcyBvbiAiICsgbWVtYmVyTmFtZSArICI6ICIgKyBleHBvc2VkOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIGdsb2JhbHMgPSBleHBvc2VkLmxlbmd0aCA9PT0gMQorICAgICAgICAgICAg
ICAgICAgICA/IGV4cG9zZWRbMF0ucmhzLnZhbHVlCisgICAgICAgICAgICAgICAgICAgIDogWyJX
aW5kb3ciXTsKKyAgICAgICAgbWVtYmVyLmV4cG9zZWQgPSBleHBvc2VkX2luKGdsb2JhbHMpOwor
ICAgIH0uYmluZCh0aGlzKSk7CisKKyAgICAvLyBOb3cgcnVuIHRlc3QoKSBvbiBldmVyeSBtZW1i
ZXIsIGFuZCB0ZXN0X29iamVjdCgpIGZvciBldmVyeSBvYmplY3QuCisgICAgZm9yICh2YXIgbmFt
ZSBpbiB0aGlzLm1lbWJlcnMpCisgICAgeworICAgICAgICB0aGlzLm1lbWJlcnNbbmFtZV0udGVz
dCgpOworICAgICAgICBpZiAobmFtZSBpbiB0aGlzLm9iamVjdHMpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHRoaXMub2JqZWN0c1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uKHN0cikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1lbWJlcnNbbmFtZV0udGVzdF9vYmplY3Qoc3Ry
KTsKKyAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisv
L0B9CitJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMgPSBmdW5jdGlvbih2YWx1ZSwg
dHlwZSkKKy8vQHsKK3sKKyAgICAvKioKKyAgICAgKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCB0ZXN0
cyB0aGF0IHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIHR5cGUgYWNjb3JkaW5nCisgICAgICogdG8g
dGhlIHJ1bGVzIG9mIFdlYklETC4gIHZhbHVlIGlzIGFueSBKYXZhU2NyaXB0IHZhbHVlLCBhbmQg
dHlwZSBpcyBhbgorICAgICAqIG9iamVjdCBwcm9kdWNlZCBieSBXZWJJRExQYXJzZXIuanMnICJ0
eXBlIiBwcm9kdWN0aW9uLiAgVGhhdCBwcm9kdWN0aW9uCisgICAgICogaXMgZmFpcmx5IGVsYWJv
cmF0ZSBkdWUgdG8gdGhlIGNvbXBsZXhpdHkgb2YgV2ViSURMJ3MgdHlwZXMsIHNvIGl0J3MKKyAg
ICAgKiBiZXN0IHRvIGxvb2sgYXQgdGhlIGdyYW1tYXIgdG8gZmlndXJlIG91dCB3aGF0IHByb3Bl
cnRpZXMgaXQgbWlnaHQgaGF2ZS4KKyAgICAgKi8KKyAgICBpZiAodHlwZS5pZGxUeXBlID09ICJh
bnkiKQorICAgIHsKKyAgICAgICAgLy8gTm8gYXNzZXJ0aW9ucyB0byBtYWtlCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAodHlwZS5udWxsYWJsZSAmJiB2YWx1ZSA9PT0gbnVsbCkK
KyAgICB7CisgICAgICAgIC8vIFRoaXMgaXMgZmluZQorICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKHR5cGUuYXJyYXkpCisgICAgeworICAgICAgICAvLyBUT0RPOiBub3Qgc3VwcG9y
dGVkIHlldAorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHR5cGUuc2VxdWVuY2Up
CisgICAgeworICAgICAgICBhc3NlcnRfdHJ1ZShBcnJheS5pc0FycmF5KHZhbHVlKSwgImlzIG5v
dCBhcnJheSIpOworICAgICAgICBpZiAoIXZhbHVlLmxlbmd0aCkKKyAgICAgICAgeworICAgICAg
ICAgICAgLy8gTm90aGluZyB3ZSBjYW4gZG8uCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgdGhpcy5hc3NlcnRfdHlwZV9pcyh2YWx1ZVswXSwgdHlwZS5pZGxUeXBlLmlk
bFR5cGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdHlwZSA9IHR5cGUuaWRsVHlw
ZTsKKworICAgIHN3aXRjaCh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSAidm9pZCI6CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKHZhbHVlLCB1bmRlZmluZWQpOworICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGNhc2UgImJvb2xlYW4iOgorICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyh0eXBlb2YgdmFsdWUsICJib29sZWFuIik7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgY2FzZSAiYnl0ZSI6CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwg
Im51bWJlciIpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2
YWx1ZSksICJub3QgYW4gaW50ZWdlciIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTEyOCA8
PSB2YWx1ZSAmJiB2YWx1ZSA8PSAxMjcsICJieXRlICIgKyB2YWx1ZSArICIgbm90IGluIHJhbmdl
IFstMTI4LCAxMjddIik7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSAib2N0
ZXQiOgorICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAibm90
IGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFs
dWUgPD0gMjU1LCAib2N0ZXQgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWzAsIDI1NV0iKTsK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlICJzaG9ydCI6CisgICAgICAgICAg
ICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOworICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3QgYW4gaW50ZWdlciIpOwor
ICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTMyNzY4IDw9IHZhbHVlICYmIHZhbHVlIDw9IDMyNzY3
LCAic2hvcnQgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWy0zMjc2OCwgMzI3NjddIik7Cisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSAidW5zaWduZWQgc2hvcnQiOgorICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3IodmFsdWUpLCAibm90IGFuIGludGVn
ZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gNjU1
MzUsICJ1bnNpZ25lZCBzaG9ydCAiICsgdmFsdWUgKyAiIG5vdCBpbiByYW5nZSBbMCwgNjU1MzVd
Iik7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSAibG9uZyI6CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgIm51bWJlciIpOworICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh2YWx1ZSwgTWF0aC5mbG9vcih2YWx1ZSksICJub3QgYW4gaW50ZWdlciIp
OworICAgICAgICAgICAgYXNzZXJ0X3RydWUoLTIxNDc0ODM2NDggPD0gdmFsdWUgJiYgdmFsdWUg
PD0gMjE0NzQ4MzY0NywgImxvbmcgIiArIHZhbHVlICsgIiBub3QgaW4gcmFuZ2UgWy0yMTQ3NDgz
NjQ4LCAyMTQ3NDgzNjQ3XSIpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2Ug
InVuc2lnbmVkIGxvbmciOgorICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUs
ICJudW1iZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIE1hdGguZmxvb3Io
dmFsdWUpLCAibm90IGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF90cnVlKDAgPD0g
dmFsdWUgJiYgdmFsdWUgPD0gNDI5NDk2NzI5NSwgInVuc2lnbmVkIGxvbmcgIiArIHZhbHVlICsg
IiBub3QgaW4gcmFuZ2UgWzAsIDQyOTQ5NjcyOTVdIik7CisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgY2FzZSAibG9uZyBsb25nIjoKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlw
ZW9mIHZhbHVlLCAibnVtYmVyIik7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2Fz
ZSAidW5zaWduZWQgbG9uZyBsb25nIjoKKyAgICAgICAgY2FzZSAiRE9NVGltZVN0YW1wIjoKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7CisgICAgICAg
ICAgICBhc3NlcnRfdHJ1ZSgwIDw9IHZhbHVlLCAidW5zaWduZWQgbG9uZyBsb25nIGlzIG5lZ2F0
aXZlIik7CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2FzZSAiZmxvYXQiOgorICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModmFsdWUsIGZyb3VuZCh2YWx1ZSksICJmbG9hdCByb3VuZGVkIHRv
IDMyLWJpdCBmbG9hdCBzaG91bGQgYmUgaXRzZWxmIik7CisgICAgICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyh2YWx1ZSwgSW5maW5pdHkpOworICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMo
dmFsdWUsIC1JbmZpbml0eSk7CisgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwg
TmFOKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlICJET01IaWdoUmVzVGlt
ZVN0YW1wIjoKKyAgICAgICAgY2FzZSAiZG91YmxlIjoKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIHZhbHVlLCAibnVtYmVyIik7CisgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFs
cyh2YWx1ZSwgSW5maW5pdHkpOworICAgICAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHModmFsdWUs
IC1JbmZpbml0eSk7CisgICAgICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh2YWx1ZSwgTmFOKTsK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlICJ1bnJlc3RyaWN0ZWQgZmxvYXQi
OgorICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHModmFsdWUsIGZyb3VuZCh2YWx1ZSksICJ1bnJlc3RyaWN0
ZWQgZmxvYXQgcm91bmRlZCB0byAzMi1iaXQgZmxvYXQgc2hvdWxkIGJlIGl0c2VsZiIpOworICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2UgInVucmVzdHJpY3RlZCBkb3VibGUiOgor
ICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJudW1iZXIiKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBjYXNlICJET01TdHJpbmciOgorICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyh0eXBlb2YgdmFsdWUsICJzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBjYXNlICJCeXRlU3RyaW5nIjoKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHModHlwZW9mIHZhbHVlLCAic3RyaW5nIik7CisgICAgICAgICAgICBhc3NlcnRfcmVnZXhwX21h
dGNoKHZhbHVlLCAvXltceDAwLVx4N0ZdKiQvKTsKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBjYXNlICJVU1ZTdHJpbmciOgorICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Yg
dmFsdWUsICJzdHJpbmciKTsKKyAgICAgICAgICAgIGFzc2VydF9yZWdleHBfbWF0Y2godmFsdWUs
IC9eKFtceDAwLVx1ZDdmZlx1ZTAwMC1cdWZmZmZdfFtcdWQ4MDAtXHVkYmZmXVtcdWRjMDAtXHVk
ZmZmXSkqJC8pOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2UgIm9iamVjdCI6
CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2YgdmFsdWUgPT0gIm9iamVjdCIgfHwgdHlw
ZW9mIHZhbHVlID09ICJmdW5jdGlvbiIsICJ3cm9uZyB0eXBlOiBub3Qgb2JqZWN0IG9yIGZ1bmN0
aW9uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCEodHlwZSBpbiB0
aGlzLm1lbWJlcnMpKQorICAgIHsKKyAgICAgICAgdGhyb3cgIlVucmVjb2duaXplZCB0eXBlICIg
KyB0eXBlOworICAgIH0KKworICAgIGlmICh0aGlzLm1lbWJlcnNbdHlwZV0gaW5zdGFuY2VvZiBJ
ZGxJbnRlcmZhY2UpCisgICAgeworICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIHJ1biB0aGUg
ZnVsbAorICAgICAgICAvLyBJZGxJbnRlcmZhY2UucHJvdG90eXBlLnRlc3RfaW5zdGFuY2Vfb2Ys
IGJlY2F1c2UgdGhhdCBjb3VsZCByZXN1bHQKKyAgICAgICAgLy8gaW4gYW4gaW5maW5pdGUgbG9v
cC4gIFRPRE86IFRoaXMgbWVhbnMgd2UgZG9uJ3QgaGF2ZSB0ZXN0cyBmb3IKKyAgICAgICAgLy8g
Tm9JbnRlcmZhY2VPYmplY3QgaW50ZXJmYWNlcywgYW5kIHdlIGFsc28gY2FuJ3QgdGVzdCBvYmpl
Y3RzIHRoYXQKKyAgICAgICAgLy8gY29tZSBmcm9tIGFub3RoZXIgc2VsZi4KKyAgICAgICAgYXNz
ZXJ0X3RydWUodHlwZW9mIHZhbHVlID09ICJvYmplY3QiIHx8IHR5cGVvZiB2YWx1ZSA9PSAiZnVu
Y3Rpb24iLCAid3JvbmcgdHlwZTogbm90IG9iamVjdCBvciBmdW5jdGlvbiIpOworICAgICAgICBp
ZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QKKyAgICAgICAgJiYgIXRoaXMubWVtYmVyc1t0eXBl
XS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJOb0ludGVyZmFjZU9iamVjdCIpCisgICAgICAgICYm
IHR5cGUgaW4gc2VsZikKKyAgICAgICAgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUodmFsdWUg
aW5zdGFuY2VvZiBzZWxmW3R5cGVdLCAibm90IGluc3RhbmNlb2YgIiArIHR5cGUpOworICAgICAg
ICB9CisgICAgfQorICAgIGVsc2UgaWYgKHRoaXMubWVtYmVyc1t0eXBlXSBpbnN0YW5jZW9mIElk
bEVudW0pCisgICAgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiB2YWx1ZSwgInN0cmlu
ZyIpOworICAgIH0KKyAgICBlbHNlIGlmICh0aGlzLm1lbWJlcnNbdHlwZV0gaW5zdGFuY2VvZiBJ
ZGxEaWN0aW9uYXJ5KQorICAgIHsKKyAgICAgICAgLy8gVE9ETzogVGVzdCB3aGVuIHdlIGFjdHVh
bGx5IGhhdmUgc29tZXRoaW5nIHRvIHRlc3QgdGhpcyBvbgorICAgIH0KKyAgICBlbHNlIGlmICh0
aGlzLm1lbWJlcnNbdHlwZV0gaW5zdGFuY2VvZiBJZGxUeXBlZGVmKQorICAgIHsKKyAgICAgICAg
Ly8gVE9ETzogVGVzdCB3aGVuIHdlIGFjdHVhbGx5IGhhdmUgc29tZXRoaW5nIHRvIHRlc3QgdGhp
cyBvbgorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB0aHJvdyAiVHlwZSAiICsgdHlw
ZSArICIgaXNuJ3QgYW4gaW50ZXJmYWNlIG9yIGRpY3Rpb25hcnkiOworICAgIH0KK307CisvL0B9
CisKKy8vLyBJZGxPYmplY3QgLy8vCitmdW5jdGlvbiBJZGxPYmplY3QoKSB7fQorSWRsT2JqZWN0
LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24oKQorLy9AeworeworICAgIC8qKgorICAgICAqIEJ5
IGRlZmF1bHQsIHRoaXMgZG9lcyBub3RoaW5nLCBzbyBubyBhY3R1YWwgdGVzdHMgYXJlIHJ1biBm
b3IgSWRsT2JqZWN0cworICAgICAqIHRoYXQgZG9uJ3QgZGVmaW5lIGFueSAoZS5nLiwgSWRsRGlj
dGlvbmFyeSBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcpLgorICAgICAqLworfTsKKworLy9A
fQorSWRsT2JqZWN0LnByb3RvdHlwZS5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlID0gZnVuY3Rpb24o
bmFtZSkKKy8vQHsKK3sKKyAgICAvKioKKyAgICAgKiBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBm
b3IgdGhpbmdzIHRoYXQgc3VwcG9ydCBleHRlbmRlZCBhdHRyaWJ1dGVzLAorICAgICAqIHN1Y2gg
YXMgaW50ZXJmYWNlcywgZXhjZXB0aW9ucywgYW5kIG1lbWJlcnMuCisgICAgICovCisgICAgcmV0
dXJuIHRoaXMuZXh0QXR0cnMuc29tZShmdW5jdGlvbihvKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG8ubmFtZSA9PSBuYW1lOworICAgIH0pOworfTsKKworLy9AfQorCisvLy8gSWRsRGljdGlvbmFy
eSAvLy8KKy8vIFVzZWQgZm9yIElkbEFycmF5LnByb3RvdHlwZS5hc3NlcnRfdHlwZV9pcworZnVu
Y3Rpb24gSWRsRGljdGlvbmFyeShvYmopCisvL0B7Cit7CisgICAgLyoqCisgICAgICogb2JqIGlz
IGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJkaWN0aW9uYXJ5Igor
ICAgICAqIHByb2R1Y3Rpb24uCisgICAgICovCisKKyAgICAvKiogU2VsZi1leHBsYW5hdG9yeS4g
Ki8KKyAgICB0aGlzLm5hbWUgPSBvYmoubmFtZTsKKworICAgIC8qKiBBbiBhcnJheSBvZiBvYmpl
Y3RzIHByb2R1Y2VkIGJ5IHRoZSAiZGljdGlvbmFyeU1lbWJlciIgcHJvZHVjdGlvbi4gKi8KKyAg
ICB0aGlzLm1lbWJlcnMgPSBvYmoubWVtYmVyczsKKworICAgIC8qKgorICAgICAqIFRoZSBuYW1l
IChhcyBhIHN0cmluZykgb2YgdGhlIGRpY3Rpb25hcnkgdHlwZSB3ZSBpbmhlcml0IGZyb20sIG9y
IG51bGwKKyAgICAgKiBpZiB0aGVyZSBpcyBub25lLgorICAgICAqLworICAgIHRoaXMuYmFzZSA9
IG9iai5pbmhlcml0YW5jZTsKK30KKworLy9AfQorSWRsRGljdGlvbmFyeS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUpOworCisvLy8gSWRsSW50ZXJmYWNlIC8v
LworZnVuY3Rpb24gSWRsSW50ZXJmYWNlKG9iaiwgaXNfY2FsbGJhY2spIHsKKyAgICAvKioKKyAg
ICAgKiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgImlu
dGVyZmFjZSIgcHJvZHVjdGlvbi4KKyAgICAgKi8KKworICAgIC8qKiBTZWxmLWV4cGxhbmF0b3J5
LiAqLworICAgIHRoaXMubmFtZSA9IG9iai5uYW1lOworCisgICAgLyoqIEEgYmFjay1yZWZlcmVu
Y2UgdG8gb3VyIElkbEFycmF5LiAqLworICAgIHRoaXMuYXJyYXkgPSBvYmouYXJyYXk7CisKKyAg
ICAvKioKKyAgICAgKiBBbiBpbmRpY2F0b3Igb2Ygd2hldGhlciB3ZSBzaG91bGQgcnVuIHRlc3Rz
IG9uIHRoZSBpbnRlcmZhY2Ugb2JqZWN0IGFuZAorICAgICAqIGludGVyZmFjZSBwcm90b3R5cGUg
b2JqZWN0LiBUZXN0cyBvbiBtZW1iZXJzIGFyZSBjb250cm9sbGVkIGJ5IC51bnRlc3RlZAorICAg
ICAqIG9uIGVhY2ggbWVtYmVyLCBub3QgdGhpcy4KKyAgICAgKi8KKyAgICB0aGlzLnVudGVzdGVk
ID0gb2JqLnVudGVzdGVkOworCisgICAgLyoqIEFuIGFycmF5IG9mIG9iamVjdHMgcHJvZHVjZWQg
YnkgdGhlICJFeHRBdHRyIiBwcm9kdWN0aW9uLiAqLworICAgIHRoaXMuZXh0QXR0cnMgPSBvYmou
ZXh0QXR0cnM7CisKKyAgICAvKiogQW4gYXJyYXkgb2YgSWRsSW50ZXJmYWNlTWVtYmVycy4gKi8K
KyAgICB0aGlzLm1lbWJlcnMgPSBvYmoubWVtYmVycy5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIG5l
dyBJZGxJbnRlcmZhY2VNZW1iZXIobSk7IH0pOworICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9h
dHRyaWJ1dGUoIlVuZm9yZ2VhYmxlIikpIHsKKyAgICAgICAgdGhpcy5tZW1iZXJzCisgICAgICAg
ICAgICAuZmlsdGVyKGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtWyJzdGF0aWMiXSAmJiAobS50eXBl
ID09ICJhdHRyaWJ1dGUiIHx8IG0udHlwZSA9PSAib3BlcmF0aW9uIik7IH0pCisgICAgICAgICAg
ICAuZm9yRWFjaChmdW5jdGlvbihtKSB7IHJldHVybiBtLmlzVW5mb3JnZWFibGUgPSB0cnVlOyB9
KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGUgbmFtZSAoYXMgYSBzdHJpbmcpIG9mIHRo
ZSB0eXBlIHdlIGluaGVyaXQgZnJvbSwgb3IgbnVsbCBpZiB0aGVyZSBpcworICAgICAqIG5vbmUu
CisgICAgICovCisgICAgdGhpcy5iYXNlID0gb2JqLmluaGVyaXRhbmNlOworCisgICAgdGhpcy5f
aXNfY2FsbGJhY2sgPSBpc19jYWxsYmFjazsKK30KK0lkbEludGVyZmFjZS5wcm90b3R5cGUgPSBP
YmplY3QuY3JlYXRlKElkbE9iamVjdC5wcm90b3R5cGUpOworSWRsSW50ZXJmYWNlLnByb3RvdHlw
ZS5pc19jYWxsYmFjayA9IGZ1bmN0aW9uKCkKKy8vQHsKK3sKKyAgICByZXR1cm4gdGhpcy5faXNf
Y2FsbGJhY2s7Cit9OworLy9AfQorCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmhhc19jb25zdGFu
dHMgPSBmdW5jdGlvbigpCisvL0B7Cit7CisgICAgcmV0dXJuIHRoaXMubWVtYmVycy5zb21lKGZ1
bmN0aW9uKG1lbWJlcikgeworICAgICAgICByZXR1cm4gbWVtYmVyLnR5cGUgPT09ICJjb25zdCI7
CisgICAgfSk7Cit9OworLy9AfQorCitJZGxJbnRlcmZhY2UucHJvdG90eXBlLmlzX2dsb2JhbCA9
IGZ1bmN0aW9uKCkKKy8vQHsKK3sKKyAgICByZXR1cm4gdGhpcy5leHRBdHRycy5zb21lKGZ1bmN0
aW9uKGF0dHJpYnV0ZSkgeworICAgICAgICByZXR1cm4gYXR0cmlidXRlLm5hbWUgPT09ICJHbG9i
YWwiIHx8CisgICAgICAgICAgICAgICBhdHRyaWJ1dGUubmFtZSA9PT0gIlByaW1hcnlHbG9iYWwi
OworICAgIH0pOworfTsKKy8vQH0KKworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0ID0gZnVu
Y3Rpb24oKQorLy9AeworeworICAgIGlmICh0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIk5v
SW50ZXJmYWNlT2JqZWN0IikpCisgICAgeworICAgICAgICAvLyBObyB0ZXN0cyB0byBkbyB3aXRo
b3V0IGFuIGluc3RhbmNlLiAgVE9ETzogV2Ugc2hvdWxkIHN0aWxsIGJlIGFibGUKKyAgICAgICAg
Ly8gdG8gcnVuIHRlc3RzIG9uIHRoZSBwcm90b3R5cGUgb2JqZWN0LCBpZiB3ZSBvYnRhaW4gb25l
IHRocm91Z2ggc29tZQorICAgICAgICAvLyBvdGhlciBtZWFucy4KKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghdGhpcy5leHBvc2VkKSB7CisgICAgICAgIHRlc3QoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UodGhpcy5uYW1lIGluIHNlbGYpOworICAgICAg
ICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBleGlzdGVuY2UgYW5kIHBy
b3BlcnRpZXMgb2YgaW50ZXJmYWNlIG9iamVjdCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCF0aGlzLnVudGVzdGVkKQorICAgIHsKKyAgICAgICAgLy8gRmlyc3QgdGVzdCB0
aGluZ3MgdG8gZG8gd2l0aCB0aGUgZXhjZXB0aW9uL2ludGVyZmFjZSBvYmplY3QgYW5kCisgICAg
ICAgIC8vIGV4Y2VwdGlvbi9pbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdC4KKyAgICAgICAgdGhp
cy50ZXN0X3NlbGYoKTsKKyAgICB9CisgICAgLy8gVGhlbiB0ZXN0IHRoaW5ncyB0byBkbyB3aXRo
IGl0cyBtZW1iZXJzIChjb25zdGFudHMsIGZpZWxkcywgYXR0cmlidXRlcywKKyAgICAvLyBvcGVy
YXRpb25zLCAuIC4gLikuICBUaGVzZSBhcmUgcnVuIGV2ZW4gaWYgLnVudGVzdGVkIGlzIHRydWUs
IGJlY2F1c2UKKyAgICAvLyBtZW1iZXJzIG1pZ2h0IHRoZW1zZWx2ZXMgYmUgbWFya2VkIGFzIC51
bnRlc3RlZC4gIFRoaXMgbWlnaHQgaGFwcGVuIHRvCisgICAgLy8gaW50ZXJmYWNlcyBpZiB0aGUg
aW50ZXJmYWNlIGl0c2VsZiBpcyB1bnRlc3RlZCBidXQgYSBwYXJ0aWFsIGludGVyZmFjZQorICAg
IC8vIHRoYXQgZXh0ZW5kcyBpdCBpcyB0ZXN0ZWQgLS0gdGhlbiB0aGUgaW50ZXJmYWNlIGl0c2Vs
ZiBhbmQgaXRzIGluaXRpYWwKKyAgICAvLyBtZW1iZXJzIHdpbGwgYmUgbWFya2VkIGFzIHVudGVz
dGVkLCBidXQgdGhlIG1lbWJlcnMgYWRkZWQgYnkgdGhlIHBhcnRpYWwKKyAgICAvLyBpbnRlcmZh
Y2UgYXJlIHN0aWxsIHRlc3RlZC4KKyAgICB0aGlzLnRlc3RfbWVtYmVycygpOworfTsKKy8vQH0K
KworSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X3NlbGYgPSBmdW5jdGlvbigpCisvL0B7Cit7
CisgICAgdGVzdChmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRl
c3RzIFdlYklETCBhcyBvZiAyMDE1LTAxLTEzLgorCisgICAgICAgIC8vICJGb3IgZXZlcnkgaW50
ZXJmYWNlIHRoYXQgaXMgZXhwb3NlZCBpbiBhIGdpdmVuIEVDTUFTY3JpcHQgZ2xvYmFsCisgICAg
ICAgIC8vIGVudmlyb25tZW50IGFuZDoKKyAgICAgICAgLy8gKiBpcyBhIGNhbGxiYWNrIGludGVy
ZmFjZSB0aGF0IGhhcyBjb25zdGFudHMgZGVjbGFyZWQgb24gaXQsIG9yCisgICAgICAgIC8vICog
aXMgYSBub24tY2FsbGJhY2sgaW50ZXJmYWNlIHRoYXQgaXMgbm90IGRlY2xhcmVkIHdpdGggdGhl
CisgICAgICAgIC8vICAgW05vSW50ZXJmYWNlT2JqZWN0XSBleHRlbmRlZCBhdHRyaWJ1dGUsCisg
ICAgICAgIC8vIGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBNVVNUIGV4aXN0IG9uIHRoZSBFQ01B
U2NyaXB0IGdsb2JhbCBvYmplY3QuCisgICAgICAgIC8vIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0
eSBpcyB0aGUgaWRlbnRpZmllciBvZiB0aGUgaW50ZXJmYWNlLCBhbmQgaXRzCisgICAgICAgIC8v
IHZhbHVlIGlzIGFuIG9iamVjdCBjYWxsZWQgdGhlIGludGVyZmFjZSBvYmplY3QuCisgICAgICAg
IC8vIFRoZSBwcm9wZXJ0eSBoYXMgdGhlIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IHRydWUs
CisgICAgICAgIC8vIFtbRW51bWVyYWJsZV1dOiBmYWxzZSwgW1tDb25maWd1cmFibGVdXTogdHJ1
ZSB9LiIKKyAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSAmJiAhdGhpcy5oYXNfY29uc3Rh
bnRzKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRP
RE86IFNob3VsZCB3ZSB0ZXN0IGhlcmUgdGhhdCB0aGUgcHJvcGVydHkgaXMgYWN0dWFsbHkgd3Jp
dGFibGUKKyAgICAgICAgLy8gZXRjLiwgb3IgdHJ1c3QgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
PworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAic2VsZiBkb2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsg
Zm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOworICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZiwgdGhpcy5uYW1lKTsKKyAgICAgICAgYXNzZXJ0X2Zh
bHNlKCJnZXQiIGluIGRlc2MsICJzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlz
Lm5hbWUpICsgIiBoYXMgZ2V0dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBk
ZXNjLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgaGFz
IHNldHRlciIpOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLndyaXRhYmxlLCAic2VsZidzIHBy
b3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgaXMgbm90IHdyaXRhYmxlIik7
CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmVudW1lcmFibGUsICJzZWxmJ3MgcHJvcGVydHkg
IiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpICsgIiBpcyBlbnVtZXJhYmxlIik7CisgICAgICAg
IGFzc2VydF90cnVlKGRlc2MuY29uZmlndXJhYmxlLCAic2VsZidzIHByb3BlcnR5ICIgKyBmb3Jt
YXRfdmFsdWUodGhpcy5uYW1lKSArICIgaXMgbm90IGNvbmZpZ3VyYWJsZSIpOworCisgICAgICAg
IGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsKKyAgICAgICAgICAgIC8vICJUaGUgaW50ZXJuYWwg
W1tQcm90b3R5cGVdXSBwcm9wZXJ0eSBvZiBhbiBpbnRlcmZhY2Ugb2JqZWN0IGZvcgorICAgICAg
ICAgICAgLy8gYSBjYWxsYmFjayBpbnRlcmZhY2UgTVVTVCBiZSB0aGUgT2JqZWN0LnByb3RvdHlw
ZSBvYmplY3QuIgorICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3QuZ2V0UHJvdG90eXBl
T2Yoc2VsZlt0aGlzLm5hbWVdKSwgT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgInByb3RvdHlwZSBvZiBzZWxmJ3MgcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0
aGlzLm5hbWUpICsgIiBpcyBub3QgT2JqZWN0LnByb3RvdHlwZSIpOworCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyAiVGhlIGludGVyZmFjZSBvYmplY3QgZm9y
IGEgZ2l2ZW4gbm9uLWNhbGxiYWNrIGludGVyZmFjZSBpcyBhCisgICAgICAgIC8vIGZ1bmN0aW9u
IG9iamVjdC4iCisgICAgICAgIC8vICJJZiBhbiBvYmplY3QgaXMgZGVmaW5lZCB0byBiZSBhIGZ1
bmN0aW9uIG9iamVjdCwgdGhlbiBpdCBoYXMKKyAgICAgICAgLy8gY2hhcmFjdGVyaXN0aWNzIGFz
IGZvbGxvd3M6IgorCisgICAgICAgIC8vIEl0cyBbW1Byb3RvdHlwZV1dIGludGVybmFsIHByb3Bl
cnR5IGlzIG90aGVyd2lzZSBzcGVjaWZpZWQgKHNlZQorICAgICAgICAvLyBiZWxvdykuCisKKyAg
ICAgICAgLy8gIiogSXRzIFtbR2V0XV0gaW50ZXJuYWwgcHJvcGVydHkgaXMgc2V0IGFzIGRlc2Ny
aWJlZCBpbiBFQ01BLTI2MgorICAgICAgICAvLyAgICBzZWN0aW9uIDkuMS44LiIKKyAgICAgICAg
Ly8gTm90IG11Y2ggdG8gdGVzdCBmb3IgdGhpcy4KKworICAgICAgICAvLyAiKiBJdHMgW1tDb25z
dHJ1Y3RdXSBpbnRlcm5hbCBwcm9wZXJ0eSBpcyBzZXQgYXMgZGVzY3JpYmVkIGluCisgICAgICAg
IC8vICAgIEVDTUEtMjYyIHNlY3Rpb24gMTkuMi4yLjMuIgorICAgICAgICAvLyBUZXN0ZWQgYmVs
b3cgaWYgbm8gY29uc3RydWN0b3IgaXMgZGVmaW5lZC4gIFRPRE86IHRlc3QgY29uc3RydWN0b3Jz
CisgICAgICAgIC8vIGlmIGRlZmluZWQuCisKKyAgICAgICAgLy8gIiogSXRzIEBAaGFzSW5zdGFu
Y2UgcHJvcGVydHkgaXMgc2V0IGFzIGRlc2NyaWJlZCBpbiBFQ01BLTI2MgorICAgICAgICAvLyAg
ICBzZWN0aW9uIDE5LjIuMy44LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4iCisgICAgICAg
IC8vIFRPRE8KKworICAgICAgICAvLyBFUzYgKHJldiAzMCkgMTkuMS4zLjY6CisgICAgICAgIC8v
ICJFbHNlLCBpZiBPIGhhcyBhIFtbQ2FsbF1dIGludGVybmFsIG1ldGhvZCwgdGhlbiBsZXQgYnVp
bHRpblRhZyBiZQorICAgICAgICAvLyAiRnVuY3Rpb24iLiIKKyAgICAgICAgYXNzZXJ0X2NsYXNz
X3N0cmluZyhzZWxmW3RoaXMubmFtZV0sICJGdW5jdGlvbiIsICJjbGFzcyBzdHJpbmcgb2YgIiAr
IHRoaXMubmFtZSk7CisKKyAgICAgICAgLy8gIlRoZSBbW1Byb3RvdHlwZV1dIGludGVybmFsIHBy
b3BlcnR5IG9mIGFuIGludGVyZmFjZSBvYmplY3QgZm9yIGEKKyAgICAgICAgLy8gbm9uLWNhbGxi
YWNrIGludGVyZmFjZSBpcyBkZXRlcm1pbmVkIGFzIGZvbGxvd3M6IgorICAgICAgICB2YXIgcHJv
dG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHNlbGZbdGhpcy5uYW1lXSk7CisgICAgICAg
IGlmICh0aGlzLmJhc2UpIHsKKyAgICAgICAgICAgIC8vICIqIElmIHRoZSBpbnRlcmZhY2UgaW5o
ZXJpdHMgZnJvbSBzb21lIG90aGVyIGludGVyZmFjZSwgdGhlCisgICAgICAgICAgICAvLyAgICB2
YWx1ZSBvZiBbW1Byb3RvdHlwZV1dIGlzIHRoZSBpbnRlcmZhY2Ugb2JqZWN0IGZvciB0aGF0IG90
aGVyCisgICAgICAgICAgICAvLyAgICBpbnRlcmZhY2UuIgorICAgICAgICAgICAgdmFyIGhhc19p
bnRlcmZhY2Vfb2JqZWN0ID0KKyAgICAgICAgICAgICAgICAhdGhpcy5hcnJheQorICAgICAgICAg
ICAgICAgICAgICAgLm1lbWJlcnNbdGhpcy5iYXNlXQorICAgICAgICAgICAgICAgICAgICAgLmhh
c19leHRlbmRlZF9hdHRyaWJ1dGUoIk5vSW50ZXJmYWNlT2JqZWN0Iik7CisgICAgICAgICAgICBp
ZiAoaGFzX2ludGVyZmFjZV9vYmplY3QpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfb3duX3By
b3BlcnR5KHNlbGYsIHRoaXMuYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdzaG91bGQgaW5oZXJpdCBmcm9tICcgKyB0aGlzLmJhc2UgKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJywgYnV0IHNlbGYgaGFzIG5vIHN1Y2ggcHJvcGVydHknKTsK
KyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHByb3RvdHlwZSwgc2VsZlt0aGlzLmJhc2Vd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3RvdHlwZSBvZiAnICsgdGhpcy5u
YW1lICsgJyBpcyBub3QgJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJh
c2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gIklm
IHRoZSBpbnRlcmZhY2UgZG9lc24ndCBpbmhlcml0IGZyb20gYW55IG90aGVyIGludGVyZmFjZSwg
dGhlCisgICAgICAgICAgICAvLyB2YWx1ZSBvZiBbW1Byb3RvdHlwZV1dIGlzICVGdW5jdGlvblBy
b3RvdHlwZSUgKFtFQ01BLTI2Ml0sCisgICAgICAgICAgICAvLyBzZWN0aW9uIDYuMS43LjQpLiIK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocHJvdG90eXBlLCBGdW5jdGlvbi5wcm90b3R5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm90b3R5cGUgb2Ygc2VsZidzIHByb3BlcnR5
ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSArICIgaXMgbm90IEZ1bmN0aW9uLnByb3RvdHlw
ZSIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1
dGUoIkNvbnN0cnVjdG9yIikpIHsKKyAgICAgICAgICAgIC8vICJUaGUgaW50ZXJuYWwgW1tDYWxs
XV0gbWV0aG9kIG9mIHRoZSBpbnRlcmZhY2Ugb2JqZWN0IGJlaGF2ZXMgYXMKKyAgICAgICAgICAg
IC8vIGZvbGxvd3MgLiAuIC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAiSWYgSSB3
YXMgbm90IGRlY2xhcmVkIHdpdGggYSBbQ29uc3RydWN0b3JdIGV4dGVuZGVkIGF0dHJpYnV0ZSwK
KyAgICAgICAgICAgIC8vIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IuIgorICAgICAgICAgICAgYXNz
ZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yKCksIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
IHNlbGZbdGhpcy5uYW1lXSgpOworICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCAiaW50ZXJmYWNl
IG9iamVjdCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIHdoZW4gY2FsbGVkIGFzIGEgZnVuY3Rpb24i
KTsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICBuZXcgc2VsZlt0aGlzLm5hbWVdKCk7CisgICAgICAgICAgICB9
LmJpbmQodGhpcyksICJpbnRlcmZhY2Ugb2JqZWN0IGRpZG4ndCB0aHJvdyBUeXBlRXJyb3Igd2hl
biBjYWxsZWQgYXMgYSBjb25zdHJ1Y3RvciIpOworICAgICAgICB9CisgICAgfS5iaW5kKHRoaXMp
LCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGlu
dGVyZmFjZSBvYmplY3QiKTsKKworICAgIGlmICghdGhpcy5pc19jYWxsYmFjaygpKSB7CisgICAg
ICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3Rz
IFdlYklETCBhcyBvZiAyMDE0LTEwLTI1LgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9oZXljYW0u
Z2l0aHViLmlvL3dlYmlkbC8jZXMtaW50ZXJmYWNlLWNhbGwKKworICAgICAgICAgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUo
dGhpcy5uYW1lKSk7CisKKyAgICAgICAgICAgIC8vICJJbnRlcmZhY2Ugb2JqZWN0cyBmb3Igbm9u
LWNhbGxiYWNrIGludGVyZmFjZXMgTVVTVCBoYXZlIGEKKyAgICAgICAgICAgIC8vIHByb3BlcnR5
IG5hbWVkIOKAnGxlbmd0aOKAnSB3aXRoIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNl
LAorICAgICAgICAgICAgLy8gW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0NvbmZpZ3VyYWJsZV1d
OiB0cnVlIH0gd2hvc2UgdmFsdWUgaXMKKyAgICAgICAgICAgIC8vIGEgTnVtYmVyLiIKKyAgICAg
ICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAibGVuZ3RoIik7Cisg
ICAgICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2Vs
Zlt0aGlzLm5hbWVdLCAibGVuZ3RoIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoImdldCIg
aW4gZGVzYywgdGhpcy5uYW1lICsgIi5sZW5ndGggaGFzIGdldHRlciIpOworICAgICAgICAgICAg
YXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIubGVuZ3RoIGhhcyBzZXR0
ZXIiKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLndyaXRhYmxlLCB0aGlzLm5hbWUg
KyAiLmxlbmd0aCBpcyB3cml0YWJsZSIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mu
ZW51bWVyYWJsZSwgdGhpcy5uYW1lICsgIi5sZW5ndGggaXMgZW51bWVyYWJsZSIpOworICAgICAg
ICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFtZSArICIubGVuZ3Ro
IGlzIG5vdCBjb25maWd1cmFibGUiKTsKKworICAgICAgICAgICAgdmFyIGNvbnN0cnVjdG9ycyA9
IHRoaXMuZXh0QXR0cnMKKyAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uKGF0dHIpIHsg
cmV0dXJuIGF0dHIubmFtZSA9PSAiQ29uc3RydWN0b3IiOyB9KTsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZF9sZW5ndGggPSBtaW5PdmVybG9hZExlbmd0aChjb25zdHJ1Y3RvcnMpOworICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW3RoaXMubmFtZV0ubGVuZ3RoLCBleHBlY3RlZF9sZW5n
dGgsICJ3cm9uZyB2YWx1ZSBmb3IgIiArIHRoaXMubmFtZSArICIubGVuZ3RoIik7CisgICAgICAg
IH0uYmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2Ugb2JqZWN0IGxlbmd0aCIpOwor
ICAgIH0KKworICAgIGlmICghdGhpcy5pc19jYWxsYmFjaygpIHx8IHRoaXMuaGFzX2NvbnN0YW50
cygpKSB7CisgICAgICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvLyBUaGlzIGZ1
bmN0aW9uIHRlc3RzIFdlYklETCBhcyBvZiAyMDE1LTExLTE3LgorICAgICAgICAgICAgLy8gaHR0
cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaW50ZXJmYWNlLW9iamVjdAorCisgICAgICAg
ICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYsIHRoaXMubmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZv
cm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKworICAgICAgICAgICAgLy8gIkFsbCBpbnRlcmZhY2Ug
b2JqZWN0cyBtdXN0IGhhdmUgYSBwcm9wZXJ0eSBuYW1lZCDigJxuYW1l4oCdIHdpdGgKKyAgICAg
ICAgICAgIC8vIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxlXV06IGZhbHNlLCBbW0VudW1lcmFibGVd
XTogZmFsc2UsCisgICAgICAgICAgICAvLyBbW0NvbmZpZ3VyYWJsZV1dOiB0cnVlIH0gd2hvc2Ug
dmFsdWUgaXMgdGhlIGlkZW50aWZpZXIgb2YgdGhlCisgICAgICAgICAgICAvLyBjb3JyZXNwb25k
aW5nIGludGVyZmFjZS4iCisKKyAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0
aGlzLm5hbWVdLCAibmFtZSIpOworICAgICAgICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKHNlbGZbdGhpcy5uYW1lXSwgIm5hbWUiKTsKKyAgICAgICAgICAg
IGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLm5hbWUgaGFzIGdldHRl
ciIpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSAr
ICIubmFtZSBoYXMgc2V0dGVyIik7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0
YWJsZSwgdGhpcy5uYW1lICsgIi5uYW1lIGlzIHdyaXRhYmxlIik7CisgICAgICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAiLm5hbWUgaXMgZW51bWVyYWJs
ZSIpOworICAgICAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5jb25maWd1cmFibGUsIHRoaXMubmFt
ZSArICIubmFtZSBpcyBub3QgY29uZmlndXJhYmxlIik7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHNlbGZbdGhpcy5uYW1lXS5uYW1lLCB0aGlzLm5hbWUsICJ3cm9uZyB2YWx1ZSBmb3IgIiAr
IHRoaXMubmFtZSArICIubmFtZSIpOworICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSAr
ICIgaW50ZXJmYWNlIG9iamVjdCBuYW1lIik7CisgICAgfQorCisgICAgLy8gVE9ETzogVGVzdCBu
YW1lZCBjb25zdHJ1Y3RvcnMgaWYgSSBmaW5kIGFueSBpbnRlcmZhY2VzIHRoYXQgaGF2ZSB0aGVt
LgorCisgICAgdGVzdChmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBUaGlzIGZ1bmN0aW9u
IHRlc3RzIFdlYklETCBhcyBvZiAyMDE1LTAxLTIxLgorICAgICAgICAvLyBodHRwczovL2hleWNh
bS5naXRodWIuaW8vd2ViaWRsLyNpbnRlcmZhY2Utb2JqZWN0CisKKyAgICAgICAgaWYgKHRoaXMu
aXNfY2FsbGJhY2soKSAmJiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhp
cy5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUg
b3duIHByb3BlcnR5ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisKKyAgICAgICAgaWYg
KHRoaXMuaXNfY2FsbGJhY2soKSkgeworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5
cGUiIGluIHNlbGZbdGhpcy5uYW1lXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5h
bWUgKyAnIHNob3VsZCBub3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyAiQW4gaW50ZXJmYWNlIG9iamVj
dCBmb3IgYSBub24tY2FsbGJhY2sgaW50ZXJmYWNlIG11c3QgaGF2ZSBhCisgICAgICAgIC8vIHBy
b3BlcnR5IG5hbWVkIOKAnHByb3RvdHlwZeKAnSB3aXRoIGF0dHJpYnV0ZXMgeyBbW1dyaXRhYmxl
XV06IGZhbHNlLAorICAgICAgICAvLyBbW0VudW1lcmFibGVdXTogZmFsc2UsIFtbQ29uZmlndXJh
YmxlXV06IGZhbHNlIH0gd2hvc2UgdmFsdWUgaXMgYW4KKyAgICAgICAgLy8gb2JqZWN0IGNhbGxl
ZCB0aGUgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QuIFRoaXMgb2JqZWN0IGhhcworICAgICAg
ICAvLyBwcm9wZXJ0aWVzIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgcmVndWxhciBhdHRyaWJ1dGVz
IGFuZCByZWd1bGFyCisgICAgICAgIC8vIG9wZXJhdGlvbnMgZGVmaW5lZCBvbiB0aGUgaW50ZXJm
YWNlLCBhbmQgaXMgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsCisgICAgICAgIC8vIGluIHNlY3Rp
b24gNC41LjQgYmVsb3cuIgorICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5u
YW1lXSwgInByb3RvdHlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFj
ZSAiJyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5
cGUiJyk7CisgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJn
ZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlIGhhcyBnZXR0ZXIiKTsKKyAgICAg
ICAgYXNzZXJ0X2ZhbHNlKCJzZXQiIGluIGRlc2MsIHRoaXMubmFtZSArICIucHJvdG90eXBlIGhh
cyBzZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsIHRoaXMubmFt
ZSArICIucHJvdG90eXBlIGlzIHdyaXRhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNj
LmVudW1lcmFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlIGlzIGVudW1lcmFibGUiKTsKKyAg
ICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3Rv
dHlwZSBpcyBjb25maWd1cmFibGUiKTsKKworICAgICAgICAvLyBOZXh0LCB0ZXN0IHRoYXQgdGhl
IFtbUHJvdG90eXBlXV0gb2YgdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0CisgICAgICAg
IC8vIGlzIGNvcnJlY3QuIChUaGlzIGlzIG1hZGUgc29tZXdoYXQgZGlmZmljdWx0IGJ5IHRoZSBl
eGlzdGVuY2Ugb2YKKyAgICAgICAgLy8gW05vSW50ZXJmYWNlT2JqZWN0XS4pCisgICAgICAgIC8v
IFRPRE86IEFyeWVoIHRoaW5rcyB0aGVyZSdzIGF0IGxlYXN0IG90aGVyIHBsYWNlIGluIHRoaXMg
ZmlsZSB3aGVyZQorICAgICAgICAvLyAgICAgICB3ZSB0cnkgdG8gZmlndXJlIG91dCBpZiBhbiBp
bnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBpcworICAgICAgICAvLyAgICAgICBjb3JyZWN0LiBD
b25zb2xpZGF0ZSB0aGF0IGNvZGUuCisKKyAgICAgICAgLy8gIlRoZSBpbnRlcmZhY2UgcHJvdG90
eXBlIG9iamVjdCBmb3IgYSBnaXZlbiBpbnRlcmZhY2UgQSBtdXN0IGhhdmUgYW4KKyAgICAgICAg
Ly8gaW50ZXJuYWwgW1tQcm90b3R5cGVdXSBwcm9wZXJ0eSB3aG9zZSB2YWx1ZSBpcyByZXR1cm5l
ZCBmcm9tIHRoZQorICAgICAgICAvLyBmb2xsb3dpbmcgc3RlcHM6CisgICAgICAgIC8vICJJZiBB
IGlzIGRlY2xhcmVkIHdpdGggdGhlIFtHbG9iYWxdIG9yIFtQcmltYXJ5R2xvYmFsXSBleHRlbmRl
ZAorICAgICAgICAvLyBhdHRyaWJ1dGUsIGFuZCBBIHN1cHBvcnRzIG5hbWVkIHByb3BlcnRpZXMs
IHRoZW4gcmV0dXJuIHRoZSBuYW1lZAorICAgICAgICAvLyBwcm9wZXJ0aWVzIG9iamVjdCBmb3Ig
QSwgYXMgZGVmaW5lZCBpbiBzZWN0aW9uIDQuNS41IGJlbG93LgorICAgICAgICAvLyAiT3RoZXJ3
aXNlLCBpZiBBIGlzIGRlY2xhcmVkIHRvIGluaGVyaXQgZnJvbSBhbm90aGVyIGludGVyZmFjZSwg
dGhlbgorICAgICAgICAvLyByZXR1cm4gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgb2JqZWN0IGZv
ciB0aGUgaW5oZXJpdGVkIGludGVyZmFjZS4KKyAgICAgICAgLy8gIk90aGVyd2lzZSwgaWYgQSBp
cyBkZWNsYXJlZCB3aXRoIHRoZSBbQXJyYXlDbGFzc10gZXh0ZW5kZWQKKyAgICAgICAgLy8gYXR0
cmlidXRlLCB0aGVuIHJldHVybiAlQXJyYXlQcm90b3R5cGUlIChbRUNNQS0yNjJdLCBzZWN0aW9u
CisgICAgICAgIC8vIDYuMS43LjQpLgorICAgICAgICAvLyAiT3RoZXJ3aXNlLCByZXR1cm4gJU9i
amVjdFByb3RvdHlwZSUgKFtFQ01BLTI2Ml0sIHNlY3Rpb24gNi4xLjcuNCkuCisgICAgICAgIC8v
IChbRUNNQS0yNjJdLCBzZWN0aW9uIDE1LjIuNCkuCisgICAgICAgIGlmICh0aGlzLm5hbWUgPT09
ICJXaW5kb3ciKSB7CisgICAgICAgICAgICBhc3NlcnRfY2xhc3Nfc3RyaW5nKE9iamVjdC5nZXRQ
cm90b3R5cGVPZihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1dpbmRvd1Byb3BlcnRpZXMnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQ2xhc3MgbmFtZSBmb3IgcHJvdG90eXBlIG9mIFdpbmRvdycgKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnLnByb3RvdHlwZSBpcyBub3QgIldpbmRvd1Byb3Bl
cnRpZXMiJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXIgaW5oZXJpdF9pbnRl
cmZhY2UsIGluaGVyaXRfaW50ZXJmYWNlX2hhc19pbnRlcmZhY2Vfb2JqZWN0OworICAgICAgICAg
ICAgaWYgKHRoaXMuYmFzZSkgeworICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlID0g
dGhpcy5iYXNlOworICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2hhc19pbnRlcmZh
Y2Vfb2JqZWN0ID0KKyAgICAgICAgICAgICAgICAgICAgIXRoaXMuYXJyYXkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAubWVtYmVyc1tpbmhlcml0X2ludGVyZmFjZV0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAuaGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTm9JbnRlcmZhY2VPYmplY3QiKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCdBcnJh
eUNsYXNzJykpIHsKKyAgICAgICAgICAgICAgICBpbmhlcml0X2ludGVyZmFjZSA9ICdBcnJheSc7
CisgICAgICAgICAgICAgICAgaW5oZXJpdF9pbnRlcmZhY2VfaGFzX2ludGVyZmFjZV9vYmplY3Qg
PSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbmhlcml0X2lu
dGVyZmFjZSA9ICdPYmplY3QnOworICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlX2hh
c19pbnRlcmZhY2Vfb2JqZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChpbmhlcml0X2ludGVyZmFjZV9oYXNfaW50ZXJmYWNlX29iamVjdCkgeworICAgICAgICAgICAg
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgaW5oZXJpdF9pbnRlcmZhY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGluaGVyaXQgZnJvbSAnICsgaW5o
ZXJpdF9pbnRlcmZhY2UgKyAnLCBidXQgc2VsZiBoYXMgbm8gc3VjaCBwcm9wZXJ0eScpOworICAg
ICAgICAgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZltpbmhlcml0X2ludGVyZmFjZV0s
ICdwcm90b3R5cGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3Vs
ZCBpbmhlcml0IGZyb20gJyArIGluaGVyaXRfaW50ZXJmYWNlICsgJywgYnV0IHRoYXQgb2JqZWN0
IGhhcyBubyAicHJvdG90eXBlIiBwcm9wZXJ0eScpOworICAgICAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoT2JqZWN0LmdldFByb3RvdHlwZU9mKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZltpbmhlcml0X2ludGVyZmFjZV0ucHJv
dG90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb3RvdHlwZSBvZiAnICsg
dGhpcy5uYW1lICsgJy5wcm90b3R5cGUgaXMgbm90ICcgKyBpbmhlcml0X2ludGVyZmFjZSArICcu
cHJvdG90eXBlJyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFdl
IGNhbid0IHRlc3QgdGhhdCB3ZSBnZXQgdGhlIGNvcnJlY3Qgb2JqZWN0LCBiZWNhdXNlIHRoaXMg
aXMgdGhlCisgICAgICAgICAgICAgICAgLy8gb25seSB3YXkgdG8gZ2V0IG91ciBoYW5kcyBvbiBp
dC4gV2Ugb25seSB0ZXN0IHRoYXQgaXRzIGNsYXNzCisgICAgICAgICAgICAgICAgLy8gc3RyaW5n
LCBhdCBsZWFzdCwgaXMgY29ycmVjdC4KKyAgICAgICAgICAgICAgICBhc3NlcnRfY2xhc3Nfc3Ry
aW5nKE9iamVjdC5nZXRQcm90b3R5cGVPZihzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRfaW50ZXJmYWNlICsgJ1By
b3RvdHlwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2xhc3MgbmFt
ZSBmb3IgcHJvdG90eXBlIG9mICcgKyB0aGlzLm5hbWUgKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJy5wcm90b3R5cGUgaXMgbm90ICInICsgaW5oZXJpdF9pbnRlcmZhY2Ug
KyAnUHJvdG90eXBlIicpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8g
IlRoZSBjbGFzcyBzdHJpbmcgb2YgYW4gaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgaXMgdGhl
CisgICAgICAgIC8vIGNvbmNhdGVuYXRpb24gb2YgdGhlIGludGVyZmFjZeKAmXMgaWRlbnRpZmll
ciBhbmQgdGhlIHN0cmluZworICAgICAgICAvLyDigJxQcm90b3R5cGXigJ0uIgorICAgICAgICBh
c3NlcnRfY2xhc3Nfc3RyaW5nKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsIHRoaXMubmFtZSAr
ICJQcm90b3R5cGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbGFzcyBzdHJpbmcg
b2YgIiArIHRoaXMubmFtZSArICIucHJvdG90eXBlIik7CisgICAgICAgIC8vIFN0cmluZygpIHNo
b3VsZCBlbmQgdXAgY2FsbGluZyB7fS50b1N0cmluZyBpZiBub3RoaW5nIGRlZmluZXMgYQorICAg
ICAgICAvLyBzdHJpbmdpZmllci4KKyAgICAgICAgaWYgKCF0aGlzLmhhc19zdHJpbmdpZmllcigp
KSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKFN0cmluZyhzZWxmW3RoaXMubmFtZV0ucHJv
dG90eXBlKSwgIltvYmplY3QgIiArIHRoaXMubmFtZSArICJQcm90b3R5cGVdIiwKKyAgICAgICAg
ICAgICAgICAgICAgIlN0cmluZygiICsgdGhpcy5uYW1lICsgIi5wcm90b3R5cGUpIik7CisgICAg
ICAgIH0KKyAgICB9LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgaW50ZXJmYWNlOiBleGlzdGVu
Y2UgYW5kIHByb3BlcnRpZXMgb2YgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QiKTsKKworICAg
IHRlc3QoZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSAm
JiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIg
KyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisKKyAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJh
Y2soKSkgeworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZbdGhp
cy5uYW1lXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnIHNob3VsZCBu
b3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwg
InByb3RvdHlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyAr
IHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7
CisKKyAgICAgICAgLy8gIklmIHRoZSBbTm9JbnRlcmZhY2VPYmplY3RdIGV4dGVuZGVkIGF0dHJp
YnV0ZSB3YXMgbm90IHNwZWNpZmllZCBvbgorICAgICAgICAvLyB0aGUgaW50ZXJmYWNlLCB0aGVu
IHRoZSBpbnRlcmZhY2UgcHJvdG90eXBlIG9iamVjdCBtdXN0IGFsc28gaGF2ZSBhCisgICAgICAg
IC8vIHByb3BlcnR5IG5hbWVkIOKAnGNvbnN0cnVjdG9y4oCdIHdpdGggYXR0cmlidXRlcyB7IFtb
V3JpdGFibGVdXTogdHJ1ZSwKKyAgICAgICAgLy8gW1tFbnVtZXJhYmxlXV06IGZhbHNlLCBbW0Nv
bmZpZ3VyYWJsZV1dOiB0cnVlIH0gd2hvc2UgdmFsdWUgaXMgYQorICAgICAgICAvLyByZWZlcmVu
Y2UgdG8gdGhlIGludGVyZmFjZSBvYmplY3QgZm9yIHRoZSBpbnRlcmZhY2UuIgorICAgICAgICBh
c3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsICJjb25zdHJ1Y3Rv
ciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYW1lICsgJy5wcm90b3R5cGUg
ZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgImNvbnN0cnVjdG9yIicpOworICAgICAgICB2YXIg
ZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLnBy
b3RvdHlwZSwgImNvbnN0cnVjdG9yIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBk
ZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3RvciBoYXMgZ2V0dGVyIik7Cisg
ICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciBoYXMgc2V0dGVyIik7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2Mud3Jp
dGFibGUsIHRoaXMubmFtZSArICIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIG5vdCB3cml0YWJs
ZSIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5lbnVtZXJhYmxlLCB0aGlzLm5hbWUgKyAi
LnByb3RvdHlwZS5jb25zdHJ1Y3RvciBpcyBlbnVtZXJhYmxlIik7CisgICAgICAgIGFzc2VydF90
cnVlKGRlc2MuY29uZmlndXJhYmxlLCB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciBpbiBub3QgY29uZmlndXJhYmxlIik7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZlt0aGlz
Lm5hbWVdLnByb3RvdHlwZS5jb25zdHJ1Y3Rvciwgc2VsZlt0aGlzLm5hbWVdLAorICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMubmFtZSArICcucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIG5vdCB0
aGUgc2FtZSBvYmplY3QgYXMgJyArIHRoaXMubmFtZSk7CisgICAgfS5iaW5kKHRoaXMpLCB0aGlz
Lm5hbWUgKyAnIGludGVyZmFjZTogZXhpc3RlbmNlIGFuZCBwcm9wZXJ0aWVzIG9mIGludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0XCdzICJjb25zdHJ1Y3RvciIgcHJvcGVydHknKTsKK307CisKKy8v
QH0KK0lkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9tZW1iZXJfY29uc3QgPSBmdW5jdGlvbiht
ZW1iZXIpCisvL0B7Cit7CisgICAgaWYgKCF0aGlzLmhhc19jb25zdGFudHMoKSkgeworICAgICAg
ICB0aHJvdyAiSW50ZXJuYWwgZXJyb3I6IHRlc3RfbWVtYmVyX2NvbnN0IGNhbGxlZCB3aXRob3V0
IGFueSBjb25zdGFudHMiOworICAgIH0KKworICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1h
dF92YWx1ZSh0aGlzLm5hbWUpKTsKKworICAgICAgICAvLyAiRm9yIGVhY2ggY29uc3RhbnQgZGVm
aW5lZCBvbiBhbiBpbnRlcmZhY2UgQSwgdGhlcmUgbXVzdCBiZQorICAgICAgICAvLyBhIGNvcnJl
c3BvbmRpbmcgcHJvcGVydHkgb24gdGhlIGludGVyZmFjZSBvYmplY3QsIGlmIGl0CisgICAgICAg
IC8vIGV4aXN0cy4iCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVd
LCBtZW1iZXIubmFtZSk7CisgICAgICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGlz
IHRoYXQgd2hpY2ggaXMgb2J0YWluZWQgYnkKKyAgICAgICAgLy8gY29udmVydGluZyB0aGUgY29u
c3RhbnTigJlzIElETCB2YWx1ZSB0byBhbiBFQ01BU2NyaXB0CisgICAgICAgIC8vIHZhbHVlLiIK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyhzZWxmW3RoaXMubmFtZV1bbWVtYmVyLm5hbWVdLCBjb25z
dFZhbHVlKG1lbWJlci52YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgInByb3BlcnR5IGhh
cyB3cm9uZyB2YWx1ZSIpOworICAgICAgICAvLyAiVGhlIHByb3BlcnR5IGhhcyBhdHRyaWJ1dGVz
IHsgW1tXcml0YWJsZV1dOiBmYWxzZSwKKyAgICAgICAgLy8gW1tFbnVtZXJhYmxlXV06IHRydWUs
IFtbQ29uZmlndXJhYmxlXV06IGZhbHNlIH0uIgorICAgICAgICB2YXIgZGVzYyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZlt0aGlzLm5hbWVdLCBtZW1iZXIubmFtZSk7Cisg
ICAgICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBpbiBkZXNjLCAicHJvcGVydHkgaGFzIGdldHRlciIp
OworICAgICAgICBhc3NlcnRfZmFsc2UoInNldCIgaW4gZGVzYywgInByb3BlcnR5IGhhcyBzZXR0
ZXIiKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGRlc2Mud3JpdGFibGUsICJwcm9wZXJ0eSBpcyB3
cml0YWJsZSIpOworICAgICAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0
eSBpcyBub3QgZW51bWVyYWJsZSIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy5jb25maWd1
cmFibGUsICJwcm9wZXJ0eSBpcyBjb25maWd1cmFibGUiKTsKKyAgICB9LmJpbmQodGhpcyksIHRo
aXMubmFtZSArICIgaW50ZXJmYWNlOiBjb25zdGFudCAiICsgbWVtYmVyLm5hbWUgKyAiIG9uIGlu
dGVyZmFjZSBvYmplY3QiKTsKKworICAgIC8vICJJbiBhZGRpdGlvbiwgYSBwcm9wZXJ0eSB3aXRo
IHRoZSBzYW1lIGNoYXJhY3RlcmlzdGljcyBtdXN0CisgICAgLy8gZXhpc3Qgb24gdGhlIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0LiIKKyAgICB0ZXN0KGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICIgKyBmb3JtYXRf
dmFsdWUodGhpcy5uYW1lKSk7CisKKyAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSkgewor
ICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZbdGhpcy5uYW1lXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnIHNob3VsZCBub3QgaGF2ZSBh
ICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgInByb3RvdHlw
ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFt
ZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CisKKyAgICAg
ICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0ucHJvdG90eXBlLCBtZW1iZXIu
bmFtZSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZVtt
ZW1iZXIubmFtZV0sIGNvbnN0VmFsdWUobWVtYmVyLnZhbHVlKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAicHJvcGVydHkgaGFzIHdyb25nIHZhbHVlIik7CisgICAgICAgIHZhciBkZXNjID0gT2Jq
ZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzZWxmW3RoaXMubmFtZV0sIG1lbWJlci5uYW1l
KTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKCJnZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBoYXMgZ2V0
dGVyIik7CisgICAgICAgIGFzc2VydF9mYWxzZSgic2V0IiBpbiBkZXNjLCAicHJvcGVydHkgaGFz
IHNldHRlciIpOworICAgICAgICBhc3NlcnRfZmFsc2UoZGVzYy53cml0YWJsZSwgInByb3BlcnR5
IGlzIHdyaXRhYmxlIik7CisgICAgICAgIGFzc2VydF90cnVlKGRlc2MuZW51bWVyYWJsZSwgInBy
b3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlIik7CisgICAgICAgIGFzc2VydF9mYWxzZShkZXNjLmNv
bmZpZ3VyYWJsZSwgInByb3BlcnR5IGlzIGNvbmZpZ3VyYWJsZSIpOworICAgIH0uYmluZCh0aGlz
KSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6IGNvbnN0YW50ICIgKyBtZW1iZXIubmFtZSArICIg
b24gaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QiKTsKK307CisKKworLy9AfQorSWRsSW50ZXJm
YWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9hdHRyaWJ1dGUgPSBmdW5jdGlvbihtZW1iZXIpCisv
L0B7Cit7CisgICAgdGVzdChmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5pc19j
YWxsYmFjaygpICYmICF0aGlzLmhhc19jb25zdGFudHMoKSkgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmLCB0aGlzLm5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBub3QgaGF2ZSBvd24g
cHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAgICAgYXNzZXJ0X293
bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0sICJwcm90b3R5cGUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdpbnRlcmZhY2UgIicgKyB0aGlzLm5hbWUgKyAnIiBkb2VzIG5vdCBoYXZl
IG93biBwcm9wZXJ0eSAicHJvdG90eXBlIicpOworCisgICAgICAgIGlmIChtZW1iZXJbInN0YXRp
YyJdKSB7CisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwg
bWVtYmVyLm5hbWUsCisgICAgICAgICAgICAgICAgIlRoZSBpbnRlcmZhY2Ugb2JqZWN0IG11c3Qg
aGF2ZSBhIHByb3BlcnR5ICIgKworICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIu
bmFtZSkpOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNfZ2xvYmFsKCkpIHsKKyAgICAgICAg
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgbWVtYmVyLm5hbWUsCisgICAgICAgICAgICAg
ICAgIlRoZSBnbG9iYWwgb2JqZWN0IG11c3QgaGF2ZSBhIHByb3BlcnR5ICIgKworICAgICAgICAg
ICAgICAgIGZvcm1hdF92YWx1ZShtZW1iZXIubmFtZSkpOworICAgICAgICAgICAgYXNzZXJ0X2Zh
bHNlKG1lbWJlci5uYW1lIGluIHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUsCisgICAgICAgICAg
ICAgICAgIlRoZSBwcm90b3R5cGUgb2JqZWN0IG11c3Qgbm90IGhhdmUgYSBwcm9wZXJ0eSAiICsK
KyAgICAgICAgICAgICAgICBmb3JtYXRfdmFsdWUobWVtYmVyLm5hbWUpKTsKKworICAgICAgICAg
ICAgdmFyIGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZiwgbWVt
YmVyLm5hbWUpLmdldDsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mKGdldHRlciks
ICJmdW5jdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF92YWx1ZShtZW1i
ZXIubmFtZSkgKyAiIG11c3QgaGF2ZSBhIGdldHRlciIpOworCisgICAgICAgICAgICAvLyBUcnkv
Y2F0Y2ggYXJvdW5kIHRoZSBnZXQgaGVyZSwgc2luY2UgaXQgY2FuIGxlZ2l0aW1hdGVseSB0aHJv
dy4KKyAgICAgICAgICAgIC8vIElmIGl0IGRvZXMsIHdlIG9idmlvdXNseSBjYW4ndCBjaGVjayBm
b3IgZXF1YWxpdHkgd2l0aCBkaXJlY3QKKyAgICAgICAgICAgIC8vIGludm9jYXRpb24gb2YgdGhl
IGdldHRlci4KKyAgICAgICAgICAgIHZhciBnb3RWYWx1ZTsKKyAgICAgICAgICAgIHZhciBwcm9w
VmFsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBwcm9wVmFsID0gc2VsZltt
ZW1iZXIubmFtZV07CisgICAgICAgICAgICAgICAgZ290VmFsdWUgPSB0cnVlOworICAgICAgICAg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgICAgIGdvdFZhbHVlID0gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoZ290VmFsdWUpIHsKKyAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKHByb3BWYWwsIGdldHRlci5jYWxsKHVuZGVmaW5lZCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiR2V0cyBvbiBhIGdsb2JhbCBzaG91bGQgbm90IHJlcXVpcmUg
YW4gZXhwbGljaXQgdGhpcyIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLmRv
X2ludGVyZmFjZV9hdHRyaWJ1dGVfYXNzZXJ0cyhzZWxmLCBtZW1iZXIpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUobWVtYmVyLm5hbWUgaW4gc2VsZlt0aGlzLm5h
bWVdLnByb3RvdHlwZSwKKyAgICAgICAgICAgICAgICAiVGhlIHByb3RvdHlwZSBvYmplY3QgbXVz
dCBoYXZlIGEgcHJvcGVydHkgIiArCisgICAgICAgICAgICAgICAgZm9ybWF0X3ZhbHVlKG1lbWJl
ci5uYW1lKSk7CisKKyAgICAgICAgICAgIGlmICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1
dGUoIkxlbmllbnRUaGlzIikpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGZbdGhpcy5u
YW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdOworICAgICAgICAgICAgICAgIH0uYmluZCh0aGlz
KSwgImdldHRpbmcgcHJvcGVydHkgb24gcHJvdG90eXBlIG9iamVjdCBtdXN0IHRocm93IFR5cGVF
cnJvciIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGVbbWVtYmVyLm5hbWVdLCB1bmRlZmluZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0dGluZyBwcm9wZXJ0eSBvbiBwcm90b3R5
cGUgb2JqZWN0IG11c3QgcmV0dXJuIHVuZGVmaW5lZCIpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdGhpcy5kb19pbnRlcmZhY2VfYXR0cmlidXRlX2Fzc2VydHMoc2VsZlt0aGlzLm5hbWVd
LnByb3RvdHlwZSwgbWVtYmVyKTsKKyAgICAgICAgfQorICAgIH0uYmluZCh0aGlzKSwgdGhpcy5u
YW1lICsgIiBpbnRlcmZhY2U6IGF0dHJpYnV0ZSAiICsgbWVtYmVyLm5hbWUpOworfTsKKworLy9A
fQorSWRsSW50ZXJmYWNlLnByb3RvdHlwZS50ZXN0X21lbWJlcl9vcGVyYXRpb24gPSBmdW5jdGlv
bihtZW1iZXIpCisvL0B7Cit7CisgICAgdmFyIGFfdGVzdCA9IGFzeW5jX3Rlc3QodGhpcy5uYW1l
ICsgIiBpbnRlcmZhY2U6IG9wZXJhdGlvbiAiICsgbWVtYmVyLm5hbWUgKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIoIiArIG1lbWJlci5hcmd1bWVudHMubWFwKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbihtKSB7cmV0dXJuIG0uaWRsVHlwZS5pZGxUeXBl
OyB9ICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIikiKTsKKyAgICBhX3Rlc3Quc3Rl
cChmdW5jdGlvbigpCisgICAgeworICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHRlc3RzIFdlYklE
TCBhcyBvZiAyMDE1LTEyLTI5LgorICAgICAgICAvLyBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNlcy1vcGVyYXRpb25zCisKKyAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2soKSAm
JiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKKyAgICAgICAgICAgIGFfdGVzdC5kb25lKCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KHNlbGYsIHRoaXMubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VsZiBk
b2VzIG5vdCBoYXZlIG93biBwcm9wZXJ0eSAiICsgZm9ybWF0X3ZhbHVlKHRoaXMubmFtZSkpOwor
CisgICAgICAgIGlmICh0aGlzLmlzX2NhbGxiYWNrKCkpIHsKKyAgICAgICAgICAgIGFzc2VydF9m
YWxzZSgicHJvdG90eXBlIiBpbiBzZWxmW3RoaXMubmFtZV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgdGhpcy5uYW1lICsgJyBzaG91bGQgbm90IGhhdmUgYSAicHJvdG90eXBlIiBwcm9wZXJ0
eScpOworICAgICAgICAgICAgYV90ZXN0LmRvbmUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAi
cHJvdG90eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJmYWNlICInICsg
dGhpcy5uYW1lICsgJyIgZG9lcyBub3QgaGF2ZSBvd24gcHJvcGVydHkgInByb3RvdHlwZSInKTsK
KworICAgICAgICAvLyAiRm9yIGVhY2ggdW5pcXVlIGlkZW50aWZpZXIgb2YgYW4gZXhwb3NlZCBv
cGVyYXRpb24gZGVmaW5lZCBvbiB0aGUKKyAgICAgICAgLy8gaW50ZXJmYWNlLCB0aGVyZSBtdXN0
IGV4aXN0IGEgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSwgdW5sZXNzIHRoZQorICAgICAgICAvLyBl
ZmZlY3RpdmUgb3ZlcmxvYWQgc2V0IGZvciB0aGF0IGlkZW50aWZpZXIgYW5kIG9wZXJhdGlvbiBh
bmQgd2l0aCBhbgorICAgICAgICAvLyBhcmd1bWVudCBjb3VudCBvZiAwIGhhcyBubyBlbnRyaWVz
LiIKKworICAgICAgICAvLyBUT0RPOiBDb25zaWRlciBbRXhwb3NlZF0uCisKKyAgICAgICAgLy8g
IlRoZSBsb2NhdGlvbiBvZiB0aGUgcHJvcGVydHkgaXMgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOiIK
KyAgICAgICAgdmFyIG1lbWJlckhvbGRlck9iamVjdDsKKyAgICAgICAgLy8gIiogSWYgdGhlIG9w
ZXJhdGlvbiBpcyBzdGF0aWMsIHRoZW4gdGhlIHByb3BlcnR5IGV4aXN0cyBvbiB0aGUKKyAgICAg
ICAgLy8gICAgaW50ZXJmYWNlIG9iamVjdC4iCisgICAgICAgIGlmIChtZW1iZXJbInN0YXRpYyJd
KSB7CisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1lXSwgbWVt
YmVyLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2Ugb2JqZWN0IG1pc3Npbmcg
c3RhdGljIG9wZXJhdGlvbiIpOworICAgICAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0ID0gc2Vs
Zlt0aGlzLm5hbWVdOworICAgICAgICAvLyAiKiBPdGhlcndpc2UsIFsuLi5dIGlmIHRoZSBpbnRl
cmZhY2Ugd2FzIGRlY2xhcmVkIHdpdGggdGhlIFtHbG9iYWxdCisgICAgICAgIC8vICAgIG9yIFtQ
cmltYXJ5R2xvYmFsXSBleHRlbmRlZCBhdHRyaWJ1dGUsIHRoZW4gdGhlIHByb3BlcnR5IGV4aXN0
cworICAgICAgICAvLyAgICBvbiBldmVyeSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnRl
cmZhY2UuIgorICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNfZ2xvYmFsKCkpIHsKKyAgICAgICAg
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgbWVtYmVyLm5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICJnbG9iYWwgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24iKTsKKyAg
ICAgICAgICAgIG1lbWJlckhvbGRlck9iamVjdCA9IHNlbGY7CisgICAgICAgIC8vICIqIE90aGVy
d2lzZSwgdGhlIHByb3BlcnR5IGV4aXN0cyBzb2xlbHkgb24gdGhlIGludGVyZmFjZeKAmXMKKyAg
ICAgICAgLy8gICAgaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QuIgorICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShzZWxmW3RoaXMubmFtZV0ucHJvdG90
eXBlLCBtZW1iZXIubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSBwcm90b3R5
cGUgb2JqZWN0IG1pc3Npbmcgbm9uLXN0YXRpYyBvcGVyYXRpb24iKTsKKyAgICAgICAgICAgIG1l
bWJlckhvbGRlck9iamVjdCA9IHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGU7CisgICAgICAgIH0K
KyAgICAgICAgdGhpcy5kb19tZW1iZXJfb3BlcmF0aW9uX2Fzc2VydHMobWVtYmVySG9sZGVyT2Jq
ZWN0LCBtZW1iZXIsIGFfdGVzdCk7CisgICAgfS5iaW5kKHRoaXMpKTsKK307CisKKy8vQH0KK0lk
bEludGVyZmFjZS5wcm90b3R5cGUuZG9fbWVtYmVyX29wZXJhdGlvbl9hc3NlcnRzID0gZnVuY3Rp
b24obWVtYmVySG9sZGVyT2JqZWN0LCBtZW1iZXIsIGFfdGVzdCkKKy8vQHsKK3sKKyAgICB2YXIg
ZG9uZSA9IGFfdGVzdC5kb25lLmJpbmQoYV90ZXN0KTsKKyAgICB2YXIgb3BlcmF0aW9uVW5mb3Jn
ZWFibGUgPSBtZW1iZXIuaXNVbmZvcmdlYWJsZTsKKyAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IobWVtYmVySG9sZGVyT2JqZWN0LCBtZW1iZXIubmFtZSk7Cisg
ICAgLy8gIlRoZSBwcm9wZXJ0eSBoYXMgYXR0cmlidXRlcyB7IFtbV3JpdGFibGVdXTogQiwKKyAg
ICAvLyBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogQiB9LCB3aGVyZSBC
IGlzIGZhbHNlIGlmIHRoZQorICAgIC8vIG9wZXJhdGlvbiBpcyB1bmZvcmdlYWJsZSBvbiB0aGUg
aW50ZXJmYWNlLCBhbmQgdHJ1ZSBvdGhlcndpc2UiLgorICAgIGFzc2VydF9mYWxzZSgiZ2V0IiBp
biBkZXNjLCAicHJvcGVydHkgaGFzIGdldHRlciIpOworICAgIGFzc2VydF9mYWxzZSgic2V0IiBp
biBkZXNjLCAicHJvcGVydHkgaGFzIHNldHRlciIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy53
cml0YWJsZSwgIW9wZXJhdGlvblVuZm9yZ2VhYmxlLAorICAgICAgICAgICAgICAgICAgInByb3Bl
cnR5IHNob3VsZCBiZSB3cml0YWJsZSBpZiBhbmQgb25seSBpZiBub3QgdW5mb3JnZWFibGUiKTsK
KyAgICBhc3NlcnRfdHJ1ZShkZXNjLmVudW1lcmFibGUsICJwcm9wZXJ0eSBpcyBub3QgZW51bWVy
YWJsZSIpOworICAgIGFzc2VydF9lcXVhbHMoZGVzYy5jb25maWd1cmFibGUsICFvcGVyYXRpb25V
bmZvcmdlYWJsZSwKKyAgICAgICAgICAgICAgICAgICJwcm9wZXJ0eSBzaG91bGQgYmUgY29uZmln
dXJhYmxlIGlmIGFuZCBvbmx5IGlmIG5vdCB1bmZvcmdlYWJsZSIpOworICAgIC8vICJUaGUgdmFs
dWUgb2YgdGhlIHByb3BlcnR5IGlzIGEgRnVuY3Rpb24gb2JqZWN0IHdob3NlCisgICAgLy8gYmVo
YXZpb3IgaXMgYXMgZm9sbG93cyAuIC4gLiIKKyAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBtZW1i
ZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdLCAiZnVuY3Rpb24iLAorICAgICAgICAgICAgICAg
ICAgInByb3BlcnR5IG11c3QgYmUgYSBmdW5jdGlvbiIpOworICAgIC8vICJUaGUgdmFsdWUgb2Yg
dGhlIEZ1bmN0aW9uIG9iamVjdOKAmXMg4oCcbGVuZ3Ro4oCdIHByb3BlcnR5IGlzCisgICAgLy8g
YSBOdW1iZXIgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOgorICAgIC8vICIuIC4gLgorICAgIC8vICJS
ZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgc2hvcnRlc3QgYXJndW1lbnQgbGlzdCBvZiB0aGUKKyAg
ICAvLyBlbnRyaWVzIGluIFMuIgorICAgIGFzc2VydF9lcXVhbHMobWVtYmVySG9sZGVyT2JqZWN0
W21lbWJlci5uYW1lXS5sZW5ndGgsCisgICAgICAgIG1pbk92ZXJsb2FkTGVuZ3RoKHRoaXMubWVt
YmVycy5maWx0ZXIoZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIG0udHlwZSA9PSAi
b3BlcmF0aW9uIiAmJiBtLm5hbWUgPT0gbWVtYmVyLm5hbWU7CisgICAgICAgIH0pKSwKKyAgICAg
ICAgInByb3BlcnR5IGhhcyB3cm9uZyAubGVuZ3RoIik7CisKKyAgICAvLyBNYWtlIHNvbWUgc3Vp
dGFibGUgYXJndW1lbnRzCisgICAgdmFyIGFyZ3MgPSBtZW1iZXIuYXJndW1lbnRzLm1hcChmdW5j
dGlvbihhcmcpIHsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZV9zdWl0YWJsZV9vYmplY3QoYXJnLmlk
bFR5cGUpOworICAgIH0pOworCisgICAgLy8gIkxldCBPIGJlIGEgdmFsdWUgZGV0ZXJtaW5lZCBh
cyBmb2xsb3dzOgorICAgIC8vICIuIC4gLgorICAgIC8vICJPdGhlcndpc2UsIHRocm93IGEgVHlw
ZUVycm9yLiIKKyAgICAvLyBUaGlzIHNob3VsZCBiZSBoaXQgaWYgdGhlIG9wZXJhdGlvbiBpcyBu
b3Qgc3RhdGljLCB0aGVyZSBpcworICAgIC8vIG5vIFtJbXBsaWNpdFRoaXNdIGF0dHJpYnV0ZSwg
YW5kIHRoZSB0aGlzIHZhbHVlIGlzIG51bGwuCisgICAgLy8KKyAgICAvLyBUT0RPOiBXZSBjdXJy
ZW50bHkgaWdub3JlIHRoZSBbSW1wbGljaXRUaGlzXSBjYXNlLiAgRXhjZXB0IHdlIG1hbnVhbGx5
CisgICAgLy8gY2hlY2sgZm9yIGdsb2JhbHMsIHNpbmNlIG90aGVyd2lzZSB3ZSdsbCBpbnZva2Ug
d2luZG93LmNsb3NlKCkuICBBbmQgd2UKKyAgICAvLyBoYXZlIHRvIHNraXAgdGhpcyB0ZXN0IGZv
ciBhbnl0aGluZyB0aGF0IG9uIHRoZSBwcm90byBjaGFpbiBvZiAic2VsZiIsCisgICAgLy8gc2lu
Y2UgdGhhdCBkb2VzIGluIGZhY3QgaGF2ZSBpbXBsaWNpdC10aGlzIGJlaGF2aW9yLgorICAgIGlm
ICghbWVtYmVyWyJzdGF0aWMiXSkgeworICAgICAgICB2YXIgY2I7CisgICAgICAgIGlmICghdGhp
cy5pc19nbG9iYWwoKSAmJgorICAgICAgICAgICAgbWVtYmVySG9sZGVyT2JqZWN0W21lbWJlci5u
YW1lXSAhPSBzZWxmW21lbWJlci5uYW1lXSkKKyAgICAgICAgeworICAgICAgICAgICAgY2IgPSBh
d2FpdE5DYWxsYmFja3MoMiwgZG9uZSk7CisgICAgICAgICAgICB0aHJvd09yUmVqZWN0KGFfdGVz
dCwgbWVtYmVyLCBtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5hbWVdLCBudWxsLCBhcmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGluZyBvcGVyYXRpb24gd2l0aCB0aGlzID0g
bnVsbCBkaWRuJ3QgdGhyb3cgVHlwZUVycm9yIiwgY2IpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgY2IgPSBhd2FpdE5DYWxsYmFja3MoMSwgZG9uZSk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyAiLiAuIC4gSWYgTyBpcyBub3QgbnVsbCBhbmQgaXMgYWxzbyBub3QgYSBwbGF0Zm9y
bSBvYmplY3QKKyAgICAgICAgLy8gdGhhdCBpbXBsZW1lbnRzIGludGVyZmFjZSBJLCB0aHJvdyBh
IFR5cGVFcnJvci4iCisgICAgICAgIC8vCisgICAgICAgIC8vIFRPRE86IFRlc3QgYSBwbGF0Zm9y
bSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHNvbWUgb3RoZXIKKyAgICAgICAgLy8gaW50ZXJmYWNl
LiAgKEhhdmUgdG8gYmUgc3VyZSB0byBnZXQgaW5oZXJpdGFuY2UgcmlnaHQuKQorICAgICAgICB0
aHJvd09yUmVqZWN0KGFfdGVzdCwgbWVtYmVyLCBtZW1iZXJIb2xkZXJPYmplY3RbbWVtYmVyLm5h
bWVdLCB7fSwgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAiY2FsbGluZyBvcGVyYXRpb24g
d2l0aCB0aGlzID0ge30gZGlkbid0IHRocm93IFR5cGVFcnJvciIsIGNiKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBkb25lKCk7CisgICAgfQorfQorCisvL0B9CitJZGxJbnRlcmZhY2UucHJvdG90
eXBlLnRlc3RfbWVtYmVyX3N0cmluZ2lmaWVyID0gZnVuY3Rpb24obWVtYmVyKQorLy9Aeworewor
ICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaXNfY2FsbGJhY2so
KSAmJiAhdGhpcy5oYXNfY29uc3RhbnRzKCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZiwgdGhpcy5uYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJzZWxmIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5
ICIgKyBmb3JtYXRfdmFsdWUodGhpcy5uYW1lKSk7CisKKyAgICAgICAgaWYgKHRoaXMuaXNfY2Fs
bGJhY2soKSkgeworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKCJwcm90b3R5cGUiIGluIHNlbGZb
dGhpcy5uYW1lXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWUgKyAnIHNob3Vs
ZCBub3QgaGF2ZSBhICJwcm90b3R5cGUiIHByb3BlcnR5Jyk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGZbdGhpcy5uYW1l
XSwgInByb3RvdHlwZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAi
JyArIHRoaXMubmFtZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUi
Jyk7CisKKyAgICAgICAgLy8gIi4gLiAuIHRoZSBwcm9wZXJ0eSBleGlzdHMgb24gdGhlIGludGVy
ZmFjZSBwcm90b3R5cGUgb2JqZWN0LiIKKyAgICAgICAgdmFyIGludGVyZmFjZVByb3RvdHlwZU9i
amVjdCA9IHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGU7CisgICAgICAgIGFzc2VydF9vd25fcHJv
cGVydHkoc2VsZlt0aGlzLm5hbWVdLnByb3RvdHlwZSwgInRvU3RyaW5nIiwKKyAgICAgICAgICAg
ICAgICAiaW50ZXJmYWNlIHByb3RvdHlwZSBvYmplY3QgbWlzc2luZyBub24tc3RhdGljIG9wZXJh
dGlvbiIpOworCisgICAgICAgIHZhciBzdHJpbmdpZmllclVuZm9yZ2VhYmxlID0gbWVtYmVyLmlz
VW5mb3JnZWFibGU7CisgICAgICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihpbnRlcmZhY2VQcm90b3R5cGVPYmplY3QsICJ0b1N0cmluZyIpOworICAgICAgICAv
LyAiVGhlIHByb3BlcnR5IGhhcyBhdHRyaWJ1dGVzIHsgW1tXcml0YWJsZV1dOiBCLAorICAgICAg
ICAvLyBbW0VudW1lcmFibGVdXTogdHJ1ZSwgW1tDb25maWd1cmFibGVdXTogQiB9LCB3aGVyZSBC
IGlzIGZhbHNlIGlmIHRoZQorICAgICAgICAvLyBzdHJpbmdpZmllciBpcyB1bmZvcmdlYWJsZSBv
biB0aGUgaW50ZXJmYWNlLCBhbmQgdHJ1ZSBvdGhlcndpc2UuIgorICAgICAgICBhc3NlcnRfZmFs
c2UoImdldCIgaW4gZGVzYywgInByb3BlcnR5IGhhcyBnZXR0ZXIiKTsKKyAgICAgICAgYXNzZXJ0
X2ZhbHNlKCJzZXQiIGluIGRlc2MsICJwcm9wZXJ0eSBoYXMgc2V0dGVyIik7CisgICAgICAgIGFz
c2VydF9lcXVhbHMoZGVzYy53cml0YWJsZSwgIXN0cmluZ2lmaWVyVW5mb3JnZWFibGUsCisgICAg
ICAgICAgICAgICAgICAgICAgInByb3BlcnR5IHNob3VsZCBiZSB3cml0YWJsZSBpZiBhbmQgb25s
eSBpZiBub3QgdW5mb3JnZWFibGUiKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJh
YmxlLCAicHJvcGVydHkgaXMgbm90IGVudW1lcmFibGUiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhkZXNjLmNvbmZpZ3VyYWJsZSwgIXN0cmluZ2lmaWVyVW5mb3JnZWFibGUsCisgICAgICAgICAg
ICAgICAgICAgICAgInByb3BlcnR5IHNob3VsZCBiZSBjb25maWd1cmFibGUgaWYgYW5kIG9ubHkg
aWYgbm90IHVuZm9yZ2VhYmxlIik7CisgICAgICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIHByb3Bl
cnR5IGlzIGEgRnVuY3Rpb24gb2JqZWN0LCB3aGljaCBiZWhhdmVzIGFzCisgICAgICAgIC8vIGZv
bGxvd3MgLiAuIC4iCisgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIGludGVyZmFjZVByb3Rv
dHlwZU9iamVjdC50b1N0cmluZywgImZ1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAi
cHJvcGVydHkgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CisgICAgICAgIC8vICJUaGUgdmFsdWUgb2Yg
dGhlIEZ1bmN0aW9uIG9iamVjdOKAmXMg4oCcbGVuZ3Ro4oCdIHByb3BlcnR5IGlzIHRoZSBOdW1i
ZXIKKyAgICAgICAgLy8gdmFsdWUgMC4iCisgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJmYWNl
UHJvdG90eXBlT2JqZWN0LnRvU3RyaW5nLmxlbmd0aCwgMCwKKyAgICAgICAgICAgICJwcm9wZXJ0
eSBoYXMgd3JvbmcgLmxlbmd0aCIpOworCisgICAgICAgIC8vICJMZXQgTyBiZSB0aGUgcmVzdWx0
IG9mIGNhbGxpbmcgVG9PYmplY3Qgb24gdGhlIHRoaXMgdmFsdWUuIgorICAgICAgICBhc3NlcnRf
dGhyb3dzKG5ldyBUeXBlRXJyb3IoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZWxmW3Ro
aXMubmFtZV0ucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KG51bGwsIFtdKTsKKyAgICAgICAgfSwg
ImNhbGxpbmcgc3RyaW5naWZpZXIgd2l0aCB0aGlzID0gbnVsbCBkaWRuJ3QgdGhyb3cgVHlwZUVy
cm9yIik7CisKKyAgICAgICAgLy8gIklmIE8gaXMgbm90IGFuIG9iamVjdCB0aGF0IGltcGxlbWVu
dHMgdGhlIGludGVyZmFjZSBvbiB3aGljaCB0aGUKKyAgICAgICAgLy8gc3RyaW5naWZpZXIgd2Fz
IGRlY2xhcmVkLCB0aGVuIHRocm93IGEgVHlwZUVycm9yLiIKKyAgICAgICAgLy8KKyAgICAgICAg
Ly8gVE9ETzogVGVzdCBhIHBsYXRmb3JtIG9iamVjdCB0aGF0IGltcGxlbWVudHMgc29tZSBvdGhl
cgorICAgICAgICAvLyBpbnRlcmZhY2UuICAoSGF2ZSB0byBiZSBzdXJlIHRvIGdldCBpbmhlcml0
YW5jZSByaWdodC4pCisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIHNlbGZbdGhpcy5uYW1lXS5wcm90b3R5cGUudG9TdHJpbmcu
YXBwbHkoe30sIFtdKTsKKyAgICAgICAgfSwgImNhbGxpbmcgc3RyaW5naWZpZXIgd2l0aCB0aGlz
ID0ge30gZGlkbid0IHRocm93IFR5cGVFcnJvciIpOworICAgIH0uYmluZCh0aGlzKSwgdGhpcy5u
YW1lICsgIiBpbnRlcmZhY2U6IHN0cmluZ2lmaWVyIik7Cit9OworCisvL0B9CitJZGxJbnRlcmZh
Y2UucHJvdG90eXBlLnRlc3RfbWVtYmVycyA9IGZ1bmN0aW9uKCkKKy8vQHsKK3sKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMubWVtYmVycy5sZW5ndGg7IGkrKykKKyAgICB7CisgICAgICAg
IHZhciBtZW1iZXIgPSB0aGlzLm1lbWJlcnNbaV07CisgICAgICAgIGlmIChtZW1iZXIudW50ZXN0
ZWQpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNo
IChtZW1iZXIudHlwZSkgeworICAgICAgICBjYXNlICJjb25zdCI6CisgICAgICAgICAgICB0aGlz
LnRlc3RfbWVtYmVyX2NvbnN0KG1lbWJlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlICJhdHRyaWJ1dGUiOgorICAgICAgICAgICAgLy8gRm9yIHVuZm9yZ2VhYmxlIGF0dHJp
YnV0ZXMsIHdlIGRvIHRoZSBjaGVja3MgaW4KKyAgICAgICAgICAgIC8vIHRlc3RfaW50ZXJmYWNl
X29mIGluc3RlYWQuCisgICAgICAgICAgICBpZiAoIW1lbWJlci5pc1VuZm9yZ2VhYmxlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMudGVzdF9tZW1iZXJfYXR0cmlidXRlKG1l
bWJlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
ICJvcGVyYXRpb24iOgorICAgICAgICAgICAgLy8gVE9ETzogTmVlZCB0byBjb3JyZWN0bHkgaGFu
ZGxlIG11bHRpcGxlIG9wZXJhdGlvbnMgd2l0aCB0aGUgc2FtZQorICAgICAgICAgICAgLy8gaWRl
bnRpZmllci4KKyAgICAgICAgICAgIC8vIEZvciB1bmZvcmdlYWJsZSBvcGVyYXRpb25zLCB3ZSBk
byB0aGUgY2hlY2tzIGluCisgICAgICAgICAgICAvLyB0ZXN0X2ludGVyZmFjZV9vZiBpbnN0ZWFk
LgorICAgICAgICAgICAgaWYgKG1lbWJlci5uYW1lKSB7CisgICAgICAgICAgICAgICAgaWYgKCFt
ZW1iZXIuaXNVbmZvcmdlYWJsZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMudGVzdF9tZW1iZXJfb3BlcmF0aW9uKG1lbWJlcik7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIGlmIChtZW1iZXIuc3RyaW5naWZpZXIpIHsKKyAgICAgICAg
ICAgICAgICB0aGlzLnRlc3RfbWVtYmVyX3N0cmluZ2lmaWVyKG1lbWJlcik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
Ly8gVE9ETzogY2hlY2sgbW9yZSBtZW1iZXIgdHlwZXMuCisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KK307CisKKy8vQH0KK0lkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9v
YmplY3QgPSBmdW5jdGlvbihkZXNjKQorLy9AeworeworICAgIHZhciBvYmosIGV4Y2VwdGlvbiA9
IG51bGw7CisgICAgdHJ5CisgICAgeworICAgICAgICBvYmogPSBldmFsKGRlc2MpOworICAgIH0K
KyAgICBjYXRjaChlKQorICAgIHsKKyAgICAgICAgZXhjZXB0aW9uID0gZTsKKyAgICB9CisKKyAg
ICB2YXIgZXhwZWN0ZWRfdHlwZW9mID0KKyAgICAgICAgdGhpcy5tZW1iZXJzLnNvbWUoZnVuY3Rp
b24obWVtYmVyKSB7IHJldHVybiBtZW1iZXIubGVnYWN5Y2FsbGVyOyB9KQorICAgICAgICA/ICJm
dW5jdGlvbiIKKyAgICAgICAgOiAib2JqZWN0IjsKKworICAgIHRoaXMudGVzdF9wcmltYXJ5X2lu
dGVyZmFjZV9vZihkZXNjLCBvYmosIGV4Y2VwdGlvbiwgZXhwZWN0ZWRfdHlwZW9mKTsKKyAgICB2
YXIgY3VycmVudF9pbnRlcmZhY2UgPSB0aGlzOworICAgIHdoaWxlIChjdXJyZW50X2ludGVyZmFj
ZSkKKyAgICB7CisgICAgICAgIGlmICghKGN1cnJlbnRfaW50ZXJmYWNlLm5hbWUgaW4gdGhpcy5h
cnJheS5tZW1iZXJzKSkKKyAgICAgICAgeworICAgICAgICAgICAgdGhyb3cgIkludGVyZmFjZSAi
ICsgY3VycmVudF9pbnRlcmZhY2UubmFtZSArICIgbm90IGZvdW5kIChpbmhlcml0ZWQgYnkgIiAr
IHRoaXMubmFtZSArICIpIjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3VycmVudF9pbnRlcmZh
Y2UucHJldmVudF9tdWx0aXBsZV90ZXN0aW5nICYmIGN1cnJlbnRfaW50ZXJmYWNlLmFscmVhZHlf
dGVzdGVkKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAg
ICAgY3VycmVudF9pbnRlcmZhY2UudGVzdF9pbnRlcmZhY2Vfb2YoZGVzYywgb2JqLCBleGNlcHRp
b24sIGV4cGVjdGVkX3R5cGVvZik7CisgICAgICAgIGN1cnJlbnRfaW50ZXJmYWNlID0gdGhpcy5h
cnJheS5tZW1iZXJzW2N1cnJlbnRfaW50ZXJmYWNlLmJhc2VdOworICAgIH0KK307CisKKy8vQH0K
K0lkbEludGVyZmFjZS5wcm90b3R5cGUudGVzdF9wcmltYXJ5X2ludGVyZmFjZV9vZiA9IGZ1bmN0
aW9uKGRlc2MsIG9iaiwgZXhjZXB0aW9uLCBleHBlY3RlZF90eXBlb2YpCisvL0B7Cit7CisgICAg
Ly8gV2UgY2FuJ3QgZWFzaWx5IHRlc3QgdGhhdCBpdHMgcHJvdG90eXBlIGlzIGNvcnJlY3QgaWYg
dGhlcmUncyBubworICAgIC8vIGludGVyZmFjZSBvYmplY3QsIG9yIHRoZSBvYmplY3QgaXMgZnJv
bSBhIGRpZmZlcmVudCBnbG9iYWwgZW52aXJvbm1lbnQKKyAgICAvLyAobm90IGluc3RhbmNlb2Yg
T2JqZWN0KS4gIFRPRE86IHRlc3QgaW4gdGhpcyBjYXNlIHRoYXQgaXRzIHByb3RvdHlwZSBhdAor
ICAgIC8vIGxlYXN0IGxvb2tzIGNvcnJlY3QsIGV2ZW4gaWYgd2UgY2FuJ3QgdGVzdCB0aGF0IGl0
J3MgYWN0dWFsbHkgY29ycmVjdC4KKyAgICBpZiAoIXRoaXMuaGFzX2V4dGVuZGVkX2F0dHJpYnV0
ZSgiTm9JbnRlcmZhY2VPYmplY3QiKQorICAgICYmICh0eXBlb2Ygb2JqICE9IGV4cGVjdGVkX3R5
cGVvZiB8fCBvYmogaW5zdGFuY2VvZiBPYmplY3QpKQorICAgIHsKKyAgICAgICAgdGVzdChmdW5j
dGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhjZXB0aW9uLCBu
dWxsLCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVjdCIpOworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2YsICJ3cm9u
ZyB0eXBlb2Ygb2JqZWN0Iik7CisgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KHNlbGYs
IHRoaXMubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbGYgZG9lcyBu
b3QgaGF2ZSBvd24gcHJvcGVydHkgIiArIGZvcm1hdF92YWx1ZSh0aGlzLm5hbWUpKTsKKyAgICAg
ICAgICAgIGFzc2VydF9vd25fcHJvcGVydHkoc2VsZlt0aGlzLm5hbWVdLCAicHJvdG90eXBlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludGVyZmFjZSAiJyArIHRoaXMubmFt
ZSArICciIGRvZXMgbm90IGhhdmUgb3duIHByb3BlcnR5ICJwcm90b3R5cGUiJyk7CisKKyAgICAg
ICAgICAgIC8vICJUaGUgdmFsdWUgb2YgdGhlIGludGVybmFsIFtbUHJvdG90eXBlXV0gcHJvcGVy
dHkgb2YgdGhlCisgICAgICAgICAgICAvLyBwbGF0Zm9ybSBvYmplY3QgaXMgdGhlIGludGVyZmFj
ZSBwcm90b3R5cGUgb2JqZWN0IG9mIHRoZSBwcmltYXJ5CisgICAgICAgICAgICAvLyBpbnRlcmZh
Y2UgZnJvbSB0aGUgcGxhdGZvcm0gb2JqZWN04oCZcyBhc3NvY2lhdGVkIGdsb2JhbAorICAgICAg
ICAgICAgLy8gZW52aXJvbm1lbnQuIgorICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhPYmplY3Qu
Z2V0UHJvdG90eXBlT2Yob2JqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZlt0aGlz
Lm5hbWVdLnByb3RvdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYyArICIncyBw
cm90b3R5cGUgaXMgbm90ICIgKyB0aGlzLm5hbWUgKyAiLnByb3RvdHlwZSIpOworICAgICAgICB9
LmJpbmQodGhpcyksIHRoaXMubmFtZSArICIgbXVzdCBiZSBwcmltYXJ5IGludGVyZmFjZSBvZiAi
ICsgZGVzYyk7CisgICAgfQorCisgICAgLy8gIlRoZSBjbGFzcyBzdHJpbmcgb2YgYSBwbGF0Zm9y
bSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIG9uZSBvciBtb3JlCisgICAgLy8gaW50ZXJmYWNlcyBt
dXN0IGJlIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBwcmltYXJ5IGludGVyZmFjZSBvZiB0aGUKKyAg
ICAvLyBwbGF0Zm9ybSBvYmplY3QuIgorICAgIHRlc3QoZnVuY3Rpb24oKQorICAgIHsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24sIG51bGwsICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3
aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7CisgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9i
aiwgZXhwZWN0ZWRfdHlwZW9mLCAid3JvbmcgdHlwZW9mIG9iamVjdCIpOworICAgICAgICBhc3Nl
cnRfY2xhc3Nfc3RyaW5nKG9iaiwgdGhpcy5uYW1lLCAiY2xhc3Mgc3RyaW5nIG9mICIgKyBkZXNj
KTsKKyAgICAgICAgaWYgKCF0aGlzLmhhc19zdHJpbmdpZmllcigpKQorICAgICAgICB7CisgICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKFN0cmluZyhvYmopLCAiW29iamVjdCAiICsgdGhpcy5uYW1l
ICsgIl0iLCAiU3RyaW5nKCIgKyBkZXNjICsgIikiKTsKKyAgICAgICAgfQorICAgIH0uYmluZCh0
aGlzKSwgIlN0cmluZ2lmaWNhdGlvbiBvZiAiICsgZGVzYyk7Cit9OworCisvL0B9CitJZGxJbnRl
cmZhY2UucHJvdG90eXBlLnRlc3RfaW50ZXJmYWNlX29mID0gZnVuY3Rpb24oZGVzYywgb2JqLCBl
eGNlcHRpb24sIGV4cGVjdGVkX3R5cGVvZikKKy8vQHsKK3sKKyAgICAvLyBUT0RPOiBJbmRleGVk
IGFuZCBuYW1lZCBwcm9wZXJ0aWVzLCBtb3JlIGNoZWNrcyBvbiBpbnRlcmZhY2UgbWVtYmVycwor
ICAgIHRoaXMuYWxyZWFkeV90ZXN0ZWQgPSB0cnVlOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLm1lbWJlcnMubGVuZ3RoOyBpKyspCisgICAgeworICAgICAgICB2YXIgbWVtYmVyID0g
dGhpcy5tZW1iZXJzW2ldOworICAgICAgICBpZiAobWVtYmVyLnR5cGUgPT0gImF0dHJpYnV0ZSIg
JiYgbWVtYmVyLmlzVW5mb3JnZWFibGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRlc3QoZnVu
Y3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoZXhj
ZXB0aW9uLCBudWxsLCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9iamVj
dCIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9iaiwgZXhwZWN0ZWRf
dHlwZW9mLCAid3JvbmcgdHlwZW9mIG9iamVjdCIpOworICAgICAgICAgICAgICAgIHRoaXMuZG9f
aW50ZXJmYWNlX2F0dHJpYnV0ZV9hc3NlcnRzKG9iaiwgbWVtYmVyKTsKKyAgICAgICAgICAgIH0u
YmluZCh0aGlzKSwgdGhpcy5uYW1lICsgIiBpbnRlcmZhY2U6ICIgKyBkZXNjICsgJyBtdXN0IGhh
dmUgb3duIHByb3BlcnR5ICInICsgbWVtYmVyLm5hbWUgKyAnIicpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKG1lbWJlci50eXBlID09ICJvcGVyYXRpb24iICYmCisgICAgICAgICAgICAg
ICAgIG1lbWJlci5uYW1lICYmCisgICAgICAgICAgICAgICAgIG1lbWJlci5pc1VuZm9yZ2VhYmxl
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgYV90ZXN0ID0gYXN5bmNfdGVzdCh0aGlzLm5h
bWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAnIG11c3QgaGF2ZSBvd24gcHJvcGVydHkgIicg
KyBtZW1iZXIubmFtZSArICciJyk7CisgICAgICAgICAgICBhX3Rlc3Quc3RlcChmdW5jdGlvbigp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhleGNlcHRpb24s
IG51bGwsICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2JqZWN0Iik7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqLCBleHBlY3RlZF90eXBlb2Ys
ICJ3cm9uZyB0eXBlb2Ygb2JqZWN0Iik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X293bl9wcm9w
ZXJ0eShvYmosIG1lbWJlci5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkRvZXNuJ3QgaGF2ZSB0aGUgdW5mb3JnZWFibGUgb3BlcmF0aW9uIHByb3BlcnR5Iik7Cisg
ICAgICAgICAgICAgICAgdGhpcy5kb19tZW1iZXJfb3BlcmF0aW9uX2Fzc2VydHMob2JqLCBtZW1i
ZXIsIGFfdGVzdCk7CisgICAgICAgICAgICB9LmJpbmQodGhpcykpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKChtZW1iZXIudHlwZSA9PSAiY29uc3QiCisgICAgICAgIHx8IG1lbWJlci50
eXBlID09ICJhdHRyaWJ1dGUiCisgICAgICAgIHx8IG1lbWJlci50eXBlID09ICJvcGVyYXRpb24i
KQorICAgICAgICAmJiBtZW1iZXIubmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdChm
dW5jdGlvbigpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhl
eGNlcHRpb24sIG51bGwsICJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3aGVuIGV2YWx1YXRpbmcgb2Jq
ZWN0Iik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2Ygb2JqLCBleHBlY3Rl
ZF90eXBlb2YsICJ3cm9uZyB0eXBlb2Ygb2JqZWN0Iik7CisgICAgICAgICAgICAgICAgaWYgKCFt
ZW1iZXJbInN0YXRpYyJdKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc19nbG9i
YWwoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2luaGVyaXRzKG9iaiwgbWVt
YmVyLm5hbWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShvYmosIG1lbWJlci5uYW1lKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChtZW1iZXIudHlwZSA9PSAi
Y29uc3QiKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKG9ialttZW1iZXIubmFtZV0sIGNvbnN0VmFsdWUobWVtYmVyLnZhbHVlKSk7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1lbWJlci50
eXBlID09ICJhdHRyaWJ1dGUiKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBBdHRyaWJ1dGVzIGFyZSBhY2Nlc3NvciBwcm9wZXJ0aWVzLCBzbyB0aGV5
IG1pZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsZWdpdGltYXRlbHkgdGhyb3cgYW4g
ZXhjZXB0aW9uIHJhdGhlciB0aGFuIHJldHVybmluZworICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gYW55dGhpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJvcGVydHksIHRocm93
biA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5CisgICAgICAgICAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHkgPSBvYmpbbWVt
YmVyLm5hbWVdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgY2F0Y2ggKGUpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyb3duID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhyb3duKQorICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYXJyYXkuYXNzZXJ0X3R5
cGVfaXMocHJvcGVydHksIG1lbWJlci5pZGxUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobWVtYmVy
LnR5cGUgPT0gIm9wZXJhdGlvbiIpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9ialttZW1iZXIubmFtZV0sICJmdW5j
dGlvbiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLm5hbWUgKyAiIGludGVyZmFjZTogIiArIGRlc2MgKyAn
IG11c3QgaW5oZXJpdCBwcm9wZXJ0eSAiJyArIG1lbWJlci5uYW1lICsgJyIgd2l0aCB0aGUgcHJv
cGVyIHR5cGUgKCcgKyBpICsgJyknKTsKKyAgICAgICAgfQorICAgICAgICAvLyBUT0RPOiBUaGlz
IGlzIHdyb25nIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBvcGVyYXRpb25zIHdpdGggdGhlIHNhbWUK
KyAgICAgICAgLy8gaWRlbnRpZmllci4KKyAgICAgICAgLy8gVE9ETzogVGVzdCBwYXNzaW5nIGFy
Z3VtZW50cyBvZiB0aGUgd3JvbmcgdHlwZS4KKyAgICAgICAgaWYgKG1lbWJlci50eXBlID09ICJv
cGVyYXRpb24iICYmIG1lbWJlci5uYW1lICYmIG1lbWJlci5hcmd1bWVudHMubGVuZ3RoKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgYV90ZXN0ID0gYXN5bmNfdGVzdCggdGhpcy5uYW1lICsg
IiBpbnRlcmZhY2U6IGNhbGxpbmcgIiArIG1lbWJlci5uYW1lICsKKyAgICAgICAgICAgICIoIiAr
IG1lbWJlci5hcmd1bWVudHMubWFwKGZ1bmN0aW9uKG0pIHsgcmV0dXJuIG0uaWRsVHlwZS5pZGxU
eXBlOyB9KSArCisgICAgICAgICAgICAiKSBvbiAiICsgZGVzYyArICIgd2l0aCB0b28gZmV3IGFy
Z3VtZW50cyBtdXN0IHRocm93IFR5cGVFcnJvciIpOworICAgICAgICAgICAgYV90ZXN0LnN0ZXAo
ZnVuY3Rpb24oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMo
ZXhjZXB0aW9uLCBudWxsLCAiVW5leHBlY3RlZCBleGNlcHRpb24gd2hlbiBldmFsdWF0aW5nIG9i
amVjdCIpOworICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHlwZW9mIG9iaiwgZXhwZWN0
ZWRfdHlwZW9mLCAid3JvbmcgdHlwZW9mIG9iamVjdCIpOworICAgICAgICAgICAgICAgIGlmICgh
bWVtYmVyWyJzdGF0aWMiXSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNfZ2xv
YmFsKCkgJiYgIW1lbWJlci5pc1VuZm9yZ2VhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBhc3NlcnRfaW5oZXJpdHMob2JqLCBtZW1iZXIubmFtZSk7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfb3duX3Byb3BlcnR5KG9i
aiwgbWVtYmVyLm5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9mYWxzZShtZW1iZXIubmFtZSBpbiBvYmopOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIHZhciBtaW5MZW5ndGggPSBtaW5PdmVybG9hZExlbmd0aCh0
aGlzLm1lbWJlcnMuZmlsdGVyKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG0udHlwZSA9PSAib3BlcmF0aW9uIiAmJiBtLm5hbWUgPT0gbWVtYmVyLm5hbWU7CisgICAg
ICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgICAgIHZhciBhcmdzID0gW107CisgICAgICAg
ICAgICAgICAgdmFyIGNiID0gYXdhaXROQ2FsbGJhY2tzKG1pbkxlbmd0aCwgYV90ZXN0LmRvbmUu
YmluZChhX3Rlc3QpKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbkxl
bmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93T3JSZWplY3QoYV90ZXN0LCBt
ZW1iZXIsIG9ialttZW1iZXIubmFtZV0sIG9iaiwgYXJncywgICJDYWxsZWQgd2l0aCAiICsgaSAr
ICIgYXJndW1lbnRzIiwgY2IpOworCisgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaChjcmVh
dGVfc3VpdGFibGVfb2JqZWN0KG1lbWJlci5hcmd1bWVudHNbaV0uaWRsVHlwZSkpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobWluTGVuZ3RoID09PSAwKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNiKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfS5i
aW5kKHRoaXMpKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKy8vQH0KK0lkbEludGVyZmFjZS5w
cm90b3R5cGUuaGFzX3N0cmluZ2lmaWVyID0gZnVuY3Rpb24oKQorLy9AeworeworICAgIGlmICh0
aGlzLm1lbWJlcnMuc29tZShmdW5jdGlvbihtZW1iZXIpIHsgcmV0dXJuIG1lbWJlci5zdHJpbmdp
ZmllcjsgfSkpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGlmICh0aGlzLmJh
c2UgJiYKKyAgICAgICAgdGhpcy5hcnJheS5tZW1iZXJzW3RoaXMuYmFzZV0uaGFzX3N0cmluZ2lm
aWVyKCkpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K307CisKKy8vQH0KK0lkbEludGVyZmFjZS5wcm90b3R5cGUuZG9faW50ZXJmYWNlX2F0dHJpYnV0
ZV9hc3NlcnRzID0gZnVuY3Rpb24ob2JqLCBtZW1iZXIpCisvL0B7Cit7CisgICAgLy8gVGhpcyBm
dW5jdGlvbiB0ZXN0cyBXZWJJREwgYXMgb2YgMjAxNS0wMS0yNy4KKyAgICAvLyBUT0RPOiBDb25z
aWRlciBbRXhwb3NlZF0uCisKKyAgICAvLyBUaGlzIGlzIGNhbGxlZCBieSB0ZXN0X21lbWJlcl9h
dHRyaWJ1dGUoKSB3aXRoIHRoZSBwcm90b3R5cGUgYXMgb2JqIGlmCisgICAgLy8gaXQgaXMgbm90
IGEgZ2xvYmFsLCBhbmQgdGhlIGdsb2JhbCBvdGhlcndpc2UsIGFuZCBieSB0ZXN0X2ludGVyZmFj
ZV9vZigpCisgICAgLy8gd2l0aCB0aGUgb2JqZWN0IGFzIG9iai4KKworICAgIC8vICJGb3IgZWFj
aCBleHBvc2VkIGF0dHJpYnV0ZSBvZiB0aGUgaW50ZXJmYWNlLCB3aGV0aGVyIGl0IHdhcyBkZWNs
YXJlZCBvbgorICAgIC8vIHRoZSBpbnRlcmZhY2UgaXRzZWxmIG9yIG9uZSBvZiBpdHMgY29uc2Vx
dWVudGlhbCBpbnRlcmZhY2VzLCB0aGVyZSBNVVNUCisgICAgLy8gZXhpc3QgYSBjb3JyZXNwb25k
aW5nIHByb3BlcnR5LiBUaGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoaXMgcHJvcGVydHkgYXJlCisg
ICAgLy8gYXMgZm9sbG93czoiCisKKyAgICAvLyAiVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IGlz
IHRoZSBpZGVudGlmaWVyIG9mIHRoZSBhdHRyaWJ1dGUuIgorICAgIGFzc2VydF9vd25fcHJvcGVy
dHkob2JqLCBtZW1iZXIubmFtZSk7CisKKyAgICAvLyAiVGhlIHByb3BlcnR5IGhhcyBhdHRyaWJ1
dGVzIHsgW1tHZXRdXTogRywgW1tTZXRdXTogUywgW1tFbnVtZXJhYmxlXV06CisgICAgLy8gdHJ1
ZSwgW1tDb25maWd1cmFibGVdXTogY29uZmlndXJhYmxlIH0sIHdoZXJlOgorICAgIC8vICJjb25m
aWd1cmFibGUgaXMgZmFsc2UgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgZGVjbGFyZWQgd2l0aCB0aGUK
KyAgICAvLyBbVW5mb3JnZWFibGVdIGV4dGVuZGVkIGF0dHJpYnV0ZSBhbmQgdHJ1ZSBvdGhlcndp
c2U7CisgICAgLy8gIkcgaXMgdGhlIGF0dHJpYnV0ZSBnZXR0ZXIsIGRlZmluZWQgYmVsb3c7IGFu
ZAorICAgIC8vICJTIGlzIHRoZSBhdHRyaWJ1dGUgc2V0dGVyLCBhbHNvIGRlZmluZWQgYmVsb3cu
IgorICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIG1l
bWJlci5uYW1lKTsKKyAgICBhc3NlcnRfZmFsc2UoInZhbHVlIiBpbiBkZXNjLCAncHJvcGVydHkg
ZGVzY3JpcHRvciBoYXMgdmFsdWUgYnV0IGlzIHN1cHBvc2VkIHRvIGJlIGFjY2Vzc29yJyk7Cisg
ICAgYXNzZXJ0X2ZhbHNlKCJ3cml0YWJsZSIgaW4gZGVzYywgJ3Byb3BlcnR5IGRlc2NyaXB0b3Ig
aGFzICJ3cml0YWJsZSIgZmllbGQgYnV0IGlzIHN1cHBvc2VkIHRvIGJlIGFjY2Vzc29yJyk7Cisg
ICAgYXNzZXJ0X3RydWUoZGVzYy5lbnVtZXJhYmxlLCAicHJvcGVydHkgaXMgbm90IGVudW1lcmFi
bGUiKTsKKyAgICBpZiAobWVtYmVyLmlzVW5mb3JnZWFibGUpCisgICAgeworICAgICAgICBhc3Nl
cnRfZmFsc2UoZGVzYy5jb25maWd1cmFibGUsICJbVW5mb3JnZWFibGVdIHByb3BlcnR5IG11c3Qg
bm90IGJlIGNvbmZpZ3VyYWJsZSIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBh
c3NlcnRfdHJ1ZShkZXNjLmNvbmZpZ3VyYWJsZSwgInByb3BlcnR5IG11c3QgYmUgY29uZmlndXJh
YmxlIik7CisgICAgfQorCisKKyAgICAvLyAiVGhlIGF0dHJpYnV0ZSBnZXR0ZXIgaXMgYSBGdW5j
dGlvbiBvYmplY3Qgd2hvc2UgYmVoYXZpb3Igd2hlbiBpbnZva2VkCisgICAgLy8gaXMgYXMgZm9s
bG93czoiCisgICAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgZGVzYy5nZXQsICJmdW5jdGlvbiIsICJn
ZXR0ZXIgbXVzdCBiZSBGdW5jdGlvbiIpOworCisgICAgLy8gIklmIHRoZSBhdHRyaWJ1dGUgaXMg
YSByZWd1bGFyIGF0dHJpYnV0ZSwgdGhlbjoiCisgICAgaWYgKCFtZW1iZXJbInN0YXRpYyJdKSB7
CisgICAgICAgIC8vICJJZiBPIGlzIG5vdCBhIHBsYXRmb3JtIG9iamVjdCB0aGF0IGltcGxlbWVu
dHMgSSwgdGhlbjoKKyAgICAgICAgLy8gIklmIHRoZSBhdHRyaWJ1dGUgd2FzIHNwZWNpZmllZCB3
aXRoIHRoZSBbTGVuaWVudFRoaXNdIGV4dGVuZGVkCisgICAgICAgIC8vIGF0dHJpYnV0ZSwgdGhl
biByZXR1cm4gdW5kZWZpbmVkLgorICAgICAgICAvLyAiT3RoZXJ3aXNlLCB0aHJvdyBhIFR5cGVF
cnJvci4iCisgICAgICAgIGlmICghbWVtYmVyLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIkxlbmll
bnRUaGlzIikpIHsKKyAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBkZXNjLmdldC5jYWxsKHt9KTsKKyAgICAgICAg
ICAgIH0uYmluZCh0aGlzKSwgImNhbGxpbmcgZ2V0dGVyIG9uIHdyb25nIG9iamVjdCB0eXBlIG11
c3QgdGhyb3cgVHlwZUVycm9yIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGRlc2MuZ2V0LmNhbGwoe30pLCB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJjYWxsaW5nIGdldHRlciBvbiB3cm9uZyBvYmplY3QgdHlwZSBtdXN0IHJldHVy
biB1bmRlZmluZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vICJUaGUgdmFsdWUgb2Yg
dGhlIEZ1bmN0aW9uIG9iamVjdOKAmXMg4oCcbGVuZ3Ro4oCdIHByb3BlcnR5IGlzIHRoZSBOdW1i
ZXIKKyAgICAvLyB2YWx1ZSAwLiIKKyAgICBhc3NlcnRfZXF1YWxzKGRlc2MuZ2V0Lmxlbmd0aCwg
MCwgImdldHRlciBsZW5ndGggbXVzdCBiZSAwIik7CisKKworICAgIC8vIFRPRE86IFRlc3QgY2Fs
bGluZyBzZXR0ZXIgb24gdGhlIGludGVyZmFjZSBwcm90b3R5cGUgKHNob3VsZCB0aHJvdworICAg
IC8vIFR5cGVFcnJvciBpbiBtb3N0IGNhc2VzKS4KKyAgICBpZiAobWVtYmVyLnJlYWRvbmx5Cisg
ICAgJiYgIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJQdXRGb3J3YXJkcyIpCisgICAg
JiYgIW1lbWJlci5oYXNfZXh0ZW5kZWRfYXR0cmlidXRlKCJSZXBsYWNlYWJsZSIpKQorICAgIHsK
KyAgICAgICAgLy8gIlRoZSBhdHRyaWJ1dGUgc2V0dGVyIGlzIHVuZGVmaW5lZCBpZiB0aGUgYXR0
cmlidXRlIGlzIGRlY2xhcmVkCisgICAgICAgIC8vIHJlYWRvbmx5IGFuZCBoYXMgbmVpdGhlciBh
IFtQdXRGb3J3YXJkc10gbm9yIGEgW1JlcGxhY2VhYmxlXQorICAgICAgICAvLyBleHRlbmRlZCBh
dHRyaWJ1dGUgZGVjbGFyZWQgb24gaXQuIgorICAgICAgICBhc3NlcnRfZXF1YWxzKGRlc2Muc2V0
LCB1bmRlZmluZWQsICJzZXR0ZXIgbXVzdCBiZSB1bmRlZmluZWQgZm9yIHJlYWRvbmx5IGF0dHJp
YnV0ZXMiKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gIk90aGVyd2lzZSwg
aXQgaXMgYSBGdW5jdGlvbiBvYmplY3Qgd2hvc2UgYmVoYXZpb3Igd2hlbgorICAgICAgICAvLyBp
bnZva2VkIGlzIGFzIGZvbGxvd3M6IgorICAgICAgICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBkZXNj
LnNldCwgImZ1bmN0aW9uIiwgInNldHRlciBtdXN0IGJlIGZ1bmN0aW9uIGZvciBQdXRGb3J3YXJk
cywgUmVwbGFjZWFibGUsIG9yIG5vbi1yZWFkb25seSBhdHRyaWJ1dGVzIik7CisKKyAgICAgICAg
Ly8gIklmIHRoZSBhdHRyaWJ1dGUgaXMgYSByZWd1bGFyIGF0dHJpYnV0ZSwgdGhlbjoiCisgICAg
ICAgIGlmICghbWVtYmVyWyJzdGF0aWMiXSkgeworICAgICAgICAgICAgLy8gIklmIC92YWxpZFRo
aXMvIGlzIGZhbHNlIGFuZCB0aGUgYXR0cmlidXRlIHdhcyBub3Qgc3BlY2lmaWVkCisgICAgICAg
ICAgICAvLyB3aXRoIHRoZSBbTGVuaWVudFRoaXNdIGV4dGVuZGVkIGF0dHJpYnV0ZSwgdGhlbiB0
aHJvdyBhCisgICAgICAgICAgICAvLyBUeXBlRXJyb3IuIgorICAgICAgICAgICAgLy8gIklmIHRo
ZSBhdHRyaWJ1dGUgaXMgZGVjbGFyZWQgd2l0aCBhIFtSZXBsYWNlYWJsZV0gZXh0ZW5kZWQKKyAg
ICAgICAgICAgIC8vIGF0dHJpYnV0ZSwgdGhlbjogLi4uIgorICAgICAgICAgICAgLy8gIklmIHZh
bGlkVGhpcyBpcyBmYWxzZSwgdGhlbiByZXR1cm4uIgorICAgICAgICAgICAgaWYgKCFtZW1iZXIu
aGFzX2V4dGVuZGVkX2F0dHJpYnV0ZSgiTGVuaWVudFRoaXMiKSkgeworICAgICAgICAgICAgICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvcigpLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZGVzYy5zZXQuY2FsbCh7fSk7CisgICAgICAgICAgICAgICAgfS5iaW5kKHRoaXMp
LCAiY2FsbGluZyBzZXR0ZXIgb24gd3Jvbmcgb2JqZWN0IHR5cGUgbXVzdCB0aHJvdyBUeXBlRXJy
b3IiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhkZXNjLnNldC5jYWxsKHt9KSwgdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImNhbGxpbmcgc2V0dGVyIG9uIHdyb25nIG9iamVjdCB0eXBlIG11c3QgcmV0dXJuIHVu
ZGVmaW5lZCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gIlRoZSB2
YWx1ZSBvZiB0aGUgRnVuY3Rpb24gb2JqZWN04oCZcyDigJxsZW5ndGjigJ0gcHJvcGVydHkgaXMg
dGhlIE51bWJlcgorICAgICAgICAvLyB2YWx1ZSAxLiIKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhk
ZXNjLnNldC5sZW5ndGgsIDEsICJzZXR0ZXIgbGVuZ3RoIG11c3QgYmUgMSIpOworICAgIH0KK30K
Ky8vQH0KKworLy8vIElkbEludGVyZmFjZU1lbWJlciAvLy8KK2Z1bmN0aW9uIElkbEludGVyZmFj
ZU1lbWJlcihvYmopCisvL0B7Cit7CisgICAgLyoqCisgICAgICogb2JqIGlzIGFuIG9iamVjdCBw
cm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpzICJpZk1lbWJlciIgcHJvZHVjdGlvbi4KKyAg
ICAgKiBXZSBqdXN0IGZvcndhcmQgYWxsIHByb3BlcnRpZXMgdG8gdGhpcyBvYmplY3Qgd2l0aG91
dCBtb2RpZmljYXRpb24sCisgICAgICogZXhjZXB0IGZvciBzcGVjaWFsIGV4dEF0dHJzIGhhbmRs
aW5nLgorICAgICAqLworICAgIGZvciAodmFyIGsgaW4gb2JqKQorICAgIHsKKyAgICAgICAgdGhp
c1trXSA9IG9ialtrXTsKKyAgICB9CisgICAgaWYgKCEoImV4dEF0dHJzIiBpbiB0aGlzKSkKKyAg
ICB7CisgICAgICAgIHRoaXMuZXh0QXR0cnMgPSBbXTsKKyAgICB9CisKKyAgICB0aGlzLmlzVW5m
b3JnZWFibGUgPSB0aGlzLmhhc19leHRlbmRlZF9hdHRyaWJ1dGUoIlVuZm9yZ2VhYmxlIik7Cit9
CisKKy8vQH0KK0lkbEludGVyZmFjZU1lbWJlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKElk
bE9iamVjdC5wcm90b3R5cGUpOworCisvLy8gSW50ZXJuYWwgaGVscGVyIGZ1bmN0aW9ucyAvLy8K
K2Z1bmN0aW9uIGNyZWF0ZV9zdWl0YWJsZV9vYmplY3QodHlwZSkKKy8vQHsKK3sKKyAgICAvKioK
KyAgICAgKiB0eXBlIGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgV2ViSURMUGFyc2VyLmpz
ICJ0eXBlIiBwcm9kdWN0aW9uLiAgV2UKKyAgICAgKiByZXR1cm4gYSBKYXZhU2NyaXB0IHZhbHVl
IHRoYXQgbWF0Y2hlcyB0aGUgdHlwZSwgaWYgd2UgY2FuIGZpZ3VyZSBvdXQKKyAgICAgKiBob3cu
CisgICAgICovCisgICAgaWYgKHR5cGUubnVsbGFibGUpCisgICAgeworICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICB9CisgICAgc3dpdGNoICh0eXBlLmlkbFR5cGUpCisgICAgeworICAgICAgICBj
YXNlICJhbnkiOgorICAgICAgICBjYXNlICJib29sZWFuIjoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgICAgIGNhc2UgImJ5dGUiOiBjYXNlICJvY3RldCI6IGNhc2UgInNob3J0Ijog
Y2FzZSAidW5zaWduZWQgc2hvcnQiOgorICAgICAgICBjYXNlICJsb25nIjogY2FzZSAidW5zaWdu
ZWQgbG9uZyI6IGNhc2UgImxvbmcgbG9uZyI6CisgICAgICAgIGNhc2UgInVuc2lnbmVkIGxvbmcg
bG9uZyI6IGNhc2UgImZsb2F0IjogY2FzZSAiZG91YmxlIjoKKyAgICAgICAgY2FzZSAidW5yZXN0
cmljdGVkIGZsb2F0IjogY2FzZSAidW5yZXN0cmljdGVkIGRvdWJsZSI6CisgICAgICAgICAgICBy
ZXR1cm4gNzsKKworICAgICAgICBjYXNlICJET01TdHJpbmciOgorICAgICAgICBjYXNlICJCeXRl
U3RyaW5nIjoKKyAgICAgICAgY2FzZSAiVVNWU3RyaW5nIjoKKyAgICAgICAgICAgIHJldHVybiAi
Zm9vIjsKKworICAgICAgICBjYXNlICJvYmplY3QiOgorICAgICAgICAgICAgcmV0dXJuIHthOiAi
YiJ9OworCisgICAgICAgIGNhc2UgIk5vZGUiOgorICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCJhYmMiKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9CisvL0B9
CisKKy8vLyBJZGxFbnVtIC8vLworLy8gVXNlZCBmb3IgSWRsQXJyYXkucHJvdG90eXBlLmFzc2Vy
dF90eXBlX2lzCitmdW5jdGlvbiBJZGxFbnVtKG9iaikKKy8vQHsKK3sKKyAgICAvKioKKyAgICAg
KiBvYmogaXMgYW4gb2JqZWN0IHByb2R1Y2VkIGJ5IHRoZSBXZWJJRExQYXJzZXIuanMgImRpY3Rp
b25hcnkiCisgICAgICogcHJvZHVjdGlvbi4KKyAgICAgKi8KKworICAgIC8qKiBTZWxmLWV4cGxh
bmF0b3J5LiAqLworICAgIHRoaXMubmFtZSA9IG9iai5uYW1lOworCisgICAgLyoqIEFuIGFycmF5
IG9mIHZhbHVlcyBwcm9kdWNlZCBieSB0aGUgImVudW0iIHByb2R1Y3Rpb24uICovCisgICAgdGhp
cy52YWx1ZXMgPSBvYmoudmFsdWVzOworCit9CisvL0B9CisKK0lkbEVudW0ucHJvdG90eXBlID0g
T2JqZWN0LmNyZWF0ZShJZGxPYmplY3QucHJvdG90eXBlKTsKKworLy8vIElkbFR5cGVkZWYgLy8v
CisvLyBVc2VkIGZvciBJZGxBcnJheS5wcm90b3R5cGUuYXNzZXJ0X3R5cGVfaXMKK2Z1bmN0aW9u
IElkbFR5cGVkZWYob2JqKQorLy9AeworeworICAgIC8qKgorICAgICAqIG9iaiBpcyBhbiBvYmpl
Y3QgcHJvZHVjZWQgYnkgdGhlIFdlYklETFBhcnNlci5qcyAidHlwZWRlZiIKKyAgICAgKiBwcm9k
dWN0aW9uLgorICAgICAqLworCisgICAgLyoqIFNlbGYtZXhwbGFuYXRvcnkuICovCisgICAgdGhp
cy5uYW1lID0gb2JqLm5hbWU7CisKKyAgICAvKiogQW4gYXJyYXkgb2YgdmFsdWVzIHByb2R1Y2Vk
IGJ5IHRoZSAidHlwZWRlZiIgcHJvZHVjdGlvbi4gKi8KKyAgICB0aGlzLnZhbHVlcyA9IG9iai52
YWx1ZXM7CisKK30KKy8vQH0KKworSWRsVHlwZWRlZi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRl
KElkbE9iamVjdC5wcm90b3R5cGUpOworCit9KCkpOworLy8gdmltOiBzZXQgZXhwYW5kdGFiIHNo
aWZ0d2lkdGg9NCB0YWJzdG9wPTQgZm9sZG1hcmtlcj1AeyxAfSBmb2xkbWV0aG9kPW1hcmtlcjoK
</data>

          </attachment>
      

    </bug>

</bugzilla>