<?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>98872</bug_id>
          
          <creation_ts>2012-10-10 00:12:03 -0700</creation_ts>
          <short_desc>Update pywebsocket to 0.7.7</short_desc>
          <delta_ts>2012-10-10 00:55:33 -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>528+ (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>98393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kenichi Ishibashi">bashi</reporter>
          <assigned_to name="Kenichi Ishibashi">bashi</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>738660</commentid>
    <comment_count>0</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-10 00:12:03 -0700</bug_when>
    <thetext>Update pywebsocket to 0.7.7. This version includes permessage-compress support. We need this version to add tests for permessage-compress extension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738663</commentid>
    <comment_count>1</comment_count>
      <attachid>167942</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-10 00:17:39 -0700</bug_when>
    <thetext>Created attachment 167942
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738664</commentid>
    <comment_count>2</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-10 00:19:29 -0700</bug_when>
    <thetext>Hi Yuta-san,

Could you take a look? I followed the instruction.

http://trac.webkit.org/wiki/pywebsocket%3A%20a%20WebSocket%20server%20for%20layout%20tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738666</commentid>
    <comment_count>3</comment_count>
      <attachid>167942</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2012-10-10 00:21:29 -0700</bug_when>
    <thetext>Comment on attachment 167942
Patch

Rubberstamped by me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738673</commentid>
    <comment_count>4</comment_count>
      <attachid>167942</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-10-10 00:26:14 -0700</bug_when>
    <thetext>Comment on attachment 167942
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738694</commentid>
    <comment_count>5</comment_count>
      <attachid>167942</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 00:55:30 -0700</bug_when>
    <thetext>Comment on attachment 167942
Patch

Clearing flags on attachment: 167942

Committed r130869: &lt;http://trac.webkit.org/changeset/130869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738695</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 00:55:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167942</attachid>
            <date>2012-10-10 00:17:39 -0700</date>
            <delta_ts>2012-10-10 00:55:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98872-20121010161638.patch</filename>
            <type>text/plain</type>
            <size>173106</size>
            <attacher name="Kenichi Ishibashi">bashi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODQwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmYxMzliYWZiZDg3ZTY2MGNkYjI3NzJhYTVmYzEyNWY2
MmI5OGU1Mi4uNDNjY2M4MjkyMDc5Nzg2NGY5ZTM4OWM1MzMxYmU2NzFlNTMwOGY5MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
MSBAQAorMjAxMi0xMC0xMCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgVXBkYXRlIHB5d2Vic29ja2V0IHRvIDAuNy43CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODg3MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdmVyc2lvbiBjb250YWlucyBzZXJ2
ZXItc2lkZSBwZXJtZXNzYWdlLWNvbXByZXNzIGV4dGVuc2lvbiBzdXBwb3J0LgorICAgICAgICBX
ZSBuZWVkIHRoaXMgdmVyc2lvbiB0byBhZGQgdGVzdHMgZm9yIHBlcm1lc3NhZ2UtY29tcHJlc3Mg
ZXh0ZW5zaW9uLgorCisgICAgICAgIEkgY29uZmlybWVkIGFsbCB0ZXN0cyB1bmRlciBodHRwL3Rl
c3RzL3dlYnNvY2tldCBwYXNzZWQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oaXhpZTc1LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVh
bV9oeWJpLnB5OgorICAgICAgICAocGFyc2VfZnJhbWUpOgorICAgICAgICAoRnJhZ21lbnRlZEZy
YW1lQnVpbGRlci5fX2luaXRfXyk6CisgICAgICAgIChGcmFnbWVudGVkRnJhbWVCdWlsZGVyLmJ1
aWxkKToKKyAgICAgICAgKGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9ib2R5KToKKyAgICAgICAg
KFN0cmVhbU9wdGlvbnMuX19pbml0X18pOgorICAgICAgICAoU3RyZWFtLl9faW5pdF9fKToKKyAg
ICAgICAgKFN0cmVhbS5fcmVjZWl2ZV9mcmFtZS5fcmVjZWl2ZV9ieXRlcyk6CisgICAgICAgIChT
dHJlYW0uX3JlY2VpdmVfZnJhbWUpOgorICAgICAgICAoU3RyZWFtLnJlY2VpdmVfZmlsdGVyZWRf
ZnJhbWUpOgorICAgICAgICAoU3RyZWFtLnNlbmRfbWVzc2FnZSk6CisgICAgICAgIChTdHJlYW0u
X2dldF9tZXNzYWdlX2Zyb21fZnJhbWUpOgorICAgICAgICAoU3RyZWFtKToKKyAgICAgICAgKFN0
cmVhbS5fcHJvY2Vzc19jbG9zZV9tZXNzYWdlKToKKyAgICAgICAgKFN0cmVhbS5fcHJvY2Vzc19w
aW5nX21lc3NhZ2UpOgorICAgICAgICAoU3RyZWFtLl9wcm9jZXNzX3BvbmdfbWVzc2FnZSk6Cisg
ICAgICAgIChTdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKToKKyAgICAgICAgKFN0cmVhbS5fc2VuZF9j
bG9zaW5nX2hhbmRzaGFrZSk6CisgICAgICAgIChTdHJlYW0uZ2V0X2xhc3RfcmVjZWl2ZWRfb3Bj
b2RlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29j
a2V0L2NvbW1vbi5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9k
X3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5OgorICAgICAgICAoRGlzcGF0Y2hlci50cmFuc2Zlcl9k
YXRhKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29j
a2V0L2V4dGVuc2lvbnMucHk6CisgICAgICAgIChFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2Uu
bmFtZSk6CisgICAgICAgIChEZWZsYXRlU3RyZWFtRXh0ZW5zaW9uUHJvY2Vzc29yKToKKyAgICAg
ICAgKERlZmxhdGVTdHJlYW1FeHRlbnNpb25Qcm9jZXNzb3IubmFtZSk6CisgICAgICAgIChfbG9n
X2NvbXByZXNzaW9uX3JhdGlvKToKKyAgICAgICAgKF9sb2dfZGVjb21wcmVzc2lvbl9yYXRpbyk6
CisgICAgICAgIChEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAoRGVm
bGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yLm5hbWUpOgorICAgICAgICAoRGVmbGF0ZUZyYW1l
RXh0ZW5zaW9uUHJvY2Vzc29yLl9vdXRnb2luZ19maWx0ZXIpOgorICAgICAgICAoRGVmbGF0ZUZy
YW1lRXh0ZW5zaW9uUHJvY2Vzc29yLl9pbmNvbWluZ19maWx0ZXIpOgorICAgICAgICAoQ29tcHJl
c3Npb25FeHRlbnNpb25Qcm9jZXNzb3JCYXNlKToKKyAgICAgICAgKENvbXByZXNzaW9uRXh0ZW5z
aW9uUHJvY2Vzc29yQmFzZS5mb3IpOgorICAgICAgICAoQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9j
ZXNzb3JCYXNlLl9faW5pdF9fKToKKyAgICAgICAgKENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vz
c29yQmFzZS5uYW1lKToKKyAgICAgICAgKENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yQmFz
ZS5fZ2V0X2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9yZXNwb25zZSk6CisgICAgICAgIChDb21wcmVz
c2lvbkV4dGVuc2lvblByb2Nlc3NvckJhc2Uuc2V0X2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29r
KToKKyAgICAgICAgKFBlckZyYW1lQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3IpOgorICAg
ICAgICAoUGVyRnJhbWVDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3Nvci5fX2luaXRfXyk6Cisg
ICAgICAgIChQZXJGcmFtZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yLm5hbWUpOgorICAg
ICAgICAoUGVyRnJhbWVDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3Nvci5fbG9va3VwX2NvbXBy
ZXNzaW9uX3Byb2Nlc3Nvcik6CisgICAgICAgIChEZWZsYXRlTWVzc2FnZVByb2Nlc3Nvcik6Cisg
ICAgICAgIChEZWZsYXRlTWVzc2FnZVByb2Nlc3Nvci5fX2luaXRfXyk6CisgICAgICAgIChEZWZs
YXRlTWVzc2FnZVByb2Nlc3Nvci5uYW1lKToKKyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vz
c29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UpOgorICAgICAgICAoRGVmbGF0ZU1lc3NhZ2VQcm9j
ZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMpOgorICAgICAgICAoRGVmbGF0ZU1lc3NhZ2VQcm9j
ZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMuX091dGdvaW5nTWVzc2FnZUZpbHRlcik6CisgICAg
ICAgIChEZWZsYXRlTWVzc2FnZVByb2Nlc3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucy5fT3V0Z29p
bmdNZXNzYWdlRmlsdGVyLl9faW5pdF9fKToKKyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vz
c29yLnNldHVwX3N0cmVhbV9vcHRpb25zLl9PdXRnb2luZ01lc3NhZ2VGaWx0ZXIuZmlsdGVyKToK
KyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zLl9J
bmNvbWluZ01lc3NhZ2VGaWx0ZXIpOgorICAgICAgICAoRGVmbGF0ZU1lc3NhZ2VQcm9jZXNzb3Iu
c2V0dXBfc3RyZWFtX29wdGlvbnMuX0luY29taW5nTWVzc2FnZUZpbHRlci5fX2luaXRfXyk6Cisg
ICAgICAgIChEZWZsYXRlTWVzc2FnZVByb2Nlc3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucy5fSW5j
b21pbmdNZXNzYWdlRmlsdGVyLmRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKToKKyAgICAgICAgKERl
ZmxhdGVNZXNzYWdlUHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zLl9JbmNvbWluZ01lc3Nh
Z2VGaWx0ZXIuZmlsdGVyKToKKyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vzc29yLnNldHVw
X3N0cmVhbV9vcHRpb25zLl9PdXRnb2luZ0ZyYW1lRmlsdGVyKToKKyAgICAgICAgKERlZmxhdGVN
ZXNzYWdlUHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zLl9PdXRnb2luZ0ZyYW1lRmlsdGVy
Ll9faW5pdF9fKToKKyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vzc29yLnNldHVwX3N0cmVh
bV9vcHRpb25zLl9PdXRnb2luZ0ZyYW1lRmlsdGVyLnNldF9jb21wcmVzc2lvbl9iaXQpOgorICAg
ICAgICAoRGVmbGF0ZU1lc3NhZ2VQcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29wdGlvbnMuX091dGdv
aW5nRnJhbWVGaWx0ZXIuZmlsdGVyKToKKyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vzc29y
LnNldHVwX3N0cmVhbV9vcHRpb25zLl9JbmNvbWluZ0ZyYW1lRmlsdGVyKToKKyAgICAgICAgKERl
ZmxhdGVNZXNzYWdlUHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zLl9JbmNvbWluZ0ZyYW1l
RmlsdGVyLl9faW5pdF9fKToKKyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vzc29yLnNldHVw
X3N0cmVhbV9vcHRpb25zLl9JbmNvbWluZ0ZyYW1lRmlsdGVyLmZpbHRlcik6CisgICAgICAgIChE
ZWZsYXRlTWVzc2FnZVByb2Nlc3Nvci5zZXRfYzJzX21heF93aW5kb3dfYml0cyk6CisgICAgICAg
IChEZWZsYXRlTWVzc2FnZVByb2Nlc3Nvci5zZXRfYzJzX25vX2NvbnRleHRfdGFrZW92ZXIpOgor
ICAgICAgICAoRGVmbGF0ZU1lc3NhZ2VQcm9jZXNzb3IuZW5hYmxlX291dGdvaW5nX2NvbXByZXNz
aW9uKToKKyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vzc29yLmRpc2FibGVfb3V0Z29pbmdf
Y29tcHJlc3Npb24pOgorICAgICAgICAoRGVmbGF0ZU1lc3NhZ2VQcm9jZXNzb3IuX3Byb2Nlc3Nf
aW5jb21pbmdfbWVzc2FnZSk6CisgICAgICAgIChEZWZsYXRlTWVzc2FnZVByb2Nlc3Nvci5fcHJv
Y2Vzc19vdXRnb2luZ19tZXNzYWdlKToKKyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vzc29y
Ll9wcm9jZXNzX2luY29taW5nX2ZyYW1lKToKKyAgICAgICAgKERlZmxhdGVNZXNzYWdlUHJvY2Vz
c29yLl9wcm9jZXNzX291dGdvaW5nX2ZyYW1lKToKKyAgICAgICAgKFBlck1lc3NhZ2VDb21wcmVz
c2lvbkV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChQZXJNZXNzYWdlQ29tcHJlc3Npb25F
eHRlbnNpb25Qcm9jZXNzb3IuX19pbml0X18pOgorICAgICAgICAoUGVyTWVzc2FnZUNvbXByZXNz
aW9uRXh0ZW5zaW9uUHJvY2Vzc29yLm5hbWUpOgorICAgICAgICAoUGVyTWVzc2FnZUNvbXByZXNz
aW9uRXh0ZW5zaW9uUHJvY2Vzc29yLl9sb29rdXBfY29tcHJlc3Npb25fcHJvY2Vzc29yKToKKyAg
ICAgICAgKE11eEV4dGVuc2lvblByb2Nlc3Nvcik6CisgICAgICAgIChNdXhFeHRlbnNpb25Qcm9j
ZXNzb3IuX19pbml0X18pOgorICAgICAgICAoTXV4RXh0ZW5zaW9uUHJvY2Vzc29yLm5hbWUpOgor
ICAgICAgICAoTXV4RXh0ZW5zaW9uUHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UpOgor
ICAgICAgICAoTXV4RXh0ZW5zaW9uUHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zKToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRz
aGFrZS9fX2luaXRfXy5weToKKyAgICAgICAgKGRvX2hhbmRzaGFrZSk6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2Uu
cHk6CisgICAgICAgICh2YWxpZGF0ZV9zdWJwcm90b2NvbCk6CisgICAgICAgIChjaGVja19yZXF1
ZXN0X2xpbmUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3
ZWJzb2NrZXQvaGFuZHNoYWtlL2RyYWZ0NzUucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weToK
KyAgICAgICAgKEhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKToKKyAgICAgICAgKEhhbmRzaGFrZXIu
X3NldF9wcm90b2NvbCk6CisgICAgICAgIChIYW5kc2hha2VyLl9jcmVhdGVfc3RyZWFtKToKKyAg
ICAgICAgKEhhbmRzaGFrZXIpOgorICAgICAgICAoSGFuZHNoYWtlci5fY3JlYXRlX2hhbmRzaGFr
ZV9yZXNwb25zZSk6CisgICAgICAgIChIYW5kc2hha2VyLl9zZW5kX2hhbmRzaGFrZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oZWFkZXJw
YXJzZXJoYW5kbGVyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9t
b2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weToKKyAgICAgICAgKHNlbmRfbWVzc2FnZSk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9tdXgucHk6
IEFkZGVkLgorICAgICAgICAoTXV4VW5leHBlY3RlZEV4Y2VwdGlvbik6CisgICAgICAgIChNdXhO
b3RJbXBsZW1lbnRlZEV4Y2VwdGlvbik6CisgICAgICAgIChMb2dpY2FsQ29ubmVjdGlvbkNsb3Nl
ZEV4Y2VwdGlvbik6CisgICAgICAgIChQaHlzaWNhbENvbm5lY3Rpb25FcnJvcik6CisgICAgICAg
IChQaHlzaWNhbENvbm5lY3Rpb25FcnJvci5fX2luaXRfXyk6CisgICAgICAgIChMb2dpY2FsQ2hh
bm5lbEVycm9yKToKKyAgICAgICAgKExvZ2ljYWxDaGFubmVsRXJyb3IuX19pbml0X18pOgorICAg
ICAgICAoX2VuY29kZV9jaGFubmVsX2lkKToKKyAgICAgICAgKF9lbmNvZGVfbnVtYmVyKToKKyAg
ICAgICAgKF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UpOgorICAgICAgICAoX2NyZWF0ZV9k
cm9wX2NoYW5uZWwpOgorICAgICAgICAoX2NyZWF0ZV9mbG93X2NvbnRyb2wpOgorICAgICAgICAo
X2NyZWF0ZV9uZXdfY2hhbm5lbF9zbG90KToKKyAgICAgICAgKF9jcmVhdGVfZmFsbGJhY2tfbmV3
X2NoYW5uZWxfc2xvdCk6CisgICAgICAgIChfcGFyc2VfcmVxdWVzdF90ZXh0KToKKyAgICAgICAg
KF9Db250cm9sQmxvY2spOgorICAgICAgICAoX0NvbnRyb2xCbG9jay5fX2luaXRfXyk6CisgICAg
ICAgIChfTXV4RnJhbWVQYXlsb2FkUGFyc2VyKToKKyAgICAgICAgKF9NdXhGcmFtZVBheWxvYWRQ
YXJzZXIudGhhdCk6CisgICAgICAgIChfTXV4RnJhbWVQYXlsb2FkUGFyc2VyLl9faW5pdF9fKToK
KyAgICAgICAgKF9NdXhGcmFtZVBheWxvYWRQYXJzZXIucmVhZF9jaGFubmVsX2lkKToKKyAgICAg
ICAgKF9NdXhGcmFtZVBheWxvYWRQYXJzZXIucmVhZF9pbm5lcl9mcmFtZSk6CisgICAgICAgIChf
TXV4RnJhbWVQYXlsb2FkUGFyc2VyLl9yZWFkX251bWJlcik6CisgICAgICAgIChfTXV4RnJhbWVQ
YXlsb2FkUGFyc2VyLl9yZWFkX3NpemVfYW5kX2NvbnRlbnRzKToKKyAgICAgICAgKF9NdXhGcmFt
ZVBheWxvYWRQYXJzZXIuX3JlYWRfYWRkX2NoYW5uZWxfcmVxdWVzdCk6CisgICAgICAgIChfTXV4
RnJhbWVQYXlsb2FkUGFyc2VyLl9yZWFkX2FkZF9jaGFubmVsX3Jlc3BvbnNlKToKKyAgICAgICAg
KF9NdXhGcmFtZVBheWxvYWRQYXJzZXIuX3JlYWRfZmxvd19jb250cm9sKToKKyAgICAgICAgKF9N
dXhGcmFtZVBheWxvYWRQYXJzZXIuX3JlYWRfZHJvcF9jaGFubmVsKToKKyAgICAgICAgKF9NdXhG
cmFtZVBheWxvYWRQYXJzZXIuX3JlYWRfbmV3X2NoYW5uZWxfc2xvdCk6CisgICAgICAgIChfTXV4
RnJhbWVQYXlsb2FkUGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MpOgorICAgICAgICAoX011eEZy
YW1lUGF5bG9hZFBhcnNlci5yZW1haW5pbmdfZGF0YSk6CisgICAgICAgIChfTG9naWNhbFJlcXVl
c3QpOgorICAgICAgICAoX0xvZ2ljYWxSZXF1ZXN0Ll9faW5pdF9fKToKKyAgICAgICAgKF9Mb2dp
Y2FsUmVxdWVzdC5pc19odHRwcyk6CisgICAgICAgIChfTG9naWNhbENvbm5lY3Rpb24pOgorICAg
ICAgICAoX0xvZ2ljYWxDb25uZWN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKF9Mb2dpY2FsQ29u
bmVjdGlvbi5nZXRfbG9jYWxfYWRkcik6CisgICAgICAgIChfTG9naWNhbENvbm5lY3Rpb24uZ2V0
X3JlbW90ZV9hZGRyKToKKyAgICAgICAgKF9Mb2dpY2FsQ29ubmVjdGlvbi5nZXRfbWVtb3JpemVk
X2xpbmVzKToKKyAgICAgICAgKF9Mb2dpY2FsQ29ubmVjdGlvbi53cml0ZSk6CisgICAgICAgIChf
TG9naWNhbENvbm5lY3Rpb24ud3JpdGVfY29udHJvbF9kYXRhKToKKyAgICAgICAgKF9Mb2dpY2Fs
Q29ubmVjdGlvbi5ub3RpZnlfd3JpdGVfZG9uZSk6CisgICAgICAgIChfTG9naWNhbENvbm5lY3Rp
b24uYXBwZW5kX2ZyYW1lX2RhdGEpOgorICAgICAgICAoX0xvZ2ljYWxDb25uZWN0aW9uLnJlYWQp
OgorICAgICAgICAoX0xvZ2ljYWxDb25uZWN0aW9uLnNldF9yZWFkX3N0YXRlKToKKyAgICAgICAg
KF9Mb2dpY2FsU3RyZWFtKToKKyAgICAgICAgKF9Mb2dpY2FsU3RyZWFtLmludGVycHJldHMpOgor
ICAgICAgICAoX0xvZ2ljYWxTdHJlYW0uX19pbml0X18pOgorICAgICAgICAoX0xvZ2ljYWxTdHJl
YW0uX2NyZWF0ZV9pbm5lcl9mcmFtZSk6CisgICAgICAgIChfTG9naWNhbFN0cmVhbS5fd3JpdGVf
aW5uZXJfZnJhbWUpOgorICAgICAgICAoX0xvZ2ljYWxTdHJlYW0ucmVwbGVuaXNoX3NlbmRfcXVv
dGEpOgorICAgICAgICAoX0xvZ2ljYWxTdHJlYW0uY29uc3VtZV9yZWNlaXZlX3F1b3RhKToKKyAg
ICAgICAgKF9Mb2dpY2FsU3RyZWFtLnNlbmRfbWVzc2FnZSk6CisgICAgICAgIChfTG9naWNhbFN0
cmVhbS5fcmVjZWl2ZV9mcmFtZSk6CisgICAgICAgIChfTG9naWNhbFN0cmVhbS5yZWNlaXZlX21l
c3NhZ2UpOgorICAgICAgICAoX0xvZ2ljYWxTdHJlYW0uX3NlbmRfY2xvc2luZ19oYW5kc2hha2Up
OgorICAgICAgICAoX0xvZ2ljYWxTdHJlYW0uc2VuZF9waW5nKToKKyAgICAgICAgKF9Mb2dpY2Fs
U3RyZWFtLl9zZW5kX3BvbmcpOgorICAgICAgICAoX0xvZ2ljYWxTdHJlYW0uY2xvc2VfY29ubmVj
dGlvbik6CisgICAgICAgIChfTG9naWNhbFN0cmVhbS5fZHJhaW5fcmVjZWl2ZWRfZGF0YSk6Cisg
ICAgICAgIChfT3V0Z29pbmdEYXRhKToKKyAgICAgICAgKF9PdXRnb2luZ0RhdGEuX19pbml0X18p
OgorICAgICAgICAoX1BoeXNpY2FsQ29ubmVjdGlvbldyaXRlcik6CisgICAgICAgIChfUGh5c2lj
YWxDb25uZWN0aW9uV3JpdGVyLl9faW5pdF9fKToKKyAgICAgICAgKF9QaHlzaWNhbENvbm5lY3Rp
b25Xcml0ZXIucHV0X291dGdvaW5nX2RhdGEpOgorICAgICAgICAoX1BoeXNpY2FsQ29ubmVjdGlv
bldyaXRlci5fd3JpdGVfZGF0YSk6CisgICAgICAgIChfUGh5c2ljYWxDb25uZWN0aW9uV3JpdGVy
LnJ1bik6CisgICAgICAgIChfUGh5c2ljYWxDb25uZWN0aW9uV3JpdGVyLnN0b3ApOgorICAgICAg
ICAoX1BoeXNpY2FsQ29ubmVjdGlvblJlYWRlcik6CisgICAgICAgIChfUGh5c2ljYWxDb25uZWN0
aW9uUmVhZGVyLl9faW5pdF9fKToKKyAgICAgICAgKF9QaHlzaWNhbENvbm5lY3Rpb25SZWFkZXIu
cnVuKToKKyAgICAgICAgKF9Xb3JrZXIpOgorICAgICAgICAoX1dvcmtlci5fX2luaXRfXyk6Cisg
ICAgICAgIChfV29ya2VyLnJ1bik6CisgICAgICAgIChfTXV4SGFuZHNoYWtlcik6CisgICAgICAg
IChfTXV4SGFuZHNoYWtlci5fX2luaXRfXyk6CisgICAgICAgIChfTXV4SGFuZHNoYWtlci5fY3Jl
YXRlX3N0cmVhbSk6CisgICAgICAgIChfTXV4SGFuZHNoYWtlci5fY3JlYXRlX2hhbmRzaGFrZV9y
ZXNwb25zZSk6CisgICAgICAgIChfTXV4SGFuZHNoYWtlci5fc2VuZF9oYW5kc2hha2UpOgorICAg
ICAgICAoX0xvZ2ljYWxDaGFubmVsRGF0YSk6CisgICAgICAgIChfTG9naWNhbENoYW5uZWxEYXRh
Ll9faW5pdF9fKToKKyAgICAgICAgKF9IYW5kc2hha2VEZWx0YUJhc2UpOgorICAgICAgICAoX0hh
bmRzaGFrZURlbHRhQmFzZS50aGF0KToKKyAgICAgICAgKF9IYW5kc2hha2VEZWx0YUJhc2UuX19p
bml0X18pOgorICAgICAgICAoX0hhbmRzaGFrZURlbHRhQmFzZS5jcmVhdGVfaGVhZGVycyk6Cisg
ICAgICAgIChfTXV4SGFuZGxlcik6CisgICAgICAgIChfTXV4SGFuZGxlci5hcmUpOgorICAgICAg
ICAoX011eEhhbmRsZXIuX19pbml0X18pOgorICAgICAgICAoX011eEhhbmRsZXIuc3RhcnQpOgor
ICAgICAgICAoX011eEhhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMpOgorICAgICAgICAoX011eEhh
bmRsZXIud2FpdF91bnRpbF9kb25lKToKKyAgICAgICAgKF9NdXhIYW5kbGVyLm5vdGlmeV93cml0
ZV9kb25lKToKKyAgICAgICAgKF9NdXhIYW5kbGVyLnNlbmRfY29udHJvbF9kYXRhKToKKyAgICAg
ICAgKF9NdXhIYW5kbGVyLnNlbmRfZGF0YSk6CisgICAgICAgIChfTXV4SGFuZGxlci5fc2VuZF9k
cm9wX2NoYW5uZWwpOgorICAgICAgICAoX011eEhhbmRsZXIuX3NlbmRfZXJyb3JfYWRkX2NoYW5u
ZWxfcmVzcG9uc2UpOgorICAgICAgICAoX011eEhhbmRsZXIuX2NyZWF0ZV9sb2dpY2FsX3JlcXVl
c3QpOgorICAgICAgICAoX011eEhhbmRsZXIuX2RvX2hhbmRzaGFrZV9mb3JfbG9naWNhbF9yZXF1
ZXN0KToKKyAgICAgICAgKF9NdXhIYW5kbGVyLl9hZGRfbG9naWNhbF9jaGFubmVsKToKKyAgICAg
ICAgKF9NdXhIYW5kbGVyLl9wcm9jZXNzX2FkZF9jaGFubmVsX3JlcXVlc3QpOgorICAgICAgICAo
X011eEhhbmRsZXIuX3Byb2Nlc3NfZmxvd19jb250cm9sKToKKyAgICAgICAgKF9NdXhIYW5kbGVy
Ll9wcm9jZXNzX2Ryb3BfY2hhbm5lbCk6CisgICAgICAgIChfTXV4SGFuZGxlci5fcHJvY2Vzc19j
b250cm9sX2Jsb2Nrcyk6CisgICAgICAgIChfTXV4SGFuZGxlci5fcHJvY2Vzc19sb2dpY2FsX2Zy
YW1lKToKKyAgICAgICAgKF9NdXhIYW5kbGVyLmRpc3BhdGNoX21lc3NhZ2UpOgorICAgICAgICAo
X011eEhhbmRsZXIubm90aWZ5X3dvcmtlcl9kb25lKToKKyAgICAgICAgKF9NdXhIYW5kbGVyLm5v
dGlmeV9yZWFkZXJfZG9uZSk6CisgICAgICAgIChfTXV4SGFuZGxlci5mYWlsX3BoeXNpY2FsX2Nv
bm5lY3Rpb24pOgorICAgICAgICAoX011eEhhbmRsZXIuZmFpbF9sb2dpY2FsX2NoYW5uZWwpOgor
ICAgICAgICAodXNlX211eCk6CisgICAgICAgIChzdGFydCk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5OgorICAgICAg
ICAoX1N0YW5kYWxvbmVSZXF1ZXN0LmdldF9wcm90b2NvbCk6CisgICAgICAgIChfU3RhbmRhbG9u
ZVJlcXVlc3QpOgorICAgICAgICAoX2FsaWFzX2hhbmRsZXJzKToKKyAgICAgICAgKFdlYlNvY2tl
dFNlcnZlci5fX2luaXRfXyk6CisgICAgICAgIChXZWJTb2NrZXRTZXJ2ZXIuX2NyZWF0ZV9zb2Nr
ZXRzKToKKyAgICAgICAgKFdlYlNvY2tldFNlcnZlci5zZXJ2ZXJfYmluZCk6CisgICAgICAgIChX
ZWJTb2NrZXRTZXJ2ZXIuc2VydmVyX2FjdGl2YXRlKToKKyAgICAgICAgKFdlYlNvY2tldFJlcXVl
c3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QpOgorICAgICAgICAoX2NvbmZpZ3VyZV9sb2dnaW5nKToK
KyAgICAgICAgKF9idWlsZF9vcHRpb25fcGFyc2VyKToKKyAgICAgICAgKF9tYWluKToKKyAgICAg
ICAgKF9tYWluLmlmKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9k
X3B5d2Vic29ja2V0L3N0cmVhbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvbW9kX3B5d2Vic29ja2V0L3V0aWwucHk6CisgICAgICAgIChfRGVmbGF0ZXIuY29tcHJl
c3MpOgorICAgICAgICAoX1JGQzE5NzlEZWZsYXRlci5maWx0ZXIpOgorCiAyMDEyLTEwLTA5ICBT
dWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAaW50ZWwuY29tPgogCiAgICAg
ICAgIFtDYWlyb10gQnVtcCBDYWlybyB0byBmaXggbW9yZSBjYW52YXMvcGhpbGlwIHRlc3RzCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29j
a2V0L19faW5pdF9fLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9w
eXdlYnNvY2tldC9fX2luaXRfXy5weQppbmRleCBjMTU0ZGE0YTE0MGU5MjY1NzU3N2MyY2QwYTMy
NjM5NDMwMzI5ZWY0Li40NTRhZTBjNDU4YjcyYzBiZmI2MWI2MjM0NTNkYjRlMWFlYTIyNTI2IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29j
a2V0L19faW5pdF9fLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9t
b2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkKQEAgLTM0LDcgKzM0LDggQEAgbW9kX3B5d2Vic29j
a2V0IGlzIGEgV2ViU29ja2V0IGV4dGVuc2lvbiBmb3IgQXBhY2hlIEhUVFAgU2VydmVyCiBpbnRl
bmRlZCBmb3IgdGVzdGluZyBvciBleHBlcmltZW50YWwgcHVycG9zZXMuIG1vZF9weXRob24gaXMg
cmVxdWlyZWQuCiAKIAotSW5zdGFsbGF0aW9uOgorSW5zdGFsbGF0aW9uCis9PT09PT09PT09PT0K
IAogMC4gUHJlcGFyZSBhbiBBcGFjaGUgSFRUUCBTZXJ2ZXIgZm9yIHdoaWNoIG1vZF9weXRob24g
aXMgZW5hYmxlZC4KIApAQCAtNjAsMTEgKzYxLDYgQEAgSW5zdGFsbGF0aW9uOgogICAgPHNjYW5f
ZGlyPiBpcyB1c2VmdWwgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIDx3ZWJzb2NrX2hhbmRsZXJz
PgogICAgY29udGFpbnMgbWFueSBub24tV2ViU29ja2V0IGhhbmRsZXIgZmlsZXMuCiAKLSAgIElm
IHlvdSB3YW50IHRvIHN1cHBvcnQgb2xkIGhhbmRzaGFrZSBiYXNlZCBvbgotICAgZHJhZnQtaGl4
aWUtdGhld2Vic29ja2V0cHJvdG9jb2wtNzU6Ci0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5
d2Vic29ja2V0LmFsbG93X2RyYWZ0NzUgT24KLQogICAgSWYgeW91IHdhbnQgdG8gYWxsb3cgaGFu
ZGxlcnMgd2hvc2UgY2Fub25pY2FsIHBhdGggaXMgbm90IHVuZGVyIHRoZSByb290CiAgICBkaXJl
Y3RvcnkgKGkuZS4gc3ltYm9saWMgbGluayBpcyBpbiByb290IGRpcmVjdG9yeSBidXQgaXRzIHRh
cmdldCBpcyBub3QpLAogICAgY29uZmlndXJlIGFzIGZvbGxvd3M6CkBAIC04OSw3ICs4NSw4IEBA
IEluc3RhbGxhdGlvbjoKIDMuIFZlcmlmeSBpbnN0YWxsYXRpb24uIFlvdSBjYW4gdXNlIGV4YW1w
bGUvY29uc29sZS5odG1sIHRvIHBva2UgdGhlIHNlcnZlci4KIAogCi1Xcml0aW5nIFdlYlNvY2tl
dCBoYW5kbGVyczoKK1dyaXRpbmcgV2ViU29ja2V0IGhhbmRsZXJzCis9PT09PT09PT09PT09PT09
PT09PT09PT09PQogCiBXaGVuIGEgV2ViU29ja2V0IHJlcXVlc3QgY29tZXMgaW4sIHRoZSByZXNv
dXJjZSBuYW1lCiBzcGVjaWZpZWQgaW4gdGhlIGhhbmRzaGFrZSBpcyBjb25zaWRlcmVkIGFzIGlm
IGl0IGlzIGEgZmlsZSBwYXRoIHVuZGVyCkBAIC0xMTgsMjggKzExNSwzNiBAQCBleHRyYSBoYW5k
c2hha2UgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKIC0gd3NfcmVzb3VyY2UKIC0g
d3Nfb3JpZ2luCiAtIHdzX3ZlcnNpb24KLS0gd3NfbG9jYXRpb24gKEhpeGllIDc1IGFuZCBIeUJp
IDAwIG9ubHkpCi0tIHdzX2V4dGVuc2lvbnMgKEh5YmkgMDYgYW5kIGxhdGVyKQorLSB3c19sb2Nh
dGlvbiAoSHlCaSAwMCBvbmx5KQorLSB3c19leHRlbnNpb25zIChIeUJpIDA2IGFuZCBsYXRlcikK
IC0gd3NfZGVmbGF0ZSAoSHlCaSAwNiBhbmQgbGF0ZXIpCiAtIHdzX3Byb3RvY29sCiAtIHdzX3Jl
cXVlc3RlZF9wcm90b2NvbHMgKEh5QmkgMDYgYW5kIGxhdGVyKQogCi1UaGUgbGFzdCB0d28gYXJl
IGEgYml0IHRyaWNreS4KK1RoZSBsYXN0IHR3byBhcmUgYSBiaXQgdHJpY2t5LiBTZWUgdGhlIG5l
eHQgc3Vic2VjdGlvbi4KKworCitTdWJwcm90b2NvbCBOZWdvdGlhdGlvbgorLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogRm9yIEh5QmkgMDYgYW5kIGxhdGVyLCB3c19wcm90b2NvbCBpcyBhbHdh
eXMgc2V0IHRvIE5vbmUgd2hlbgogd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2Fs
bGVkLiBJZiB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGlzIG5vdAogTm9uZSwgeW91IG11c3QgY2hv
b3NlIG9uZSBzdWJwcm90b2NvbCBmcm9tIHRoaXMgbGlzdCBhbmQgc2V0IGl0IHRvCiB3c19wcm90
b2NvbC4KIAotRm9yIEhpeGllIDc1IGFuZCBIeUJpIDAwLCB3aGVuIHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlIGlzIGNhbGxlZCwKK0ZvciBIeUJpIDAwLCB3aGVuIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlIGlzIGNhbGxlZCwKIHdzX3Byb3RvY29sIGlzIHNldCB0byB0aGUgdmFs
dWUgZ2l2ZW4gYnkgdGhlIGNsaWVudCBpbgotU2VjLVdlYlNvY2tldC1Qcm90b2NvbCAoV2ViU29j
a2V0LVByb3RvY29sIGZvciBIaXhpZSA3NSkgaGVhZGVyIG9yIE5vbmUgaWYKK1NlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2wgaGVhZGVyIG9yIE5vbmUgaWYKIHN1Y2ggaGVhZGVyIHdhcyBub3QgZm91bmQg
aW4gdGhlIG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3QuIEZpbmlzaCBleHRyYQogaGFuZHNoYWtl
IHdpdGggd3NfcHJvdG9jb2wgdW50b3VjaGVkIHRvIGFjY2VwdCB0aGUgcmVxdWVzdCBzdWJwcm90
b2NvbC4KLVRoZW4sIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgKG9yIFdlYlNvY2tldC1Qcm90b2Nv
bCkgaGVhZGVyIHdpbGwgYmUgc2VudCB0bworVGhlbiwgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBo
ZWFkZXIgd2lsbCBiZSBzZW50IHRvCiB0aGUgY2xpZW50IGluIHJlc3BvbnNlIHdpdGggdGhlIHNh
bWUgdmFsdWUgYXMgcmVxdWVzdGVkLiBSYWlzZSBhbiBleGNlcHRpb24KIGluIHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdGVkIHN1YnByb3RvY29sLgog
CisKK0RhdGEgVHJhbnNmZXIKKy0tLS0tLS0tLS0tLS0KKwogd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhIGlzIGNhbGxlZCBhZnRlciB0aGUgaGFuZHNoYWtlIGNvbXBsZXRlZAogc3VjY2Vzc2Z1bGx5
LiBBIGhhbmRsZXIgY2FuIHJlY2VpdmUvc2VuZCBtZXNzYWdlcyBmcm9tL3RvIHRoZSBjbGllbnQK
IHVzaW5nIHJlcXVlc3QuIG1vZF9weXdlYnNvY2tldC5tc2d1dGlsIG1vZHVsZSBwcm92aWRlcyB1
dGlsaXRpZXMKQEAgLTE1OSwxMiArMTY0LDE2IEBAIFlvdSBjYW4gc2VuZCBhIG1lc3NhZ2UgYnkg
dGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQuCiAKICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21l
c3NhZ2UobWVzc2FnZSkKIAorCitDbG9zaW5nIENvbm5lY3Rpb24KKy0tLS0tLS0tLS0tLS0tLS0t
LQorCiBFeGVjdXRpbmcgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgb3IganVzdCByZXR1cm4taW5n
IGZyb20KIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBjYXVzZSBjb25uZWN0aW9uIGNsb3NlLgog
CiAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCiAKLVdoZW4geW91J3Jl
IHVzaW5nIElFVEYgSHlCaSAwMCBvciBsYXRlciBwcm90b2NvbCwgY2xvc2VfY29ubmVjdGlvbiB3
aWxsIHdhaXQKK2Nsb3NlX2Nvbm5lY3Rpb24gd2lsbCB3YWl0CiBmb3IgY2xvc2luZyBoYW5kc2hh
a2UgYWNrbm93bGVkZ2VtZW50IGNvbWluZyBmcm9tIHRoZSBjbGllbnQuIFdoZW4gaXQKIGNvdWxk
bid0IHJlY2VpdmUgYSB2YWxpZCBhY2tub3dsZWRnZW1lbnQsIHJhaXNlcyBhbiBleGNlcHRpb24u
CiAKQEAgLTE3Niw2ICsxODUsMTAgQEAgdXNlIGluIHdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5n
X2hhbmRzaGFrZS4KIC0gd3NfY2xvc2VfY29kZQogLSB3c19jbG9zZV9yZWFzb24KIAorCitUaHJl
YWRpbmcKKy0tLS0tLS0tLQorCiBBIFdlYlNvY2tldCBoYW5kbGVyIG11c3QgYmUgdGhyZWFkLXNh
ZmUgaWYgdGhlIHNlcnZlciAoQXBhY2hlIG9yCiBzdGFuZGFsb25lLnB5KSBpcyBjb25maWd1cmVk
IHRvIHVzZSB0aHJlYWRzLgogIiIiCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faGl4aWU3NS5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oaXhpZTc1
LnB5CmluZGV4IGM4NGNhNmUwNzNiNmRhNmVmZWQxODhjZmRkNmFlNzA0MTM4YzYxNzguLjk0Y2Y1
YjMxYmEwZmMzYzNhMzQ3N2RlODIyOTdhMGMyNmRhMWM0OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oaXhpZTc1
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvX3N0cmVhbV9oaXhpZTc1LnB5CkBAIC0zMiw3ICszMiw4IEBACiBwcm90b2NvbCB2ZXJzaW9u
IEh5QmkgMDAgYW5kIEhpeGllIDc1LgogCiBTcGVjaWZpY2F0aW9uOgotaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tldHByb3RvY29sLTAwCistIEh5
QmkgMDAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNv
Y2tldHByb3RvY29sLTAwCistIEhpeGllIDc1IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2Ry
YWZ0LWhpeGllLXRoZXdlYnNvY2tldHByb3RvY29sLTc1CiAiIiIKIAogCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1f
aHliaS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2Nr
ZXQvX3N0cmVhbV9oeWJpLnB5CmluZGV4IDM0ZmE3YTYwZTYwMjE3ZjdmMmQwZTE3NzQwODQyNTg4
NWUxYTQxZjcuLmJkMTU4ZmE2YjhhYTBmMGQ3ZDE3YjU4NDYzOGZiOWMwNjgxNzcyZDQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQv
X3N0cmVhbV9oeWJpLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9t
b2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oeWJpLnB5CkBAIC0zNyw2ICszNyw3IEBAIGh0dHA6Ly90
b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUKIAogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBk
ZXF1ZQoraW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHRp
bWUKQEAgLTE2MiwxNCArMTYzLDE0NSBAQCBkZWYgY3JlYXRlX3RleHRfZnJhbWUoCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVfZmlsdGVycykKIAogCitkZWYgcGFyc2VfZnJh
bWUocmVjZWl2ZV9ieXRlcywgbG9nZ2VyPU5vbmUsCisgICAgICAgICAgICAgICAgd3NfdmVyc2lv
bj1jb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVCwKKyAgICAgICAgICAgICAgICB1bm1hc2tfcmVj
ZWl2ZT1UcnVlKToKKyAgICAiIiJQYXJzZXMgYSBmcmFtZS4gUmV0dXJucyBhIHR1cGxlIGNvbnRh
aW5pbmcgZWFjaCBoZWFkZXIgZmllbGQgYW5kCisgICAgcGF5bG9hZC4KKworICAgIEFyZ3M6Cisg
ICAgICAgIHJlY2VpdmVfYnl0ZXM6IGEgZnVuY3Rpb24gdGhhdCByZWFkcyBmcmFtZSBkYXRhIGZy
b20gYSBzdHJlYW0gb3IKKyAgICAgICAgICAgIHNvbWV0aGluZyBzaW1pbGFyLiBUaGUgZnVuY3Rp
b24gdGFrZXMgbGVuZ3RoIG9mIHRoZSBieXRlcyB0byBiZQorICAgICAgICAgICAgcmVhZC4gVGhl
IGZ1bmN0aW9uIG11c3QgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gaWYKKyAg
ICAgICAgICAgIHRoZXJlIGlzIG5vdCBlbm91Z2ggZGF0YSB0byBiZSByZWFkLgorICAgICAgICBs
b2dnZXI6IGEgbG9nZ2luZyBvYmplY3QuCisgICAgICAgIHdzX3ZlcnNpb246IHRoZSB2ZXJzaW9u
IG9mIFdlYlNvY2tldCBwcm90b2NvbC4KKyAgICAgICAgdW5tYXNrX3JlY2VpdmU6IHVubWFzayBy
ZWNlaXZlZCBmcmFtZXMuIFdoZW4gcmVjZWl2ZWQgdW5tYXNrZWQKKyAgICAgICAgICAgIGZyYW1l
LCByYWlzZXMgSW52YWxpZEZyYW1lRXhjZXB0aW9uLgorCisgICAgUmFpc2VzOgorICAgICAgICBD
b25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWNlaXZlX2J5dGVzIHJhaXNlcyBp
dC4KKyAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBmcmFtZSBjb250YWlu
cyBpbnZhbGlkIGRhdGEuCisgICAgIiIiCisKKyAgICBpZiBub3QgbG9nZ2VyOgorICAgICAgICBs
b2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisKKyAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dM
RVZFTF9GSU5FLCAnUmVjZWl2ZSB0aGUgZmlyc3QgMiBvY3RldHMgb2YgYSBmcmFtZScpCisKKyAg
ICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoMikKKworICAgIGZpcnN0X2J5dGUgPSBvcmQocmVj
ZWl2ZWRbMF0pCisgICAgZmluID0gKGZpcnN0X2J5dGUgPj4gNykgJiAxCisgICAgcnN2MSA9IChm
aXJzdF9ieXRlID4+IDYpICYgMQorICAgIHJzdjIgPSAoZmlyc3RfYnl0ZSA+PiA1KSAmIDEKKyAg
ICByc3YzID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCisgICAgb3Bjb2RlID0gZmlyc3RfYnl0ZSAm
IDB4ZgorCisgICAgc2Vjb25kX2J5dGUgPSBvcmQocmVjZWl2ZWRbMV0pCisgICAgbWFzayA9IChz
ZWNvbmRfYnl0ZSA+PiA3KSAmIDEKKyAgICBwYXlsb2FkX2xlbmd0aCA9IHNlY29uZF9ieXRlICYg
MHg3ZgorCisgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKKyAgICAgICAgICAg
ICAgICdGSU49JXMsIFJTVjE9JXMsIFJTVjI9JXMsIFJTVjM9JXMsIG9wY29kZT0lcywgJworICAg
ICAgICAgICAgICAgJ01hc2s9JXMsIFBheWxvYWRfbGVuZ3RoPSVzJywKKyAgICAgICAgICAgICAg
IGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bjb2RlLCBtYXNrLCBwYXlsb2FkX2xlbmd0aCkKKwor
ICAgIGlmIChtYXNrID09IDEpICE9IHVubWFza19yZWNlaXZlOgorICAgICAgICByYWlzZSBJbnZh
bGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAnTWFzayBiaXQgb24gdGhlIHJlY2VpdmVk
IGZyYW1lIGRpZFwnbnQgbWF0Y2ggbWFza2luZyAnCisgICAgICAgICAgICAnY29uZmlndXJhdGlv
biBmb3IgcmVjZWl2ZWQgZnJhbWVzJykKKworICAgICMgVGhlIEh5QmkgYW5kIGxhdGVyIHNwZWNz
IGRpc2FsbG93IHB1dHRpbmcgYSB2YWx1ZSBpbiAweDAtMHhGRkZGCisgICAgIyBpbnRvIHRoZSA4
LW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoIGZpZWxkIChvciAweDAtMHhGRCBpbgorICAg
ICMgMi1vY3RldCBmaWVsZCkuCisgICAgdmFsaWRfbGVuZ3RoX2VuY29kaW5nID0gVHJ1ZQorICAg
IGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9IDEKKyAgICBpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjc6
CisgICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCisgICAgICAgICAgICAg
ICAgICAgJ1JlY2VpdmUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCcpCisKKyAgICAg
ICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKDgpCisgICAgICAgIHBh
eWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygKKyAgICAgICAgICAgICchUScsIGV4dGVuZGVk
X3BheWxvYWRfbGVuZ3RoKVswXQorICAgICAgICBpZiBwYXlsb2FkX2xlbmd0aCA+IDB4N0ZGRkZG
RkZGRkZGRkZGRjoKKyAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAg
ICAgICAgICAgICAgICAnRXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGggPj0gMl42MycpCisgICAgICAg
IGlmIHdzX3ZlcnNpb24gPj0gMTMgYW5kIHBheWxvYWRfbGVuZ3RoIDwgMHgxMDAwMDoKKyAgICAg
ICAgICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IEZhbHNlCisgICAgICAgICAgICBsZW5ndGhf
ZW5jb2RpbmdfYnl0ZXMgPSA4CisKKyAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxf
RklORSwKKyAgICAgICAgICAgICAgICAgICAnRGVjb2RlZF9wYXlsb2FkX2xlbmd0aD0lcycsIHBh
eWxvYWRfbGVuZ3RoKQorICAgIGVsaWYgcGF5bG9hZF9sZW5ndGggPT0gMTI2OgorICAgICAgICBs
b2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgICAgICAgICdSZWNl
aXZlIDItb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgnKQorCisgICAgICAgIGV4dGVuZGVk
X3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcygyKQorICAgICAgICBwYXlsb2FkX2xlbmd0
aCA9IHN0cnVjdC51bnBhY2soCisgICAgICAgICAgICAnIUgnLCBleHRlbmRlZF9wYXlsb2FkX2xl
bmd0aClbMF0KKyAgICAgICAgaWYgd3NfdmVyc2lvbiA+PSAxMyBhbmQgcGF5bG9hZF9sZW5ndGgg
PCAxMjY6CisgICAgICAgICAgICB2YWxpZF9sZW5ndGhfZW5jb2RpbmcgPSBGYWxzZQorICAgICAg
ICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gMgorCisgICAgICAgIGxvZ2dlci5sb2coY29t
bW9uLkxPR0xFVkVMX0ZJTkUsCisgICAgICAgICAgICAgICAgICAgJ0RlY29kZWRfcGF5bG9hZF9s
ZW5ndGg9JXMnLCBwYXlsb2FkX2xlbmd0aCkKKworICAgIGlmIG5vdCB2YWxpZF9sZW5ndGhfZW5j
b2Rpbmc6CisgICAgICAgIGxvZ2dlci53YXJuaW5nKAorICAgICAgICAgICAgJ1BheWxvYWQgbGVu
Z3RoIGlzIG5vdCBlbmNvZGVkIHVzaW5nIHRoZSBtaW5pbWFsIG51bWJlciBvZiAnCisgICAgICAg
ICAgICAnYnl0ZXMgKCVkIGlzIGVuY29kZWQgdXNpbmcgJWQgYnl0ZXMpJywKKyAgICAgICAgICAg
IHBheWxvYWRfbGVuZ3RoLAorICAgICAgICAgICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzKQorCisg
ICAgaWYgbWFzayA9PSAxOgorICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5F
LCAnUmVjZWl2ZSBtYXNrJykKKworICAgICAgICBtYXNraW5nX25vbmNlID0gcmVjZWl2ZV9ieXRl
cyg0KQorICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9yTWFza2VyKG1hc2tpbmdfbm9u
Y2UpCisKKyAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ01hc2s9JXIn
LCBtYXNraW5nX25vbmNlKQorICAgIGVsc2U6CisgICAgICAgIG1hc2tlciA9IF9OT09QX01BU0tF
UgorCisgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgcGF5bG9h
ZCBkYXRhJykKKyAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5F
KToKKyAgICAgICAgcmVjZWl2ZV9zdGFydCA9IHRpbWUudGltZSgpCisKKyAgICByYXdfcGF5bG9h
ZF9ieXRlcyA9IHJlY2VpdmVfYnl0ZXMocGF5bG9hZF9sZW5ndGgpCisKKyAgICBpZiBsb2dnZXIu
aXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKKyAgICAgICAgbG9nZ2VyLmxvZygK
KyAgICAgICAgICAgIGNvbW1vbi5MT0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgJ0RvbmUgcmVj
ZWl2aW5nIHBheWxvYWQgZGF0YSBhdCAlcyBNQi9zJywKKyAgICAgICAgICAgIHBheWxvYWRfbGVu
Z3RoIC8gKHRpbWUudGltZSgpIC0gcmVjZWl2ZV9zdGFydCkgLyAxMDAwIC8gMTAwMCkKKyAgICBs
b2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLCAnVW5tYXNrIHBheWxvYWQgZGF0YScpCisK
KyAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKKyAgICAg
ICAgdW5tYXNrX3N0YXJ0ID0gdGltZS50aW1lKCkKKworICAgIGJ5dGVzID0gbWFza2VyLm1hc2so
cmF3X3BheWxvYWRfYnl0ZXMpCisKKyAgICBpZiBsb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5M
T0dMRVZFTF9GSU5FKToKKyAgICAgICAgbG9nZ2VyLmxvZygKKyAgICAgICAgICAgIGNvbW1vbi5M
T0dMRVZFTF9GSU5FLAorICAgICAgICAgICAgJ0RvbmUgdW5tYXNraW5nIHBheWxvYWQgZGF0YSBh
dCAlcyBNQi9zJywKKyAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoIC8gKHRpbWUudGltZSgpIC0g
dW5tYXNrX3N0YXJ0KSAvIDEwMDAgLyAxMDAwKQorCisgICAgcmV0dXJuIG9wY29kZSwgYnl0ZXMs
IGZpbiwgcnN2MSwgcnN2MiwgcnN2MworCisKIGNsYXNzIEZyYWdtZW50ZWRGcmFtZUJ1aWxkZXIo
b2JqZWN0KToKICAgICAiIiJBIHN0YXRlZnVsIGNsYXNzIHRvIHNlbmQgYSBtZXNzYWdlIGFzIGZy
YWdtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXNrLCBmcmFtZV9maWx0ZXJz
PVtdKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzaywgZnJhbWVfZmlsdGVycz1bXSwgZW5j
b2RlX3V0Zjg9VHJ1ZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuIiIiCiAK
ICAgICAgICAgc2VsZi5fbWFzayA9IG1hc2sKICAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycyA9
IGZyYW1lX2ZpbHRlcnMKKyAgICAgICAgIyBUaGlzIGlzIGZvciBza2lwcGluZyBVVEYtOCBlbmNv
ZGluZyB3aGVuIGJ1aWxkaW5nIHRleHQgdHlwZSBmcmFtZXMKKyAgICAgICAgIyBmcm9tIGNvbXBy
ZXNzZWQgZGF0YS4KKyAgICAgICAgc2VsZi5fZW5jb2RlX3V0ZjggPSBlbmNvZGVfdXRmOAogCiAg
ICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSBGYWxzZQogCkBAIC0xNzcsNyArMzA5LDcgQEAgY2xhc3Mg
RnJhZ21lbnRlZEZyYW1lQnVpbGRlcihvYmplY3QpOgogICAgICAgICAjIGZyYW1lcyBpbiB0aGUg
bWVzc2FnZSBhcmUgYWxsIHRoZSBzYW1lLgogICAgICAgICBzZWxmLl9vcGNvZGUgPSBjb21tb24u
T1BDT0RFX1RFWFQKIAotICAgIGRlZiBidWlsZChzZWxmLCBtZXNzYWdlLCBlbmQsIGJpbmFyeSk6
CisgICAgZGVmIGJ1aWxkKHNlbGYsIHBheWxvYWRfZGF0YSwgZW5kLCBiaW5hcnkpOgogICAgICAg
ICBpZiBiaW5hcnk6CiAgICAgICAgICAgICBmcmFtZV90eXBlID0gY29tbW9uLk9QQ09ERV9CSU5B
UlkKICAgICAgICAgZWxzZToKQEAgLTE5OCwxMiArMzMwLDEyIEBAIGNsYXNzIEZyYWdtZW50ZWRG
cmFtZUJ1aWxkZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX3N0YXJ0ZWQgPSBUcnVlCiAg
ICAgICAgICAgICBmaW4gPSAwCiAKLSAgICAgICAgaWYgYmluYXJ5OgorICAgICAgICBpZiBiaW5h
cnkgb3Igbm90IHNlbGYuX2VuY29kZV91dGY4OgogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZV9i
aW5hcnlfZnJhbWUoCi0gICAgICAgICAgICAgICAgbWVzc2FnZSwgb3Bjb2RlLCBmaW4sIHNlbGYu
X21hc2ssIHNlbGYuX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgICAgICAgICAgcGF5bG9hZF9kYXRh
LCBvcGNvZGUsIGZpbiwgc2VsZi5fbWFzaywgc2VsZi5fZnJhbWVfZmlsdGVycykKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVfdGV4dF9mcmFtZSgKLSAgICAgICAgICAg
ICAgICBtZXNzYWdlLCBvcGNvZGUsIGZpbiwgc2VsZi5fbWFzaywgc2VsZi5fZnJhbWVfZmlsdGVy
cykKKyAgICAgICAgICAgICAgICBwYXlsb2FkX2RhdGEsIG9wY29kZSwgZmluLCBzZWxmLl9tYXNr
LCBzZWxmLl9mcmFtZV9maWx0ZXJzKQogCiAKIGRlZiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUob3Bj
b2RlLCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKToKQEAgLTIzNSw2ICszNjcsMjIgQEAgZGVm
IGNyZWF0ZV9jbG9zZV9mcmFtZShib2R5LCBtYXNrPUZhbHNlLCBmcmFtZV9maWx0ZXJzPVtdKToK
ICAgICAgICAgY29tbW9uLk9QQ09ERV9DTE9TRSwgYm9keSwgbWFzaywgZnJhbWVfZmlsdGVycykK
IAogCitkZWYgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkoY29kZSwgcmVhc29uKToKKyAg
ICBib2R5ID0gJycKKyAgICBpZiBjb2RlIGlzIG5vdCBOb25lOgorICAgICAgICBpZiAoY29kZSA+
IGNvbW1vbi5TVEFUVVNfVVNFUl9QUklWQVRFX01BWCBvcgorICAgICAgICAgICAgY29kZSA8IGNv
bW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpOgorICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0
aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyBvdXQgb2YgcmFuZ2UnKQorICAgICAgICBpZiAo
Y29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCBvcgorICAgICAgICAgICAg
Y29kZSA9PSBjb21tb24uU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUgb3IKKyAgICAgICAgICAgIGNv
ZGUgPT0gY29tbW9uLlNUQVRVU19UTFNfSEFORFNIQUtFKToKKyAgICAgICAgICAgIHJhaXNlIEJh
ZE9wZXJhdGlvbkV4Y2VwdGlvbignU3RhdHVzIGNvZGUgaXMgcmVzZXJ2ZWQgcHNldWRvICcKKyAg
ICAgICAgICAgICAgICAnY29kZScpCisgICAgICAgIGVuY29kZWRfcmVhc29uID0gcmVhc29uLmVu
Y29kZSgndXRmLTgnKQorICAgICAgICBib2R5ID0gc3RydWN0LnBhY2soJyFIJywgY29kZSkgKyBl
bmNvZGVkX3JlYXNvbgorICAgIHJldHVybiBib2R5CisKKwogY2xhc3MgU3RyZWFtT3B0aW9ucyhv
YmplY3QpOgogICAgICIiIkhvbGRzIG9wdGlvbiB2YWx1ZXMgdG8gY29uZmlndXJlIFN0cmVhbSBv
YmplY3RzLiIiIgogCkBAIC0yNDgsOCArMzk2LDE2IEBAIGNsYXNzIFN0cmVhbU9wdGlvbnMob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5vdXRnb2luZ19mcmFtZV9maWx0ZXJzID0gW10KICAgICAgICAg
c2VsZi5pbmNvbWluZ19mcmFtZV9maWx0ZXJzID0gW10KIAorICAgICAgICAjIEZpbHRlcnMgYXBw
bGllZCB0byBtZXNzYWdlcy4gQ29udHJvbCBmcmFtZXMgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGVt
LgorICAgICAgICBzZWxmLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycyA9IFtdCisgICAgICAgIHNl
bGYuaW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzID0gW10KKworICAgICAgICBzZWxmLmVuY29kZV90
ZXh0X21lc3NhZ2VfdG9fdXRmOCA9IFRydWUKICAgICAgICAgc2VsZi5tYXNrX3NlbmQgPSBGYWxz
ZQogICAgICAgICBzZWxmLnVubWFza19yZWNlaXZlID0gVHJ1ZQorICAgICAgICAjIFJGQzY0NTUg
ZGlzYWxsb3dzIGZyYWdtZW50ZWQgY29udHJvbCBmcmFtZXMsIGJ1dCBtdXggZXh0ZW5zaW9uCisg
ICAgICAgICMgcmVsYXhlcyB0aGUgcmVzdHJpY3Rpb24uCisgICAgICAgIHNlbGYuYWxsb3dfZnJh
Z21lbnRlZF9jb250cm9sX2ZyYW1lID0gRmFsc2UKIAogCiBjbGFzcyBTdHJlYW0oU3RyZWFtQmFz
ZSk6CkBAIC0yODMsNyArNDM5LDggQEAgY2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgogICAgICAg
ICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBOb25lCiAKICAgICAgICAgc2VsZi5fd3JpdGVyID0g
RnJhZ21lbnRlZEZyYW1lQnVpbGRlcigKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubWFza19z
ZW5kLCBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwgc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19mcmFtZV9maWx0
ZXJzLAorICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5lbmNvZGVfdGV4dF9tZXNzYWdlX3RvX3V0
ZjgpCiAKICAgICAgICAgc2VsZi5fcGluZ19xdWV1ZSA9IGRlcXVlKCkKIApAQCAtMjk3LDEwOSAr
NDU0LDEzIEBAIGNsYXNzIFN0cmVhbShTdHJlYW1CYXNlKToKICAgICAgICAgICAgIEludmFsaWRG
cmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJhbWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgogICAg
ICAgICAiIiIKIAotICAgICAgICBzZWxmLl9sb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5F
LAotICAgICAgICAgICAgICAgICAgICAgICAgICdSZWNlaXZlIHRoZSBmaXJzdCAyIG9jdGV0cyBv
ZiBhIGZyYW1lJykKLQotICAgICAgICByZWNlaXZlZCA9IHNlbGYucmVjZWl2ZV9ieXRlcygyKQot
Ci0gICAgICAgIGZpcnN0X2J5dGUgPSBvcmQocmVjZWl2ZWRbMF0pCi0gICAgICAgIGZpbiA9IChm
aXJzdF9ieXRlID4+IDcpICYgMQotICAgICAgICByc3YxID0gKGZpcnN0X2J5dGUgPj4gNikgJiAx
Ci0gICAgICAgIHJzdjIgPSAoZmlyc3RfYnl0ZSA+PiA1KSAmIDEKLSAgICAgICAgcnN2MyA9IChm
aXJzdF9ieXRlID4+IDQpICYgMQotICAgICAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCi0K
LSAgICAgICAgc2Vjb25kX2J5dGUgPSBvcmQocmVjZWl2ZWRbMV0pCi0gICAgICAgIG1hc2sgPSAo
c2Vjb25kX2J5dGUgPj4gNykgJiAxCi0gICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc2Vjb25kX2J5
dGUgJiAweDdmCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklO
RSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRklOPSVzLCBSU1YxPSVzLCBSU1YyPSVzLCBS
U1YzPSVzLCBvcGNvZGU9JXMsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnTWFzaz0lcywg
UGF5bG9hZF9sZW5ndGg9JXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpbiwgcnN2MSwg
cnN2MiwgcnN2Mywgb3Bjb2RlLCBtYXNrLCBwYXlsb2FkX2xlbmd0aCkKLQotICAgICAgICBpZiAo
bWFzayA9PSAxKSAhPSBzZWxmLl9vcHRpb25zLnVubWFza19yZWNlaXZlOgotICAgICAgICAgICAg
cmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNYXNrIGJpdCBv
biB0aGUgcmVjZWl2ZWQgZnJhbWUgZGlkXCdudCBtYXRjaCBtYXNraW5nICcKLSAgICAgICAgICAg
ICAgICAnY29uZmlndXJhdGlvbiBmb3IgcmVjZWl2ZWQgZnJhbWVzJykKLQotICAgICAgICAjIFRo
ZSBIeWJpLTEzIGFuZCBsYXRlciBzcGVjcyBkaXNhbGxvdyBwdXR0aW5nIGEgdmFsdWUgaW4gMHgw
LTB4RkZGRgotICAgICAgICAjIGludG8gdGhlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5n
dGggZmllbGQgKG9yIDB4MC0weEZEIGluCi0gICAgICAgICMgMi1vY3RldCBmaWVsZCkuCi0gICAg
ICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9IFRydWUKLSAgICAgICAgbGVuZ3RoX2VuY29kaW5n
X2J5dGVzID0gMQotICAgICAgICBpZiBwYXlsb2FkX2xlbmd0aCA9PSAxMjc6Ci0gICAgICAgICAg
ICBzZWxmLl9sb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnUmVjZWl2ZSA4LW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoJykK
LQotICAgICAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSBzZWxmLnJlY2VpdmVfYnl0
ZXMoOCkKLSAgICAgICAgICAgIHBheWxvYWRfbGVuZ3RoID0gc3RydWN0LnVucGFjaygKLSAgICAg
ICAgICAgICAgICAnIVEnLCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KLSAgICAgICAgICAg
IGlmIHBheWxvYWRfbGVuZ3RoID4gMHg3RkZGRkZGRkZGRkZGRkZGOgotICAgICAgICAgICAgICAg
IHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0V4dGVu
ZGVkIHBheWxvYWQgbGVuZ3RoID49IDJeNjMnKQotICAgICAgICAgICAgaWYgc2VsZi5fcmVxdWVz
dC53c192ZXJzaW9uID49IDEzIGFuZCBwYXlsb2FkX2xlbmd0aCA8IDB4MTAwMDA6Ci0gICAgICAg
ICAgICAgICAgdmFsaWRfbGVuZ3RoX2VuY29kaW5nID0gRmFsc2UKLSAgICAgICAgICAgICAgICBs
ZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSA4Ci0KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5sb2co
Y29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZWNv
ZGVkX3BheWxvYWRfbGVuZ3RoPSVzJywgcGF5bG9hZF9sZW5ndGgpCi0gICAgICAgIGVsaWYgcGF5
bG9hZF9sZW5ndGggPT0gMTI2OgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24u
TE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmUgMi1v
Y3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCcpCi0KLSAgICAgICAgICAgIGV4dGVuZGVkX3Bh
eWxvYWRfbGVuZ3RoID0gc2VsZi5yZWNlaXZlX2J5dGVzKDIpCi0gICAgICAgICAgICBwYXlsb2Fk
X2xlbmd0aCA9IHN0cnVjdC51bnBhY2soCi0gICAgICAgICAgICAgICAgJyFIJywgZXh0ZW5kZWRf
cGF5bG9hZF9sZW5ndGgpWzBdCi0gICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3ZlcnNp
b24gPj0gMTMgYW5kIHBheWxvYWRfbGVuZ3RoIDwgMTI2OgotICAgICAgICAgICAgICAgIHZhbGlk
X2xlbmd0aF9lbmNvZGluZyA9IEZhbHNlCi0gICAgICAgICAgICAgICAgbGVuZ3RoX2VuY29kaW5n
X2J5dGVzID0gMgotCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZF
TF9GSU5FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVjb2RlZF9wYXlsb2FkX2xl
bmd0aD0lcycsIHBheWxvYWRfbGVuZ3RoKQotCi0gICAgICAgIGlmIG5vdCB2YWxpZF9sZW5ndGhf
ZW5jb2Rpbmc6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIud2FybmluZygKLSAgICAgICAgICAg
ICAgICAnUGF5bG9hZCBsZW5ndGggaXMgbm90IGVuY29kZWQgdXNpbmcgdGhlIG1pbmltYWwgbnVt
YmVyIG9mICcKLSAgICAgICAgICAgICAgICAnYnl0ZXMgKCVkIGlzIGVuY29kZWQgdXNpbmcgJWQg
Ynl0ZXMpJywKLSAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCwKLSAgICAgICAgICAgICAg
ICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMpCi0KLSAgICAgICAgaWYgbWFzayA9PSAxOgotICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgbWFz
aycpCi0KLSAgICAgICAgICAgIG1hc2tpbmdfbm9uY2UgPSBzZWxmLnJlY2VpdmVfYnl0ZXMoNCkK
LSAgICAgICAgICAgIG1hc2tlciA9IHV0aWwuUmVwZWF0ZWRYb3JNYXNrZXIobWFza2luZ19ub25j
ZSkKLQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwg
J01hc2s9JXInLCBtYXNraW5nX25vbmNlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWFz
a2VyID0gX05PT1BfTUFTS0VSCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmxvZyhjb21tb24uTE9H
TEVWRUxfRklORSwgJ1JlY2VpdmUgcGF5bG9hZCBkYXRhJykKLSAgICAgICAgaWYgc2VsZi5fbG9n
Z2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6Ci0gICAgICAgICAgICByZWNl
aXZlX3N0YXJ0ID0gdGltZS50aW1lKCkKLQotICAgICAgICByYXdfcGF5bG9hZF9ieXRlcyA9IHNl
bGYucmVjZWl2ZV9ieXRlcyhwYXlsb2FkX2xlbmd0aCkKLQotICAgICAgICBpZiBzZWxmLl9sb2dn
ZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5sb2coCi0gICAgICAgICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0gICAg
ICAgICAgICAgICAgJ0RvbmUgcmVjZWl2aW5nIHBheWxvYWQgZGF0YSBhdCAlcyBNQi9zJywKLSAg
ICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCAvICh0aW1lLnRpbWUoKSAtIHJlY2VpdmVfc3Rh
cnQpIC8gMTAwMCAvIDEwMDApCi0gICAgICAgIHNlbGYuX2xvZ2dlci5sb2coY29tbW9uLkxPR0xF
VkVMX0ZJTkUsICdVbm1hc2sgcGF5bG9hZCBkYXRhJykKLQotICAgICAgICBpZiBzZWxmLl9sb2dn
ZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAgICAgIHVubWFz
a19zdGFydCA9IHRpbWUudGltZSgpCi0KLSAgICAgICAgYnl0ZXMgPSBtYXNrZXIubWFzayhyYXdf
cGF5bG9hZF9ieXRlcykKKyAgICAgICAgZGVmIF9yZWNlaXZlX2J5dGVzKGxlbmd0aCk6CisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5yZWNlaXZlX2J5dGVzKGxlbmd0aCkKIAotICAgICAgICBpZiBz
ZWxmLl9sb2dnZXIuaXNFbmFibGVkRm9yKGNvbW1vbi5MT0dMRVZFTF9GSU5FKToKLSAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5sb2coCi0gICAgICAgICAgICAgICAgY29tbW9uLkxPR0xFVkVMX0ZJ
TkUsCi0gICAgICAgICAgICAgICAgJ0RvbmUgdW5tYXNraW5nIHBheWxvYWQgZGF0YSBhdCAlcyBN
Qi9zJywKLSAgICAgICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCAvICh0aW1lLnRpbWUoKSAtIHVu
bWFza19zdGFydCkgLyAxMDAwIC8gMTAwMCkKLQotICAgICAgICByZXR1cm4gb3Bjb2RlLCBieXRl
cywgZmluLCByc3YxLCByc3YyLCByc3YzCisgICAgICAgIHJldHVybiBwYXJzZV9mcmFtZShyZWNl
aXZlX2J5dGVzPV9yZWNlaXZlX2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n
Z2VyPXNlbGYuX2xvZ2dlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdzX3ZlcnNpb249
c2VsZi5fcmVxdWVzdC53c192ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5t
YXNrX3JlY2VpdmU9c2VsZi5fb3B0aW9ucy51bm1hc2tfcmVjZWl2ZSkKIAogICAgIGRlZiBfcmVj
ZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3Qoc2VsZik6CiAgICAgICAgIG9wY29kZSwgYnl0ZXMs
IGZpbiwgcnN2MSwgcnN2MiwgcnN2MyA9IHNlbGYuX3JlY2VpdmVfZnJhbWUoKQpAQCAtNDA3LDYg
KzQ2OCwzMiBAQCBjbGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgIHJldHVybiBGcmFt
ZShmaW49ZmluLCByc3YxPXJzdjEsIHJzdjI9cnN2MiwgcnN2Mz1yc3YzLAogICAgICAgICAgICAg
ICAgICAgICAgb3Bjb2RlPW9wY29kZSwgcGF5bG9hZD1ieXRlcykKIAorICAgIGRlZiByZWNlaXZl
X2ZpbHRlcmVkX2ZyYW1lKHNlbGYpOgorICAgICAgICAiIiJSZWNlaXZlcyBhIGZyYW1lIGFuZCBh
cHBsaWVzIGZyYW1lIGZpbHRlcnMgYW5kIG1lc3NhZ2UgZmlsdGVycy4KKyAgICAgICAgVGhlIGZy
YW1lIHRvIGJlIHJlY2VpdmVkIG11c3Qgc2F0aXNmeSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAg
ICAgICAgLSBUaGUgZnJhbWUgaXMgbm90IGZyYWdtZW50ZWQuCisgICAgICAgIC0gVGhlIG9wY29k
ZSBvZiB0aGUgZnJhbWUgaXMgVEVYVCBvciBCSU5BUlkuCisKKyAgICAgICAgRE8gTk9UIFVTRSB0
aGlzIG1ldGhvZCBleGNlcHQgZm9yIHRlc3RpbmcgcHVycG9zZS4KKyAgICAgICAgIiIiCisKKyAg
ICAgICAgZnJhbWUgPSBzZWxmLl9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdCgpCisgICAg
ICAgIGlmIG5vdCBmcmFtZS5maW46CisgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNl
cHRpb24oCisgICAgICAgICAgICAgICAgJ1NlZ21lbnRlZCBmcmFtZXMgbXVzdCBub3QgYmUgcmVj
ZWl2ZWQgdmlhICcKKyAgICAgICAgICAgICAgICAncmVjZWl2ZV9maWx0ZXJlZF9mcmFtZSgpJykK
KyAgICAgICAgaWYgKGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BDT0RFX1RFWFQgYW5kCisgICAg
ICAgICAgICBmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9CSU5BUlkpOgorICAgICAgICAg
ICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdDb250cm9s
IGZyYW1lcyBtdXN0IG5vdCBiZSByZWNlaXZlZCB2aWEgJworICAgICAgICAgICAgICAgICdyZWNl
aXZlX2ZpbHRlcmVkX2ZyYW1lKCknKQorCisgICAgICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gc2Vs
Zi5fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzOgorICAgICAgICAgICAgZnJhbWVfZmls
dGVyLmZpbHRlcihmcmFtZSkKKyAgICAgICAgZm9yIG1lc3NhZ2VfZmlsdGVyIGluIHNlbGYuX29w
dGlvbnMuaW5jb21pbmdfbWVzc2FnZV9maWx0ZXJzOgorICAgICAgICAgICAgZnJhbWUucGF5bG9h
ZCA9IG1lc3NhZ2VfZmlsdGVyLmZpbHRlcihmcmFtZS5wYXlsb2FkKQorICAgICAgICByZXR1cm4g
ZnJhbWUKKwogICAgIGRlZiBzZW5kX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kPVRydWUsIGJp
bmFyeT1GYWxzZSk6CiAgICAgICAgICIiIlNlbmQgbWVzc2FnZS4KIApAQCAtNDI4LDExICs1MTUs
MjE5IEBAIGNsYXNzIFN0cmVhbShTdHJlYW1CYXNlKToKICAgICAgICAgICAgIHJhaXNlIEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAnTWVzc2FnZSBmb3IgYmluYXJ5IGZy
YW1lIG11c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKIAorICAgICAgICBmb3IgbWVzc2FnZV9maWx0
ZXIgaW4gc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6CisgICAgICAgICAg
ICBtZXNzYWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQor
CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlKHNlbGYuX3dyaXRlci5idWls
ZChtZXNzYWdlLCBlbmQsIGJpbmFyeSkpCisgICAgICAgICAgICAjIFNldCB0aGlzIHRvIGFueSBw
b3NpdGl2ZSBpbnRlZ2VyIHRvIGxpbWl0IG1heGltdW0gc2l6ZSBvZiBkYXRhIGluCisgICAgICAg
ICAgICAjIHBheWxvYWQgZGF0YSBvZiBlYWNoIGZyYW1lLgorICAgICAgICAgICAgTUFYX1BBWUxP
QURfREFUQV9TSVpFID0gLTEKKworICAgICAgICAgICAgaWYgTUFYX1BBWUxPQURfREFUQV9TSVpF
IDw9IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUoc2VsZi5fd3JpdGVyLmJ1aWxkKG1l
c3NhZ2UsIGVuZCwgYmluYXJ5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAg
ICAgYnl0ZXNfd3JpdHRlbiA9IDAKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAg
ICAgICAgZW5kX2Zvcl90aGlzX2ZyYW1lID0gZW5kCisgICAgICAgICAgICAgICAgYnl0ZXNfdG9f
d3JpdGUgPSBsZW4obWVzc2FnZSkgLSBieXRlc193cml0dGVuCisgICAgICAgICAgICAgICAgaWYg
KE1BWF9QQVlMT0FEX0RBVEFfU0laRSA+IDAgYW5kCisgICAgICAgICAgICAgICAgICAgIGJ5dGVz
X3RvX3dyaXRlID4gTUFYX1BBWUxPQURfREFUQV9TSVpFKToKKyAgICAgICAgICAgICAgICAgICAg
ZW5kX2Zvcl90aGlzX2ZyYW1lID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG9f
d3JpdGUgPSBNQVhfUEFZTE9BRF9EQVRBX1NJWkUKKworICAgICAgICAgICAgICAgIGZyYW1lID0g
c2VsZi5fd3JpdGVyLmJ1aWxkKAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlW2J5dGVzX3dy
aXR0ZW46Ynl0ZXNfd3JpdHRlbiArIGJ5dGVzX3RvX3dyaXRlXSwKKyAgICAgICAgICAgICAgICAg
ICAgZW5kX2Zvcl90aGlzX2ZyYW1lLAorICAgICAgICAgICAgICAgICAgICBiaW5hcnkpCisgICAg
ICAgICAgICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCisKKyAgICAgICAgICAgICAgICBieXRlc193
cml0dGVuICs9IGJ5dGVzX3RvX3dyaXRlCisKKyAgICAgICAgICAgICAgICAjIFRoaXMgaWYgbXVz
dCBiZSBwbGFjZWQgaGVyZSAodGhlIGVuZCBvZiB3aGlsZSBibG9jaykgc28gdGhhdAorICAgICAg
ICAgICAgICAgICMgYXQgbGVhc3Qgb25lIGZyYW1lIGlzIHNlbnQuCisgICAgICAgICAgICAgICAg
aWYgbGVuKG1lc3NhZ2UpIDw9IGJ5dGVzX3dyaXR0ZW46CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgogICAgICAgICAgICAgcmFpc2UgQmFk
T3BlcmF0aW9uRXhjZXB0aW9uKGUpCiAKKyAgICBkZWYgX2dldF9tZXNzYWdlX2Zyb21fZnJhbWUo
c2VsZiwgZnJhbWUpOgorICAgICAgICAiIiJHZXRzIGEgbWVzc2FnZSBmcm9tIGZyYW1lLiBJZiB0
aGUgbWVzc2FnZSBpcyBjb21wb3NlZCBvZiBmcmFnbWVudGVkCisgICAgICAgIGZyYW1lcyBhbmQg
dGhlIGZyYW1lIGlzIG5vdCB0aGUgbGFzdCBmcmFnbWVudGVkIGZyYW1lLCB0aGlzIG1ldGhvZAor
ICAgICAgICByZXR1cm5zIE5vbmUuIFRoZSB3aG9sZSBtZXNzYWdlIHdpbGwgYmUgcmV0dXJuZWQg
d2hlbiB0aGUgbGFzdAorICAgICAgICBmcmFnbWVudGVkIGZyYW1lIGlzIHBhc3NlZCB0byB0aGlz
IG1ldGhvZC4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBJbnZhbGlkRnJhbWVFeGNl
cHRpb246IHdoZW4gdGhlIGZyYW1lIGRvZXNuJ3QgbWF0Y2ggZGVmcmFnbWVudGF0aW9uCisgICAg
ICAgICAgICAgICAgY29udGV4dCwgb3IgdGhlIGZyYW1lIGNvbnRhaW5zIGludmFsaWQgZGF0YS4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09IGNvbW1vbi5PUENPREVf
Q09OVElOVUFUSU9OOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50
czoKKyAgICAgICAgICAgICAgICBpZiBmcmFtZS5maW46CisgICAgICAgICAgICAgICAgICAgIHJh
aXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdSZWNl
aXZlZCBhIHRlcm1pbmF0aW9uIGZyYW1lIGJ1dCBmcmFnbWVudGF0aW9uICcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICdub3Qgc3RhcnRlZCcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgJ1JlY2VpdmVkIGFuIGludGVybWVkaWF0ZSBmcmFtZSBidXQgJworICAgICAg
ICAgICAgICAgICAgICAgICAgJ2ZyYWdtZW50YXRpb24gbm90IHN0YXJ0ZWQnKQorCisgICAgICAg
ICAgICBpZiBmcmFtZS5maW46CisgICAgICAgICAgICAgICAgIyBFbmQgb2YgZnJhZ21lbnRhdGlv
biBmcmFtZQorICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQo
ZnJhbWUucGF5bG9hZCkKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gJycuam9pbihzZWxmLl9y
ZWNlaXZlZF9mcmFnbWVudHMpCisgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21l
bnRzID0gW10KKyAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQorICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAjIEludGVybWVkaWF0ZSBmcmFtZQorICAgICAgICAgICAgICAg
IHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgc2VsZi5f
cmVjZWl2ZWRfZnJhZ21lbnRzOgorICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKKyAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAg
ICAgICAgICAgICAgJ1JlY2VpdmVkIGFuIHVuZnJhZ21lbnRlZCBmcmFtZSB3aXRob3V0ICcKKyAg
ICAgICAgICAgICAgICAgICAgICAgICd0ZXJtaW5hdGluZyBleGlzdGluZyBmcmFnbWVudGF0aW9u
JykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZh
bGlkRnJhbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAnTmV3IGZyYWdtZW50
YXRpb24gc3RhcnRlZCB3aXRob3V0IHRlcm1pbmF0aW5nICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICdleGlzdGluZyBmcmFnbWVudGF0aW9uJykKKworICAgICAgICAgICAgaWYgZnJhbWUuZmlu
OgorICAgICAgICAgICAgICAgICMgVW5mcmFnbWVudGVkIGZyYW1lCisKKyAgICAgICAgICAgICAg
ICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZnJhbWUucGF5bG9hZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAj
IFN0YXJ0IG9mIGZyYWdtZW50YXRpb24gZnJhbWUKKworICAgICAgICAgICAgICAgIGlmIChub3Qg
c2VsZi5fb3B0aW9ucy5hbGxvd19mcmFnbWVudGVkX2NvbnRyb2xfZnJhbWUgYW5kCisgICAgICAg
ICAgICAgICAgICAgIGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpKToKKyAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAg
ICAgICAgICAgICAgICAgJ0NvbnRyb2wgZnJhbWVzIG11c3Qgbm90IGJlIGZyYWdtZW50ZWQnKQor
CisgICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gZnJhbWUub3Bjb2RlCisg
ICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXls
b2FkKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgX3Byb2Nlc3NfY2xv
c2VfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgIiIiUHJvY2Vzc2VzIGNsb3NlIG1l
c3NhZ2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG1lc3NhZ2U6IGNsb3NlIG1lc3Nh
Z2UuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9u
OiB3aGVuIHRoZSBtZXNzYWdlIGlzIGludmFsaWQuCisgICAgICAgICIiIgorCisgICAgICAgIHNl
bGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQgPSBUcnVlCisKKyAgICAgICAgIyBTdGF0dXMg
Y29kZSBpcyBvcHRpb25hbC4gV2UgY2FuIGhhdmUgc3RhdHVzIHJlYXNvbiBvbmx5IGlmIHdlCisg
ICAgICAgICMgaGF2ZSBzdGF0dXMgY29kZS4gU3RhdHVzIHJlYXNvbiBjYW4gYmUgZW1wdHkgc3Ry
aW5nLiBTbywKKyAgICAgICAgIyBhbGxvd2VkIGNhc2VzIGFyZQorICAgICAgICAjIC0gbm8gYXBw
bGljYXRpb24gZGF0YTogbm8gY29kZSBubyByZWFzb24KKyAgICAgICAgIyAtIDIgb2N0ZXQgb2Yg
YXBwbGljYXRpb24gZGF0YTogaGFzIGNvZGUgYnV0IG5vIHJlYXNvbgorICAgICAgICAjIC0gMyBv
ciBtb3JlIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6IGJvdGggY29kZSBhbmQgcmVhc29uCisg
ICAgICAgIGlmIGxlbihtZXNzYWdlKSA9PSAwOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdSZWNlaXZlZCBjbG9zZSBmcmFtZSAoZW1wdHkgYm9keSknKQorICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gKAorICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFU
VVNfTk9fU1RBVFVTX1JFQ0VJVkVEKQorICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA9PSAxOgor
ICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAg
ICdJZiBhIGNsb3NlIGZyYW1lIGhhcyBzdGF0dXMgY29kZSwgdGhlIGxlbmd0aCBvZiAnCisgICAg
ICAgICAgICAgICAgJ3N0YXR1cyBjb2RlIG11c3QgYmUgMiBvY3RldCcpCisgICAgICAgIGVsaWYg
bGVuKG1lc3NhZ2UpID49IDI6CisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2Nv
ZGUgPSBzdHJ1Y3QudW5wYWNrKAorICAgICAgICAgICAgICAgICchSCcsIG1lc3NhZ2VbMDoyXSlb
MF0KKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfcmVhc29uID0gbWVzc2FnZVsy
Ol0uZGVjb2RlKAorICAgICAgICAgICAgICAgICd1dGYtOCcsICdyZXBsYWNlJykKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgY2xvc2Ug
ZnJhbWUgKGNvZGU9JWQsIHJlYXNvbj0lciknLAorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3Qud3NfY2xvc2VfY29kZSwKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3Nl
X3JlYXNvbikKKworICAgICAgICAjIERyYWluIGp1bmsgZGF0YSBhZnRlciB0aGUgY2xvc2UgZnJh
bWUgaWYgbmVjZXNzYXJ5LgorICAgICAgICBzZWxmLl9kcmFpbl9yZWNlaXZlZF9kYXRhKCkKKwor
ICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgorICAgICAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9yIHNl
cnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQorICAgICAgICAgICAgcmV0dXJuCisK
KyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgJ1JlY2VpdmVkIGNsaWVu
dC1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQorCisgICAgICAgIGNvZGUgPSBjb21tb24u
U1RBVFVTX05PUk1BTF9DTE9TVVJFCisgICAgICAgIHJlYXNvbiA9ICcnCisgICAgICAgIGlmIGhh
c2F0dHIoc2VsZi5fcmVxdWVzdCwgJ19kaXNwYXRjaGVyJyk6CisgICAgICAgICAgICBkaXNwYXRj
aGVyID0gc2VsZi5fcmVxdWVzdC5fZGlzcGF0Y2hlcgorICAgICAgICAgICAgY29kZSwgcmVhc29u
ID0gZGlzcGF0Y2hlci5wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKAorICAgICAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICBpZiBjb2RlIGlzIE5vbmUgYW5kIHJlYXNvbiBp
cyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgorICAgICAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci53YXJuaW5nKAorICAgICAgICAgICAgICAgICAgICAnSGFuZGxlciBzcGVjaWZpZWQgcmVh
c29uIGRlc3BpdGUgY29kZSBiZWluZyBOb25lJykKKyAgICAgICAgICAgICAgICByZWFzb24gPSAn
JworICAgICAgICAgICAgaWYgcmVhc29uIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmVhc29u
ID0gJycKKyAgICAgICAgc2VsZi5fc2VuZF9jbG9zaW5nX2hhbmRzaGFrZShjb2RlLCByZWFzb24p
CisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICdTZW50IGFjayBmb3Ig
Y2xpZW50LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZSAnCisgICAgICAgICAgICAnKGNvZGU9
JXIsIHJlYXNvbj0lciknLCBjb2RlLCByZWFzb24pCisKKyAgICBkZWYgX3Byb2Nlc3NfcGluZ19t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAiIiJQcm9jZXNzZXMgcGluZyBtZXNzYWdl
LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBtZXNzYWdlOiBwaW5nIG1lc3NhZ2UuCisg
ICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLl9y
ZXF1ZXN0Lm9uX3BpbmdfaGFuZGxlcgorICAgICAgICAgICAgaWYgaGFuZGxlcjoKKyAgICAgICAg
ICAgICAgICBoYW5kbGVyKHNlbGYuX3JlcXVlc3QsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciwgZToKKyAgICAgICAgICAgIHBh
c3MKKyAgICAgICAgc2VsZi5fc2VuZF9wb25nKG1lc3NhZ2UpCisKKyAgICBkZWYgX3Byb2Nlc3Nf
cG9uZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAiIiJQcm9jZXNzZXMgcG9uZyBt
ZXNzYWdlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBtZXNzYWdlOiBwb25nIG1lc3Nh
Z2UuCisgICAgICAgICIiIgorCisgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IEFkZCBwaW5nIHRp
bWVvdXQgaGFuZGxpbmcuCisKKyAgICAgICAgaW5mbGlnaHRfcGluZ3MgPSBkZXF1ZSgpCisKKyAg
ICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZF9ib2R5ID0gc2VsZi5fcGluZ19xdWV1ZS5wb3BsZWZ0KCkKKyAgICAgICAgICAgICAgICBp
ZiBleHBlY3RlZF9ib2R5ID09IG1lc3NhZ2U6CisgICAgICAgICAgICAgICAgICAgICMgaW5mbGln
aHRfcGluZ3MgY29udGFpbnMgcGluZ3MgaWdub3JlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgIyBvdGhlciBwZWVyLiBKdXN0IGZvcmdldCB0aGVtLgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAgICAgICAgICAgICAnUGluZyAlciBpcyBh
Y2tlZCAoJWQgcGluZ3Mgd2VyZSBpZ25vcmVkKScsCisgICAgICAgICAgICAgICAgICAgICAgICBl
eHBlY3RlZF9ib2R5LCBsZW4oaW5mbGlnaHRfcGluZ3MpKQorICAgICAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGluZmxpZ2h0
X3BpbmdzLmFwcGVuZChleHBlY3RlZF9ib2R5KQorICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJy
b3IsIGU6CisgICAgICAgICAgICAgICAgIyBUaGUgcmVjZWl2ZWQgcG9uZyB3YXMgdW5zb2xpY2l0
ZWQgcG9uZy4gS2VlcCB0aGUKKyAgICAgICAgICAgICAgICAjIHBpbmcgcXVldWUgYXMgaXMuCisg
ICAgICAgICAgICAgICAgc2VsZi5fcGluZ19xdWV1ZSA9IGluZmxpZ2h0X3BpbmdzCisgICAgICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBhIHVuc29saWNpdGVkIHBvbmcn
KQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaGFu
ZGxlciA9IHNlbGYuX3JlcXVlc3Qub25fcG9uZ19oYW5kbGVyCisgICAgICAgICAgICBpZiBoYW5k
bGVyOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKKyAg
ICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yLCBlOgorICAgICAgICAgICAgcGFzcworCiAgICAg
ZGVmIHJlY2VpdmVfbWVzc2FnZShzZWxmKToKICAgICAgICAgIiIiUmVjZWl2ZSBhIFdlYlNvY2tl
dCBmcmFtZSBhbmQgcmV0dXJuIGl0cyBwYXlsb2FkIGFzIGEgdGV4dCBpbgogICAgICAgICB1bmlj
b2RlIG9yIGEgYmluYXJ5IGluIHN0ci4KQEAgLTQ4Miw1MiArNzc3LDEyIEBAIGNsYXNzIFN0cmVh
bShTdHJlYW1CYXNlKToKICAgICAgICAgICAgICAgICAgICAgJ1Vuc3VwcG9ydGVkIGZsYWcgaXMg
c2V0IChyc3YgPSAlZCVkJWQpJyAlCiAgICAgICAgICAgICAgICAgICAgIChmcmFtZS5yc3YxLCBm
cmFtZS5yc3YyLCBmcmFtZS5yc3YzKSkKIAotICAgICAgICAgICAgaWYgZnJhbWUub3Bjb2RlID09
IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll9yZWNlaXZlZF9mcmFnbWVudHM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYSB0ZXJtaW5hdGlvbiBmcmFtZSBi
dXQgZnJhZ21lbnRhdGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBzdGFy
dGVkJykKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnUmVjZWl2ZWQgYW4gaW50ZXJtZWRpYXRlIGZyYW1lIGJ1dCAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2ZyYWdtZW50YXRpb24gbm90IHN0YXJ0ZWQnKQotCi0gICAgICAgICAgICAg
ICAgaWYgZnJhbWUuZmluOgotICAgICAgICAgICAgICAgICAgICAjIEVuZCBvZiBmcmFnbWVudGF0
aW9uIGZyYW1lCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5h
cHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICcnLmpv
aW4oc2VsZi5fcmVjZWl2ZWRfZnJhZ21lbnRzKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9y
ZWNlaXZlZF9mcmFnbWVudHMgPSBbXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgICMgSW50ZXJtZWRpYXRlIGZyYW1lCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
X3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fcmVjZWl2ZWRfZnJhZ21lbnRzOgotICAgICAgICAgICAgICAgICAgICBpZiBmcmFtZS5maW46
Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFuIHVuZnJhZ21lbnRlZCBmcmFt
ZSB3aXRob3V0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVybWluYXRpbmcgZXhp
c3RpbmcgZnJhZ21lbnRhdGlvbicpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ05ldyBmcmFnbWVudGF0aW9uIHN0YXJ0ZWQgd2l0aG91dCB0ZXJt
aW5hdGluZyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nIGZyYWdtZW50
YXRpb24nKQotCi0gICAgICAgICAgICAgICAgaWYgZnJhbWUuZmluOgotICAgICAgICAgICAgICAg
ICAgICAjIFVuZnJhZ21lbnRlZCBmcmFtZQotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29y
aWdpbmFsX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gZnJhbWUucGF5bG9hZAotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
ICAgICMgU3RhcnQgb2YgZnJhZ21lbnRhdGlvbiBmcmFtZQotCi0gICAgICAgICAgICAgICAgICAg
IGlmIGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUpOgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdDb250cm9sIGZyYW1lcyBtdXN0IG5vdCBiZSBmcmFnbWVudGVkJykKKyAg
ICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lKGZyYW1lKQor
ICAgICAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CiAKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID0gZnJhbWUub3Bj
b2RlCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cy5hcHBlbmQo
ZnJhbWUucGF5bG9hZCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAg
IGZvciBtZXNzYWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2VfZmls
dGVyczoKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1l
c3NhZ2UpCiAKICAgICAgICAgICAgIGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24u
T1BDT0RFX1RFWFQ6CiAgICAgICAgICAgICAgICAgIyBUaGUgV2ViU29ja2V0IHByb3RvY29sIHNl
Y3Rpb24gNC40IHNwZWNpZmllcyB0aGF0IGludmFsaWQKQEAgLTU0MCwxMjQgKzc5NSwyMSBAQCBj
bGFzcyBTdHJlYW0oU3RyZWFtQmFzZSk6CiAgICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFs
X29wY29kZSA9PSBjb21tb24uT1BDT0RFX0JJTkFSWToKICAgICAgICAgICAgICAgICByZXR1cm4g
bWVzc2FnZQogICAgICAgICAgICAgZWxpZiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPT0gY29tbW9u
Lk9QQ09ERV9DTE9TRToKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJt
aW5hdGVkID0gVHJ1ZQotCi0gICAgICAgICAgICAgICAgIyBTdGF0dXMgY29kZSBpcyBvcHRpb25h
bC4gV2UgY2FuIGhhdmUgc3RhdHVzIHJlYXNvbiBvbmx5IGlmIHdlCi0gICAgICAgICAgICAgICAg
IyBoYXZlIHN0YXR1cyBjb2RlLiBTdGF0dXMgcmVhc29uIGNhbiBiZSBlbXB0eSBzdHJpbmcuIFNv
LAotICAgICAgICAgICAgICAgICMgYWxsb3dlZCBjYXNlcyBhcmUKLSAgICAgICAgICAgICAgICAj
IC0gbm8gYXBwbGljYXRpb24gZGF0YTogbm8gY29kZSBubyByZWFzb24KLSAgICAgICAgICAgICAg
ICAjIC0gMiBvY3RldCBvZiBhcHBsaWNhdGlvbiBkYXRhOiBoYXMgY29kZSBidXQgbm8gcmVhc29u
Ci0gICAgICAgICAgICAgICAgIyAtIDMgb3IgbW9yZSBvY3RldCBvZiBhcHBsaWNhdGlvbiBkYXRh
OiBib3RoIGNvZGUgYW5kIHJlYXNvbgotICAgICAgICAgICAgICAgIGlmIGxlbihtZXNzYWdlKSA9
PSAwOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGNs
b3NlIGZyYW1lIChlbXB0eSBib2R5KScpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVl
c3Qud3NfY2xvc2VfY29kZSA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TVEFU
VVNfTk9fU1RBVFVTX1JFQ0VJVkVEKQotICAgICAgICAgICAgICAgIGVsaWYgbGVuKG1lc3NhZ2Up
ID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICdJZiBhIGNsb3NlIGZyYW1lIGhhcyBzdGF0dXMgY29k
ZSwgdGhlIGxlbmd0aCBvZiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnc3RhdHVzIGNvZGUg
bXVzdCBiZSAyIG9jdGV0JykKLSAgICAgICAgICAgICAgICBlbGlmIGxlbihtZXNzYWdlKSA+PSAy
OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBzdHJ1
Y3QudW5wYWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgJyFIJywgbWVzc2FnZVswOjJdKVsw
XQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbiA9IG1l
c3NhZ2VbMjpdLmRlY29kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICd1dGYtOCcsICdyZXBs
YWNlJykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAg
ICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsb3NlIGZyYW1lIChjb2RlPSVkLCByZWFzb249JXIp
JywKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfcmVhc29uKQot
Ci0gICAgICAgICAgICAgICAgIyBEcmFpbiBqdW5rIGRhdGEgYWZ0ZXIgdGhlIGNsb3NlIGZyYW1l
IGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgICAgICAgICBzZWxmLl9kcmFpbl9yZWNlaXZlZF9kYXRh
KCkKLQotICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAg
ICAgICAgICAgICdSZWNlaXZlZCBhY2sgZm9yIHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5k
c2hha2UnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgY2xp
ZW50LWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICAgICAgICAgICAgICBjb2Rl
ID0gY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRQotICAgICAgICAgICAgICAgIHJlYXNvbiA9
ICcnCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9yZXF1ZXN0LCAnX2Rpc3BhdGNo
ZXInKToKLSAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlciA9IHNlbGYuX3JlcXVlc3QuX2Rp
c3BhdGNoZXIKLSAgICAgICAgICAgICAgICAgICAgY29kZSwgcmVhc29uID0gZGlzcGF0Y2hlci5w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdCkKLSAgICAgICAgICAgICAgICAgICAgaWYgY29kZSBpcyBOb25lIGFuZCByZWFzb24g
aXMgbm90IE5vbmUgYW5kIGxlbihyZWFzb24pID4gMDoKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci53YXJuaW5nKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdIYW5k
bGVyIHNwZWNpZmllZCByZWFzb24gZGVzcGl0ZSBjb2RlIGJlaW5nIE5vbmUnKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmVhc29uID0gJycKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVhc29u
IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWFzb24gPSAnJwotICAgICAgICAg
ICAgICAgIHNlbGYuX3NlbmRfY2xvc2luZ19oYW5kc2hha2UoY29kZSwgcmVhc29uKQotICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgJ1NlbnQg
YWNrIGZvciBjbGllbnQtaW5pdGlhdGVkIGNsb3NpbmcgaGFuZHNoYWtlICcKLSAgICAgICAgICAg
ICAgICAgICAgJyhjb2RlPSVyLCByZWFzb249JXIpJywgY29kZSwgcmVhc29uKQorICAgICAgICAg
ICAgICAgIHNlbGYuX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZShtZXNzYWdlKQogICAgICAgICAgICAg
ICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9
PSBjb21tb24uT1BDT0RFX1BJTkc6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgICAgICBoYW5kbGVyID0gc2VsZi5fcmVxdWVzdC5vbl9waW5nX2hhbmRsZXIKLSAgICAgICAg
ICAgICAgICAgICAgaWYgaGFuZGxlcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIo
c2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yLCBlOgotICAgICAgICAgICAg
ICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9wb25nKG1lc3NhZ2UpCisg
ICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19waW5nX21lc3NhZ2UobWVzc2FnZSkKICAgICAg
ICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5PUENPREVfUE9ORzoK
LSAgICAgICAgICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBZGQgcGluZyB0aW1lb3V0IGhhbmRs
aW5nLgotCi0gICAgICAgICAgICAgICAgaW5mbGlnaHRfcGluZ3MgPSBkZXF1ZSgpCi0KLSAgICAg
ICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZF9ib2R5ID0gc2VsZi5fcGluZ19xdWV1ZS5wb3BsZWZ0
KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4cGVjdGVkX2JvZHkgPT0gbWVzc2FnZToK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZmxpZ2h0X3BpbmdzIGNvbnRhaW5zIHBp
bmdzIGlnbm9yZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdGhlciBw
ZWVyLiBKdXN0IGZvcmdldCB0aGVtLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BpbmcgJXIg
aXMgYWNrZWQgKCVkIHBpbmdzIHdlcmUgaWdub3JlZCknLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBleHBlY3RlZF9ib2R5LCBsZW4oaW5mbGlnaHRfcGluZ3MpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZmxpZ2h0X3BpbmdzLmFwcGVuZChleHBlY3Rl
ZF9ib2R5KQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvciwgZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICMgVGhlIHJlY2VpdmVkIHBvbmcgd2FzIHVuc29saWNpdGVkIHBv
bmcuIEtlZXAgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIHBpbmcgcXVldWUgYXMgaXMu
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9waW5nX3F1ZXVlID0gaW5mbGlnaHRfcGlu
Z3MKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQg
YSB1bnNvbGljaXRlZCBwb25nJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAg
ICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLl9y
ZXF1ZXN0Lm9uX3BvbmdfaGFuZGxlcgotICAgICAgICAgICAgICAgICAgICBpZiBoYW5kbGVyOgot
ICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcihzZWxmLl9yZXF1ZXN0LCBtZXNzYWdlKQot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBleGNlcHQg
QXR0cmlidXRlRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19wb25nX21lc3Nh
Z2UobWVzc2FnZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVW5z
dXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgJ09wY29kZSAlZCBp
cyBub3Qgc3VwcG9ydGVkJyAlIHNlbGYuX29yaWdpbmFsX29wY29kZSkKIAogICAgIGRlZiBfc2Vu
ZF9jbG9zaW5nX2hhbmRzaGFrZShzZWxmLCBjb2RlLCByZWFzb24pOgotICAgICAgICBib2R5ID0g
JycKLSAgICAgICAgaWYgY29kZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIChjb2RlID4g
Y29tbW9uLlNUQVRVU19VU0VSX1BSSVZBVEVfTUFYIG9yCi0gICAgICAgICAgICAgICAgY29kZSA8
IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpOgotICAgICAgICAgICAgICAgIHJhaXNlIEJh
ZE9wZXJhdGlvbkV4Y2VwdGlvbignU3RhdHVzIGNvZGUgaXMgb3V0IG9mIHJhbmdlJykKLSAgICAg
ICAgICAgIGlmIChjb2RlID09IGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEIG9yCi0g
ICAgICAgICAgICAgICAgY29kZSA9PSBjb21tb24uU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUgb3IK
LSAgICAgICAgICAgICAgICBjb2RlID09IGNvbW1vbi5TVEFUVVNfVExTX0hBTkRTSEFLRSk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBp
cyByZXNlcnZlZCBwc2V1ZG8gJwotICAgICAgICAgICAgICAgICAgICAnY29kZScpCi0gICAgICAg
ICAgICBlbmNvZGVkX3JlYXNvbiA9IHJlYXNvbi5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgICAg
IGJvZHkgPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSArIGVuY29kZWRfcmVhc29uCi0KKyAgICAg
ICAgYm9keSA9IGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9ib2R5KGNvZGUsIHJlYXNvbikKICAg
ICAgICAgZnJhbWUgPSBjcmVhdGVfY2xvc2VfZnJhbWUoCi0gICAgICAgICAgICBib2R5LAotICAg
ICAgICAgICAgc2VsZi5fb3B0aW9ucy5tYXNrX3NlbmQsCi0gICAgICAgICAgICBzZWxmLl9vcHRp
b25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCisgICAgICAgICAgICBib2R5LCBtYXNrPXNlbGYu
X29wdGlvbnMubWFza19zZW5kLAorICAgICAgICAgICAgZnJhbWVfZmlsdGVycz1zZWxmLl9vcHRp
b25zLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMpCiAKICAgICAgICAgc2VsZi5fcmVxdWVzdC5zZXJ2
ZXJfdGVybWluYXRlZCA9IFRydWUKIApAQCAtNzMxLDYgKzg4MywxNCBAQCBjbGFzcyBTdHJlYW0o
U3RyZWFtQmFzZSk6CiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2Zp
bHRlcnMpCiAgICAgICAgIHNlbGYuX3dyaXRlKGZyYW1lKQogCisgICAgZGVmIGdldF9sYXN0X3Jl
Y2VpdmVkX29wY29kZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyB0aGUgb3Bjb2RlIG9mIHRo
ZSBXZWJTb2NrZXQgbWVzc2FnZSB3aGljaCB0aGUgbGFzdCByZWNlaXZlZAorICAgICAgICBmcmFt
ZSBiZWxvbmdzIHRvLiBUaGUgcmV0dXJuIHZhbHVlIGlzIHZhbGlkIGlmZiBpbW1lZGlhdGVseSBh
ZnRlcgorICAgICAgICByZWNlaXZlX21lc3NhZ2UgY2FsbC4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX29yaWdpbmFsX29wY29kZQorCiAgICAgZGVmIF9kcmFpbl9yZWNlaXZl
ZF9kYXRhKHNlbGYpOgogICAgICAgICAiIiJEcmFpbnMgdW5yZWFkIGRhdGEgaW4gdGhlIHJlY2Vp
dmUgYnVmZmVyIHRvIGF2b2lkIHNlbmRpbmcgb3V0IFRDUAogICAgICAgICBSU1QgcGFja2V0LiBU
aGlzIGlzIGJlY2F1c2Ugd2hlbiBkZWZsYXRlLXN0cmVhbSBpcyBlbmFibGVkLCBzb21lCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0
L2NvbW1vbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJz
b2NrZXQvY29tbW9uLnB5CmluZGV4IDcxMDk2N2M4MDMyNDgzZWMxMWQ4ODRhYmMxNWM1YmI5MmNl
OWZkMDMuLjIzODgzNzljMDhlNWE3NTc3MTFlNzY4YTc0YzQ1NmMxMWNmNjM3NjQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvY29t
bW9uLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJz
b2NrZXQvY29tbW9uLnB5CkBAIC0xMDQsNyArMTA0LDEwIEBAIFNFQ19XRUJTT0NLRVRfTE9DQVRJ
T05fSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb24nCiBERUZMQVRFX1NUUkVBTV9FWFRF
TlNJT04gPSAnZGVmbGF0ZS1zdHJlYW0nCiBERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiA9ICdkZWZs
YXRlLWZyYW1lJwogUEVSRlJBTUVfQ09NUFJFU1NJT05fRVhURU5TSU9OID0gJ3BlcmZyYW1lLWNv
bXByZXNzJworUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04gPSAncGVybWVzc2FnZS1j
b21wcmVzcycKIFhfV0VCS0lUX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ3gtd2Via2l0LWRl
ZmxhdGUtZnJhbWUnCitYX1dFQktJVF9QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiA9
ICd4LXdlYmtpdC1wZXJtZXNzYWdlLWNvbXByZXNzJworTVVYX0VYVEVOU0lPTiA9ICdtdXhfRE9f
Tk9UX1VTRScKIAogIyBTdGF0dXMgY29kZXMKICMgQ29kZSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJ
VkVELCBTVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRSwgYW5kCkBAIC0xMjUsNyArMTI4LDcgQEAgU1RB
VFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBID0gMTAwNwogU1RBVFVTX1BPTElDWV9WSU9M
QVRJT04gPSAxMDA4CiBTVEFUVVNfTUVTU0FHRV9UT09fQklHID0gMTAwOQogU1RBVFVTX01BTkRB
VE9SWV9FWFRFTlNJT04gPSAxMDEwCi1TVEFUVVNfSU5URVJOQUxfU0VSVkVSX0VSUk9SID0gMTAx
MQorU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SID0gMTAxMQogU1RBVFVTX1RMU19IQU5E
U0hBS0UgPSAxMDE1CiBTVEFUVVNfVVNFUl9SRUdJU1RFUkVEX0JBU0UgPSAzMDAwCiBTVEFUVVNf
VVNFUl9SRUdJU1RFUkVEX01BWCA9IDM5OTkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNoLnB5CmluZGV4
IGFiMWViNGZiM2MzNjI4OWYzZTdjZDE5OTM4ZjQ0Njg2MTYxM2VhNTIuLjI1OTA1ZjE4MGVhNDli
OTU2MGFjNmJkYzkxN2E5NzhiMzgxNDFkMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQpA
QCAtMzksNiArMzksNyBAQCBpbXBvcnQgcmUKIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBj
b21tb24KIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKIGZyb20gbW9kX3B5
d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXV4
CiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCiBmcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgdXRpbAogCkBAIC0yNzcsMTMgKzI3OCwxOCBAQCBjbGFzcyBEaXNwYXRjaGVyKG9i
amVjdCk6CiAgICAgICAgICAgICBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uOiB3aGVuIHVzZXIgaGFu
ZGxlciBhYm9ydCBjb25uZWN0aW9uCiAgICAgICAgICIiIgogCi0gICAgICAgIGhhbmRsZXJfc3Vp
dGUgPSBzZWxmLmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAg
IGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhj
ZXB0aW9uKCdObyBoYW5kbGVyIGZvcjogJXInICUgcmVxdWVzdC53c19yZXNvdXJjZSkKLSAgICAg
ICAgdHJhbnNmZXJfZGF0YV8gPSBoYW5kbGVyX3N1aXRlLnRyYW5zZmVyX2RhdGEKICAgICAgICAg
IyBUT0RPKHR5b3NoaW5vKTogVGVybWluYXRlIHVuZGVybHlpbmcgVENQIGNvbm5lY3Rpb24gaWYg
cG9zc2libGUuCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfKHJlcXVl
c3QpCisgICAgICAgICAgICBpZiBtdXgudXNlX211eChyZXF1ZXN0KToKKyAgICAgICAgICAgICAg
ICBtdXguc3RhcnQocmVxdWVzdCwgc2VsZikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuZ2V0X2hhbmRsZXJfc3VpdGUocmVxdWVzdC53c19y
ZXNvdXJjZSkKKyAgICAgICAgICAgICAgICBpZiBoYW5kbGVyX3N1aXRlIGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdObyBoYW5kbGVyIGZvcjog
JXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC53c19yZXNvdXJjZSkKKyAgICAgICAgICAgICAgICB0cmFuc2Zlcl9kYXRhXyA9IGhhbmRsZXJf
c3VpdGUudHJhbnNmZXJfZGF0YQorICAgICAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfKHJlcXVl
c3QpCisKICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgogICAg
ICAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQogICAgICAg
ICAjIENhdGNoIG5vbi1jcml0aWNhbCBleGNlcHRpb25zIHRoZSBoYW5kbGVyIGRpZG4ndCBoYW5k
bGUuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5
d2Vic29ja2V0L2V4dGVuc2lvbnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKaW5kZXggNTJiN2E0YTE5MjgxM2I1Nzgy
ZjY4YTFjOTQwMzg0OGE0N2EzYTI5Yy4uYzNjY2M0NmE4OTA1YzNiMzkzMTk5MTM5ZDQ3YmI2ZjM0
ZThjOWEwYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21v
ZF9weXdlYnNvY2tldC9leHRlbnNpb25zLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQpAQCAtMzgsNiArMzgsOSBA
QCBfYXZhaWxhYmxlX3Byb2Nlc3NvcnMgPSB7fQogCiBjbGFzcyBFeHRlbnNpb25Qcm9jZXNzb3JJ
bnRlcmZhY2Uob2JqZWN0KToKIAorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4g
Tm9uZQorCiAgICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6CiAgICAgICAgIHJl
dHVybiBOb25lCiAKQEAgLTQ2LDEzICs0OSwyMSBAQCBjbGFzcyBFeHRlbnNpb25Qcm9jZXNzb3JJ
bnRlcmZhY2Uob2JqZWN0KToKIAogCiBjbGFzcyBEZWZsYXRlU3RyZWFtRXh0ZW5zaW9uUHJvY2Vz
c29yKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6Ci0gICAgIiIiV2ViU29ja2V0IERFRkxB
VEUgc3RyZWFtIGV4dGVuc2lvbiBwcm9jZXNzb3IuIiIiCisgICAgIiIiV2ViU29ja2V0IERFRkxB
VEUgc3RyZWFtIGV4dGVuc2lvbiBwcm9jZXNzb3IuCisKKyAgICBTcGVjaWZpY2F0aW9uOgorICAg
IFNlY3Rpb24gOS4yLjEgaW4KKyAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1p
ZXRmLWh5YmktdGhld2Vic29ja2V0cHJvdG9jb2wtMTAKKyAgICAiIiIKIAogICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0KToKICAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xh
c3NfbG9nZ2VyKHNlbGYpCiAKICAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKIAorICAg
IGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gY29tbW9uLkRFRkxBVEVfU1RSRUFNX0VY
VEVOU0lPTgorCiAgICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6CiAgICAgICAg
IGlmIGxlbihzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfbmFtZXMoKSkgIT0gMDoKICAgICAg
ICAgICAgIHJldHVybiBOb25lCkBAIC03MCw4ICs4MSw0MCBAQCBfYXZhaWxhYmxlX3Byb2Nlc3Nv
cnNbY29tbW9uLkRFRkxBVEVfU1RSRUFNX0VYVEVOU0lPTl0gPSAoCiAgICAgRGVmbGF0ZVN0cmVh
bUV4dGVuc2lvblByb2Nlc3NvcikKIAogCitkZWYgX2xvZ19jb21wcmVzc2lvbl9yYXRpbyhsb2dn
ZXIsIG9yaWdpbmFsX2J5dGVzLCB0b3RhbF9vcmlnaW5hbF9ieXRlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbHRlcmVkX2J5dGVzLCB0b3RhbF9maWx0ZXJlZF9ieXRlcyk6CisgICAg
IyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0gZmxv
YXQoJ2luZicpCisgICAgYXZlcmFnZV9yYXRpbyA9IGZsb2F0KCdpbmYnKQorICAgIGlmIG9yaWdp
bmFsX2J5dGVzICE9IDA6CisgICAgICAgIHJhdGlvID0gZmxvYXQoZmlsdGVyZWRfYnl0ZXMpIC8g
b3JpZ2luYWxfYnl0ZXMKKyAgICBpZiB0b3RhbF9vcmlnaW5hbF9ieXRlcyAhPSAwOgorICAgICAg
ICBhdmVyYWdlX3JhdGlvID0gKAorICAgICAgICAgICAgZmxvYXQodG90YWxfZmlsdGVyZWRfYnl0
ZXMpIC8gdG90YWxfb3JpZ2luYWxfYnl0ZXMpCisgICAgbG9nZ2VyLmRlYnVnKCdPdXRnb2luZyBj
b21wcmVzcyByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAgICAgICAocmF0aW8sIGF2ZXJh
Z2VfcmF0aW8pKQorCisKK2RlZiBfbG9nX2RlY29tcHJlc3Npb25fcmF0aW8obG9nZ2VyLCByZWNl
aXZlZF9ieXRlcywgdG90YWxfcmVjZWl2ZWRfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbHRlcmVkX2J5dGVzLCB0b3RhbF9maWx0ZXJlZF9ieXRlcyk6CisgICAgIyBQcmlu
dCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgorICAgIHJhdGlvID0gZmxvYXQoJ2lu
ZicpCisgICAgYXZlcmFnZV9yYXRpbyA9IGZsb2F0KCdpbmYnKQorICAgIGlmIHJlY2VpdmVkX2J5
dGVzICE9IDA6CisgICAgICAgIHJhdGlvID0gZmxvYXQocmVjZWl2ZWRfYnl0ZXMpIC8gZmlsdGVy
ZWRfYnl0ZXMKKyAgICBpZiB0b3RhbF9maWx0ZXJlZF9ieXRlcyAhPSAwOgorICAgICAgICBhdmVy
YWdlX3JhdGlvID0gKAorICAgICAgICAgICAgZmxvYXQodG90YWxfcmVjZWl2ZWRfYnl0ZXMpIC8g
dG90YWxfZmlsdGVyZWRfYnl0ZXMpCisgICAgbG9nZ2VyLmRlYnVnKCdJbmNvbWluZyBjb21wcmVz
cyByYXRpbzogJWYgKGF2ZXJhZ2U6ICVmKScgJQorICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0
aW8pKQorCisKIGNsYXNzIERlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcihFeHRlbnNpb25Q
cm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiIldlYlNvY2tldCBQZXItZnJhbWUgREVGTEFURSBl
eHRlbnNpb24gcHJvY2Vzc29yLiIiIgorICAgICIiIldlYlNvY2tldCBQZXItZnJhbWUgREVGTEFU
RSBleHRlbnNpb24gcHJvY2Vzc29yLgorCisgICAgU3BlY2lmaWNhdGlvbjoKKyAgICBodHRwOi8v
dG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC10eW9zaGluby1oeWJpLXdlYnNvY2tldC1wZXJmcmFt
ZS1kZWZsYXRlCisgICAgIiIiCiAKICAgICBfV0lORE9XX0JJVFNfUEFSQU0gPSAnbWF4X3dpbmRv
d19iaXRzJwogICAgIF9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNID0gJ25vX2NvbnRleHRfdGFr
ZW92ZXInCkBAIC05Niw2ICsxMzksOSBAQCBjbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9j
ZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKICAgICAgICAgIyBUb3RhbCBudW1i
ZXIgb2YgaW5jb21pbmcgYnl0ZXMgb2J0YWluZWQgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIu
CiAgICAgICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX2luY29taW5nX3BheWxvYWRfYnl0ZXMgPSAw
CiAKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGNvbW1vbi5ERUZMQVRFX0ZS
QU1FX0VYVEVOU0lPTgorCiAgICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZik6CiAg
ICAgICAgICMgQW55IHVua25vd24gcGFyYW1ldGVyIHdpbGwgYmUganVzdCBpZ25vcmVkLgogCkBA
IC0xOTksMTggKzI0NSwxMCBAQCBjbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3Io
RXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9z
aXplID0gbGVuKGZyYW1lLnBheWxvYWQpCiAgICAgICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX291
dGdvaW5nX3BheWxvYWRfYnl0ZXMgKz0gZmlsdGVyZWRfcGF5bG9hZF9zaXplCiAKLSAgICAgICAg
IyBQcmludCBpbmYgd2hlbiByYXRpbyBpcyBub3QgYXZhaWxhYmxlLgotICAgICAgICByYXRpbyA9
IGZsb2F0KCdpbmYnKQotICAgICAgICBhdmVyYWdlX3JhdGlvID0gZmxvYXQoJ2luZicpCi0gICAg
ICAgIGlmIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSAhPSAwOgotICAgICAgICAgICAgcmF0aW8gPSBm
bG9hdChmaWx0ZXJlZF9wYXlsb2FkX3NpemUpIC8gb3JpZ2luYWxfcGF5bG9hZF9zaXplCi0gICAg
ICAgIGlmIHNlbGYuX3RvdGFsX291dGdvaW5nX3BheWxvYWRfYnl0ZXMgIT0gMDoKLSAgICAgICAg
ICAgIGF2ZXJhZ2VfcmF0aW8gPSAoCi0gICAgICAgICAgICAgICAgZmxvYXQoc2VsZi5fdG90YWxf
ZmlsdGVyZWRfb3V0Z29pbmdfcGF5bG9hZF9ieXRlcykgLwotICAgICAgICAgICAgICAgIHNlbGYu
X3RvdGFsX291dGdvaW5nX3BheWxvYWRfYnl0ZXMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygKLSAgICAgICAgICAgICdPdXRnb2luZyBjb21wcmVzcyByYXRpbzogJWYgKGF2ZXJhZ2U6ICVm
KScgJQotICAgICAgICAgICAgKHJhdGlvLCBhdmVyYWdlX3JhdGlvKSkKKyAgICAgICAgX2xvZ19j
b21wcmVzc2lvbl9yYXRpbyhzZWxmLl9sb2dnZXIsIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90b3RhbF9vdXRnb2luZ19wYXlsb2Fk
X2J5dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRf
c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90b3RhbF9maWx0ZXJl
ZF9vdXRnb2luZ19wYXlsb2FkX2J5dGVzKQogCiAgICAgZGVmIF9pbmNvbWluZ19maWx0ZXIoc2Vs
ZiwgZnJhbWUpOgogICAgICAgICAiIiJUcmFuc2Zvcm0gaW5jb21pbmcgZnJhbWVzLiBUaGlzIG1l
dGhvZCBpcyBjYWxsZWQgb25seSBieQpAQCAtMjMxLDE4ICsyNjksMTAgQEAgY2xhc3MgRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6CiAg
ICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQogICAgICAg
ICBzZWxmLl90b3RhbF9maWx0ZXJlZF9pbmNvbWluZ19wYXlsb2FkX2J5dGVzICs9IGZpbHRlcmVk
X3BheWxvYWRfc2l6ZQogCi0gICAgICAgICMgUHJpbnQgaW5mIHdoZW4gcmF0aW8gaXMgbm90IGF2
YWlsYWJsZS4KLSAgICAgICAgcmF0aW8gPSBmbG9hdCgnaW5mJykKLSAgICAgICAgYXZlcmFnZV9y
YXRpbyA9IGZsb2F0KCdpbmYnKQotICAgICAgICBpZiByZWNlaXZlZF9wYXlsb2FkX3NpemUgIT0g
MDoKLSAgICAgICAgICAgIHJhdGlvID0gZmxvYXQocmVjZWl2ZWRfcGF5bG9hZF9zaXplKSAvIGZp
bHRlcmVkX3BheWxvYWRfc2l6ZQotICAgICAgICBpZiBzZWxmLl90b3RhbF9maWx0ZXJlZF9pbmNv
bWluZ19wYXlsb2FkX2J5dGVzICE9IDA6Ci0gICAgICAgICAgICBhdmVyYWdlX3JhdGlvID0gKAot
ICAgICAgICAgICAgICAgIGZsb2F0KHNlbGYuX3RvdGFsX2luY29taW5nX3BheWxvYWRfYnl0ZXMp
IC8KLSAgICAgICAgICAgICAgICBzZWxmLl90b3RhbF9maWx0ZXJlZF9pbmNvbWluZ19wYXlsb2Fk
X2J5dGVzKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnSW5jb21p
bmcgY29tcHJlc3MgcmF0aW86ICVmIChhdmVyYWdlOiAlZiknICUKLSAgICAgICAgICAgIChyYXRp
bywgYXZlcmFnZV9yYXRpbykpCisgICAgICAgIF9sb2dfZGVjb21wcmVzc2lvbl9yYXRpbyhzZWxm
Ll9sb2dnZXIsIHJlY2VpdmVkX3BheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX3RvdGFsX2luY29taW5nX3BheWxvYWRfYnl0ZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90b3RhbF9maWx0ZXJlZF9pbmNvbWluZ19wYXls
b2FkX2J5dGVzKQogCiAKIF9hdmFpbGFibGVfcHJvY2Vzc29yc1tjb21tb24uREVGTEFURV9GUkFN
RV9FWFRFTlNJT05dID0gKApAQCAtMjUwLDcgKzI4MCw3IEBAIF9hdmFpbGFibGVfcHJvY2Vzc29y
c1tjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT05dID0gKAogCiAKICMgQWRkaW5nIHZlbmRv
ci1wcmVmaXhlZCBkZWZsYXRlLWZyYW1lIGV4dGVuc2lvbi4KLSMgVE9ETyhiYXNoaSk6IFJlbW92
ZSB0aGlzIGFmdGVyIFdlYktpdCBzdG9wcyB1c2luZyB2ZW5kZXIgcHJlZml4LgorIyBUT0RPKGJh
c2hpKTogUmVtb3ZlIHRoaXMgYWZ0ZXIgV2ViS2l0IHN0b3BzIHVzaW5nIHZlbmRvciBwcmVmaXgu
CiBfYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLlhfV0VCS0lUX0RFRkxBVEVfRlJBTUVfRVhU
RU5TSU9OXSA9ICgKICAgICBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCiAKQEAgLTI3
MCwyMSArMzAwLDIyIEBAIGRlZiBfY3JlYXRlX2FjY2VwdGVkX21ldGhvZF9kZXNjKG1ldGhvZF9u
YW1lLCBtZXRob2RfcGFyYW1zKToKICAgICByZXR1cm4gY29tbW9uLmZvcm1hdF9leHRlbnNpb24o
ZXh0ZW5zaW9uKQogCiAKLWNsYXNzIFBlckZyYW1lQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNz
b3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKLSAgICAiIiJXZWJTb2NrZXQgUGVyLWZy
YW1lIGNvbXByZXNzaW9uIGV4dGVuc2lvbiBwcm9jZXNzb3IuIiIiCitjbGFzcyBDb21wcmVzc2lv
bkV4dGVuc2lvblByb2Nlc3NvckJhc2UoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKKyAg
ICAiIiJCYXNlIGNsYXNzIGZvciBQZXItZnJhbWUgYW5kIFBlci1tZXNzYWdlIGNvbXByZXNzaW9u
IGV4dGVuc2lvbi4iIiIKIAogICAgIF9NRVRIT0RfUEFSQU0gPSAnbWV0aG9kJwotICAgIF9ERUZM
QVRFX01FVEhPRCA9ICdkZWZsYXRlJwogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3Qp
OgogICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKICAg
ICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKICAgICAgICAgc2VsZi5fY29tcHJlc3Npb25f
bWV0aG9kX25hbWUgPSBOb25lCiAgICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3NvciA9
IE5vbmUKKyAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yX2hvb2sgPSBOb25lCisK
KyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICcnCiAKICAgICBkZWYgX2xvb2t1
cF9jb21wcmVzc2lvbl9wcm9jZXNzb3Ioc2VsZiwgbWV0aG9kX2Rlc2MpOgotICAgICAgICBpZiBt
ZXRob2RfZGVzYy5uYW1lKCkgPT0gc2VsZi5fREVGTEFURV9NRVRIT0Q6Ci0gICAgICAgICAgICBy
ZXR1cm4gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKG1ldGhvZF9kZXNjKQogICAgICAg
ICByZXR1cm4gTm9uZQogCiAgICAgZGVmIF9nZXRfY29tcHJlc3Npb25fcHJvY2Vzc29yX3Jlc3Bv
bnNlKHNlbGYpOgpAQCAtMzExLDYgKzM0MiwxMCBAQCBjbGFzcyBQZXJGcmFtZUNvbXByZXNzaW9u
RXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6CiAgICAgICAg
ICAgICAgICAgYnJlYWsKICAgICAgICAgaWYgY29tcHJlc3Npb25fcHJvY2Vzc29yIGlzIE5vbmU6
CiAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGlmIHNlbGYuX2NvbXByZXNzaW9u
X3Byb2Nlc3Nvcl9ob29rOgorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29y
X2hvb2soY29tcHJlc3Npb25fcHJvY2Vzc29yKQorCiAgICAgICAgIHByb2Nlc3Nvcl9yZXNwb25z
ZSA9IGNvbXByZXNzaW9uX3Byb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKICAgICAg
ICAgaWYgcHJvY2Vzc29yX3Jlc3BvbnNlIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9u
ZQpAQCAtMzM3LDE0ICszNzIsMzQwIEBAIGNsYXNzIFBlckZyYW1lQ29tcHJlc3Npb25FeHRlbnNp
b25Qcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vzc29ySW50ZXJmYWNlKToKICAgICAgICAgICAgIHJl
dHVybgogICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3Iuc2V0dXBfc3RyZWFtX29w
dGlvbnMoc3RyZWFtX29wdGlvbnMpCiAKKyAgICBkZWYgc2V0X2NvbXByZXNzaW9uX3Byb2Nlc3Nv
cl9ob29rKHNlbGYsIGhvb2spOgorICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3Jf
aG9vayA9IGhvb2sKKwogICAgIGRlZiBnZXRfY29tcHJlc3Npb25fcHJvY2Vzc29yKHNlbGYpOgog
ICAgICAgICByZXR1cm4gc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yCiAKIAorY2xhc3MgUGVy
RnJhbWVDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvcihDb21wcmVzc2lvbkV4dGVuc2lvblBy
b2Nlc3NvckJhc2UpOgorICAgICIiIldlYlNvY2tldCBQZXItZnJhbWUgY29tcHJlc3Npb24gZXh0
ZW5zaW9uIHByb2Nlc3Nvci4KKworICAgIFNwZWNpZmljYXRpb246CisgICAgaHR0cDovL3Rvb2xz
LmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXdlYnNvY2tldC1wZXJmcmFtZS1jb21wcmVz
c2lvbgorICAgICIiIgorCisgICAgX0RFRkxBVEVfTUVUSE9EID0gJ2RlZmxhdGUnCisKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIENvbXByZXNzaW9uRXh0ZW5zaW9u
UHJvY2Vzc29yQmFzZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQorCisgICAgZGVmIG5hbWUoc2Vs
Zik6CisgICAgICAgIHJldHVybiBjb21tb24uUEVSRlJBTUVfQ09NUFJFU1NJT05fRVhURU5TSU9O
CisKKyAgICBkZWYgX2xvb2t1cF9jb21wcmVzc2lvbl9wcm9jZXNzb3Ioc2VsZiwgbWV0aG9kX2Rl
c2MpOgorICAgICAgICBpZiBtZXRob2RfZGVzYy5uYW1lKCkgPT0gc2VsZi5fREVGTEFURV9NRVRI
T0Q6CisgICAgICAgICAgICByZXR1cm4gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKG1l
dGhvZF9kZXNjKQorICAgICAgICByZXR1cm4gTm9uZQorCisKIF9hdmFpbGFibGVfcHJvY2Vzc29y
c1tjb21tb24uUEVSRlJBTUVfQ09NUFJFU1NJT05fRVhURU5TSU9OXSA9ICgKICAgICBQZXJGcmFt
ZUNvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yKQogCiAKK2NsYXNzIERlZmxhdGVNZXNzYWdl
UHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6CisgICAgIiIiUGVyLW1lc3Nh
Z2UgZGVmbGF0ZSBwcm9jZXNzb3IuIiIiCisKKyAgICBfUzJDX01BWF9XSU5ET1dfQklUU19QQVJB
TSA9ICdzMmNfbWF4X3dpbmRvd19iaXRzJworICAgIF9TMkNfTk9fQ09OVEVYVF9UQUtFT1ZFUl9Q
QVJBTSA9ICdzMmNfbm9fY29udGV4dF90YWtlb3ZlcicKKyAgICBfQzJTX01BWF9XSU5ET1dfQklU
U19QQVJBTSA9ICdjMnNfbWF4X3dpbmRvd19iaXRzJworICAgIF9DMlNfTk9fQ09OVEVYVF9UQUtF
T1ZFUl9QQVJBTSA9ICdjMnNfbm9fY29udGV4dF90YWtlb3ZlcicKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICAgICAg
c2VsZi5fYzJzX21heF93aW5kb3dfYml0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5fYzJzX25vX2Nv
bnRleHRfdGFrZW92ZXIgPSBGYWxzZQorCisgICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5n
X2VuYWJsZWQgPSBGYWxzZQorCisgICAgICAgICMgVHJ1ZSBpZiBhIG1lc3NhZ2UgaXMgZnJhZ21l
bnRlZCBhbmQgY29tcHJlc3Npb24gaXMgb25nb2luZy4KKyAgICAgICAgc2VsZi5fY29tcHJlc3Nf
b25nb2luZyA9IEZhbHNlCisKKyAgICAgICAgIyBDb3VudGVycyBmb3Igc3RhdGlzdGljcy4KKwor
ICAgICAgICAjIFRvdGFsIG51bWJlciBvZiBvdXRnb2luZyBieXRlcyBzdXBwbGllZCB0byB0aGlz
IGZpbHRlci4KKyAgICAgICAgc2VsZi5fdG90YWxfb3V0Z29pbmdfcGF5bG9hZF9ieXRlcyA9IDAK
KyAgICAgICAgIyBUb3RhbCBudW1iZXIgb2YgYnl0ZXMgc2VudCB0byB0aGUgbmV0d29yayBhZnRl
ciBhcHBseWluZyB0aGlzIGZpbHRlci4KKyAgICAgICAgc2VsZi5fdG90YWxfZmlsdGVyZWRfb3V0
Z29pbmdfcGF5bG9hZF9ieXRlcyA9IDAKKworICAgICAgICAjIFRvdGFsIG51bWJlciBvZiBieXRl
cyByZWNlaXZlZCBmcm9tIHRoZSBuZXR3b3JrLgorICAgICAgICBzZWxmLl90b3RhbF9pbmNvbWlu
Z19wYXlsb2FkX2J5dGVzID0gMAorICAgICAgICAjIFRvdGFsIG51bWJlciBvZiBpbmNvbWluZyBi
eXRlcyBvYnRhaW5lZCBhZnRlciBhcHBseWluZyB0aGlzIGZpbHRlci4KKyAgICAgICAgc2VsZi5f
dG90YWxfZmlsdGVyZWRfaW5jb21pbmdfcGF5bG9hZF9ieXRlcyA9IDAKKworICAgIGRlZiBuYW1l
KHNlbGYpOgorICAgICAgICByZXR1cm4gJ2RlZmxhdGUnCisKKyAgICBkZWYgZ2V0X2V4dGVuc2lv
bl9yZXNwb25zZShzZWxmKToKKyAgICAgICAgIyBBbnkgdW5rbm93biBwYXJhbWV0ZXIgd2lsbCBi
ZSBqdXN0IGlnbm9yZWQuCisKKyAgICAgICAgczJjX21heF93aW5kb3dfYml0cyA9IHNlbGYuX3Jl
cXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKKyAgICAgICAgICAgIHNlbGYuX1MyQ19NQVhfV0lO
RE9XX0JJVFNfUEFSQU0pCisgICAgICAgIGlmIHMyY19tYXhfd2luZG93X2JpdHMgaXMgbm90IE5v
bmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgczJjX21heF93aW5kb3dfYml0
cyA9IGludChzMmNfbWF4X3dpbmRvd19iaXRzKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJy
b3IsIGU6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIHMyY19t
YXhfd2luZG93X2JpdHMgPCA4IG9yIHMyY19tYXhfd2luZG93X2JpdHMgPiAxNToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHMyY19ub19jb250ZXh0X3Rha2VvdmVyID0g
c2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVyKAorICAgICAgICAgICAgc2VsZi5fUzJDX05PX0NP
TlRFWFRfVEFLRU9WRVJfUEFSQU0pCisgICAgICAgIGlmIChzMmNfbm9fY29udGV4dF90YWtlb3Zl
ciBhbmQKKyAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKKyAg
ICAgICAgICAgICAgICBzZWxmLl9TMkNfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSkgaXMgbm90
IE5vbmUpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBzZWxmLl9kZWZsYXRl
ciA9IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKKyAgICAgICAgICAgIHMyY19tYXhfd2luZG93X2Jp
dHMsIHMyY19ub19jb250ZXh0X3Rha2VvdmVyKQorCisgICAgICAgIHNlbGYuX2luZmxhdGVyID0g
dXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKKworICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2lu
Z19lbmFibGVkID0gVHJ1ZQorCisgICAgICAgIHJlc3BvbnNlID0gY29tbW9uLkV4dGVuc2lvblBh
cmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKKworICAgICAgICBpZiBzMmNfbWF4X3dpbmRv
d19iaXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigK
KyAgICAgICAgICAgICAgICBzZWxmLl9TMkNfTUFYX1dJTkRPV19CSVRTX1BBUkFNLCBzdHIoczJj
X21heF93aW5kb3dfYml0cykpCisKKyAgICAgICAgaWYgczJjX25vX2NvbnRleHRfdGFrZW92ZXI6
CisgICAgICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKAorICAgICAgICAgICAgICAgIHNl
bGYuX1MyQ19OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLCBOb25lKQorCisgICAgICAgIGlmIHNl
bGYuX2Myc19tYXhfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXNwb25z
ZS5hZGRfcGFyYW1ldGVyKAorICAgICAgICAgICAgICAgIHNlbGYuX0MyU19NQVhfV0lORE9XX0JJ
VFNfUEFSQU0sCisgICAgICAgICAgICAgICAgc3RyKHNlbGYuX2Myc19tYXhfd2luZG93X2JpdHMp
KQorICAgICAgICBpZiBzZWxmLl9jMnNfbm9fY29udGV4dF90YWtlb3ZlcjoKKyAgICAgICAgICAg
IHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCisgICAgICAgICAgICAgICAgc2VsZi5fQzJTX05PX0NP
TlRFWFRfVEFLRU9WRVJfUEFSQU0sIE5vbmUpCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KAorICAgICAgICAgICAgJ0VuYWJsZSAlcyBleHRlbnNpb24gKCcKKyAgICAgICAgICAgICdyZXF1
ZXN0OiBzMmNfbWF4X3dpbmRvd19iaXRzPSVzOyBzMmNfbm9fY29udGV4dF90YWtlb3Zlcj0lciwg
JworICAgICAgICAgICAgJ3Jlc3BvbnNlOiBjMnNfbWF4X3dpbmRvd19iaXRzPSVzOyBjMnNfbm9f
Y29udGV4dF90YWtlb3Zlcj0lciknICUKKyAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0Lm5hbWUo
KSwKKyAgICAgICAgICAgICBzMmNfbWF4X3dpbmRvd19iaXRzLAorICAgICAgICAgICAgIHMyY19u
b19jb250ZXh0X3Rha2VvdmVyLAorICAgICAgICAgICAgIHNlbGYuX2Myc19tYXhfd2luZG93X2Jp
dHMsCisgICAgICAgICAgICAgc2VsZi5fYzJzX25vX2NvbnRleHRfdGFrZW92ZXIpKQorCisgICAg
ICAgIHJldHVybiByZXNwb25zZQorCisgICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYs
IHN0cmVhbV9vcHRpb25zKToKKyAgICAgICAgY2xhc3MgX091dGdvaW5nTWVzc2FnZUZpbHRlcihv
YmplY3QpOgorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAg
ICAgICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKKworICAgICAgICAgICAgZGVmIGZpbHRl
cihzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UoCisgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQorCisgICAgICAgIGNsYXNzIF9JbmNv
bWluZ01lc3NhZ2VGaWx0ZXIob2JqZWN0KToKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBhcmVudCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50CisgICAg
ICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQorCisgICAg
ICAgICAgICBkZWYgZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6CisgICAgICAgICAgICAg
ICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCisKKyAgICAgICAgICAgIGRl
ZiBmaWx0ZXIoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYu
X3BhcmVudC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICBt
ZXNzYWdlLCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBz
ZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmV0
dXJuIG1lc3NhZ2UKKworICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9P
dXRnb2luZ01lc3NhZ2VGaWx0ZXIoc2VsZikKKyAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2Fn
ZV9maWx0ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCisgICAgICAgIHN0cmVhbV9v
cHRpb25zLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCisgICAgICAgICAgICBzZWxm
Ll9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcikKKyAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21p
bmdfbWVzc2FnZV9maWx0ZXJzLmFwcGVuZCgKKyAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21l
c3NhZ2VfZmlsdGVyKQorCisgICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVj
dCk6CisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICAg
ICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorICAgICAgICAgICAgICAgIHNlbGYuX3NldF9j
b21wcmVzc2lvbl9iaXQgPSBGYWxzZQorCisgICAgICAgICAgICBkZWYgc2V0X2NvbXByZXNzaW9u
X2JpdChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0g
VHJ1ZQorCisgICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKKyAgICAgICAgICAg
ICAgICBzZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUoCisgICAgICAgICAgICAg
ICAgICAgIGZyYW1lLCBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0KQorICAgICAgICAgICAgICAg
IHNlbGYuX3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxzZQorCisgICAgICAgIGNsYXNzIF9JbmNv
bWluZ0ZyYW1lRmlsdGVyKG9iamVjdCk6CisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwYXJlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAorCisgICAg
ICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9w
YXJlbnQuX3Byb2Nlc3NfaW5jb21pbmdfZnJhbWUoZnJhbWUpCisKKyAgICAgICAgc2VsZi5fb3V0
Z29pbmdfZnJhbWVfZmlsdGVyID0gX091dGdvaW5nRnJhbWVGaWx0ZXIoc2VsZikKKyAgICAgICAg
c2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyID0gX0luY29taW5nRnJhbWVGaWx0ZXIoc2VsZikK
KyAgICAgICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCisg
ICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIpCisgICAgICAgIHN0cmVhbV9v
cHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAorICAgICAgICAgICAgc2VsZi5f
aW5jb21pbmdfZnJhbWVfZmlsdGVyKQorCisgICAgICAgIHN0cmVhbV9vcHRpb25zLmVuY29kZV90
ZXh0X21lc3NhZ2VfdG9fdXRmOCA9IEZhbHNlCisKKyAgICBkZWYgc2V0X2Myc19tYXhfd2luZG93
X2JpdHMoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9jMnNfbWF4X3dpbmRvd19iaXRzID0g
dmFsdWUKKworICAgIGRlZiBzZXRfYzJzX25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZiwgdmFsdWUp
OgorICAgICAgICBzZWxmLl9jMnNfbm9fY29udGV4dF90YWtlb3ZlciA9IHZhbHVlCisKKyAgICBk
ZWYgZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jb21w
cmVzc19vdXRnb2luZ19lbmFibGVkID0gVHJ1ZQorCisgICAgZGVmIGRpc2FibGVfb3V0Z29pbmdf
Y29tcHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJs
ZWQgPSBGYWxzZQorCisgICAgZGVmIF9wcm9jZXNzX2luY29taW5nX21lc3NhZ2Uoc2VsZiwgbWVz
c2FnZSwgZGVjb21wcmVzcyk6CisgICAgICAgIGlmIG5vdCBkZWNvbXByZXNzOgorICAgICAgICAg
ICAgcmV0dXJuIG1lc3NhZ2UKKworICAgICAgICByZWNlaXZlZF9wYXlsb2FkX3NpemUgPSBsZW4o
bWVzc2FnZSkKKyAgICAgICAgc2VsZi5fdG90YWxfaW5jb21pbmdfcGF5bG9hZF9ieXRlcyArPSBy
ZWNlaXZlZF9wYXlsb2FkX3NpemUKKworICAgICAgICBtZXNzYWdlID0gc2VsZi5faW5mbGF0ZXIu
ZmlsdGVyKG1lc3NhZ2UpCisKKyAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1l
c3NhZ2UpCisgICAgICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX2luY29taW5nX3BheWxvYWRfYnl0
ZXMgKz0gZmlsdGVyZWRfcGF5bG9hZF9zaXplCisKKyAgICAgICAgX2xvZ19kZWNvbXByZXNzaW9u
X3JhdGlvKHNlbGYuX2xvZ2dlciwgcmVjZWl2ZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdG90YWxfaW5jb21pbmdfcGF5bG9hZF9ieXRlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RvdGFsX2ZpbHRlcmVkX2lu
Y29taW5nX3BheWxvYWRfYnl0ZXMpCisKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKworICAgIGRl
ZiBfcHJvY2Vzc19vdXRnb2luZ19tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGVuZCwgYmluYXJ5KToK
KyAgICAgICAgaWYgbm90IGJpbmFyeToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmVu
Y29kZSgndXRmLTgnKQorCisgICAgICAgIGlmIG5vdCBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19l
bmFibGVkOgorICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKKworICAgICAgICBvcmlnaW5hbF9w
YXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKKyAgICAgICAgc2VsZi5fdG90YWxfb3V0Z29pbmdf
cGF5bG9hZF9ieXRlcyArPSBvcmlnaW5hbF9wYXlsb2FkX3NpemUKKworICAgICAgICBtZXNzYWdl
ID0gc2VsZi5fZGVmbGF0ZXIuZmlsdGVyKG1lc3NhZ2UsIGZsdXNoPWVuZCkKKworICAgICAgICBm
aWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVzc2FnZSkKKyAgICAgICAgc2VsZi5fdG90YWxf
ZmlsdGVyZWRfb3V0Z29pbmdfcGF5bG9hZF9ieXRlcyArPSBmaWx0ZXJlZF9wYXlsb2FkX3NpemUK
KworICAgICAgICBfbG9nX2NvbXByZXNzaW9uX3JhdGlvKHNlbGYuX2xvZ2dlciwgb3JpZ2luYWxf
cGF5bG9hZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3RvdGFs
X291dGdvaW5nX3BheWxvYWRfYnl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmlsdGVyZWRfcGF5bG9hZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3RvdGFsX2ZpbHRlcmVkX291dGdvaW5nX3BheWxvYWRfYnl0ZXMpCisKKyAgICAgICAgaWYg
bm90IHNlbGYuX2NvbXByZXNzX29uZ29pbmc6CisgICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19m
cmFtZV9maWx0ZXIuc2V0X2NvbXByZXNzaW9uX2JpdCgpCisgICAgICAgIHNlbGYuX2NvbXByZXNz
X29uZ29pbmcgPSBub3QgZW5kCisgICAgICAgIHJldHVybiBtZXNzYWdlCisKKyAgICBkZWYgX3By
b2Nlc3NfaW5jb21pbmdfZnJhbWUoc2VsZiwgZnJhbWUpOgorICAgICAgICBpZiBmcmFtZS5yc3Yx
ID09IDEgYW5kIG5vdCBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKKyAg
ICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmlsdGVyLmRlY29tcHJlc3NfbmV4dF9t
ZXNzYWdlKCkKKyAgICAgICAgICAgIGZyYW1lLnJzdjEgPSAwCisKKyAgICBkZWYgX3Byb2Nlc3Nf
b3V0Z29pbmdfZnJhbWUoc2VsZiwgZnJhbWUsIGNvbXByZXNzaW9uX2JpdCk6CisgICAgICAgIGlm
IChub3QgY29tcHJlc3Npb25fYml0IG9yCisgICAgICAgICAgICBjb21tb24uaXNfY29udHJvbF9v
cGNvZGUoZnJhbWUub3Bjb2RlKSk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBmcmFt
ZS5yc3YxID0gMQorCisKK2NsYXNzIFBlck1lc3NhZ2VDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nl
c3NvcigKKyAgICBDb21wcmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvckJhc2UpOgorICAgICIiIldl
YlNvY2tldCBQZXItbWVzc2FnZSBjb21wcmVzc2lvbiBleHRlbnNpb24gcHJvY2Vzc29yLgorCisg
ICAgU3BlY2lmaWNhdGlvbjoKKyAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1p
ZXRmLWh5YmktcGVybWVzc2FnZS1jb21wcmVzc2lvbgorICAgICIiIgorCisgICAgX0RFRkxBVEVf
TUVUSE9EID0gJ2RlZmxhdGUnCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Cisg
ICAgICAgIENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vzc29yQmFzZS5fX2luaXRfXyhzZWxmLCBy
ZXF1ZXN0KQorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBjb21tb24uUEVS
TUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04KKworICAgIGRlZiBfbG9va3VwX2NvbXByZXNz
aW9uX3Byb2Nlc3NvcihzZWxmLCBtZXRob2RfZGVzYyk6CisgICAgICAgIGlmIG1ldGhvZF9kZXNj
Lm5hbWUoKSA9PSBzZWxmLl9ERUZMQVRFX01FVEhPRDoKKyAgICAgICAgICAgIHJldHVybiBEZWZs
YXRlTWVzc2FnZVByb2Nlc3NvcihtZXRob2RfZGVzYykKKyAgICAgICAgcmV0dXJuIE5vbmUKKwor
CitfYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhU
RU5TSU9OXSA9ICgKKyAgICBQZXJNZXNzYWdlQ29tcHJlc3Npb25FeHRlbnNpb25Qcm9jZXNzb3Ip
CisKKworIyBBZGRpbmcgdmVuZG9yLXByZWZpeGVkIHBlcm1lc3NhZ2UtY29tcHJlc3MgZXh0ZW5z
aW9uLgorIyBUT0RPKGJhc2hpKTogUmVtb3ZlIHRoaXMgYWZ0ZXIgV2ViS2l0IHN0b3BzIHVzaW5n
IHZlbmRvciBwcmVmaXguCitfYXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLlhfV0VCS0lUX1BF
Uk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OXSA9ICgKKyAgICBQZXJNZXNzYWdlQ29tcHJl
c3Npb25FeHRlbnNpb25Qcm9jZXNzb3IpCisKKworY2xhc3MgTXV4RXh0ZW5zaW9uUHJvY2Vzc29y
KEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6CisgICAgIiIiV2ViU29ja2V0IG11bHRpcGxl
eGluZyBleHRlbnNpb24gcHJvY2Vzc29yLiIiIgorCisgICAgX1FVT1RBX1BBUkFNID0gJ3F1b3Rh
JworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBzZWxmLl9yZXF1
ZXN0ID0gcmVxdWVzdAorCisgICAgZGVmIG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBjb21t
b24uTVVYX0VYVEVOU0lPTgorCisgICAgZGVmIGdldF9leHRlbnNpb25fcmVzcG9uc2Uoc2VsZiwg
d3NfcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5u
ZWxfZXh0ZW5zaW9ucyk6CisgICAgICAgICMgTXV4IGV4dGVuc2lvbiBjYW5ub3QgYmUgdXNlZCBh
ZnRlciBleHRlbnNpb25zIHRoYXQgZGVwZW5kIG9uCisgICAgICAgICMgZnJhbWUgYm91bmRhcnks
IGV4dGVuc2lvbiBkYXRhIGZpZWxkLCBvciBhbnkgcmVzZXJ2ZWQgYml0cworICAgICAgICAjIHdo
aWNoIGFyZSBhdHRyaWJ1dGVkIHRvIGVhY2ggZnJhbWUuCisgICAgICAgIGZvciBleHRlbnNpb24g
aW4gbG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnM6CisgICAgICAgICAgICBuYW1lID0gZXh0ZW5z
aW9uLm5hbWUoKQorICAgICAgICAgICAgaWYgKG5hbWUgPT0gY29tbW9uLlBFUkZSQU1FX0NPTVBS
RVNTSU9OX0VYVEVOU0lPTiBvcgorICAgICAgICAgICAgICAgIG5hbWUgPT0gY29tbW9uLkRFRkxB
VEVfRlJBTUVfRVhURU5TSU9OIG9yCisgICAgICAgICAgICAgICAgbmFtZSA9PSBjb21tb24uWF9X
RUJLSVRfREVGTEFURV9GUkFNRV9FWFRFTlNJT04pOgorICAgICAgICAgICAgICAgIHJldHVybiBO
b25lCisKKyAgICAgICAgcXVvdGEgPSBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUo
c2VsZi5fUVVPVEFfUEFSQU0pCisgICAgICAgIGlmIHF1b3RhIGlzIE5vbmU6CisgICAgICAgICAg
ICB3c19yZXF1ZXN0Lm11eF9xdW90YSA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICBxdW90YSA9IGludChxdW90YSkKKyAgICAgICAgICAgIGV4Y2Vw
dCBWYWx1ZUVycm9yLCBlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAg
ICBpZiBxdW90YSA8IDAgb3IgcXVvdGEgPj0gMiAqKiAzMjoKKyAgICAgICAgICAgICAgICByZXR1
cm4gTm9uZQorICAgICAgICAgICAgd3NfcmVxdWVzdC5tdXhfcXVvdGEgPSBxdW90YQorCisgICAg
ICAgIHdzX3JlcXVlc3QubXV4ID0gVHJ1ZQorICAgICAgICB3c19yZXF1ZXN0Lm11eF9leHRlbnNp
b25zID0gbG9naWNhbF9jaGFubmVsX2V4dGVuc2lvbnMKKyAgICAgICAgcmV0dXJuIGNvbW1vbi5F
eHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLk1VWF9FWFRFTlNJT04pCisKKyAgICBkZWYgc2V0dXBf
c3RyZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICBwYXNzCisKKwor
X2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5NVVhfRVhURU5TSU9OXSA9IE11eEV4dGVuc2lv
blByb2Nlc3NvcgorCisKIGRlZiBnZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVx
dWVzdCk6CiAgICAgZ2xvYmFsIF9hdmFpbGFibGVfcHJvY2Vzc29ycwogICAgIHByb2Nlc3Nvcl9j
bGFzcyA9IF9hdmFpbGFibGVfcHJvY2Vzc29ycy5nZXQoZXh0ZW5zaW9uX3JlcXVlc3QubmFtZSgp
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdl
YnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQppbmRleCAxMGEx
NzgzMTQ0NDRjYzcyOTdhODgyOTAzNThkZGNhY2MwYTJmMjQzLi4xOTRmNmIzOTVhZTIzYjNhMTM2
NDFjZDRiOTA0ZjU5MzVkMWZhMWYyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFr
ZS9fX2luaXRfXy5weQpAQCAtMzcsNyArMzcsNiBAQCBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQu
CiBpbXBvcnQgbG9nZ2luZwogCiBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UgaW1wb3J0IGRyYWZ0NzUKIGZyb20gbW9kX3B5
d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaTAwCiBmcm9tIG1vZF9weXdlYnNvY2tldC5o
YW5kc2hha2UgaW1wb3J0IGh5YmkKICMgRXhwb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIEhh
bmRzaGFrZUV4Y2VwdGlvbiwgYW5kIFZlcnNpb25FeGNlcHRpb24KQEAgLTU2LDEwICs1NSw4IEBA
IGRlZiBkb19oYW5kc2hha2UocmVxdWVzdCwgZGlzcGF0Y2hlciwgYWxsb3dEcmFmdDc1PUZhbHNl
LCBzdHJpY3Q9RmFsc2UpOgogICAgIEFyZ3M6CiAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24g
cmVxdWVzdC4KICAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlzcGF0Y2guRGlzcGF0
Y2hlcikuCi0gICAgICAgIGFsbG93RHJhZnQ3NTogYWxsb3cgZHJhZnQgNzUgaGFuZHNoYWtlIHBy
b3RvY29sLgotICAgICAgICBzdHJpY3Q6IFN0cmljdGx5IGNoZWNrIGhhbmRzaGFrZSByZXF1ZXN0
IGluIGRyYWZ0IDc1LgotICAgICAgICAgICAgRGVmYXVsdDogRmFsc2UuIElmIFRydWUsIHJlcXVl
c3QuY29ubmVjdGlvbiBtdXN0IHByb3ZpZGUKLSAgICAgICAgICAgIGdldF9tZW1vcml6ZWRfbGlu
ZXMgbWV0aG9kLgorICAgICAgICBhbGxvd0RyYWZ0NzU6IG9ic29sZXRlIGFyZ3VtZW50LiBpZ25v
cmVkLgorICAgICAgICBzdHJpY3Q6IG9ic29sZXRlIGFyZ3VtZW50LiBpZ25vcmVkLgogCiAgICAg
SGFuZHNoYWtlciB3aWxsIGFkZCBhdHRyaWJ1dGVzIHN1Y2ggYXMgd3NfcmVzb3VyY2UgaW4gcGVy
Zm9ybWluZwogICAgIGhhbmRzaGFrZS4KQEAgLTg2LDkgKzgzLDYgQEAgZGVmIGRvX2hhbmRzaGFr
ZShyZXF1ZXN0LCBkaXNwYXRjaGVyLCBhbGxvd0RyYWZ0NzU9RmFsc2UsIHN0cmljdD1GYWxzZSk6
CiAgICAgICAgICgnUkZDIDY0NTUnLCBoeWJpLkhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hl
cikpKQogICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgKICAgICAgICAgKCdIeUJpIDAwJywgaHliaTAw
LkhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotICAgIGlmIGFsbG93RHJhZnQ3NToK
LSAgICAgICAgaGFuZHNoYWtlcnMuYXBwZW5kKAotICAgICAgICAgICAgKCdIaXhpZSA3NScsIGRy
YWZ0NzUuSGFuZHNoYWtlcihyZXF1ZXN0LCBkaXNwYXRjaGVyLCBzdHJpY3QpKSkKIAogICAgIGZv
ciBuYW1lLCBoYW5kc2hha2VyIGluIGhhbmRzaGFrZXJzOgogICAgICAgICBfTE9HR0VSLmRlYnVn
KCdUcnlpbmcgcHJvdG9jb2wgdmVyc2lvbiAlcycsIG5hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFz
ZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQv
aGFuZHNoYWtlL19iYXNlLnB5CmluZGV4IGJjMDk1YjEyOWYyZDUyM2U5YzczM2NiYmY5YmM0Mzg0
MjczMzhjYzAuLmU1Yzk0Y2E5MDk4YjA1MDdmMzk0YTIyZTMzYjY4ODIxMzgxZjVjNGUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQv
aGFuZHNoYWtlL19iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5CkBAIC04NSwxMyArODUsMTYgQEAg
ZGVmIGdldF9kZWZhdWx0X3BvcnQoaXNfc2VjdXJlKToKIAogCiBkZWYgdmFsaWRhdGVfc3VicHJv
dG9jb2woc3VicHJvdG9jb2wsIGhpeGllKToKLSAgICAiIiJWYWxpZGF0ZSBhIHZhbHVlIGluIHN1
YnByb3RvY29sIGZpZWxkcyBzdWNoIGFzIFdlYlNvY2tldC1Qcm90b2NvbCwKLSAgICBTZWMtV2Vi
U29ja2V0LVByb3RvY29sLgorICAgICIiIlZhbGlkYXRlIGEgdmFsdWUgaW4gdGhlIFNlYy1XZWJT
b2NrZXQtUHJvdG9jb2wgZmllbGQuCiAKICAgICBTZWUKICAgICAtIFJGQyA2NDU1OiBTZWN0aW9u
IDQuMS4sIDQuMi4yLiwgYW5kIDQuMy4KICAgICAtIEh5QmkgMDA6IFNlY3Rpb24gNC4xLiBPcGVu
aW5nIGhhbmRzaGFrZQotICAgIC0gSGl4aWUgNzU6IFNlY3Rpb24gNC4xLiBIYW5kc2hha2UKKwor
ICAgIEFyZ3M6CisgICAgICAgICBoaXhpZTogaWYgVHJ1ZSwgY2hlY2tzIGlmIGNoYXJhY3RlcnMg
aW4gc3VicHJvdG9jb2wgYXJlIGluIHJhbmdlCisgICAgICAgICAgICAgICAgYmV0d2VlbiBVKzAw
MjAgYW5kIFUrMDA3RS4gSXQncyByZXF1aXJlZCBieSBIeUJpIDAwIGJ1dCBub3QgYnkKKyAgICAg
ICAgICAgICAgICBSRkMgNjQ1NS4KICAgICAiIiIKIAogICAgIGlmIG5vdCBzdWJwcm90b2NvbDoK
QEAgLTE3MCw3ICsxNzMsMTEgQEAgZGVmIGNoZWNrX3JlcXVlc3RfbGluZShyZXF1ZXN0KToKICAg
ICAjIDUuMSAxLiBUaGUgdGhyZWUgY2hhcmFjdGVyIFVURi04IHN0cmluZyAiR0VUIi4KICAgICAj
IDUuMSAyLiBBIFVURi04LWVuY29kZWQgVSswMDIwIFNQQUNFIGNoYXJhY3RlciAoMHgyMCBieXRl
KS4KICAgICBpZiByZXF1ZXN0Lm1ldGhvZCAhPSAnR0VUJzoKLSAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdNZXRob2QgaXMgbm90IEdFVCcpCisgICAgICAgIHJhaXNlIEhhbmRzaGFr
ZUV4Y2VwdGlvbignTWV0aG9kIGlzIG5vdCBHRVQ6ICVyJyAlIHJlcXVlc3QubWV0aG9kKQorCisg
ICAgaWYgcmVxdWVzdC5wcm90b2NvbCAhPSAnSFRUUC8xLjEnOgorICAgICAgICByYWlzZSBIYW5k
c2hha2VFeGNlcHRpb24oJ1ZlcnNpb24gaXMgbm90IEhUVFAvMS4xOiAlcicgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5wcm90b2NvbCkKIAogCiBkZWYgY2hlY2tf
aGVhZGVyX2xpbmVzKHJlcXVlc3QsIG1hbmRhdG9yeV9oZWFkZXJzKToKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtl
L2RyYWZ0NzUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9kcmFmdDc1LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4MDJhMzFjOWE5NmUwZWRlNmI5NTE0MzdhMWVhZjMzM2YyZjkwNDFjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2RyYWZ0NzUucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwxOTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV2ViU29ja2V0
IGhhbmRzaGFraW5nIGRlZmluZWQgaW4gZHJhZnQtaGl4aWUtdGhld2Vic29ja2V0cHJvdG9jb2wt
NzUuIiIiCi0KLQotIyBOb3RlOiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgaXMgdXNlZCBpbiB0
aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2ggbW9kX3B5dGhvbgotIyBkb2N1bWVudCBzYXlzIHRoYXQg
aXQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjb25uZWN0aW9uIGhhbmRsZXJzLgotIyBVbmZvcnR1
bmF0ZWx5LCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbnMuIEZvciBleGFtcGxlLCByZXF1ZXN0Lndy
aXRlIGlzIG5vdAotIyBzdWl0YWJsZSBiZWNhdXNlIGl0IGRvZXNuJ3QgYWxsb3cgZGlyZWN0IHJh
dyBieXRlcyB3cml0aW5nLgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFt
IGltcG9ydCBTdHJlYW1IaXhpZTc1Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNl
cHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgYnVpbGRf
bG9jYXRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFs
aWRhdGVfc3VicHJvdG9jb2wKLQotCi1fTUFOREFUT1JZX0hFQURFUlMgPSBbCi0gICAgIyBrZXks
IGV4cGVjdGVkIHZhbHVlIG9yIE5vbmUKLSAgICBbJ1VwZ3JhZGUnLCAnV2ViU29ja2V0J10sCi0g
ICAgWydDb25uZWN0aW9uJywgJ1VwZ3JhZGUnXSwKLSAgICBbJ0hvc3QnLCBOb25lXSwKLSAgICBb
J09yaWdpbicsIE5vbmVdLAotXQotCi1fRklSU1RfRklWRV9MSU5FUyA9IG1hcChyZS5jb21waWxl
LCBbCi0gICAgcideR0VUIC9bXFNdKiBIVFRQLzEuMVxyXG4kJywKLSAgICByJ15VcGdyYWRlOiBX
ZWJTb2NrZXRcclxuJCcsCi0gICAgcideQ29ubmVjdGlvbjogVXBncmFkZVxyXG4kJywKLSAgICBy
J15Ib3N0OiBbXFNdK1xyXG4kJywKLSAgICByJ15PcmlnaW46IFtcU10rXHJcbiQnLAotXSkKLQot
X1NJWFRIX0FORF9MQVRFUiA9IHJlLmNvbXBpbGUoCi0gICAgcideJwotICAgIHInKFdlYlNvY2tl
dC1Qcm90b2NvbDogW1x4MjAtXHg3ZV0rXHJcbik/JwotICAgIHInKENvb2tpZTogW15ccl0qXHJc
bikqJwotICAgIHInKENvb2tpZTI6IFteXHJdKlxyXG4pPycKLSAgICByJyhDb29raWU6IFteXHJd
KlxyXG4pKicKLSAgICByJ1xyXG4nKQotCi0KLWNsYXNzIEhhbmRzaGFrZXIob2JqZWN0KToKLSAg
ICAiIiJUaGlzIGNsYXNzIHBlcmZvcm1zIFdlYlNvY2tldCBoYW5kc2hha2UuIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0Y2hlciwgc3RyaWN0PUZhbHNlKToKLSAg
ICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICAgICBkaXNwYXRjaGVy
OiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KLSAgICAgICAgICAgIHN0cmljdDog
U3RyaWN0bHkgY2hlY2sgaGFuZHNoYWtlIHJlcXVlc3QuIERlZmF1bHQ6IEZhbHNlLgotICAgICAg
ICAgICAgICAgIElmIFRydWUsIHJlcXVlc3QuY29ubmVjdGlvbiBtdXN0IHByb3ZpZGUgZ2V0X21l
bW9yaXplZF9saW5lcwotICAgICAgICAgICAgICAgIG1ldGhvZC4KLQotICAgICAgICBIYW5kc2hh
a2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBwZXJmb3JtaW5n
Ci0gICAgICAgIGhhbmRzaGFrZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2Vy
ID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9
IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKLSAgICAgICAg
c2VsZi5fc3RyaWN0ID0gc3RyaWN0Ci0KLSAgICBkZWYgZG9faGFuZHNoYWtlKHNlbGYpOgotICAg
ICAgICAiIiJQZXJmb3JtIFdlYlNvY2tldCBIYW5kc2hha2UuCi0KLSAgICAgICAgT24gX3JlcXVl
c3QsIHdlIHNldAotICAgICAgICAgICAgd3NfcmVzb3VyY2UsIHdzX29yaWdpbiwgd3NfbG9jYXRp
b24sIHdzX3Byb3RvY29sCi0gICAgICAgICAgICB3c19jaGFsbGVuZ2VfbWQ1OiBXZWJTb2NrZXQg
aGFuZHNoYWtlIGluZm9ybWF0aW9uLgotICAgICAgICAgICAgd3Nfc3RyZWFtOiBGcmFtZSBnZW5l
cmF0aW9uL3BhcnNpbmcgY2xhc3MuCi0gICAgICAgICAgICB3c192ZXJzaW9uOiBQcm90b2NvbCB2
ZXJzaW9uLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9jaGVja19oZWFkZXJfbGluZXMo
KQotICAgICAgICBzZWxmLl9zZXRfcmVzb3VyY2UoKQotICAgICAgICBzZWxmLl9zZXRfb3JpZ2lu
KCkKLSAgICAgICAgc2VsZi5fc2V0X2xvY2F0aW9uKCkKLSAgICAgICAgc2VsZi5fc2V0X3N1YnBy
b3RvY29sKCkKLSAgICAgICAgc2VsZi5fc2V0X3Byb3RvY29sX3ZlcnNpb24oKQotCi0gICAgICAg
IHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCi0KLSAg
ICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnU2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZScpCi0KLSAgICBkZWYgX3NldF9yZXNv
dXJjZShzZWxmKToKLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXNvdXJjZSA9IHNlbGYuX3Jl
cXVlc3QudXJpCi0KLSAgICBkZWYgX3NldF9vcmlnaW4oc2VsZik6Ci0gICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3Nfb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luWydPcmlnaW4nXQotCi0g
ICAgZGVmIF9zZXRfbG9jYXRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfbG9j
YXRpb24gPSBidWlsZF9sb2NhdGlvbihzZWxmLl9yZXF1ZXN0KQotCi0gICAgZGVmIF9zZXRfc3Vi
cHJvdG9jb2woc2VsZik6Ci0gICAgICAgIHN1YnByb3RvY29sID0gc2VsZi5fcmVxdWVzdC5oZWFk
ZXJzX2luLmdldCgnV2ViU29ja2V0LVByb3RvY29sJykKLSAgICAgICAgaWYgc3VicHJvdG9jb2wg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbChzdWJwcm90b2Nv
bCwgaGl4aWU9VHJ1ZSkKLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCA9IHN1YnBy
b3RvY29sCi0KLSAgICBkZWYgX3NldF9wcm90b2NvbF92ZXJzaW9uKHNlbGYpOgotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0lFVEYgSGl4aWUgNzUgcHJvdG9jb2wnKQotICAgICAgICBzZWxm
Ll9yZXF1ZXN0LndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9ISVhJRTc1Ci0gICAgICAgIHNl
bGYuX3JlcXVlc3Qud3Nfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShzZWxmLl9yZXF1ZXN0KQotCi0g
ICAgZGVmIF9zZW5kYWxsKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUoZGF0YSkKLQotICAgIGRlZiBfc2VuZF9oYW5kc2hha2Uoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX3NlbmRhbGwoJ0hUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRz
aGFrZVxyXG4nKQotICAgICAgICBzZWxmLl9zZW5kYWxsKCdVcGdyYWRlOiBXZWJTb2NrZXRcclxu
JykKLSAgICAgICAgc2VsZi5fc2VuZGFsbCgnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nKQotICAg
ICAgICBzZWxmLl9zZW5kYWxsKCdXZWJTb2NrZXQtT3JpZ2luOiAlc1xyXG4nICUgc2VsZi5fcmVx
dWVzdC53c19vcmlnaW4pCi0gICAgICAgIHNlbGYuX3NlbmRhbGwoJ1dlYlNvY2tldC1Mb2NhdGlv
bjogJXNcclxuJyAlIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24pCi0gICAgICAgIGlmIHNlbGYu
X3JlcXVlc3Qud3NfcHJvdG9jb2w6Ci0gICAgICAgICAgICBzZWxmLl9zZW5kYWxsKAotICAgICAg
ICAgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2w6ICVzXHJcbicgJSBzZWxmLl9yZXF1ZXN0Lndz
X3Byb3RvY29sKQotICAgICAgICBzZWxmLl9zZW5kYWxsKCdcclxuJykKLQotICAgIGRlZiBfY2hl
Y2tfaGVhZGVyX2xpbmVzKHNlbGYpOgotICAgICAgICBmb3Iga2V5LCBleHBlY3RlZF92YWx1ZSBp
biBfTUFOREFUT1JZX0hFQURFUlM6Ci0gICAgICAgICAgICBhY3R1YWxfdmFsdWUgPSBzZWxmLl9y
ZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKLSAgICAgICAgICAgIGlmIG5vdCBhY3R1YWxfdmFs
dWU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdIZWFkZXIgJXMg
aXMgbm90IGRlZmluZWQnICUga2V5KQotICAgICAgICAgICAgaWYgZXhwZWN0ZWRfdmFsdWU6Ci0g
ICAgICAgICAgICAgICAgaWYgYWN0dWFsX3ZhbHVlICE9IGV4cGVjdGVkX3ZhbHVlOgotICAgICAg
ICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnRXhwZWN0ZWQgJXIgZm9yIGhlYWRlciAlcyBidXQgZm91bmQgJXInICUKLSAgICAg
ICAgICAgICAgICAgICAgICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCBhY3R1YWxfdmFsdWUpKQot
ICAgICAgICBpZiBzZWxmLl9zdHJpY3Q6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgbGluZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X21lbW9yaXplZF9saW5lcygp
Ci0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAg
cmFpc2UgQXR0cmlidXRlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdTdHJpY3QgaGFuZHNo
YWtlIGlzIHNwZWNpZmllZCBidXQgdGhlIGNvbm5lY3Rpb24gJwotICAgICAgICAgICAgICAgICAg
ICAnZG9lc25cJ3QgcHJvdmlkZSBnZXRfbWVtb3JpemVkX2xpbmVzKCknKQotICAgICAgICAgICAg
c2VsZi5fY2hlY2tfZmlyc3RfbGluZXMobGluZXMpCi0KLSAgICBkZWYgX2NoZWNrX2ZpcnN0X2xp
bmVzKHNlbGYsIGxpbmVzKToKLSAgICAgICAgaWYgbGVuKGxpbmVzKSA8IGxlbihfRklSU1RfRklW
RV9MSU5FUyk6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ1RvbyBmZXcg
aGVhZGVyIGxpbmVzOiAlZCcgJSBsZW4obGluZXMpKQotICAgICAgICBmb3IgbGluZSwgcmVnZXhw
IGluIHppcChsaW5lcywgX0ZJUlNUX0ZJVkVfTElORVMpOgotICAgICAgICAgICAgaWYgbm90IHJl
Z2V4cC5zZWFyY2gobGluZSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBoZWFkZXI6ICVyIGRvZXNuXCd0
IG1hdGNoICVyJwotICAgICAgICAgICAgICAgICAgICAlIChsaW5lLCByZWdleHAucGF0dGVybikp
Ci0gICAgICAgIHNpeHRoX2FuZF9sYXRlciA9ICcnLmpvaW4obGluZXNbNTpdKQotICAgICAgICBp
ZiBub3QgX1NJWFRIX0FORF9MQVRFUi5zZWFyY2goc2l4dGhfYW5kX2xhdGVyKToKLSAgICAgICAg
ICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3Rl
ZCBoZWFkZXI6ICVyIGRvZXNuXCd0IG1hdGNoICVyJwotICAgICAgICAgICAgICAgICUgKHNpeHRo
X2FuZF9sYXRlciwgX1NJWFRIX0FORF9MQVRFUi5wYXR0ZXJuKSkKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2Rf
cHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CmluZGV4IDI4ODNhY2Jm
ODU2ZGY3MTg1NDdlN2ZjOTY3YjU2YzI2NGYwNWUwYjYuLmZjMGUyYTA5NjYwYzRhNTE1MTM5OWJk
NWQzYzEyYTFmOTY3Yjk3MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2h5YmkucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5w
eQpAQCAtMTgyLDM0ICsxODIsNjAgQEAgY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgogCiAgICAg
ICAgICAgICAjIEV4dHJhIGhhbmRzaGFrZSBoYW5kbGVyIG1heSBtb2RpZnkvcmVtb3ZlIHByb2Nl
c3NvcnMuCiAgICAgICAgICAgICBzZWxmLl9kaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZShz
ZWxmLl9yZXF1ZXN0KQorICAgICAgICAgICAgcHJvY2Vzc29ycyA9IGZpbHRlcihsYW1iZGEgcHJv
Y2Vzc29yOiBwcm9jZXNzb3IgaXMgbm90IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpCisKKyAgICAgICAg
ICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMgPSBbXQorCisgICAgICAgICAgICAjIFdlIG5lZWQgdG8g
dGFrZSBjYXJlIG9mIG11eCBleHRlbnNpb24gaGVyZS4gRXh0ZW5zaW9ucyB0aGF0CisgICAgICAg
ICAgICAjIGFyZSBwbGFjZWQgYmVmb3JlIG11eCBzaG91bGQgYmUgYXBwbGllZCB0byBsb2dpY2Fs
IGNoYW5uZWxzLgorICAgICAgICAgICAgbXV4X2luZGV4ID0gLTEKKyAgICAgICAgICAgIGZvciBp
LCBwcm9jZXNzb3IgaW4gZW51bWVyYXRlKHByb2Nlc3NvcnMpOgorICAgICAgICAgICAgICAgIGlm
IHByb2Nlc3Nvci5uYW1lKCkgPT0gY29tbW9uLk1VWF9FWFRFTlNJT046CisgICAgICAgICAgICAg
ICAgICAgIG11eF9pbmRleCA9IGkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgIGlmIG11eF9pbmRleCA+PSAwOgorICAgICAgICAgICAgICAgIG11eF9wcm9jZXNzb3IgPSBw
cm9jZXNzb3JzW211eF9pbmRleF0KKyAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfcHJv
Y2Vzc29ycyA9IHByb2Nlc3NvcnNbOm11eF9pbmRleF0KKyAgICAgICAgICAgICAgICBwcm9jZXNz
b3JzID0gcHJvY2Vzc29yc1ttdXhfaW5kZXgrMTpdCisKKyAgICAgICAgICAgICAgICBmb3IgcHJv
Y2Vzc29yIGluIGxvZ2ljYWxfY2hhbm5lbF9wcm9jZXNzb3JzOgorICAgICAgICAgICAgICAgICAg
ICBleHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgp
CisgICAgICAgICAgICAgICAgICAgIGlmIGV4dGVuc2lvbl9yZXNwb25zZSBpcyBOb25lOgorICAg
ICAgICAgICAgICAgICAgICAgICAgIyBSZWplY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMuYXBwZW5k
KGV4dGVuc2lvbl9yZXNwb25zZSkKKyAgICAgICAgICAgICAgICAjIFBhc3MgYSBzaGFsbG93IGNv
cHkgb2YgYWNjZXB0ZWRfZXh0ZW5zaW9ucyBhcyBleHRlbnNpb25zIGZvcgorICAgICAgICAgICAg
ICAgICMgbG9naWNhbCBjaGFubmVscy4KKyAgICAgICAgICAgICAgICBtdXhfcmVzcG9uc2UgPSBt
dXhfcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3QsIGFjY2VwdGVkX2V4dGVuc2lvbnNbOl0pCisgICAgICAgICAgICAgICAg
aWYgbXV4X3Jlc3BvbnNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBhY2NlcHRl
ZF9leHRlbnNpb25zLmFwcGVuZChtdXhfcmVzcG9uc2UpCiAKICAgICAgICAgICAgIHN0cmVhbV9v
cHRpb25zID0gU3RyZWFtT3B0aW9ucygpCiAKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
ZXh0ZW5zaW9ucyA9IE5vbmUKLSAgICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gc2VsZi5fcmVx
dWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yczoKLSAgICAgICAgICAgICAgICBpZiBwcm9jZXNz
b3IgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgIyBTb21lIHByb2Nlc3NvcnMgbWF5IGJl
IHJlbW92ZWQgYnkgZXh0cmEgaGFuZHNoYWtlCi0gICAgICAgICAgICAgICAgICAgICMgaGFuZGxl
ci4KLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgV2hlbiB0aGVy
ZSBpcyBtdXggZXh0ZW5zaW9uLCBoZXJlLCB8cHJvY2Vzc29yc3wgY29udGFpbiBvbmx5CisgICAg
ICAgICAgICAjIHByb3Nlc3NvcnMgZm9yIGV4dGVuc2lvbnMgcGxhY2VkIGFmdGVyIG11eC4KKyAg
ICAgICAgICAgIGZvciBwcm9jZXNzb3IgaW4gcHJvY2Vzc29yczoKIAogICAgICAgICAgICAgICAg
IGV4dGVuc2lvbl9yZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkK
ICAgICAgICAgICAgICAgICBpZiBleHRlbnNpb25fcmVzcG9uc2UgaXMgTm9uZToKICAgICAgICAg
ICAgICAgICAgICAgIyBSZWplY3RlZC4KICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAot
ICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucyBpcyBOb25lOgot
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVuc2lvbnMgPSBbXQotICAg
ICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9u
X3Jlc3BvbnNlKQorICAgICAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVuc2lvbnMuYXBwZW5kKGV4
dGVuc2lvbl9yZXNwb25zZSkKIAogICAgICAgICAgICAgICAgIHByb2Nlc3Nvci5zZXR1cF9zdHJl
YW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9ucykKIAotICAgICAgICAgICAgaWYgc2VsZi5fcmVxdWVz
dC53c19leHRlbnNpb25zIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbGVuKGFjY2VwdGVk
X2V4dGVuc2lvbnMpID4gMDoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2V4dGVu
c2lvbnMgPSBhY2NlcHRlZF9leHRlbnNpb25zCiAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAogICAgICAgICAgICAgICAgICAgICAnRXh0ZW5zaW9ucyBhY2NlcHRlZDogJXInLAot
ICAgICAgICAgICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlci5uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zKSkKKyAg
ICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIubmFtZSwgYWNj
ZXB0ZWRfZXh0ZW5zaW9ucykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucyA9IE5vbmUKIAotICAgICAgICAgICAgc2VsZi5fcmVx
dWVzdC53c19zdHJlYW0gPSBTdHJlYW0oc2VsZi5fcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCisg
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3N0cmVhbSA9IHNlbGYuX2NyZWF0ZV9zdHJlYW0o
c3RyZWFtX29wdGlvbnMpCiAKICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcmVxdWVz
dGVkX3Byb3RvY29scyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9yZXF1
ZXN0LndzX3Byb3RvY29sIGlzIE5vbmU6CkBAIC0yNjgsNyArMjk0LDcgQEAgY2xhc3MgSGFuZHNo
YWtlcihvYmplY3QpOgogICAgICAgICBwcm90b2NvbF9oZWFkZXIgPSBzZWxmLl9yZXF1ZXN0Lmhl
YWRlcnNfaW4uZ2V0KAogICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfUFJPVE9DT0xf
SEVBREVSKQogCi0gICAgICAgIGlmIG5vdCBwcm90b2NvbF9oZWFkZXI6CisgICAgICAgIGlmIHBy
b3RvY29sX2hlYWRlciBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXF1
ZXN0ZWRfcHJvdG9jb2xzID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTM0MSw3ICsz
NjcsMTAgQEAgY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBrZXkK
IAotICAgIGRlZiBfc2VuZF9oYW5kc2hha2Uoc2VsZiwgYWNjZXB0KToKKyAgICBkZWYgX2NyZWF0
ZV9zdHJlYW0oc2VsZiwgc3RyZWFtX29wdGlvbnMpOgorICAgICAgICByZXR1cm4gU3RyZWFtKHNl
bGYuX3JlcXVlc3QsIHN0cmVhbV9vcHRpb25zKQorCisgICAgZGVmIF9jcmVhdGVfaGFuZHNoYWtl
X3Jlc3BvbnNlKHNlbGYsIGFjY2VwdCk6CiAgICAgICAgIHJlc3BvbnNlID0gW10KIAogICAgICAg
ICByZXNwb25zZS5hcHBlbmQoJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicp
CkBAIC0zNjMsNyArMzkyLDEwIEBAIGNsYXNzIEhhbmRzaGFrZXIob2JqZWN0KToKICAgICAgICAg
ICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVxdWVzdC53c19leHRlbnNp
b25zKSkpCiAgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgnXHJcbicpCiAKLSAgICAgICAgcmF3X3Jl
c3BvbnNlID0gJycuam9pbihyZXNwb25zZSkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzcG9u
c2UpCisKKyAgICBkZWYgX3NlbmRfaGFuZHNoYWtlKHNlbGYsIGFjY2VwdCk6CisgICAgICAgIHJh
d19yZXNwb25zZSA9IHNlbGYuX2NyZWF0ZV9oYW5kc2hha2VfcmVzcG9uc2UoYWNjZXB0KQogICAg
ICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUocmF3X3Jlc3BvbnNlKQogICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgc2VydmVyXCdzIG9wZW5pbmcgaGFuZHNoYWtlOiAl
cicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdfcmVzcG9uc2UpCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L2hlYWRl
cnBhcnNlcmhhbmRsZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9k
X3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKaW5kZXggYjY4YzI0MGUxNjVlZDhl
NDJkOTlkMzU5YTAyODIxOTM5YjkyMjBkZi4uMmNjNjJkZTA0ZDgzODU3MWNmYmYxYmUwODRmOTY2
ZmMyOTI3YWMxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L21vZF9weXdlYnNvY2tldC9oZWFkZXJwYXJzZXJoYW5kbGVyLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxl
ci5weQpAQCAtNjMsOCArNjMsOSBAQCBfUFlPUFRfQUxMT1dfSEFORExFUlNfT1VUU0lERV9ST09U
ID0gKAogX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVfUk9PVF9ERUZJTklUSU9OID0gewog
ICAgICdvZmYnOiBGYWxzZSwgJ25vJzogRmFsc2UsICdvbic6IFRydWUsICd5ZXMnOiBUcnVlfQog
Ci0jIFB5dGhvbk9wdGlvbiB0byBzcGVjaWZ5IHRvIGFsbG93IGRyYWZ0NzUgaGFuZHNoYWtlLgot
IyBUaGUgZGVmYXVsdCBpcyBOb25lIChPZmYpCisjIChPYnNvbGV0ZSBvcHRpb24uIElnbm9yZWQu
KQorIyBQeXRob25PcHRpb24gdG8gc3BlY2lmeSB0byBhbGxvdyBoYW5kc2hha2UgZGVmaW5lZCBp
biBIaXhpZSA3NSB2ZXJzaW9uCisjIHByb3RvY29sLiBUaGUgZGVmYXVsdCBpcyBOb25lIChPZmYp
CiBfUFlPUFRfQUxMT1dfRFJBRlQ3NSA9ICdtb2RfcHl3ZWJzb2NrZXQuYWxsb3dfZHJhZnQ3NScK
ICMgTWFwIGZyb20gdmFsdWVzIHRvIHRoZWlyIG1lYW5pbmdzLgogX1BZT1BUX0FMTE9XX0RSQUZU
NzVfREVGSU5JVElPTiA9IHsnb2ZmJzogRmFsc2UsICdvbic6IFRydWV9CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L21z
Z3V0aWwucHkKaW5kZXggMjFmZmRhY2Y2MzI2NjI1NTQ5ZDU1ZTE3M2I0ZDk5MDQyZjcxOGNmOS4u
NGMxYTAxMTRiNGJjNDE4YjIwZTZhMTU1NjU5ZTkyNTdhYWI3MzZlZiAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQv
bXNndXRpbC5weQpAQCAtNTksMjAgKzU5LDIwIEBAIGRlZiBjbG9zZV9jb25uZWN0aW9uKHJlcXVl
c3QpOgogICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQogCiAKLWRlZiBz
ZW5kX21lc3NhZ2UocmVxdWVzdCwgbWVzc2FnZSwgZW5kPVRydWUsIGJpbmFyeT1GYWxzZSk6Ci0g
ICAgIiIiU2VuZCBtZXNzYWdlLgorZGVmIHNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkX2Rh
dGEsIGVuZD1UcnVlLCBiaW5hcnk9RmFsc2UpOgorICAgICIiIlNlbmQgYSBtZXNzYWdlIChvciBw
YXJ0IG9mIGEgbWVzc2FnZSkuCiAKICAgICBBcmdzOgogICAgICAgICByZXF1ZXN0OiBtb2RfcHl0
aG9uIHJlcXVlc3QuCi0gICAgICAgIG1lc3NhZ2U6IHVuaWNvZGUgdGV4dCBvciBzdHIgYmluYXJ5
IHRvIHNlbmQuCi0gICAgICAgIGVuZDogRmFsc2UgdG8gc2VuZCBtZXNzYWdlIGFzIGEgZnJhZ21l
bnQuIEFsbCBtZXNzYWdlcyB1bnRpbCB0aGUKLSAgICAgICAgICAgICBmaXJzdCBjYWxsIHdpdGgg
ZW5kPVRydWUgKGluY2x1c2l2ZSkgd2lsbCBiZSBkZWxpdmVyZWQgdG8gdGhlCi0gICAgICAgICAg
ICAgY2xpZW50IGluIHNlcGFyYXRlIGZyYW1lcyBidXQgYXMgb25lIFdlYlNvY2tldCBtZXNzYWdl
LgotICAgICAgICBiaW5hcnk6IHNlbmQgbWVzc2FnZSBhcyBiaW5hcnkgZnJhbWUuCisgICAgICAg
IHBheWxvYWRfZGF0YTogdW5pY29kZSB0ZXh0IG9yIHN0ciBiaW5hcnkgdG8gc2VuZC4KKyAgICAg
ICAgZW5kOiBUcnVlIHRvIHRlcm1pbmF0ZSBhIG1lc3NhZ2UuCisgICAgICAgICAgICAgRmFsc2Ug
dG8gc2VuZCBwYXlsb2FkX2RhdGEgYXMgcGFydCBvZiBhIG1lc3NhZ2UgdGhhdCBpcyB0byBiZQor
ICAgICAgICAgICAgIHRlcm1pbmF0ZWQgYnkgbmV4dCBvciBsYXRlciBzZW5kX21lc3NhZ2UgY2Fs
bCB3aXRoIGVuZD1UcnVlLgorICAgICAgICBiaW5hcnk6IHNlbmQgcGF5bG9hZF9kYXRhIGFzIGJp
bmFyeSBmcmFtZShzKS4KICAgICBSYWlzZXM6CiAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlv
bjogd2hlbiBzZXJ2ZXIgYWxyZWFkeSB0ZXJtaW5hdGVkLgogICAgICIiIgotICAgIHJlcXVlc3Qu
d3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShtZXNzYWdlLCBlbmQsIGJpbmFyeSkKKyAgICByZXF1ZXN0
LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UocGF5bG9hZF9kYXRhLCBlbmQsIGJpbmFyeSkKIAogCiBk
ZWYgcmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9tdXgucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0L211eC5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MGJkZDI0NjE5YzFiZjE1ZjhkMThhZWJmMzVmYTk0YjdkYjlkMTZkCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9tdXgu
cHkKQEAgLTAsMCArMSwxNjM2IEBACisjIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgorIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBt
ZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisiIiJUaGlzIGZpbGUg
cHJvdmlkZXMgY2xhc3NlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgbXVsdGlwbGV4aW5nIGV4
dGVuc2lvbi4KKworU3BlY2lmaWNhdGlvbjoKK2h0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2Ry
YWZ0LWlldGYtaHliaS13ZWJzb2NrZXQtbXVsdGlwbGV4aW5nLTA2CisiIiIKKworCitpbXBvcnQg
Y29sbGVjdGlvbnMKK2ltcG9ydCBjb3B5CitpbXBvcnQgZW1haWwKK2ltcG9ydCBlbWFpbC5wYXJz
ZXIKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgbWF0aAoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHRo
cmVhZGluZworaW1wb3J0IHRyYWNlYmFjaworCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQg
Y29tbW9uCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCitmcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgdXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNl
IGltcG9ydCBCYWRPcGVyYXRpb25FeGNlcHRpb24KK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJl
YW1fYmFzZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24KK2Zyb20gbW9kX3B5
d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgRnJhbWUKK2Zyb20gbW9kX3B5d2Vic29ja2V0
Ll9zdHJlYW1faHliaSBpbXBvcnQgU3RyZWFtCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2h5YmkgaW1wb3J0IFN0cmVhbU9wdGlvbnMKK2Zyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1f
aHliaSBpbXBvcnQgY3JlYXRlX2JpbmFyeV9mcmFtZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0
cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2VfYm9keQorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfaGVhZGVyCitmcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9sZW5ndGhfaGVhZGVyCitmcm9t
IG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IHBhcnNlX2ZyYW1lCitmcm9tIG1v
ZF9weXdlYnNvY2tldC5oYW5kc2hha2UgaW1wb3J0IGh5YmkKKworCitfQ09OVFJPTF9DSEFOTkVM
X0lEID0gMAorX0RFRkFVTFRfQ0hBTk5FTF9JRCA9IDEKKworX01VWF9PUENPREVfQUREX0NIQU5O
RUxfUkVRVUVTVCA9IDAKK19NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFU1BPTlNFID0gMQorX01V
WF9PUENPREVfRkxPV19DT05UUk9MID0gMgorX01VWF9PUENPREVfRFJPUF9DSEFOTkVMID0gMwor
X01VWF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVCA9IDQKKworX01BWF9DSEFOTkVMX0lEID0gMiAq
KiAyOSAtIDEKKworX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMgPSA2NAorX0lOSVRJ
QUxfUVVPVEFfRk9SX0NMSUVOVCA9IDggKiAxMDI0CisKK19IQU5EU0hBS0VfRU5DT0RJTkdfSURF
TlRJVFkgPSAwCitfSEFORFNIQUtFX0VOQ09ESU5HX0RFTFRBID0gMQorCisjIFdlIG5lZWQgb25s
eSB0aGVzZSBzdGF0dXMgY29kZSBmb3Igbm93LgorX0hUVFBfQkFEX1JFU1BPTlNFX01FU1NBR0VT
ID0geworICAgIGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVTVDogJ0JhZCBSZXF1ZXN0JywK
K30KKworIyBEcm9wQ2hhbm5lbCByZWFzb24gY29kZQorIyBUT0RPKGJhc2hpKTogRGVmaW5lIGFs
bCByZWFzb24gY29kZSBkZWZpbmVkIGluIC0wNSBkcmFmdC4KK19EUk9QX0NPREVfTk9STUFMX0NM
T1NVUkUgPSAxMDAwCisKK19EUk9QX0NPREVfSU5WQUxJRF9FTkNBUFNVTEFUSU5HX01FU1NBR0Ug
PSAyMDAxCitfRFJPUF9DT0RFX0NIQU5ORUxfSURfVFJVTkNBVEVEID0gMjAwMgorX0RST1BfQ09E
RV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJVTkNBVEVEID0gMjAwMworX0RST1BfQ09ERV9VTktO
T1dOX01VWF9PUENPREUgPSAyMDA0CitfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxP
Q0sgPSAyMDA1CitfRFJPUF9DT0RFX0NIQU5ORUxfQUxSRUFEWV9FWElTVFMgPSAyMDA2CitfRFJP
UF9DT0RFX05FV19DSEFOTkVMX1NMT1RfVklPTEFUSU9OID0gMjAwNworCitfRFJPUF9DT0RFX1VO
S05PV05fUkVRVUVTVF9FTkNPRElORyA9IDMwMDIKK19EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9M
QVRJT04gPSAzMDA1CitfRFJPUF9DT0RFX0FDS05PV0xFREdFRCA9IDMwMDgKKworCitjbGFzcyBN
dXhVbmV4cGVjdGVkRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgIiIiRXhjZXB0aW9uIGluIGhh
bmRsaW5nIG11bHRpcGxleGluZyBleHRlbnNpb24uIiIiCisgICAgcGFzcworCisKKyMgVGVtcG9y
YXJ5CitjbGFzcyBNdXhOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgICIi
IlJhaXNlZCB3aGVuIGEgZmxvdyBlbnRlcnMgdW5pbXBsZW1lbnRlZCBjb2RlIHBhdGguIiIiCisg
ICAgcGFzcworCisKK2NsYXNzIExvZ2ljYWxDb25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uKEV4Y2Vw
dGlvbik6CisgICAgIiIiUmFpc2VkIHdoZW4gbG9naWNhbCBjb25uZWN0aW9uIGlzIGdyYWNlZnVs
bHkgY2xvc2VkLiIiIgorICAgIHBhc3MKKworCitjbGFzcyBQaHlzaWNhbENvbm5lY3Rpb25FcnJv
cihFeGNlcHRpb24pOgorICAgICIiIlJhaXNlZCB3aGVuIHRoZXJlIGlzIGEgcGh5c2ljYWwgY29u
bmVjdGlvbiBlcnJvci4iIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZHJvcF9jb2RlLCBtZXNz
YWdlPScnKToKKyAgICAgICAgc3VwZXIoUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IsIHNlbGYpLl9f
aW5pdF9fKAorICAgICAgICAgICAgJ2NvZGU9JWQsIG1lc3NhZ2U9JXInICUgKGRyb3BfY29kZSwg
bWVzc2FnZSkpCisgICAgICAgIHNlbGYuZHJvcF9jb2RlID0gZHJvcF9jb2RlCisgICAgICAgIHNl
bGYubWVzc2FnZSA9IG1lc3NhZ2UKKworCitjbGFzcyBMb2dpY2FsQ2hhbm5lbEVycm9yKEV4Y2Vw
dGlvbik6CisgICAgIiIiUmFpc2VkIHdoZW4gdGhlcmUgaXMgYSBsb2dpY2FsIGNoYW5uZWwgZXJy
b3IuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5uZWxfaWQsIGRyb3BfY29kZSwgbWVz
c2FnZT0nJyk6CisgICAgICAgIHN1cGVyKExvZ2ljYWxDaGFubmVsRXJyb3IsIHNlbGYpLl9faW5p
dF9fKAorICAgICAgICAgICAgJ2NoYW5uZWxfaWQ9JWQsIGNvZGU9JWQsIG1lc3NhZ2U9JXInICUg
KAorICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQsIGRyb3BfY29kZSwgbWVzc2FnZSkpCisgICAg
ICAgIHNlbGYuY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKKyAgICAgICAgc2VsZi5kcm9wX2NvZGUg
PSBkcm9wX2NvZGUKKyAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQorCisKK2RlZiBfZW5j
b2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCk6CisgICAgaWYgY2hhbm5lbF9pZCA8IDA6CisgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NoYW5uZWwgaWQgJWQgbXVzdCBub3QgYmUgbmVnYXRpdmUn
ICUgY2hhbm5lbF9pZCkKKworICAgIGlmIGNoYW5uZWxfaWQgPCAyICoqIDc6CisgICAgICAgIHJl
dHVybiBjaHIoY2hhbm5lbF9pZCkKKyAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAxNDoKKyAgICAg
ICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchSCcsIDB4ODAwMCArIGNoYW5uZWxfaWQpCisgICAgaWYg
Y2hhbm5lbF9pZCA8IDIgKiogMjE6CisgICAgICAgIGZpcnN0ID0gY2hyKDB4YzAgKyAoY2hhbm5l
bF9pZCA+PiAxNikpCisgICAgICAgIHJldHVybiBmaXJzdCArIHN0cnVjdC5wYWNrKCchSCcsIGNo
YW5uZWxfaWQgJiAweGZmZmYpCisgICAgaWYgY2hhbm5lbF9pZCA8IDIgKiogMjk6CisgICAgICAg
IHJldHVybiBzdHJ1Y3QucGFjaygnIUwnLCAweGUwMDAwMDAwICsgY2hhbm5lbF9pZCkKKworICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ0NoYW5uZWwgaWQgJWQgaXMgdG9vIGxhcmdlJyAlIGNoYW5uZWxf
aWQpCisKKworZGVmIF9lbmNvZGVfbnVtYmVyKG51bWJlcik6CisgICAgcmV0dXJuIGNyZWF0ZV9s
ZW5ndGhfaGVhZGVyKG51bWJlciwgRmFsc2UpCisKKworZGVmIF9jcmVhdGVfYWRkX2NoYW5uZWxf
cmVzcG9uc2UoY2hhbm5lbF9pZCwgZW5jb2RlZF9oYW5kc2hha2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbmNvZGluZz0wLCByZWplY3RlZD1GYWxzZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG91dGVyX2ZyYW1lX21hc2s9RmFsc2UpOgorICAgIGlmIGVu
Y29kaW5nICE9IDAgYW5kIGVuY29kaW5nICE9IDE6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
J0ludmFsaWQgZW5jb2RpbmcgJWQnICUgZW5jb2RpbmcpCisKKyAgICBmaXJzdF9ieXRlID0gKChf
TVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRSA8PCA1KSB8CisgICAgICAgICAgICAgICAg
ICAocmVqZWN0ZWQgPDwgNCkgfCBlbmNvZGluZykKKyAgICBibG9jayA9IChjaHIoZmlyc3RfYnl0
ZSkgKworICAgICAgICAgICAgIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSArCisgICAg
ICAgICAgICAgX2VuY29kZV9udW1iZXIobGVuKGVuY29kZWRfaGFuZHNoYWtlKSkgKworICAgICAg
ICAgICAgIGVuY29kZWRfaGFuZHNoYWtlKQorICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxf
aWQoX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBibG9jaworICAgIHJldHVybiBjcmVhdGVfYmluYXJ5
X2ZyYW1lKHBheWxvYWQsIG1hc2s9b3V0ZXJfZnJhbWVfbWFzaykKKworCitkZWYgX2NyZWF0ZV9k
cm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNzYWdlPScnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIG91dGVyX2ZyYW1lX21hc2s9RmFsc2UpOgorICAgIGlmIGxlbihtZXNz
YWdlKSA+IDAgYW5kIGNvZGUgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ29k
ZSBtdXN0IGJlIHNwZWNpZmllZCBpZiBtZXNzYWdlIGlzIHNwZWNpZmllZCcpCisKKyAgICBmaXJz
dF9ieXRlID0gX01VWF9PUENPREVfRFJPUF9DSEFOTkVMIDw8IDUKKyAgICBibG9jayA9IGNocihm
aXJzdF9ieXRlKSArIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKQorICAgIGlmIGNvZGUg
aXMgTm9uZToKKyAgICAgICAgYmxvY2sgKz0gX2VuY29kZV9udW1iZXIoMCkgIyBSZWFzb24gc2l6
ZQorICAgIGVsc2U6CisgICAgICAgIHJlYXNvbiA9IHN0cnVjdC5wYWNrKCchSCcsIGNvZGUpICsg
bWVzc2FnZQorICAgICAgICByZWFzb25fc2l6ZSA9IF9lbmNvZGVfbnVtYmVyKGxlbihyZWFzb24p
KQorICAgICAgICBibG9jayArPSByZWFzb25fc2l6ZSArIHJlYXNvbgorCisgICAgcGF5bG9hZCA9
IF9lbmNvZGVfY2hhbm5lbF9pZChfQ09OVFJPTF9DSEFOTkVMX0lEKSArIGJsb2NrCisgICAgcmV0
dXJuIGNyZWF0ZV9iaW5hcnlfZnJhbWUocGF5bG9hZCwgbWFzaz1vdXRlcl9mcmFtZV9tYXNrKQor
CisKK2RlZiBfY3JlYXRlX2Zsb3dfY29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvdXRlcl9mcmFtZV9tYXNrPUZhbHNlKToKKyAg
ICBmaXJzdF9ieXRlID0gX01VWF9PUENPREVfRkxPV19DT05UUk9MIDw8IDUKKyAgICBibG9jayA9
IChjaHIoZmlyc3RfYnl0ZSkgKworICAgICAgICAgICAgIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFu
bmVsX2lkKSArCisgICAgICAgICAgICAgX2VuY29kZV9udW1iZXIocmVwbGVuaXNoZWRfcXVvdGEp
KQorICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQoX0NPTlRST0xfQ0hBTk5FTF9JRCkg
KyBibG9jaworICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKHBheWxvYWQsIG1hc2s9b3V0
ZXJfZnJhbWVfbWFzaykKKworCitkZWYgX2NyZWF0ZV9uZXdfY2hhbm5lbF9zbG90KHNsb3RzLCBz
ZW5kX3F1b3RhLCBvdXRlcl9mcmFtZV9tYXNrPUZhbHNlKToKKyAgICBpZiBzbG90cyA8IDAgb3Ig
c2VuZF9xdW90YSA8IDA6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3Nsb3RzIGFuZCBzZW5k
X3F1b3RhIG11c3QgYmUgbm9uLW5lZ2F0aXZlLicpCisgICAgZmlyc3RfYnl0ZSA9IF9NVVhfT1BD
T0RFX05FV19DSEFOTkVMX1NMT1QgPDwgNQorICAgIGJsb2NrID0gKGNocihmaXJzdF9ieXRlKSAr
CisgICAgICAgICAgICAgX2VuY29kZV9udW1iZXIoc2xvdHMpICsKKyAgICAgICAgICAgICBfZW5j
b2RlX251bWJlcihzZW5kX3F1b3RhKSkKKyAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lk
KF9DT05UUk9MX0NIQU5ORUxfSUQpICsgYmxvY2sKKyAgICByZXR1cm4gY3JlYXRlX2JpbmFyeV9m
cmFtZShwYXlsb2FkLCBtYXNrPW91dGVyX2ZyYW1lX21hc2spCisKKworZGVmIF9jcmVhdGVfZmFs
bGJhY2tfbmV3X2NoYW5uZWxfc2xvdChvdXRlcl9mcmFtZV9tYXNrPUZhbHNlKToKKyAgICBmaXJz
dF9ieXRlID0gKF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPDwgNSkgfCAxICMgU2V0IHRo
ZSBGIGZsYWcKKyAgICBibG9jayA9IChjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX251bWJlcigw
KSArIF9lbmNvZGVfbnVtYmVyKDApKQorICAgIHBheWxvYWQgPSBfZW5jb2RlX2NoYW5uZWxfaWQo
X0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBibG9jaworICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2Zy
YW1lKHBheWxvYWQsIG1hc2s9b3V0ZXJfZnJhbWVfbWFzaykKKworCitkZWYgX3BhcnNlX3JlcXVl
c3RfdGV4dChyZXF1ZXN0X3RleHQpOgorICAgIHJlcXVlc3RfbGluZSwgaGVhZGVyX2xpbmVzID0g
cmVxdWVzdF90ZXh0LnNwbGl0KCdcclxuJywgMSkKKworICAgIHdvcmRzID0gcmVxdWVzdF9saW5l
LnNwbGl0KCcgJykKKyAgICBpZiBsZW4od29yZHMpICE9IDM6CisgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ0JhZCBSZXF1ZXN0LUxpbmUgc3ludGF4ICVyJyAlIHJlcXVlc3RfbGluZSkKKyAgICBb
Y29tbWFuZCwgcGF0aCwgdmVyc2lvbl0gPSB3b3JkcworICAgIGlmIHZlcnNpb24gIT0gJ0hUVFAv
MS4xJzoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHJlcXVlc3QgdmVyc2lvbiAlcicg
JSB2ZXJzaW9uKQorCisgICAgIyBlbWFpbC5wYXJzZXIuUGFyc2VyKCkgcGFyc2VzIFJGQyAyODIy
IChSRkMgODIyKSBzdHlsZSBoZWFkZXJzLgorICAgICMgUkZDIDY0NTUgcmVmZXJzIFJGQyAyNjE2
IGZvciBoYW5kc2hha2UgcGFyc2luZywgYW5kIFJGQyAyNjE2IHJlZmVycworICAgICMgUkZDIDgy
Mi4KKyAgICBoZWFkZXJzID0gZW1haWwucGFyc2VyLlBhcnNlcigpLnBhcnNlc3RyKGhlYWRlcl9s
aW5lcykKKyAgICByZXR1cm4gY29tbWFuZCwgcGF0aCwgdmVyc2lvbiwgaGVhZGVycworCisKK2Ns
YXNzIF9Db250cm9sQmxvY2sob2JqZWN0KToKKyAgICAiIiJBIHN0cnVjdHVyZSB0aGF0IGhvbGRz
IHBhcnNpbmcgcmVzdWx0IG9mIG11bHRpcGxleGluZyBjb250cm9sIGJsb2NrLgorICAgIENvbnRy
b2wgYmxvY2sgc3BlY2lmaWMgYXR0cmlidXRlcyB3aWxsIGJlIGFkZGVkIGJ5IF9NdXhGcmFtZVBh
eWxvYWRQYXJzZXIuCisgICAgKGUuZy4gZW5jb2RlZF9oYW5kc2hha2Ugd2lsbCBiZSBhZGRlZCBm
b3IgQWRkQ2hhbm5lbFJlcXVlc3QgYW5kCisgICAgQWRkQ2hhbm5lbFJlc3BvbnNlKQorICAgICIi
IgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wY29kZSk6CisgICAgICAgIHNlbGYub3Bjb2Rl
ID0gb3Bjb2RlCisKKworY2xhc3MgX011eEZyYW1lUGF5bG9hZFBhcnNlcihvYmplY3QpOgorICAg
ICIiIkEgY2xhc3MgdGhhdCBwYXJzZXMgbXVsdGlwbGV4ZWQgZnJhbWUgcGF5bG9hZC4iIiIKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgc2VsZi5fZGF0YSA9IHBh
eWxvYWQKKyAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiA9IDAKKyAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCisKKyAgICBkZWYgcmVhZF9jaGFubmVs
X2lkKHNlbGYpOgorICAgICAgICAiIiJSZWFkcyBjaGFubmVsIGlkLgorCisgICAgICAgIFJhaXNl
czoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IHdoZW4gdGhlIHBheWxvYWQgZG9lc24ndCBjb250
YWluCisgICAgICAgICAgICAgICAgdmFsaWQgY2hhbm5lbCBpZC4KKyAgICAgICAgIiIiCisKKyAg
ICAgICAgcmVtYWluaW5nX2xlbmd0aCA9IGxlbihzZWxmLl9kYXRhKSAtIHNlbGYuX3JlYWRfcG9z
aXRpb24KKyAgICAgICAgcG9zID0gc2VsZi5fcmVhZF9wb3NpdGlvbgorICAgICAgICBpZiByZW1h
aW5pbmdfbGVuZ3RoID09IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlk
IGNoYW5uZWwgaWQgZm9ybWF0JykKKworICAgICAgICBjaGFubmVsX2lkID0gb3JkKHNlbGYuX2Rh
dGFbcG9zXSkKKyAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSAxCisgICAgICAgIGlmIGNoYW5u
ZWxfaWQgJiAweGUwID09IDB4ZTA6CisgICAgICAgICAgICBpZiByZW1haW5pbmdfbGVuZ3RoIDwg
NDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQg
Zm9ybWF0JykKKyAgICAgICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchTCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhW3Bvczpwb3Mr
NF0pWzBdICYgMHgxZmZmZmZmZgorICAgICAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSA0Cisg
ICAgICAgIGVsaWYgY2hhbm5lbF9pZCAmIDB4YzAgPT0gMHhjMDoKKyAgICAgICAgICAgIGlmIHJl
bWFpbmluZ19sZW5ndGggPCAzOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0lu
dmFsaWQgY2hhbm5lbCBpZCBmb3JtYXQnKQorICAgICAgICAgICAgY2hhbm5lbF9pZCA9ICgoKGNo
YW5uZWxfaWQgJiAweDFmKSA8PCAxNikgKworICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3QudW5wYWNrKCchSCcsIHNlbGYuX2RhdGFbcG9zKzE6cG9zKzNdKVswXSkKKyAgICAgICAgICAg
IGNoYW5uZWxfaWRfbGVuZ3RoID0gMworICAgICAgICBlbGlmIGNoYW5uZWxfaWQgJiAweDgwID09
IDB4ODA6CisgICAgICAgICAgICBpZiByZW1haW5pbmdfbGVuZ3RoIDwgMjoKKyAgICAgICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKKyAgICAg
ICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchSCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhW3Bvczpwb3MrMl0pWzBdICYgMHgzZmZm
CisgICAgICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDIKKyAgICAgICAgc2VsZi5fcmVhZF9w
b3NpdGlvbiArPSBjaGFubmVsX2lkX2xlbmd0aAorCisgICAgICAgIHJldHVybiBjaGFubmVsX2lk
CisKKyAgICBkZWYgcmVhZF9pbm5lcl9mcmFtZShzZWxmKToKKyAgICAgICAgIiIiUmVhZHMgYW4g
aW5uZXIgZnJhbWUuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgUGh5c2ljYWxDb25u
ZWN0aW9uRXJyb3I6IHdoZW4gdGhlIGlubmVyIGZyYW1lIGlzIGludmFsaWQuCisgICAgICAgICIi
IgorCisgICAgICAgIGlmIGxlbihzZWxmLl9kYXRhKSA9PSBzZWxmLl9yZWFkX3Bvc2l0aW9uOgor
ICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAg
ICAgX0RST1BfQ09ERV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJVTkNBVEVEKQorCisgICAgICAg
IGJpdHMgPSBvcmQoc2VsZi5fZGF0YVtzZWxmLl9yZWFkX3Bvc2l0aW9uXSkKKyAgICAgICAgc2Vs
Zi5fcmVhZF9wb3NpdGlvbiArPSAxCisgICAgICAgIGZpbiA9IChiaXRzICYgMHg4MCkgPT0gMHg4
MAorICAgICAgICByc3YxID0gKGJpdHMgJiAweDQwKSA9PSAweDQwCisgICAgICAgIHJzdjIgPSAo
Yml0cyAmIDB4MjApID09IDB4MjAKKyAgICAgICAgcnN2MyA9IChiaXRzICYgMHgxMCkgPT0gMHgx
MAorICAgICAgICBvcGNvZGUgPSBiaXRzICYgMHhmCisgICAgICAgIHBheWxvYWQgPSBzZWxmLnJl
bWFpbmluZ19kYXRhKCkKKyAgICAgICAgIyBDb25zdW1lIHJlc3Qgb2YgdGhlIG1lc3NhZ2Ugd2hp
Y2ggaXMgcGF5bG9hZCBkYXRhIG9mIHRoZSBvcmlnaW5hbAorICAgICAgICAjIGZyYW1lLgorICAg
ICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uID0gbGVuKHNlbGYuX2RhdGEpCisgICAgICAgIHJldHVy
biBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZAorCisgICAgZGVmIF9yZWFk
X251bWJlcihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3NpdGlvbiArIDEgPiBsZW4o
c2VsZi5fZGF0YSk6CisgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigK
KyAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCisg
ICAgICAgICAgICAgICAgJ0Nhbm5vdCByZWFkIHRoZSBmaXJzdCBieXRlIG9mIG51bWJlciBmaWVs
ZCcpCisKKyAgICAgICAgbnVtYmVyID0gb3JkKHNlbGYuX2RhdGFbc2VsZi5fcmVhZF9wb3NpdGlv
bl0pCisgICAgICAgIGlmIG51bWJlciAmIDB4ODAgPT0gMHg4MDoKKyAgICAgICAgICAgIHJhaXNl
IFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5W
QUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKKyAgICAgICAgICAgICAgICAnVGhlIG1vc3Qgc2lnbmlm
aWNhbnQgYml0IG9mIHRoZSBmaXJzdCBieXRlIG9mIG51bWJlciBzaG91bGQgJworICAgICAgICAg
ICAgICAgICdiZSB1bnNldCcpCisgICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24gKz0gMQorICAg
ICAgICBwb3MgPSBzZWxmLl9yZWFkX3Bvc2l0aW9uCisgICAgICAgIGlmIG51bWJlciA9PSAxMjc6
CisgICAgICAgICAgICBpZiBwb3MgKyA4ID4gbGVuKHNlbGYuX2RhdGEpOgorICAgICAgICAgICAg
ICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICBf
RFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAg
ICdJbnZhbGlkIG51bWJlciBmaWVsZCcpCisgICAgICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9u
ICs9IDgKKyAgICAgICAgICAgIG51bWJlciA9IHN0cnVjdC51bnBhY2soJyFRJywgc2VsZi5fZGF0
YVtwb3M6cG9zKzhdKVswXQorICAgICAgICAgICAgaWYgbnVtYmVyID4gMHg3RkZGRkZGRkZGRkZG
RkZGOgorICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAorICAg
ICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCisg
ICAgICAgICAgICAgICAgICAgICdFbmNvZGVkIG51bWJlciA+PSAyXjYzJykKKyAgICAgICAgICAg
IGlmIG51bWJlciA8PSAweEZGRkY6CisgICAgICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25u
ZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhf
Q09OVFJPTF9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgJyVkIHNob3VsZCBub3QgYmUgZW5j
b2RlZCBieSA5IGJ5dGVzIGVuY29kaW5nJyAlIG51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBu
dW1iZXIKKyAgICAgICAgaWYgbnVtYmVyID09IDEyNjoKKyAgICAgICAgICAgIGlmIHBvcyArIDIg
PiBsZW4oc2VsZi5fZGF0YSk6CisgICAgICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0
aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09O
VFJPTF9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgbnVtYmVyIGZpZWxkJykK
KyAgICAgICAgICAgIHNlbGYuX3JlYWRfcG9zaXRpb24gKz0gMgorICAgICAgICAgICAgbnVtYmVy
ID0gc3RydWN0LnVucGFjaygnIUgnLCBzZWxmLl9kYXRhW3Bvczpwb3MrMl0pWzBdCisgICAgICAg
ICAgICBpZiBudW1iZXIgPD0gMTI1OgorICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29u
bmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVY
X0NPTlRST0xfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICclZCBzaG91bGQgbm90IGJlIGVu
Y29kZWQgYnkgMyBieXRlcyBlbmNvZGluZycgJSBudW1iZXIpCisgICAgICAgIHJldHVybiBudW1i
ZXIKKworICAgIGRlZiBfcmVhZF9zaXplX2FuZF9jb250ZW50cyhzZWxmKToKKyAgICAgICAgIiIi
UmVhZHMgZGF0YSB0aGF0IGNvbnNpc3RzIG9mIGZvbGxvd2luZ3M6CisgICAgICAgICAgICAtIHRo
ZSBzaXplIG9mIHRoZSBjb250ZW50cyBlbmNvZGVkIHRoZSBzYW1lIHdheSBhcyBwYXlsb2FkIGxl
bmd0aAorICAgICAgICAgICAgICBvZiB0aGUgV2ViU29ja2V0IFByb3RvY29sIHdpdGggMSBiaXQg
cGFkZGluZyBhdCB0aGUgaGVhZC4KKyAgICAgICAgICAgIC0gdGhlIGNvbnRlbnRzLgorICAgICAg
ICAiIiIKKworICAgICAgICBzaXplID0gc2VsZi5fcmVhZF9udW1iZXIoKQorICAgICAgICBwb3Mg
PSBzZWxmLl9yZWFkX3Bvc2l0aW9uCisgICAgICAgIGlmIHBvcyArIHNpemUgPiBsZW4oc2VsZi5f
ZGF0YSk6CisgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKKyAgICAg
ICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCisgICAgICAg
ICAgICAgICAgJ0Nhbm5vdCByZWFkICVkIGJ5dGVzIGRhdGEnICUgc2l6ZSkKKworICAgICAgICBz
ZWxmLl9yZWFkX3Bvc2l0aW9uICs9IHNpemUKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGFbcG9z
OnBvcytzaXplXQorCisgICAgZGVmIF9yZWFkX2FkZF9jaGFubmVsX3JlcXVlc3Qoc2VsZiwgZmly
c3RfYnl0ZSwgY29udHJvbF9ibG9jayk6CisgICAgICAgIHJlc2VydmVkID0gKGZpcnN0X2J5dGUg
Pj4gMikgJiAweDcKKyAgICAgICAgaWYgcmVzZXJ2ZWQgIT0gMDoKKyAgICAgICAgICAgIHJhaXNl
IFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5W
QUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKKyAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBt
dXN0IGJlIHVuc2V0JykKKworICAgICAgICAjIEludmFsaWQgZW5jb2Rpbmcgd2lsbCBiZSBoYW5k
bGVkIGJ5IE11eEhhbmRsZXIuCisgICAgICAgIGVuY29kaW5nID0gZmlyc3RfYnl0ZSAmIDB4Mwor
ICAgICAgICB0cnk6CisgICAgICAgICAgICBjb250cm9sX2Jsb2NrLmNoYW5uZWxfaWQgPSBzZWxm
LnJlYWRfY2hhbm5lbF9pZCgpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgorICAgICAg
ICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01V
WF9DT05UUk9MX0JMT0NLKQorICAgICAgICBjb250cm9sX2Jsb2NrLmVuY29kaW5nID0gZW5jb2Rp
bmcKKyAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBzZWxmLl9yZWFkX3NpemVfYW5kX2NvbnRl
bnRzKCkKKyAgICAgICAgY29udHJvbF9ibG9jay5lbmNvZGVkX2hhbmRzaGFrZSA9IGVuY29kZWRf
aGFuZHNoYWtlCisgICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCisKKyAgICBkZWYgX3JlYWRf
YWRkX2NoYW5uZWxfcmVzcG9uc2Uoc2VsZiwgZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jayk6Cisg
ICAgICAgIHJlc2VydmVkID0gKGZpcnN0X2J5dGUgPj4gMikgJiAweDMKKyAgICAgICAgaWYgcmVz
ZXJ2ZWQgIT0gMDoKKyAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAor
ICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKKyAg
ICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHVuc2V0JykKKworICAgICAgICBj
b250cm9sX2Jsb2NrLmFjY2VwdGVkID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCisgICAgICAgIGNv
bnRyb2xfYmxvY2suZW5jb2RpbmcgPSBmaXJzdF9ieXRlICYgMHgzCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGNvbnRyb2xfYmxvY2suY2hhbm5lbF9pZCA9IHNlbGYucmVhZF9jaGFubmVsX2lk
KCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6CisgICAgICAgICAgICByYWlzZSBQaHlz
aWNhbENvbm5lY3Rpb25FcnJvcihfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0sp
CisgICAgICAgIGNvbnRyb2xfYmxvY2suZW5jb2RlZF9oYW5kc2hha2UgPSBzZWxmLl9yZWFkX3Np
emVfYW5kX2NvbnRlbnRzKCkKKyAgICAgICAgcmV0dXJuIGNvbnRyb2xfYmxvY2sKKworICAgIGRl
ZiBfcmVhZF9mbG93X2NvbnRyb2woc2VsZiwgZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jayk6Cisg
ICAgICAgIHJlc2VydmVkID0gZmlyc3RfYnl0ZSAmIDB4MWYKKyAgICAgICAgaWYgcmVzZXJ2ZWQg
IT0gMDoKKyAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAorICAgICAg
ICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKKyAgICAgICAg
ICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHVuc2V0JykKKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBjb250cm9sX2Jsb2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9p
ZCgpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgorICAgICAgICAgICAgcmFpc2UgUGh5
c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NL
KQorICAgICAgICBjb250cm9sX2Jsb2NrLnNlbmRfcXVvdGEgPSBzZWxmLl9yZWFkX251bWJlcigp
CisgICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCisKKyAgICBkZWYgX3JlYWRfZHJvcF9jaGFu
bmVsKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgorICAgICAgICByZXNlcnZlZCA9
IGZpcnN0X2J5dGUgJiAweDFmCisgICAgICAgIGlmIHJlc2VydmVkICE9IDA6CisgICAgICAgICAg
ICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICBfRFJPUF9D
T0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCisgICAgICAgICAgICAgICAgJ1Jlc2VydmVk
IGJpdHMgbXVzdCBiZSB1bnNldCcpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29udHJv
bF9ibG9jay5jaGFubmVsX2lkID0gc2VsZi5yZWFkX2NoYW5uZWxfaWQoKQorICAgICAgICBleGNl
cHQgVmFsdWVFcnJvciwgZToKKyAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVy
cm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSykKKyAgICAgICAgcmVhc29u
ID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50cygpCisgICAgICAgIGlmIGxlbihyZWFzb24p
ID09IDA6CisgICAgICAgICAgICBjb250cm9sX2Jsb2NrLmRyb3BfY29kZSA9IE5vbmUKKyAgICAg
ICAgICAgIGNvbnRyb2xfYmxvY2suZHJvcF9tZXNzYWdlID0gJycKKyAgICAgICAgZWxpZiBsZW4o
cmVhc29uKSA+PSAyOgorICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX2NvZGUgPSBzdHJ1
Y3QudW5wYWNrKCchSCcsIHJlYXNvbls6Ml0pWzBdCisgICAgICAgICAgICBjb250cm9sX2Jsb2Nr
LmRyb3BfbWVzc2FnZSA9IHJlYXNvblsyOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJh
aXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAorICAgICAgICAgICAgICAgIF9EUk9QX0NPREVf
SU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKKyAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgRHJv
cENoYW5uZWwgdGhhdCBjb25haW5zIG9ubHkgMS1ieXRlIHJlYXNvbicpCisgICAgICAgIHJldHVy
biBjb250cm9sX2Jsb2NrCisKKyAgICBkZWYgX3JlYWRfbmV3X2NoYW5uZWxfc2xvdChzZWxmLCBm
aXJzdF9ieXRlLCBjb250cm9sX2Jsb2NrKToKKyAgICAgICAgcmVzZXJ2ZWQgPSBmaXJzdF9ieXRl
ICYgMHgxZQorICAgICAgICBpZiByZXNlcnZlZCAhPSAwOgorICAgICAgICAgICAgcmFpc2UgUGh5
c2ljYWxDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElE
X01VWF9DT05UUk9MX0JMT0NLLAorICAgICAgICAgICAgICAgICdSZXNlcnZlZCBiaXRzIG11c3Qg
YmUgdW5zZXQnKQorICAgICAgICBjb250cm9sX2Jsb2NrLmZhbGxiYWNrID0gZmlyc3RfYnl0ZSAm
IDEKKyAgICAgICAgY29udHJvbF9ibG9jay5zbG90cyA9IHNlbGYuX3JlYWRfbnVtYmVyKCkKKyAg
ICAgICAgY29udHJvbF9ibG9jay5zZW5kX3F1b3RhID0gc2VsZi5fcmVhZF9udW1iZXIoKQorICAg
ICAgICByZXR1cm4gY29udHJvbF9ibG9jaworCisgICAgZGVmIHJlYWRfY29udHJvbF9ibG9ja3Mo
c2VsZik6CisgICAgICAgICIiIlJlYWRzIGNvbnRyb2wgYmxvY2socykuCisKKyAgICAgICAgUmFp
c2VzOgorICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcjogd2hlbiB0aGUgcGF5bG9h
ZCBjb250YWlucyBpbnZhbGlkIGNvbnRyb2wKKyAgICAgICAgICAgICAgIGJsb2NrKHMpLgorICAg
ICAgICAgICBTdG9wSXRlcmF0aW9uOiB3aGVuIG5vIGNvbnRyb2wgYmxvY2tzIGxlZnQuCisgICAg
ICAgICIiIgorCisgICAgICAgIHdoaWxlIHNlbGYuX3JlYWRfcG9zaXRpb24gPCBsZW4oc2VsZi5f
ZGF0YSk6CisgICAgICAgICAgICBmaXJzdF9ieXRlID0gb3JkKHNlbGYuX2RhdGFbc2VsZi5fcmVh
ZF9wb3NpdGlvbl0pCisgICAgICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IDEKKyAgICAg
ICAgICAgIG9wY29kZSA9IChmaXJzdF9ieXRlID4+IDUpICYgMHg3CisgICAgICAgICAgICBjb250
cm9sX2Jsb2NrID0gX0NvbnRyb2xCbG9jayhvcGNvZGU9b3Bjb2RlKQorICAgICAgICAgICAgaWYg
b3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1Q6CisgICAgICAgICAgICAg
ICAgeWllbGQgc2VsZi5fcmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KGZpcnN0X2J5dGUsIGNvbnRy
b2xfYmxvY2spCisgICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9BRERfQ0hB
Tk5FTF9SRVNQT05TRToKKyAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLl9yZWFkX2FkZF9jaGFu
bmVsX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBmaXJzdF9ieXRlLCBjb250cm9sX2Js
b2NrKQorICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRkxPV19DT05UUk9M
OgorICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuX3JlYWRfZmxvd19jb250cm9sKGZpcnN0X2J5
dGUsIGNvbnRyb2xfYmxvY2spCisgICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09E
RV9EUk9QX0NIQU5ORUw6CisgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fcmVhZF9kcm9wX2No
YW5uZWwoZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jaykKKyAgICAgICAgICAgIGVsaWYgb3Bjb2Rl
ID09IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Q6CisgICAgICAgICAgICAgICAgeWllbGQg
c2VsZi5fcmVhZF9uZXdfY2hhbm5lbF9zbG90KGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlv
bkVycm9yKAorICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX1VOS05PV05fTVVYX09QQ09E
RSwKKyAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgb3Bjb2RlICVkJyAlIG9wY29kZSkKKwor
ICAgICAgICBhc3NlcnQgc2VsZi5fcmVhZF9wb3NpdGlvbiA9PSBsZW4oc2VsZi5fZGF0YSkKKyAg
ICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorCisgICAgZGVmIHJlbWFpbmluZ19kYXRhKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm5zIHJlbWFpbmluZyBkYXRhLiIiIgorCisgICAgICAgIHJldHVy
biBzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb246XQorCisKK2NsYXNzIF9Mb2dpY2FsUmVx
dWVzdChvYmplY3QpOgorICAgICIiIk1pbWljcyBtb2RfcHl0aG9uIHJlcXVlc3QuIiIiCisKKyAg
ICBkZWYgX19pbml0X18oc2VsZiwgY2hhbm5lbF9pZCwgY29tbWFuZCwgcGF0aCwgcHJvdG9jb2ws
IGhlYWRlcnMsCisgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24pOgorICAgICAgICAiIiJDb25z
dHJ1Y3RzIGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjaGFubmVs
X2lkOiB0aGUgY2hhbm5lbCBpZCBvZiB0aGUgbG9naWNhbCBjaGFubmVsLgorICAgICAgICAgICAg
Y29tbWFuZDogSFRUUCByZXF1ZXN0IGNvbW1hbmQuCisgICAgICAgICAgICBwYXRoOiBIVFRQIHJl
cXVlc3QgcGF0aC4KKyAgICAgICAgICAgIGhlYWRlcnM6IEhUVFAgaGVhZGVycy4KKyAgICAgICAg
ICAgIGNvbm5lY3Rpb246IF9Mb2dpY2FsQ29ubmVjdGlvbiBpbnN0YW5jZS4KKyAgICAgICAgIiIi
CisKKyAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAorICAgICAgICBzZWxmLm1l
dGhvZCA9IGNvbW1hbmQKKyAgICAgICAgc2VsZi51cmkgPSBwYXRoCisgICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAorICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBoZWFkZXJzCisgICAg
ICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KKyAgICAgICAgc2VsZi5zZXJ2ZXJfdGVy
bWluYXRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuY2xpZW50X3Rlcm1pbmF0ZWQgPSBGYWxzZQor
CisgICAgZGVmIGlzX2h0dHBzKHNlbGYpOgorICAgICAgICAiIiJNaW1pY3MgcmVxdWVzdC5pc19o
dHRwcygpLiBSZXR1cm5zIEZhbHNlIGJlY2F1c2UgdGhpcyBtZXRob2QgaXMKKyAgICAgICAgdXNl
ZCBvbmx5IGJ5IG9sZCBwcm90b2NvbHMgKGhpeGllIGFuZCBoeWJpMDApLgorICAgICAgICAiIiIK
KworICAgICAgICByZXR1cm4gRmFsc2UKKworCitjbGFzcyBfTG9naWNhbENvbm5lY3Rpb24ob2Jq
ZWN0KToKKyAgICAiIiJNaW1pY3MgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgorCisgICAgIyBGb3Ig
ZGV0YWlscywgc2VlIHRoZSBjb21tZW50IG9mIHNldF9yZWFkX3N0YXRlKCkuCisgICAgU1RBVEVf
QUNUSVZFID0gMQorICAgIFNUQVRFX0dSQUNFRlVMTFlfQ0xPU0VEID0gMgorICAgIFNUQVRFX1RF
Uk1JTkFURUQgPSAzCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIsIGNoYW5u
ZWxfaWQpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgorCisgICAgICAgIEFy
Z3M6CisgICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2UuCisgICAg
ICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlkIG9mIHRoaXMgY29ubmVjdGlvbi4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgorICAgICAg
ICBzZWxmLl9jaGFubmVsX2lkID0gY2hhbm5lbF9pZAorICAgICAgICBzZWxmLl9pbmNvbWluZ19k
YXRhID0gJycKKyAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRp
dGlvbigpCisgICAgICAgIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCisg
ICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAg
ICAgIHNlbGYuX3JlYWRfc3RhdGUgPSBzZWxmLlNUQVRFX0FDVElWRQorCisgICAgZGVmIGdldF9s
b2NhbF9hZGRyKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5sb2Nh
bF9hZGRyLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9j
b25uZWN0aW9uLmdldF9sb2NhbF9hZGRyKCkKKyAgICBsb2NhbF9hZGRyID0gcHJvcGVydHkoZ2V0
X2xvY2FsX2FkZHIpCisKKyAgICBkZWYgZ2V0X3JlbW90ZV9hZGRyKHNlbGYpOgorICAgICAgICAi
IiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRkci4iIiIKKworICAgICAgICByZXR1
cm4gc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfY29ubmVjdGlvbi5nZXRfcmVtb3RlX2FkZHIo
KQorICAgIHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQorCisgICAgZGVm
IGdldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6CisgICAgICAgICIiIkdldHMgbWVtb3JpemVkIGxp
bmVzLiBOb3Qgc3VwcG9ydGVkLiIiIgorCisgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNl
cHRpb24oJ19Mb2dpY2FsQ29ubmVjdGlvbiBkb2VzIG5vdCBzdXBwb3J0ICcKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X21lbW9yaXplZF9saW5lcycpCisKKyAgICBk
ZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlcyBkYXRhLiBtdXhfaGFuZGxl
ciBzZW5kcyBkYXRhIGFzeW5jaHJvbm91c2x5LiBUaGUgY2FsbGVyIHdpbGwKKyAgICAgICAgYmUg
c3VzcGVuZGVkIHVudGlsIHdyaXRlIGRvbmUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg
IGRhdGE6IGRhdGEgdG8gYmUgd3JpdHRlbi4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAg
ICBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uOiB3aGVuIGNhbGxlZCBiZWZvcmUgZmluaXNoaW5nIHRo
ZSBwcmV2aW91cworICAgICAgICAgICAgICAgIHdyaXRlLgorICAgICAgICAiIiIKKworICAgICAg
ICB0cnk6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCisgICAg
ICAgICAgICBpZiBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRpb246CisgICAgICAgICAgICAg
ICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ0xv
Z2ljYWwgY29ubmVjdGlvbiAlZCBpcyBhbHJlYWR5IHdhaXRpbmcgdGhlIGNvbXBsZXRpb24gJwor
ICAgICAgICAgICAgICAgICAgICAnb2Ygd3JpdGUnICUgc2VsZi5fY2hhbm5lbF9pZCkKKworICAg
ICAgICAgICAgc2VsZi5fd2FpdGluZ193cml0ZV9jb21wbGV0aW9uID0gVHJ1ZQorICAgICAgICAg
ICAgc2VsZi5fbXV4X2hhbmRsZXIuc2VuZF9kYXRhKHNlbGYuX2NoYW5uZWxfaWQsIGRhdGEpCisg
ICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24ud2FpdCgpCisgICAgICAgIGZpbmFsbHk6
CisgICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24ucmVsZWFzZSgpCisKKyAgICBkZWYg
d3JpdGVfY29udHJvbF9kYXRhKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJXcml0ZXMgZGF0YSB2
aWEgdGhlIGNvbnRyb2wgY2hhbm5lbC4gRG9uJ3Qgd2FpdCBmaW5pc2hpbmcgd3JpdGUKKyAgICAg
ICAgYmVjYXVzZSB0aGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIGJ5IG11eCBkaXNwYXRjaGVyLgor
CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBkYXRhOiBkYXRhIHRvIGJlIHdyaXR0ZW4uCisg
ICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX211eF9oYW5kbGVyLnNlbmRfY29udHJvbF9kYXRh
KGRhdGEpCisKKyAgICBkZWYgbm90aWZ5X3dyaXRlX2RvbmUoc2VsZik6CisgICAgICAgICIiIkNh
bGxlZCB3aGVuIHNlbmRpbmcgZGF0YSBpcyBjb21wbGV0ZWQuIiIiCisKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICAgICAg
aWYgbm90IHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbjoKKyAgICAgICAgICAgICAgICBy
YWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAnSW52YWxp
ZCBjYWxsIG9mIG5vdGlmeV93cml0ZV9kb25lIGZvciBsb2dpY2FsIGNvbm5lY3Rpb24nCisgICAg
ICAgICAgICAgICAgICAgICcgJWQnICUgc2VsZi5fY2hhbm5lbF9pZCkKKyAgICAgICAgICAgIHNl
bGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlvbiA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl93
cml0ZV9jb25kaXRpb24ubm90aWZ5KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNl
bGYuX3dyaXRlX2NvbmRpdGlvbi5yZWxlYXNlKCkKKworICAgIGRlZiBhcHBlbmRfZnJhbWVfZGF0
YShzZWxmLCBmcmFtZV9kYXRhKToKKyAgICAgICAgIiIiQXBwZW5kcyBpbmNvbWluZyBmcmFtZSBk
YXRhLiBDYWxsZWQgd2hlbiBtdXhfaGFuZGxlciBkaXNwYXRjaGVzCisgICAgICAgIGZyYW1lIGRh
dGEgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYXBwbGljYXRpb24uCisKKyAgICAgICAgQXJnczoKKyAg
ICAgICAgICAgIGZyYW1lX2RhdGE6IGluY29taW5nIGZyYW1lIGRhdGEuCisgICAgICAgICIiIgor
CisgICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICBzZWxmLl9p
bmNvbWluZ19kYXRhICs9IGZyYW1lX2RhdGEKKyAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24u
bm90aWZ5KCkKKyAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ucmVsZWFzZSgpCisKKyAgICBk
ZWYgcmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJSZWFkcyBkYXRhLiBCbG9ja3MgdW50
aWwgZW5vdWdoIGRhdGEgaGFzIGFycml2ZWQgdmlhIHBoeXNpY2FsCisgICAgICAgIGNvbm5lY3Rp
b24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGxlbmd0aDogbGVuZ3RoIG9mIGRhdGEg
dG8gYmUgcmVhZC4KKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgTG9naWNhbENvbm5lY3Rp
b25DbG9zZWRFeGNlcHRpb246IHdoZW4gY2xvc2luZyBoYW5kc2hha2UgZm9yIHRoaXMKKyAgICAg
ICAgICAgICAgICBsb2dpY2FsIGNoYW5uZWwgaGFzIGJlZW4gcmVjZWl2ZWQuCisgICAgICAgICAg
ICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVj
dGlvbiBoYXMKKyAgICAgICAgICAgICAgICBjbG9zZWQsIG9yIGFuIGVycm9yIGlzIGNhdXNlZCBv
biB0aGUgcmVhZGVyIHRocmVhZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fcmVhZF9j
b25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgIHdoaWxlIChzZWxmLl9yZWFkX3N0YXRlID09IHNl
bGYuU1RBVEVfQUNUSVZFIGFuZAorICAgICAgICAgICAgICAgbGVuKHNlbGYuX2luY29taW5nX2Rh
dGEpIDwgbGVuZ3RoKToKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLndhaXQoKQor
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHNlbGYuX3JlYWRfc3RhdGUgPT0gc2VsZi5T
VEFURV9HUkFDRUZVTExZX0NMT1NFRDoKKyAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ29u
bmVjdGlvbkNsb3NlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgJ0xvZ2ljYWwgY2hh
bm5lbCAlZCBoYXMgY2xvc2VkLicgJSBzZWxmLl9jaGFubmVsX2lkKQorICAgICAgICAgICAgZWxp
ZiBzZWxmLl9yZWFkX3N0YXRlID09IHNlbGYuU1RBVEVfVEVSTUlOQVRFRDoKKyAgICAgICAgICAg
ICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAgICAgJ1JlY2VpdmluZyAlZCBieXRlIGZhaWxlZC4gTG9naWNhbCBjaGFubmVsICglZCkgY2xv
c2VkJyAlCisgICAgICAgICAgICAgICAgICAgIChsZW5ndGgsIHNlbGYuX2NoYW5uZWxfaWQpKQor
CisgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2luY29taW5nX2RhdGFbOmxlbmd0aF0KKyAgICAg
ICAgICAgIHNlbGYuX2luY29taW5nX2RhdGEgPSBzZWxmLl9pbmNvbWluZ19kYXRhW2xlbmd0aDpd
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9yZWFkX2NvbmRpdGlvbi5yZWxl
YXNlKCkKKworICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIGRlZiBzZXRfcmVhZF9zdGF0ZShz
ZWxmLCBuZXdfc3RhdGUpOgorICAgICAgICAiIiJTZXRzIHRoZSBzdGF0ZSBvZiB0aGlzIGNvbm5l
Y3Rpb24uIENhbGxlZCB3aGVuIGFuIGV2ZW50IGZvciB0aGlzCisgICAgICAgIGNvbm5lY3Rpb24g
aGFzIG9jY3VycmVkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBuZXdfc3RhdGU6IHN0
YXRlIHRvIGJlIHNldC4gbmV3X3N0YXRlIG11c3QgYmUgb25lIG9mIGZvbGxvd2luZ3M6CisgICAg
ICAgICAgICAtIFNUQVRFX0dSQUNFRlVMTFlfQ0xPU0VEOiB3aGVuIGNsb3NpbmcgaGFuZHNoYWtl
IGZvciB0aGlzCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbiBoYXMgYmVlbiByZWNlaXZlZC4K
KyAgICAgICAgICAgIC0gU1RBVEVfVEVSTUlOQVRFRDogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVj
dGlvbiBoYXMgY2xvc2VkIG9yCisgICAgICAgICAgICAgICAgRHJvcENoYW5uZWwgb2YgdGhpcyBj
b25uZWN0aW9uIGhhcyByZWNlaXZlZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fcmVh
ZF9jb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgIHNlbGYuX3JlYWRfc3RhdGUgPSBuZXdfc3Rh
dGUKKyAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ubm90aWZ5KCkKKyAgICAgICAgc2VsZi5f
cmVhZF9jb25kaXRpb24ucmVsZWFzZSgpCisKKworY2xhc3MgX0xvZ2ljYWxTdHJlYW0oU3RyZWFt
KToKKyAgICAiIiJNaW1pY3MgdGhlIFN0cmVhbSBjbGFzcy4gVGhpcyBjbGFzcyBpbnRlcnByZXRz
IG11bHRpcGxleGVkIFdlYlNvY2tldAorICAgIGZyYW1lcy4KKyAgICAiIiIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzZW5kX3F1b3RhLCByZWNlaXZlX3F1b3RhKToKKyAgICAg
ICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
ICAgcmVxdWVzdDogX0xvZ2ljYWxSZXF1ZXN0IGluc3RhbmNlLgorICAgICAgICAgICAgc2VuZF9x
dW90YTogSW5pdGlhbCBzZW5kIHF1b3RhLgorICAgICAgICAgICAgcmVjZWl2ZV9xdW90YTogSW5p
dGlhbCByZWNlaXZlIHF1b3RhLgorICAgICAgICAiIiIKKworICAgICAgICAjIFRPRE8oYmFzaGkp
OiBTdXBwb3J0IGZyYW1lIGZpbHRlcnMuCisgICAgICAgIHN0cmVhbV9vcHRpb25zID0gU3RyZWFt
T3B0aW9ucygpCisgICAgICAgICMgUGh5c2ljYWwgc3RyZWFtIGlzIHJlc3BvbnNpYmxlIGZvciBt
YXNraW5nLgorICAgICAgICBzdHJlYW1fb3B0aW9ucy51bm1hc2tfcmVjZWl2ZSA9IEZhbHNlCisg
ICAgICAgICMgQ29udHJvbCBmcmFtZXMgY2FuIGJlIGZyYWdtZW50ZWQgb24gbG9naWNhbCBjaGFu
bmVsLgorICAgICAgICBzdHJlYW1fb3B0aW9ucy5hbGxvd19mcmFnbWVudGVkX2NvbnRyb2xfZnJh
bWUgPSBUcnVlCisgICAgICAgIFN0cmVhbS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzdHJlYW1f
b3B0aW9ucykKKyAgICAgICAgc2VsZi5fc2VuZF9xdW90YSA9IHNlbmRfcXVvdGEKKyAgICAgICAg
c2VsZi5fc2VuZF9xdW90YV9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAg
ICAgc2VsZi5fcmVjZWl2ZV9xdW90YSA9IHJlY2VpdmVfcXVvdGEKKyAgICAgICAgc2VsZi5fd3Jp
dGVfaW5uZXJfZnJhbWVfc2VtYXBob3JlID0gdGhyZWFkaW5nLlNlbWFwaG9yZSgpCisKKyAgICBk
ZWYgX2NyZWF0ZV9pbm5lcl9mcmFtZShzZWxmLCBvcGNvZGUsIHBheWxvYWQsIGVuZD1UcnVlKToK
KyAgICAgICAgIyBUT0RPKGJhc2hpKTogU3VwcG9ydCBleHRlbnNpb25zIHRoYXQgdXNlIHJlc2Vy
dmVkIGJpdHMuCisgICAgICAgIGZpcnN0X2J5dGUgPSAoZW5kIDw8IDcpIHwgb3Bjb2RlCisgICAg
ICAgIHJldHVybiAoX2VuY29kZV9jaGFubmVsX2lkKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkg
KworICAgICAgICAgICAgICAgIGNocihmaXJzdF9ieXRlKSArIHBheWxvYWQpCisKKyAgICBkZWYg
X3dyaXRlX2lubmVyX2ZyYW1lKHNlbGYsIG9wY29kZSwgcGF5bG9hZCwgZW5kPVRydWUpOgorICAg
ICAgICBwYXlsb2FkX2xlbmd0aCA9IGxlbihwYXlsb2FkKQorICAgICAgICB3cml0ZV9wb3NpdGlv
biA9IDAKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEFuIGlubmVyIGZyYW1lIHdpbGwg
YmUgZnJhZ21lbnRlZCBpZiB0aGVyZSBpcyBubyBlbm91Z2ggc2VuZAorICAgICAgICAgICAgIyBx
dW90YS4gVGhpcyBzZW1hcGhvcmUgZW5zdXJlcyB0aGF0IGZyYWdtZW50ZWQgaW5uZXIgZnJhbWVz
IGFyZQorICAgICAgICAgICAgIyBzZW50IGluIG9yZGVyIG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwu
CisgICAgICAgICAgICAjIE5vdGUgdGhhdCBmcmFtZXMgdGhhdCBjb21lIGZyb20gb3RoZXIgbG9n
aWNhbCBjaGFubmVscyBvcgorICAgICAgICAgICAgIyBtdWx0aXBsZXhpbmcgY29udHJvbCBibG9j
a3MgY2FuIGJlIGluc2VydGVkIGJldHdlZW4gZnJhZ21lbnRlZAorICAgICAgICAgICAgIyBpbm5l
ciBmcmFtZXMgb24gdGhlIHBoeXNpY2FsIGNoYW5uZWwuCisgICAgICAgICAgICBzZWxmLl93cml0
ZV9pbm5lcl9mcmFtZV9zZW1hcGhvcmUuYWNxdWlyZSgpCisgICAgICAgICAgICB3aGlsZSB3cml0
ZV9wb3NpdGlvbiA8IHBheWxvYWRfbGVuZ3RoOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90YV9jb25kaXRpb24uYWNxdWlyZSgpCisgICAg
ICAgICAgICAgICAgICAgIHdoaWxlIHNlbGYuX3NlbmRfcXVvdGEgPT0gMDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnTm8gcXVvdGEuIFdhaXRpbmcgRmxvd0NvbnRyb2wgbWVzc2FnZSBmb3IgJWQuJyAlCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQorICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9xdW90YV9jb25kaXRpb24ud2FpdCgpCisK
KyAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nID0gcGF5bG9hZF9sZW5ndGggLSB3cml0ZV9w
b3NpdGlvbgorICAgICAgICAgICAgICAgICAgICB3cml0ZV9sZW5ndGggPSBtaW4oc2VsZi5fc2Vu
ZF9xdW90YSwgcmVtYWluaW5nKQorICAgICAgICAgICAgICAgICAgICBpbm5lcl9mcmFtZV9lbmQg
PSAoCisgICAgICAgICAgICAgICAgICAgICAgICBlbmQgYW5kCisgICAgICAgICAgICAgICAgICAg
ICAgICAod3JpdGVfcG9zaXRpb24gKyB3cml0ZV9sZW5ndGggPT0gcGF5bG9hZF9sZW5ndGgpKQor
CisgICAgICAgICAgICAgICAgICAgIGlubmVyX2ZyYW1lID0gc2VsZi5fY3JlYXRlX2lubmVyX2Zy
YW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgcGF5bG9hZFt3cml0ZV9wb3NpdGlvbjp3cml0ZV9wb3NpdGlvbit3cml0ZV9sZW5ndGhd
LAorICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfZnJhbWVfZW5kKQorICAgICAgICAgICAg
ICAgICAgICBmcmFtZV9kYXRhID0gc2VsZi5fd3JpdGVyLmJ1aWxkKAorICAgICAgICAgICAgICAg
ICAgICAgICAgaW5uZXJfZnJhbWUsIGVuZD1UcnVlLCBiaW5hcnk9VHJ1ZSkKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fc2VuZF9xdW90YSAtPSB3cml0ZV9sZW5ndGgKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDb25zdW1lZCBxdW90YT0lZCwgcmVtYWluaW5nPSVk
JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod3JpdGVfbGVuZ3Ro
LCBzZWxmLl9zZW5kX3F1b3RhKSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zZW5kX3F1b3RhX2NvbmRpdGlvbi5yZWxlYXNlKCkKKworICAgICAg
ICAgICAgICAgICMgV3JpdGluZyBkYXRhIHdpbGwgYmxvY2sgdGhlIHdvcmtlciBzbyB3ZSBuZWVk
IHRvIHJlbGVhc2UKKyAgICAgICAgICAgICAgICAjIF9zZW5kX3F1b3RhX2NvbmRpdGlvbiBiZWZv
cmUgd3JpdGluZy4KKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcg
aW5uZXIgZnJhbWU6ICVyJyAlIGZyYW1lX2RhdGEpCisgICAgICAgICAgICAgICAgc2VsZi5fcmVx
dWVzdC5jb25uZWN0aW9uLndyaXRlKGZyYW1lX2RhdGEpCisgICAgICAgICAgICAgICAgd3JpdGVf
cG9zaXRpb24gKz0gd3JpdGVfbGVuZ3RoCisKKyAgICAgICAgICAgICAgICBvcGNvZGUgPSBjb21t
b24uT1BDT0RFX0NPTlRJTlVBVElPTgorCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgor
ICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKGUpCisgICAgICAgIGZpbmFs
bHk6CisgICAgICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZV9zZW1hcGhvcmUucmVsZWFz
ZSgpCisKKyAgICBkZWYgcmVwbGVuaXNoX3NlbmRfcXVvdGEoc2VsZiwgc2VuZF9xdW90YSk6Cisg
ICAgICAgICIiIlJlcGxlbmlzaCBzZW5kIHF1b3RhLiIiIgorCisgICAgICAgIHNlbGYuX3NlbmRf
cXVvdGFfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICBzZWxmLl9zZW5kX3F1b3RhICs9IHNl
bmRfcXVvdGEKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXBsZW5pc2hlZCBzZW5kIHF1
b3RhIGZvciBjaGFubmVsIGlkICVkOiAlZCcgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwgc2VsZi5fc2VuZF9xdW90YSkpCisgICAgICAgIHNl
bGYuX3NlbmRfcXVvdGFfY29uZGl0aW9uLm5vdGlmeSgpCisgICAgICAgIHNlbGYuX3NlbmRfcXVv
dGFfY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIGNvbnN1bWVfcmVjZWl2ZV9xdW90YShz
ZWxmLCBhbW91bnQpOgorICAgICAgICAiIiJDb25zdW1lcyByZWNlaXZlIHF1b3RhLiBSZXR1cm5z
IEZhbHNlIG9uIGZhaWx1cmUuIiIiCisKKyAgICAgICAgaWYgc2VsZi5fcmVjZWl2ZV9xdW90YSA8
IGFtb3VudDoKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnVmlvbGF0ZSBxdW90YSBv
biBjaGFubmVsIGlkICVkOiAlZCA8ICVkJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90YSwgYW1vdW50KSkKKyAgICAgICAgICAgIHJldHVybiBG
YWxzZQorICAgICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhIC09IGFtb3VudAorICAgICAgICByZXR1
cm4gVHJ1ZQorCisgICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwg
YmluYXJ5PUZhbHNlKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU3RyZWFtLnNlbmRfbWVzc2FnZS4i
IiIKKworICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgorICAgICAg
ICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdSZXF1
ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNlbmRpbmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2Un
KQorCisgICAgICAgIGlmIGJpbmFyeSBhbmQgaXNpbnN0YW5jZShtZXNzYWdlLCB1bmljb2RlKToK
KyAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAg
ICAnTWVzc2FnZSBmb3IgYmluYXJ5IGZyYW1lIG11c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKKwor
ICAgICAgICBpZiBiaW5hcnk6CisgICAgICAgICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0JJ
TkFSWQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9U
RVhUCisgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKKworICAg
ICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZShvcGNvZGUsIG1lc3NhZ2UsIGVuZCkKKworICAg
IGRlZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5f
cmVjZWl2ZV9mcmFtZS4KKworICAgICAgICBJbiBhZGRpdGlvbiB0byBjYWxsIFN0cmVhbS5fcmVj
ZWl2ZV9mcmFtZSwgdGhpcyBtZXRob2QgYWRkcyB0aGUgYW1vdW50CisgICAgICAgIG9mIHBheWxv
YWQgdG8gcmVjZWl2aW5nIHF1b3RhIGFuZCBzZW5kcyBGbG93Q29udHJvbCB0byB0aGUgY2xpZW50
LgorICAgICAgICBXZSBuZWVkIHRvIGRvIGl0IGhlcmUgYmVjYXVzZSBTdHJlYW0ucmVjZWl2ZV9t
ZXNzYWdlKCkgaGFuZGxlcworICAgICAgICBjb250cm9sIGZyYW1lcyBpbnRlcm5hbGx5LgorICAg
ICAgICAiIiIKKworICAgICAgICBvcGNvZGUsIHBheWxvYWQsIGZpbiwgcnN2MSwgcnN2MiwgcnN2
MyA9IFN0cmVhbS5fcmVjZWl2ZV9mcmFtZShzZWxmKQorICAgICAgICBhbW91bnQgPSBsZW4ocGF5
bG9hZCkKKyAgICAgICAgc2VsZi5fcmVjZWl2ZV9xdW90YSArPSBhbW91bnQKKyAgICAgICAgZnJh
bWVfZGF0YSA9IF9jcmVhdGVfZmxvd19jb250cm9sKHNlbGYuX3JlcXVlc3QuY2hhbm5lbF9pZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCkKKyAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGZsb3cgY29udHJvbCBmb3IgJWQsIHJlcGxl
bmlzaGVkPSVkJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5j
aGFubmVsX2lkLCBhbW91bnQpKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dGVfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCisgICAgICAgIHJldHVybiBvcGNvZGUsIHBheWxv
YWQsIGZpbiwgcnN2MSwgcnN2MiwgcnN2MworCisgICAgZGVmIHJlY2VpdmVfbWVzc2FnZShzZWxm
KToKKyAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5yZWNlaXZlX21lc3NhZ2UuIiIiCisKKyAg
ICAgICAgIyBKdXN0IGNhbGwgU3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpLCBidXQgY2F0Y2gKKyAg
ICAgICAgIyBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2VwdGlvbiwgd2hpY2ggaXMgcmFpc2Vk
IHdoZW4gdGhlIGxvZ2ljYWwKKyAgICAgICAgIyBjb25uZWN0aW9uIGhhcyBjbG9zZWQgZ3JhY2Vm
dWxseS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIFN0cmVhbS5yZWNlaXZlX21l
c3NhZ2Uoc2VsZikKKyAgICAgICAgZXhjZXB0IExvZ2ljYWxDb25uZWN0aW9uQ2xvc2VkRXhjZXB0
aW9uLCBlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUpCisgICAgICAg
ICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYs
IGNvZGUsIHJlYXNvbik6CisgICAgICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uX3NlbmRfY2xvc2lu
Z19oYW5kc2hha2UuIiIiCisKKyAgICAgICAgYm9keSA9IGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFr
ZV9ib2R5KGNvZGUsIHJlYXNvbikKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5n
IGNsb3NpbmcgaGFuZHNoYWtlIGZvciAlZDogKCVyLCAlciknICUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGNvZGUsIHJlYXNvbikpCisgICAg
ICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5PUENPREVfQ0xPU0UsIGJvZHksIGVu
ZD1UcnVlKQorCisgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBUcnVl
CisKKyAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJvZHk9JycpOgorICAgICAgICAiIiJPdmVycmlk
ZXMgU3RyZWFtLnNlbmRfcGluZyIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2Vu
ZGluZyBwaW5nIG9uIGxvZ2ljYWwgY2hhbm5lbCAlZDogJXInICUKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGJvZHkpKQorICAgICAgICBzZWxm
Ll93cml0ZV9pbm5lcl9mcmFtZShjb21tb24uT1BDT0RFX1BJTkcsIGJvZHksIGVuZD1UcnVlKQor
CisgICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCisKKyAgICBkZWYgX3NlbmRf
cG9uZyhzZWxmLCBib2R5KToKKyAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5fc2VuZF9wb25n
IiIiCisKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIHBvbmcgb24gbG9naWNh
bCBjaGFubmVsICVkOiAlcicgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3Jl
cXVlc3QuY2hhbm5lbF9pZCwgYm9keSkpCisgICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1l
KGNvbW1vbi5PUENPREVfUE9ORywgYm9keSwgZW5kPVRydWUpCisKKyAgICBkZWYgY2xvc2VfY29u
bmVjdGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0n
Jyk6CisgICAgICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbi4iIiIKKwor
ICAgICAgICAjIFRPRE8oYmFzaGkpOiBJbXBsZW1lbnQKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRl
YnVnKCdDbG9zaW5nIGxvZ2ljYWwgY29ubmVjdGlvbiAlZCcgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQorICAgICAgICBzZWxmLl9yZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQorCisgICAgZGVmIF9kcmFpbl9yZWNlaXZlZF9kYXRh
KHNlbGYpOgorICAgICAgICAiIiJPdmVycmlkZXMgU3RyZWFtLl9kcmFpbl9yZWNlaXZlZF9kYXRh
LiBOb3RoaW5nIG5lZWQgdG8gYmUgZG9uZSBmb3IKKyAgICAgICAgbG9naWNhbCBjaGFubmVsLgor
ICAgICAgICAiIiIKKworICAgICAgICBwYXNzCisKKworY2xhc3MgX091dGdvaW5nRGF0YShvYmpl
Y3QpOgorICAgICIiIkEgc3RydWN0dXJlIHRoYXQgaG9sZHMgZGF0YSB0byBiZSBzZW50IHZpYSBw
aHlzaWNhbCBjb25uZWN0aW9uIGFuZAorICAgIG9yaWdpbiBvZiB0aGUgZGF0YS4KKyAgICAiIiIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjaGFubmVsX2lkLCBkYXRhKToKKyAgICAgICAgc2Vs
Zi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAorICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCisKKwor
Y2xhc3MgX1BoeXNpY2FsQ29ubmVjdGlvbldyaXRlcih0aHJlYWRpbmcuVGhyZWFkKToKKyAgICAi
IiJBIHRocmVhZCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciB3cml0aW5nIGRhdGEgdG8gcGh5c2lj
YWwgY29ubmVjdGlvbi4KKworICAgIFRPRE8oYmFzaGkpOiBNYWtlIHN1cmUgdGhlcmUgaXMgbm8g
dGhyZWFkLXNhZmV0eSBwcm9ibGVtIHdoZW4gdGhlIHJlYWRlcgorICAgIHRocmVhZCByZWFkcyBk
YXRhIGZyb20gdGhlIHNhbWUgc29ja2V0IGF0IGEgdGltZS4KKyAgICAiIiIKKworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBtdXhfaGFuZGxlcik6CisgICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5z
dGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIG11eF9oYW5kbGVyOiBfTXV4SGFu
ZGxlciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5f
X2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dn
ZXIoc2VsZikKKyAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgorICAgICAg
ICBzZWxmLnNldERhZW1vbihUcnVlKQorICAgICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9IEZh
bHNlCisgICAgICAgIHNlbGYuX2RlcXVlID0gY29sbGVjdGlvbnMuZGVxdWUoKQorICAgICAgICBz
ZWxmLl9kZXF1ZV9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKworICAgIGRlZiBw
dXRfb3V0Z29pbmdfZGF0YShzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiUHV0cyBvdXRnb2luZyBk
YXRhLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBkYXRhOiBfT3V0Z29pbmdEYXRhIGlu
c3RhbmNlLgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbjogd2hlbiB0aGUgdGhyZWFkIGhhcyBiZWVuIHJlcXVlc3RlZCB0bworICAgICAgICAgICAg
ICAgIHRlcm1pbmF0ZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
c2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICAgICAgaWYgc2VsZi5fc3Rv
cF9yZXF1ZXN0ZWQ6CisgICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9u
KCdDYW5ub3Qgd3JpdGUgZGF0YSBhbnltb3JlJykKKworICAgICAgICAgICAgc2VsZi5fZGVxdWUu
YXBwZW5kKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24ubm90aWZ5KCkK
KyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxl
YXNlKCkKKworICAgIGRlZiBfd3JpdGVfZGF0YShzZWxmLCBvdXRnb2luZ19kYXRhKToKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfY29ubmVjdGlv
bi53cml0ZShvdXRnb2luZ19kYXRhLmRhdGEpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6
CisgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCisgICAgICAg
ICAgICAgICAgJ0ZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgdG8gJXI6ICcgJQorICAgICAgICAgICAg
ICAgIChzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCks
IGUpCisgICAgICAgICAgICByYWlzZQorCisgICAgICAgICMgVE9ETyhiYXNoaSk6IEl0IHdvdWxk
IGJlIGJldHRlciB0byBibG9jayB0aGUgdGhyZWFkIHRoYXQgc2VuZHMKKyAgICAgICAgIyBjb250
cm9sIGRhdGEgYXMgd2VsbC4KKyAgICAgICAgaWYgb3V0Z29pbmdfZGF0YS5jaGFubmVsX2lkICE9
IF9DT05UUk9MX0NIQU5ORUxfSUQ6CisgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5ub3Rp
Znlfd3JpdGVfZG9uZShvdXRnb2luZ19kYXRhLmNoYW5uZWxfaWQpCisKKyAgICBkZWYgcnVuKHNl
bGYpOgorICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgIHdo
aWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl9k
ZXF1ZSkgPT0gMDoKKyAgICAgICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24ud2FpdCgp
CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgb3V0Z29pbmdfZGF0YSA9
IHNlbGYuX2RlcXVlLnBvcGxlZnQoKQorICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9u
LnJlbGVhc2UoKQorICAgICAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvdXRnb2luZ19kYXRhKQor
ICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQorCisgICAgICAgICMg
Rmx1c2ggZGVxdWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgbGVuKHNlbGYuX2Rl
cXVlKSA+IDA6CisgICAgICAgICAgICAgICAgb3V0Z29pbmdfZGF0YSA9IHNlbGYuX2RlcXVlLnBv
cGxlZnQoKQorICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3V0Z29pbmdfZGF0YSkK
KyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxl
YXNlKCkKKworICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAiIiJTdG9wcyB0aGUgd3JpdGVy
IHRocmVhZC4iIiIKKworICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24uYWNxdWlyZSgpCisg
ICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQorICAgICAgICBzZWxmLl9kZXF1ZV9j
b25kaXRpb24ubm90aWZ5KCkKKyAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLnJlbGVhc2Uo
KQorCisKK2NsYXNzIF9QaHlzaWNhbENvbm5lY3Rpb25SZWFkZXIodGhyZWFkaW5nLlRocmVhZCk6
CisgICAgIiIiQSB0aHJlYWQgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgcmVhZGluZyBkYXRhIGZy
b20gcGh5c2ljYWwgY29ubmVjdGlvbi4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBtdXhfaGFuZGxlcik6CisgICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCisKKyAg
ICAgICAgQXJnczoKKyAgICAgICAgICAgIG11eF9oYW5kbGVyOiBfTXV4SGFuZGxlciBpbnN0YW5j
ZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxm
KQorICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKKyAg
ICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgorICAgICAgICBzZWxmLnNldERh
ZW1vbihUcnVlKQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAg
ICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwaHlzaWNhbF9zdHJlYW0gPSBzZWxmLl9t
dXhfaGFuZGxlci5waHlzaWNhbF9zdHJlYW0KKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gcGh5
c2ljYWxfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCisgICAgICAgICAgICAgICAgaWYgbWVzc2Fn
ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICMg
QmVsb3cgaGFwcGVucyBvbmx5IHdoZW4gYSBkYXRhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQuCisgICAg
ICAgICAgICAgICAgb3Bjb2RlID0gcGh5c2ljYWxfc3RyZWFtLmdldF9sYXN0X3JlY2VpdmVkX29w
Y29kZSgpCisgICAgICAgICAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQklOQVJZ
OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5mYWlsX3BoeXNpY2FsX2Nv
bm5lY3Rpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfRU5D
QVBTVUxBVElOR19NRVNTQUdFLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGEg
dGV4dCBtZXNzYWdlIG9uIHBoeXNpY2FsIGNvbm5lY3Rpb24nKQorICAgICAgICAgICAgICAgICAg
ICBicmVhaworCisgICAgICAgICAgICBleGNlcHQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRp
b24sIGU6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUpCisgICAg
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNl
bGYuX211eF9oYW5kbGVyLmRpc3BhdGNoX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgIGV4
Y2VwdCBQaHlzaWNhbENvbm5lY3Rpb25FcnJvciwgZToKKyAgICAgICAgICAgICAgICBzZWxmLl9t
dXhfaGFuZGxlci5mYWlsX3BoeXNpY2FsX2Nvbm5lY3Rpb24oCisgICAgICAgICAgICAgICAgICAg
IGUuZHJvcF9jb2RlLCBlLm1lc3NhZ2UpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgIGV4Y2VwdCBMb2dpY2FsQ2hhbm5lbEVycm9yLCBlOgorICAgICAgICAgICAgICAgIHNlbGYu
X211eF9oYW5kbGVyLmZhaWxfbG9naWNhbF9jaGFubmVsKAorICAgICAgICAgICAgICAgICAgICBl
LmNoYW5uZWxfaWQsIGUuZHJvcF9jb2RlLCBlLm1lc3NhZ2UpCisgICAgICAgICAgICBleGNlcHQg
RXhjZXB0aW9uLCBlOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zyh0cmFjZWJh
Y2suZm9ybWF0X2V4YygpKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgc2VsZi5f
bXV4X2hhbmRsZXIubm90aWZ5X3JlYWRlcl9kb25lKCkKKworCitjbGFzcyBfV29ya2VyKHRocmVh
ZGluZy5UaHJlYWQpOgorICAgICIiIkEgdGhyZWFkIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIHJ1
bm5pbmcgdGhlIGNvcnJlc3BvbmRpbmcgYXBwbGljYXRpb24KKyAgICBoYW5kbGVyLgorICAgICIi
IgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG11eF9oYW5kbGVyLCByZXF1ZXN0KToKKyAgICAg
ICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAg
ICAgbXV4X2hhbmRsZXI6IF9NdXhIYW5kbGVyIGluc3RhbmNlLgorICAgICAgICAgICAgcmVxdWVz
dDogX0xvZ2ljYWxSZXF1ZXN0IGluc3RhbmNlLgorICAgICAgICAiIiIKKworICAgICAgICB0aHJl
YWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwu
Z2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorICAgICAgICBzZWxmLl9tdXhfaGFuZGxlciA9IG11eF9o
YW5kbGVyCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAgICAgIHNlbGYuc2V0
RGFlbW9uKFRydWUpCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ0xvZ2ljYWwgY2hhbm5lbCB3b3JrZXIgc3RhcnRlZC4gKGlkPSVkKScgJQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQorICAgICAgICB0
cnk6CisgICAgICAgICAgICAjIE5vbi1jcml0aWNhbCBleGNlcHRpb25zIHdpbGwgYmUgaGFuZGxl
ZCBieSBkaXNwYXRjaGVyLgorICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIuZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhKHNlbGYuX3JlcXVlc3QpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAg
ICAgICBzZWxmLl9tdXhfaGFuZGxlci5ub3RpZnlfd29ya2VyX2RvbmUoc2VsZi5fcmVxdWVzdC5j
aGFubmVsX2lkKQorCisKK2NsYXNzIF9NdXhIYW5kc2hha2VyKGh5YmkuSGFuZHNoYWtlcik6Cisg
ICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJvY2Vzc29yIGZvciBtdWx0aXBsZXhpbmcuIiIiCisK
KyAgICBfRFVNTVlfV0VCU09DS0VUX0tFWSA9ICdkR2hsSUhOaGJYQnNaU0J1YjI1alpRPT0nCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0Y2hlciwgc2VuZF9xdW90YSwg
cmVjZWl2ZV9xdW90YSk6CisgICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCisgICAg
ICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBfTG9naWNhbFJlcXVlc3QgaW5zdGFuY2Uu
CisgICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIGluc3RhbmNlIChkaXNwYXRjaC5E
aXNwYXRjaGVyKS4KKyAgICAgICAgICAgIHNlbmRfcXVvdGE6IEluaXRpYWwgc2VuZCBxdW90YS4K
KyAgICAgICAgICAgIHJlY2VpdmVfcXVvdGE6IEluaXRpYWwgcmVjZWl2ZSBxdW90YS4KKyAgICAg
ICAgIiIiCisKKyAgICAgICAgaHliaS5IYW5kc2hha2VyLl9faW5pdF9fKHNlbGYsIHJlcXVlc3Qs
IGRpc3BhdGNoZXIpCisgICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgPSBzZW5kX3F1b3RhCisgICAg
ICAgIHNlbGYuX3JlY2VpdmVfcXVvdGEgPSByZWNlaXZlX3F1b3RhCisKKyAgICAgICAgIyBBcHBl
bmQgaGVhZGVycyB3aGljaCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIGhhbmRzaGFrZSBmaWVs
ZCBvZgorICAgICAgICAjIEFkZENoYW5uZWxSZXF1ZXN0LgorICAgICAgICAjIFRPRE8oYmFzaGkp
OiBNYWtlIHN1cmUgd2hldGhlciB3ZSBzaG91bGQgcmFpc2UgZXhjZXB0aW9uIHdoZW4KKyAgICAg
ICAgIyAgICAgdGhlc2UgaGVhZGVycyBhcmUgaW5jbHVkZWQgYWxyZWFkeS4KKyAgICAgICAgcmVx
dWVzdC5oZWFkZXJzX2luW2NvbW1vbi5VUEdSQURFX0hFQURFUl0gPSAoCisgICAgICAgICAgICBj
b21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRSkKKyAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2lu
W2NvbW1vbi5DT05ORUNUSU9OX0hFQURFUl0gPSAoCisgICAgICAgICAgICBjb21tb24uVVBHUkFE
RV9DT05ORUNUSU9OX1RZUEUpCisgICAgICAgIHJlcXVlc3QuaGVhZGVyc19pbltjb21tb24uU0VD
X1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUl0gPSAoCisgICAgICAgICAgICBzdHIoY29tbW9uLlZF
UlNJT05fSFlCSV9MQVRFU1QpKQorICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9uLlNF
Q19XRUJTT0NLRVRfS0VZX0hFQURFUl0gPSAoCisgICAgICAgICAgICBzZWxmLl9EVU1NWV9XRUJT
T0NLRVRfS0VZKQorCisgICAgZGVmIF9jcmVhdGVfc3RyZWFtKHNlbGYsIHN0cmVhbV9vcHRpb25z
KToKKyAgICAgICAgIiIiT3ZlcnJpZGUgaHliaS5IYW5kc2hha2VyLl9jcmVhdGVfc3RyZWFtLiIi
IgorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ3JlYXRpbmcgbG9naWNhbCBzdHJlYW0g
Zm9yICVkJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5u
ZWxfaWQpCisgICAgICAgIHJldHVybiBfTG9naWNhbFN0cmVhbShzZWxmLl9yZXF1ZXN0LCBzZWxm
Ll9zZW5kX3F1b3RhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2
ZV9xdW90YSkKKworICAgIGRlZiBfY3JlYXRlX2hhbmRzaGFrZV9yZXNwb25zZShzZWxmLCBhY2Nl
cHQpOgorICAgICAgICAiIiJPdmVycmlkZSBoeWJpLl9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNl
LiIiIgorCisgICAgICAgIHJlc3BvbnNlID0gW10KKworICAgICAgICByZXNwb25zZS5hcHBlbmQo
J0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicpCisKKyAgICAgICAgIyBVcGdy
YWRlLCBDb25uZWN0aW9uIGFuZCBTZWMtV2ViU29ja2V0LUFjY2VwdCBzaG91bGQgYmUgZXhjbHVk
ZWQuCisgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKAorICAgICAgICAgICAg
ICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiwKKyAgICAgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sKSkKKyAgICAgICAgaWYgKHNlbGYuX3JlcXVlc3Qu
d3NfZXh0ZW5zaW9ucyBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgIGxlbihzZWxmLl9yZXF1
ZXN0LndzX2V4dGVuc2lvbnMpICE9IDApOgorICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCcl
czogJXNcclxuJyAlICgKKyAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRF
TlNJT05TX0hFQURFUiwKKyAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMo
c2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25zKSkpCisgICAgICAgIHJlc3BvbnNlLmFwcGVuZCgn
XHJcbicpCisKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzcG9uc2UpCisKKyAgICBkZWYgX3Nl
bmRfaGFuZHNoYWtlKHNlbGYsIGFjY2VwdCk6CisgICAgICAgICIiIk92ZXJyaWRlIGh5YmkuSGFu
ZHNoYWtlci5fc2VuZF9oYW5kc2hha2UuIiIiCisKKyAgICAgICAgIyBEb24ndCBzZW5kIGhhbmRz
aGFrZSByZXNwb25zZSBmb3IgdGhlIGRlZmF1bHQgY2hhbm5lbAorICAgICAgICBpZiBzZWxmLl9y
ZXF1ZXN0LmNoYW5uZWxfaWQgPT0gX0RFRkFVTFRfQ0hBTk5FTF9JRDoKKyAgICAgICAgICAgIHJl
dHVybgorCisgICAgICAgIGhhbmRzaGFrZV9yZXNwb25zZSA9IHNlbGYuX2NyZWF0ZV9oYW5kc2hh
a2VfcmVzcG9uc2UoYWNjZXB0KQorICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9hZGRfY2hh
bm5lbF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNo
YW5uZWxfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlX3Jlc3BvbnNlKQor
ICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgaGFuZHNoYWtlIHJlc3BvbnNlIGZv
ciAlZDogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNo
YW5uZWxfaWQsIGZyYW1lX2RhdGEpKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdGVfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCisKKworY2xhc3MgX0xvZ2ljYWxDaGFubmVs
RGF0YShvYmplY3QpOgorICAgICIiIkEgc3RydWN0dXJlIHRoYXQgaG9sZHMgaW5mb3JtYXRpb24g
YWJvdXQgbG9naWNhbCBjaGFubmVsLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJlcXVlc3QsIHdvcmtlcik6CisgICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKKyAgICAg
ICAgc2VsZi53b3JrZXIgPSB3b3JrZXIKKyAgICAgICAgc2VsZi5kcm9wX2NvZGUgPSBfRFJPUF9D
T0RFX05PUk1BTF9DTE9TVVJFCisgICAgICAgIHNlbGYuZHJvcF9tZXNzYWdlID0gJycKKworCitj
bGFzcyBfSGFuZHNoYWtlRGVsdGFCYXNlKG9iamVjdCk6CisgICAgIiIiQSBjbGFzcyB0aGF0IGhv
bGRzIGluZm9ybWF0aW9uIGZvciBkZWx0YS1lbmNvZGVkIGhhbmRzaGFrZS4iIiIKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBoZWFkZXJzKToKKyAgICAgICAgc2VsZi5faGVhZGVycyA9IGhlYWRl
cnMKKworICAgIGRlZiBjcmVhdGVfaGVhZGVycyhzZWxmLCBkZWx0YT1Ob25lKToKKyAgICAgICAg
IiIiQ3JlYXRlcyByZXF1ZXN0IGhlYWRlcnMgZm9yIGFuIEFkZENoYW5uZWxSZXF1ZXN0IHRoYXQg
aGFzCisgICAgICAgIGRlbHRhLWVuY29kZWQgaGFuZHNoYWtlLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgICBkZWx0YTogaGVhZGVycyBzaG91bGQgYmUgb3ZlcnJpZGRlbi4KKyAgICAgICAg
IiIiCisKKyAgICAgICAgaGVhZGVycyA9IGNvcHkuY29weShzZWxmLl9oZWFkZXJzKQorICAgICAg
ICBpZiBkZWx0YToKKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGRlbHRhLml0ZW1zKCk6
CisgICAgICAgICAgICAgICAgIyBUaGUgc3BlYyByZXF1aXJlcyB0aGF0IGEgaGVhZGVyIHdpdGgg
YW4gZW1wdHkgdmFsdWUgaXMKKyAgICAgICAgICAgICAgICAjIHJlbW92ZWQgZnJvbSB0aGUgZGVs
dGEgYmFzZS4KKyAgICAgICAgICAgICAgICBpZiBsZW4odmFsdWUpID09IDAgYW5kIGhlYWRlcnMu
aGFzX2tleShrZXkpOgorICAgICAgICAgICAgICAgICAgICBkZWwgaGVhZGVyc1trZXldCisgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFs
dWUKKyAgICAgICAgIyBUT0RPKGJhc2hpKTogU3VwcG9ydCBleHRlbnNpb25zCisgICAgICAgIGhl
YWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyddID0gJycKKyAgICAgICAgcmV0dXJuIGhl
YWRlcnMKKworCitjbGFzcyBfTXV4SGFuZGxlcihvYmplY3QpOgorICAgICIiIk11bHRpcGxleGlu
ZyBoYW5kbGVyLiBXaGVuIGEgaGFuZGxlciBzdGFydHMsIGl0IGxhdW5jaGVzIHRocmVlCisgICAg
dGhyZWFkczsgdGhlIHJlYWRlciB0aHJlYWQsIHRoZSB3cml0ZXIgdGhyZWFkLCBhbmQgYSB3b3Jr
ZXIgdGhyZWFkLgorCisgICAgVGhlIHJlYWRlciB0aHJlYWQgcmVhZHMgZGF0YSBmcm9tIHRoZSBw
aHlzaWNhbCBzdHJlYW0sIGkuZS4sIHRoZQorICAgIHdzX3N0cmVhbSBvYmplY3Qgb2YgdGhlIHVu
ZGVybHlpbmcgd2Vic29ja2V0IGNvbm5lY3Rpb24uIFRoZSByZWFkZXIKKyAgICB0aHJlYWQgaW50
ZXJwcmV0cyBtdWx0aXBsZXhlZCBmcmFtZXMgYW5kIGRpc3BhdGNoZXMgdGhlbSB0byBsb2dpY2Fs
CisgICAgY2hhbm5lbHMuIE1ldGhvZHMgb2YgdGhpcyBjbGFzcyBhcmUgbW9zdGx5IGNhbGxlZCBi
eSB0aGUgcmVhZGVyIHRocmVhZC4KKworICAgIFRoZSB3cml0ZXIgdGhyZWFkIHNlbmRzIG11bHRp
cGxleGVkIGZyYW1lcyB3aGljaCBhcmUgY3JlYXRlZCBieQorICAgIGxvZ2ljYWwgY2hhbm5lbHMg
dmlhIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgorCisgICAgVGhlIHdvcmtlciB0aHJlYWQgbGF1
bmNoZWQgYXQgdGhlIHN0YXJ0aW5nIHBvaW50IGhhbmRsZXMgdGhlCisgICAgIkltcGxpY2l0bHkg
T3BlbmVkIENvbm5lY3Rpb24iLiBJZiBtdWx0aXBsZXhpbmcgaGFuZGxlciByZWNlaXZlcworICAg
IGFuIEFkZENoYW5uZWxSZXF1ZXN0IGFuZCBhY2NlcHRzIGl0LCB0aGUgaGFuZGxlciB3aWxsIGxh
dW5jaCBhIG5ldyB3b3JrZXIKKyAgICB0aHJlYWQgYW5kIGRpc3BhdGNoIHRoZSByZXF1ZXN0IHRv
IGl0LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIGRpc3BhdGNo
ZXIpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6
CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3Qgb2YgdGhlIHBoeXNpY2Fs
IGNvbm5lY3Rpb24uCisgICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIGluc3RhbmNl
IChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5vcmln
aW5hbF9yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBkaXNwYXRj
aGVyCisgICAgICAgIHNlbGYucGh5c2ljYWxfY29ubmVjdGlvbiA9IHJlcXVlc3QuY29ubmVjdGlv
bgorICAgICAgICBzZWxmLnBoeXNpY2FsX3N0cmVhbSA9IHJlcXVlc3Qud3Nfc3RyZWFtCisgICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQorICAgICAgICBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzID0ge30KKyAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgIyBIb2xkcyBjbGll
bnQncyBpbml0aWFsIHF1b3RhCisgICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMgPSBjb2xsZWN0
aW9ucy5kZXF1ZSgpCisgICAgICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlID0gTm9uZQorICAgICAg
ICBzZWxmLl93b3JrZXJfZG9uZV9ub3RpZnlfcmVjZWl2ZWQgPSBGYWxzZQorICAgICAgICBzZWxm
Ll9yZWFkZXIgPSBOb25lCisgICAgICAgIHNlbGYuX3dyaXRlciA9IE5vbmUKKworICAgIGRlZiBz
dGFydChzZWxmKToKKyAgICAgICAgIiIiU3RhcnRzIHRoZSBoYW5kbGVyLgorCisgICAgICAgIFJh
aXNlczoKKyAgICAgICAgICAgIE11eFVuZXhwZWN0ZWRFeGNlcHRpb246IHdoZW4gdGhlIGhhbmRs
ZXIgYWxyZWFkeSBzdGFydGVkLCBvciB3aGVuCisgICAgICAgICAgICAgICAgb3BlbmluZyBoYW5k
c2hha2Ugb2YgdGhlIGRlZmF1bHQgY2hhbm5lbCBmYWlscy4KKyAgICAgICAgIiIiCisKKyAgICAg
ICAgaWYgc2VsZi5fcmVhZGVyIG9yIHNlbGYuX3dyaXRlcjoKKyAgICAgICAgICAgIHJhaXNlIE11
eFVuZXhwZWN0ZWRFeGNlcHRpb24oJ011eEhhbmRsZXIgYWxyZWFkeSBzdGFydGVkJykKKworICAg
ICAgICBzZWxmLl9yZWFkZXIgPSBfUGh5c2ljYWxDb25uZWN0aW9uUmVhZGVyKHNlbGYpCisgICAg
ICAgIHNlbGYuX3dyaXRlciA9IF9QaHlzaWNhbENvbm5lY3Rpb25Xcml0ZXIoc2VsZikKKyAgICAg
ICAgc2VsZi5fcmVhZGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5fd3JpdGVyLnN0YXJ0KCkKKwor
ICAgICAgICAjIENyZWF0ZSAiSW1wbGljaXRseSBPcGVuZWQgQ29ubmVjdGlvbiIuCisgICAgICAg
IGxvZ2ljYWxfY29ubmVjdGlvbiA9IF9Mb2dpY2FsQ29ubmVjdGlvbihzZWxmLCBfREVGQVVMVF9D
SEFOTkVMX0lEKQorICAgICAgICBzZWxmLl9oYW5kc2hha2VfYmFzZSA9IF9IYW5kc2hha2VEZWx0
YUJhc2UoCisgICAgICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QuaGVhZGVyc19pbikKKyAg
ICAgICAgbG9naWNhbF9yZXF1ZXN0ID0gX0xvZ2ljYWxSZXF1ZXN0KAorICAgICAgICAgICAgX0RF
RkFVTFRfQ0hBTk5FTF9JRCwKKyAgICAgICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdC5tZXRo
b2QsCisgICAgICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3QudXJpLAorICAgICAgICAgICAg
c2VsZi5vcmlnaW5hbF9yZXF1ZXN0LnByb3RvY29sLAorICAgICAgICAgICAgc2VsZi5faGFuZHNo
YWtlX2Jhc2UuY3JlYXRlX2hlYWRlcnMoKSwKKyAgICAgICAgICAgIGxvZ2ljYWxfY29ubmVjdGlv
bikKKyAgICAgICAgIyBDbGllbnQncyBzZW5kIHF1b3RhIGZvciB0aGUgaW1wbGljaXRseSBvcGVu
ZWQgY29ubmVjdGlvbiBpcyB6ZXJvLAorICAgICAgICAjIGJ1dCB3ZSB3aWxsIHNlbmQgRmxvd0Nv
bnRyb2wgbGF0ZXIgc28gc2V0IHRoZSBpbml0aWFsIHF1b3RhIHRvCisgICAgICAgICMgX0lOSVRJ
QUxfUVVPVEFfRk9SX0NMSUVOVC4KKyAgICAgICAgc2VsZi5fY2hhbm5lbF9zbG90cy5hcHBlbmQo
X0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKKyAgICAgICAgaWYgbm90IHNlbGYuX2RvX2hhbmRz
aGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KAorICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LCBz
ZW5kX3F1b3RhPXNlbGYub3JpZ2luYWxfcmVxdWVzdC5tdXhfcXVvdGEpOgorICAgICAgICAgICAg
cmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRmFpbGVkIGhh
bmRzaGFrZSBvbiB0aGUgZGVmYXVsdCBjaGFubmVsIGlkJykKKyAgICAgICAgc2VsZi5fYWRkX2xv
Z2ljYWxfY2hhbm5lbChsb2dpY2FsX3JlcXVlc3QpCisKKyAgICAgICAgIyBTZW5kIEZsb3dDb250
cm9sIGZvciB0aGUgaW1wbGljaXRseSBvcGVuZWQgY29ubmVjdGlvbi4KKyAgICAgICAgZnJhbWVf
ZGF0YSA9IF9jcmVhdGVfZmxvd19jb250cm9sKF9ERUZBVUxUX0NIQU5ORUxfSUQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfSU5JVElBTF9RVU9UQV9GT1JfQ0xJ
RU5UKQorICAgICAgICBsb2dpY2FsX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZV9jb250cm9sX2Rh
dGEoZnJhbWVfZGF0YSkKKworICAgIGRlZiBhZGRfY2hhbm5lbF9zbG90cyhzZWxmLCBzbG90cywg
c2VuZF9xdW90YSk6CisgICAgICAgICIiIkFkZHMgY2hhbm5lbCBzbG90cy4KKworICAgICAgICBB
cmdzOgorICAgICAgICAgICAgc2xvdHM6IG51bWJlciBvZiBzbG90cyB0byBiZSBhZGRlZC4KKyAg
ICAgICAgICAgIHNlbmRfcXVvdGE6IGluaXRpYWwgc2VuZCBxdW90YSBmb3Igc2xvdHMuCisgICAg
ICAgICIiIgorCisgICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMuZXh0ZW5kKFtzZW5kX3F1b3Rh
XSAqIHNsb3RzKQorICAgICAgICAjIFNlbmQgTmV3Q2hhbm5lbFNsb3QgdG8gY2xpZW50LgorICAg
ICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9uZXdfY2hhbm5lbF9zbG90KHNsb3RzLCBzZW5kX3F1
b3RhKQorICAgICAgICBzZWxmLnNlbmRfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCisKKyAgICBk
ZWYgd2FpdF91bnRpbF9kb25lKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICIiIldhaXRz
IHVudGlsIGFsbCB3b3JrZXJzIGFyZSBkb25lLiBSZXR1cm5zIEZhbHNlIHdoZW4gdGltZW91dCBo
YXMKKyAgICAgICAgb2NjdXJyZWQuIFJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzLgorCisgICAgICAg
IEFyZ3M6CisgICAgICAgICAgICB0aW1lb3V0OiB0aW1lb3V0IGluIHNlYy4KKyAgICAgICAgIiIi
CisKKyAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIGxlbihzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
KSA+IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdXYWl0aW5nIHdvcmtl
cnMoJWQpLi4uJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihzZWxm
Ll9sb2dpY2FsX2NoYW5uZWxzKSkKKyAgICAgICAgICAgICAgICBzZWxmLl93b3JrZXJfZG9uZV9u
b3RpZnlfcmVjZWl2ZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hh
bm5lbHNfY29uZGl0aW9uLndhaXQodGltZW91dCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5fd29ya2VyX2RvbmVfbm90aWZ5X3JlY2VpdmVkOgorICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ1dhaXRpbmcgd29ya2VyKHMpIHRpbWVkIG91dCcpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBz
ZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKKworICAgICAgICAjIEZs
dXNoIHBlbmRpbmcgb3V0Z29pbmcgZGF0YQorICAgICAgICBzZWxmLl93cml0ZXIuc3RvcCgpCisg
ICAgICAgIHNlbGYuX3dyaXRlci5qb2luKCkKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAg
ZGVmIG5vdGlmeV93cml0ZV9kb25lKHNlbGYsIGNoYW5uZWxfaWQpOgorICAgICAgICAiIiJDYWxs
ZWQgYnkgdGhlIHdyaXRlciB0aHJlYWQgd2hlbiBhIHdyaXRlIG9wZXJhdGlvbiBoYXMgZG9uZS4K
KworICAgICAgICBBcmdzOgorICAgICAgICAgICAgY2hhbm5lbF9pZDogb2JqZWN0aXZlIGNoYW5u
ZWwgaWQuCisgICAgICAgICIiIgorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2xv
Z2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICAgICAgaWYgY2hhbm5l
bF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgorICAgICAgICAgICAgICAgIGNoYW5uZWxf
ZGF0YSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0KKyAgICAgICAgICAgICAg
ICBjaGFubmVsX2RhdGEucmVxdWVzdC5jb25uZWN0aW9uLm5vdGlmeV93cml0ZV9kb25lKCkKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZWVt
cyB0aGF0IGxvZ2ljYWwgY2hhbm5lbCBmb3IgJWQgaGFzIGdvbmUnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICUgY2hhbm5lbF9pZCkKKyAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAg
ZGVmIHNlbmRfY29udHJvbF9kYXRhKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJTZW5kcyBkYXRh
IHZpYSB0aGUgY29udHJvbCBjaGFubmVsLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBk
YXRhOiBkYXRhIHRvIGJlIHNlbnQuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3dyaXRl
ci5wdXRfb3V0Z29pbmdfZGF0YShfT3V0Z29pbmdEYXRhKAorICAgICAgICAgICAgICAgIGNoYW5u
ZWxfaWQ9X0NPTlRST0xfQ0hBTk5FTF9JRCwgZGF0YT1kYXRhKSkKKworICAgIGRlZiBzZW5kX2Rh
dGEoc2VsZiwgY2hhbm5lbF9pZCwgZGF0YSk6CisgICAgICAgICIiIlNlbmRzIGRhdGEgdmlhIGdp
dmVuIGxvZ2ljYWwgY2hhbm5lbC4gVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5CisgICAgICAgIHdv
cmtlciB0aHJlYWRzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjaGFubmVsX2lkOiBv
YmplY3RpdmUgY2hhbm5lbCBpZC4KKyAgICAgICAgICAgIGRhdGE6IGRhdGEgdG8gYmUgc2VudC4K
KyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fd3JpdGVyLnB1dF9vdXRnb2luZ19kYXRhKF9P
dXRnb2luZ0RhdGEoCisgICAgICAgICAgICAgICAgY2hhbm5lbF9pZD1jaGFubmVsX2lkLCBkYXRh
PWRhdGEpKQorCisgICAgZGVmIF9zZW5kX2Ryb3BfY2hhbm5lbChzZWxmLCBjaGFubmVsX2lkLCBj
b2RlPU5vbmUsIG1lc3NhZ2U9JycpOgorICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9kcm9w
X2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZSwgbWVzc2FnZSkKKyAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAorICAgICAgICAgICAgJ1NlbmRpbmcgZHJvcCBjaGFubmVsIGZvciBjaGFubmVsIGlk
ICVkJyAlIGNoYW5uZWxfaWQpCisgICAgICAgIHNlbGYuc2VuZF9jb250cm9sX2RhdGEoZnJhbWVf
ZGF0YSkKKworICAgIGRlZiBfc2VuZF9lcnJvcl9hZGRfY2hhbm5lbF9yZXNwb25zZShzZWxmLCBj
aGFubmVsX2lkLCBzdGF0dXM9Tm9uZSk6CisgICAgICAgIGlmIHN0YXR1cyBpcyBOb25lOgorICAg
ICAgICAgICAgc3RhdHVzID0gY29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUCisKKyAgICAg
ICAgaWYgc3RhdHVzIGluIF9IVFRQX0JBRF9SRVNQT05TRV9NRVNTQUdFUzoKKyAgICAgICAgICAg
IG1lc3NhZ2UgPSBfSFRUUF9CQURfUkVTUE9OU0VfTUVTU0FHRVNbc3RhdHVzXQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXNwb25zZSBtZXNzYWdlIGZv
ciAlZCBpcyBub3QgZm91bmQnICUgc3RhdHVzKQorICAgICAgICAgICAgbWVzc2FnZSA9ICc/Pz8n
CisKKyAgICAgICAgcmVzcG9uc2UgPSAnSFRUUC8xLjEgJWQgJXNcclxuXHJcbicgJSAoc3RhdHVz
LCBtZXNzYWdlKQorICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNw
b25zZShjaGFubmVsX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1yZXNwb25zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9MCwgcmVqZWN0ZWQ9VHJ1
ZSkKKyAgICAgICAgc2VsZi5zZW5kX2NvbnRyb2xfZGF0YShmcmFtZV9kYXRhKQorCisgICAgZGVm
IF9jcmVhdGVfbG9naWNhbF9yZXF1ZXN0KHNlbGYsIGJsb2NrKToKKyAgICAgICAgaWYgYmxvY2su
Y2hhbm5lbF9pZCA9PSBfQ09OVFJPTF9DSEFOTkVMX0lEOgorICAgICAgICAgICAgIyBUT0RPKGJh
c2hpKTogUmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3Igd2l0aCBjb2RlIDIwMDYKKyAgICAg
ICAgICAgICMgaW5zdGVhZCBvZiBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uLgorICAgICAgICAgICAg
cmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnUmVjZWl2ZWQg
dGhlIGNvbnRyb2wgY2hhbm5lbCBpZCAoMCkgYXMgb2JqZWN0aXZlIGNoYW5uZWwgJworICAgICAg
ICAgICAgICAgICdpZCBmb3IgQWRkQ2hhbm5lbCcpCisKKyAgICAgICAgaWYgYmxvY2suZW5jb2Rp
bmcgPiBfSEFORFNIQUtFX0VOQ09ESU5HX0RFTFRBOgorICAgICAgICAgICAgcmFpc2UgUGh5c2lj
YWxDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9VTktOT1dOX1JF
UVVFU1RfRU5DT0RJTkcpCisKKyAgICAgICAgbWV0aG9kLCBwYXRoLCB2ZXJzaW9uLCBoZWFkZXJz
ID0gX3BhcnNlX3JlcXVlc3RfdGV4dCgKKyAgICAgICAgICAgIGJsb2NrLmVuY29kZWRfaGFuZHNo
YWtlKQorICAgICAgICBpZiBibG9jay5lbmNvZGluZyA9PSBfSEFORFNIQUtFX0VOQ09ESU5HX0RF
TFRBOgorICAgICAgICAgICAgaGVhZGVycyA9IHNlbGYuX2hhbmRzaGFrZV9iYXNlLmNyZWF0ZV9o
ZWFkZXJzKGhlYWRlcnMpCisKKyAgICAgICAgY29ubmVjdGlvbiA9IF9Mb2dpY2FsQ29ubmVjdGlv
bihzZWxmLCBibG9jay5jaGFubmVsX2lkKQorICAgICAgICByZXF1ZXN0ID0gX0xvZ2ljYWxSZXF1
ZXN0KGJsb2NrLmNoYW5uZWxfaWQsIG1ldGhvZCwgcGF0aCwgdmVyc2lvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzLCBjb25uZWN0aW9uKQorICAgICAgICByZXR1
cm4gcmVxdWVzdAorCisgICAgZGVmIF9kb19oYW5kc2hha2VfZm9yX2xvZ2ljYWxfcmVxdWVzdChz
ZWxmLCByZXF1ZXN0LCBzZW5kX3F1b3RhPTApOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBy
ZWNlaXZlX3F1b3RhID0gc2VsZi5fY2hhbm5lbF9zbG90cy5wb3BsZWZ0KCkKKyAgICAgICAgZXhj
ZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ2hhbm5lbEVycm9yKAor
ICAgICAgICAgICAgICAgIHJlcXVlc3QuY2hhbm5lbF9pZCwgX0RST1BfQ09ERV9ORVdfQ0hBTk5F
TF9TTE9UX1ZJT0xBVElPTikKKworICAgICAgICBoYW5kc2hha2VyID0gX011eEhhbmRzaGFrZXIo
cmVxdWVzdCwgc2VsZi5kaXNwYXRjaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VuZF9xdW90YSwgcmVjZWl2ZV9xdW90YSkKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBleGNlcHQgaGFuZHNoYWtlLlZl
cnNpb25FeGNlcHRpb24sIGU6CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBl
KQorICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJvcl9hZGRfY2hhbm5lbF9yZXNwb25zZSgKKyAg
ICAgICAgICAgICAgICByZXF1ZXN0LmNoYW5uZWxfaWQsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFU
VVNfQkFEX1JFUVVFU1QpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZXhjZXB0
IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24sIGU6CisgICAgICAgICAgICAjIFRPRE8oYmFz
aGkpOiBTaG91bGQgd2UgX0ZhaWwgdGhlIExvZ2ljYWwgQ2hhbm5lbF8gd2l0aCAzMDAxCisgICAg
ICAgICAgICAjIGluc3RlYWQ/CisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBl
KQorICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJvcl9hZGRfY2hhbm5lbF9yZXNwb25zZShyZXF1
ZXN0LmNoYW5uZWxfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1cz1lLnN0YXR1cykKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAg
ICAgICBleGNlcHQgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGU6CisgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuaW5mbygnJXMnLCBlKQorICAgICAgICAgICAgc2VsZi5fc2VuZF9l
cnJvcl9hZGRfY2hhbm5lbF9yZXNwb25zZShyZXF1ZXN0LmNoYW5uZWxfaWQpCisgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9hZGRfbG9n
aWNhbF9jaGFubmVsKHNlbGYsIGxvZ2ljYWxfcmVxdWVzdCk6CisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAg
ICAgICAgaWYgbG9naWNhbF9yZXF1ZXN0LmNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFu
bmVsczoKKyAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NoYW5uZWwgaWQgJWQg
YWxyZWFkeSBleGlzdHMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9n
aWNhbF9yZXF1ZXN0LmNoYW5uZWxfaWQpCisgICAgICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxD
b25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfQ0hBTk5FTF9B
TFJFQURZX0VYSVNUUywKKyAgICAgICAgICAgICAgICAgICAgJ0NoYW5uZWwgaWQgJWQgYWxyZWFk
eSBleGlzdHMnICUKKyAgICAgICAgICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LmNoYW5uZWxf
aWQpCisgICAgICAgICAgICB3b3JrZXIgPSBfV29ya2VyKHNlbGYsIGxvZ2ljYWxfcmVxdWVzdCkK
KyAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IF9Mb2dpY2FsQ2hhbm5lbERhdGEobG9naWNhbF9y
ZXF1ZXN0LCB3b3JrZXIpCisgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2xvZ2lj
YWxfcmVxdWVzdC5jaGFubmVsX2lkXSA9IGNoYW5uZWxfZGF0YQorICAgICAgICAgICAgd29ya2Vy
LnN0YXJ0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hh
bm5lbHNfY29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIF9wcm9jZXNzX2FkZF9jaGFubmVs
X3JlcXVlc3Qoc2VsZiwgYmxvY2spOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBsb2dpY2Fs
X3JlcXVlc3QgPSBzZWxmLl9jcmVhdGVfbG9naWNhbF9yZXF1ZXN0KGJsb2NrKQorICAgICAgICBl
eGNlcHQgVmFsdWVFcnJvciwgZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRmFp
bGVkIHRvIGNyZWF0ZSBsb2dpY2FsIHJlcXVlc3Q6ICVyJyAlIGUpCisgICAgICAgICAgICBzZWxm
Ll9zZW5kX2Vycm9yX2FkZF9jaGFubmVsX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIGJsb2Nr
LmNoYW5uZWxfaWQsIHN0YXR1cz1jb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1QpCisgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgc2VsZi5fZG9faGFuZHNoYWtlX2Zvcl9sb2dpY2Fs
X3JlcXVlc3QobG9naWNhbF9yZXF1ZXN0KToKKyAgICAgICAgICAgIGlmIGJsb2NrLmVuY29kaW5n
ID09IF9IQU5EU0hBS0VfRU5DT0RJTkdfSURFTlRJVFk6CisgICAgICAgICAgICAgICAgIyBVcGRh
dGUgaGFuZHNoYWtlIGJhc2UuCisgICAgICAgICAgICAgICAgIyBUT0RPKGJhc2hpKTogTWFrZSBz
dXJlIHRoaXMgaXMgdGhlIHJpZ2h0IHBsYWNlIHRvIHVwZGF0ZQorICAgICAgICAgICAgICAgICMg
aGFuZHNoYWtlIGJhc2UuCisgICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2Jhc2UgPSBf
SGFuZHNoYWtlRGVsdGFCYXNlKAorICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX3JlcXVlc3Qu
aGVhZGVyc19pbikKKyAgICAgICAgICAgIHNlbGYuX2FkZF9sb2dpY2FsX2NoYW5uZWwobG9naWNh
bF9yZXF1ZXN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJvcl9h
ZGRfY2hhbm5lbF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBibG9jay5jaGFubmVsX2lkLCBz
dGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQorCisgICAgZGVmIF9wcm9jZXNz
X2Zsb3dfY29udHJvbChzZWxmLCBibG9jayk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNl
bGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAgICAgICAgaWYg
bm90IGJsb2NrLmNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2ljYWxf
Y2hhbm5lbHNbYmxvY2suY2hhbm5lbF9pZF0KKyAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1
ZXN0LndzX3N0cmVhbS5yZXBsZW5pc2hfc2VuZF9xdW90YSgKKyAgICAgICAgICAgICAgICBibG9j
ay5zZW5kX3F1b3RhKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCisKKyAgICBkZWYgX3Byb2Nlc3NfZHJvcF9j
aGFubmVsKHNlbGYsIGJsb2NrKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAorICAgICAg
ICAgICAgJ0Ryb3BDaGFubmVsIHJlY2VpdmVkIGZvciAlZDogY29kZT0lciwgcmVhc29uPSVyJyAl
CisgICAgICAgICAgICAoYmxvY2suY2hhbm5lbF9pZCwgYmxvY2suZHJvcF9jb2RlLCBibG9jay5k
cm9wX21lc3NhZ2UpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2No
YW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKKyAgICAgICAgICAgIGlmIG5vdCBibG9jay5jaGFu
bmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6CisgICAgICAgICAgICAgICAgcmV0dXJu
CisgICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2Jsb2Nr
LmNoYW5uZWxfaWRdCisgICAgICAgICAgICBjaGFubmVsX2RhdGEuZHJvcF9jb2RlID0gX0RST1Bf
Q09ERV9BQ0tOT1dMRURHRUQKKyAgICAgICAgICAgICMgQ2xvc2UgdGhlIGxvZ2ljYWwgY2hhbm5l
bAorICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9z
dGF0ZSgKKyAgICAgICAgICAgICAgICBfTG9naWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRF
RCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNf
Y29uZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIF9wcm9jZXNzX2NvbnRyb2xfYmxvY2tzKHNl
bGYsIHBhcnNlcik6CisgICAgICAgIGZvciBjb250cm9sX2Jsb2NrIGluIHBhcnNlci5yZWFkX2Nv
bnRyb2xfYmxvY2tzKCk6CisgICAgICAgICAgICBvcGNvZGUgPSBjb250cm9sX2Jsb2NrLm9wY29k
ZQorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdjb250cm9sIGJsb2NrIHJlY2VpdmVk
LCBvcGNvZGU6ICVkJyAlIG9wY29kZSkKKyAgICAgICAgICAgIGlmIG9wY29kZSA9PSBfTVVYX09Q
Q09ERV9BRERfQ0hBTk5FTF9SRVFVRVNUOgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Nf
YWRkX2NoYW5uZWxfcmVxdWVzdChjb250cm9sX2Jsb2NrKQorICAgICAgICAgICAgZWxpZiBvcGNv
ZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6CisgICAgICAgICAgICAgICAg
cmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIF9EUk9Q
X0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgJ1Jl
Y2VpdmVkIEFkZENoYW5uZWxSZXNwb25zZScpCisgICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBf
TVVYX09QQ09ERV9GTE9XX0NPTlRST0w6CisgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19m
bG93X2NvbnRyb2woY29udHJvbF9ibG9jaykKKyAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9N
VVhfT1BDT0RFX0RST1BfQ0hBTk5FTDoKKyAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2Ry
b3BfY2hhbm5lbChjb250cm9sX2Jsb2NrKQorICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01V
WF9PUENPREVfTkVXX0NIQU5ORUxfU0xPVDoKKyAgICAgICAgICAgICAgICByYWlzZSBQaHlzaWNh
bENvbm5lY3Rpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElE
X01VWF9DT05UUk9MX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgTmV3Q2hh
bm5lbFNsb3QnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBNdXhV
bmV4cGVjdGVkRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBvcGNv
ZGUgJXInICUgb3Bjb2RlKQorCisgICAgZGVmIF9wcm9jZXNzX2xvZ2ljYWxfZnJhbWUoc2VsZiwg
Y2hhbm5lbF9pZCwgcGFyc2VyKToKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZl
ZCBhIGZyYW1lLiBjaGFubmVsIGlkPSVkJyAlIGNoYW5uZWxfaWQpCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQorICAg
ICAgICAgICAgaWYgbm90IGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKKyAg
ICAgICAgICAgICAgICAjIFdlIG11c3QgaWdub3JlIHRoZSBtZXNzYWdlIGZvciBhbiBpbmFjdGl2
ZSBjaGFubmVsLgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgY2hhbm5lbF9k
YXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXQorICAgICAgICAgICAgZmlu
LCByc3YxLCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWQgPSBwYXJzZXIucmVhZF9pbm5lcl9m
cmFtZSgpCisgICAgICAgICAgICBpZiBub3QgY2hhbm5lbF9kYXRhLnJlcXVlc3Qud3Nfc3RyZWFt
LmNvbnN1bWVfcmVjZWl2ZV9xdW90YSgKKyAgICAgICAgICAgICAgICBsZW4ocGF5bG9hZCkpOgor
ICAgICAgICAgICAgICAgICMgVGhlIGNsaWVudCB2aW9sYXRlcyBxdW90YS4gQ2xvc2UgbG9naWNh
bCBjaGFubmVsLgorICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFubmVsRXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9M
QVRJT04pCisgICAgICAgICAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKG9wY29kZSwgbGVuKHBh
eWxvYWQpLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hc2s9RmFsc2UpCisgICAgICAgICAgICBmcmFtZV9kYXRhID0gaGVhZGVyICsg
cGF5bG9hZAorICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5hcHBl
bmRfZnJhbWVfZGF0YShmcmFtZV9kYXRhKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAg
c2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCisKKyAgICBkZWYgZGlz
cGF0Y2hfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgIiIiRGlzcGF0Y2hlcyBtZXNz
YWdlLiBUaGUgcmVhZGVyIHRocmVhZCBjYWxscyB0aGlzIG1ldGhvZC4KKworICAgICAgICBBcmdz
OgorICAgICAgICAgICAgbWVzc2FnZTogYSBtZXNzYWdlIHRoYXQgY29udGFpbnMgZW5jYXBzdWxh
dGVkIGZyYW1lLgorICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rp
b25FcnJvcjogaWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgcGh5c2ljYWwKKyAgICAgICAgICAgICAg
ICBjb25uZWN0aW9uIGxldmVsIGVycm9ycy4KKyAgICAgICAgICAgIExvZ2ljYWxDaGFubmVsRXJy
b3I6IGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIGxvZ2ljYWwgY2hhbm5lbAorICAgICAgICAgICAg
ICAgIGxldmVsIGVycm9ycy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcGFyc2VyID0gX011eEZy
YW1lUGF5bG9hZFBhcnNlcihtZXNzYWdlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjaGFu
bmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yLCBlOgorICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1Bf
Q09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCkKKyAgICAgICAgaWYgY2hhbm5lbF9pZCA9PSBfQ09O
VFJPTF9DSEFOTkVMX0lEOgorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19jb250cm9sX2Jsb2Nr
cyhwYXJzZXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZCwgcGFyc2VyKQorCisgICAgZGVmIG5vdGlmeV93b3JrZXJfZG9u
ZShzZWxmLCBjaGFubmVsX2lkKToKKyAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYSB3b3JrZXIgaGFz
IGZpbmlzaGVkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFu
bmVsIGlkIGNvcnJlc3BvbmRlZCB3aXRoIHRoZSB3b3JrZXIuCisgICAgICAgICIiIgorCisgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnV29ya2VyIGZvciBjaGFubmVsIGlkICVkIHRlcm1pbmF0
ZWQnICUgY2hhbm5lbF9pZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAgICAgICBpZiBub3QgY2hhbm5l
bF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgorICAgICAgICAgICAgICAgIHJhaXNlIE11
eFVuZXhwZWN0ZWRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICdDaGFubmVsIGlkICVk
IG5vdCBmb3VuZCcgJSBjaGFubmVsX2lkKQorICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0gc2Vs
Zi5fbG9naWNhbF9jaGFubmVscy5wb3AoY2hhbm5lbF9pZCkKKyAgICAgICAgZmluYWxseToKKyAg
ICAgICAgICAgIHNlbGYuX3dvcmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZCA9IFRydWUKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLm5vdGlmeSgpCisgICAgICAg
ICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKKworICAgICAg
ICBpZiBub3QgY2hhbm5lbF9kYXRhLnJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CisgICAgICAg
ICAgICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5lbCgKKyAgICAgICAgICAgICAgICBjaGFubmVsX2lk
LCBjb2RlPWNoYW5uZWxfZGF0YS5kcm9wX2NvZGUsCisgICAgICAgICAgICAgICAgbWVzc2FnZT1j
aGFubmVsX2RhdGEuZHJvcF9tZXNzYWdlKQorCisgICAgZGVmIG5vdGlmeV9yZWFkZXJfZG9uZShz
ZWxmKToKKyAgICAgICAgIiIiVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSByZWFkZXIgdGhy
ZWFkIHdoZW4gdGhlIHJlYWRlciBoYXMKKyAgICAgICAgZmluaXNoZWQuCisgICAgICAgICIiIgor
CisgICAgICAgICMgVGVybWluYXRlIGFsbCBsb2dpY2FsIGNvbm5lY3Rpb25zCisgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygndGVybWlhdGluZyBhbGwgbG9naWNhbCBjb25uZWN0aW9ucy4uLicp
CisgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVpcmUoKQorICAg
ICAgICBmb3IgY2hhbm5lbF9kYXRhIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMudmFsdWVzKCk6
CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3Qu
Y29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgX0xvZ2ljYWxD
b25uZWN0aW9uLlNUQVRFX1RFUk1JTkFURUQpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19j
b25kaXRpb24ucmVsZWFzZSgpCisKKyAgICBkZWYgZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKHNl
bGYsIGNvZGUsIG1lc3NhZ2UpOgorICAgICAgICAiIiJGYWlsIHRoZSBwaHlzaWNhbCBjb25uZWN0
aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBjb2RlOiBkcm9wIHJlYXNvbiBjb2Rl
LgorICAgICAgICAgICAgbWVzc2FnZTogZHJvcCBtZXNzYWdlLgorICAgICAgICAiIiIKKworICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0ZhaWxpbmcgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24u
Li4nKQorICAgICAgICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5lbChfQ09OVFJPTF9DSEFOTkVMX0lE
LCBjb2RlLCBtZXNzYWdlKQorICAgICAgICBzZWxmLnBoeXNpY2FsX3N0cmVhbS5jbG9zZV9jb25u
ZWN0aW9uKAorICAgICAgICAgICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJP
UikKKworICAgIGRlZiBmYWlsX2xvZ2ljYWxfY2hhbm5lbChzZWxmLCBjaGFubmVsX2lkLCBjb2Rl
LCBtZXNzYWdlKToKKyAgICAgICAgIiIiRmFpbCBhIGxvZ2ljYWwgY2hhbm5lbC4KKworICAgICAg
ICBBcmdzOgorICAgICAgICAgICAgY2hhbm5lbF9pZDogY2hhbm5lbCBpZC4KKyAgICAgICAgICAg
IGNvZGU6IGRyb3AgcmVhc29uIGNvZGUuCisgICAgICAgICAgICBtZXNzYWdlOiBkcm9wIG1lc3Nh
Z2UuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRmFpbGluZyBs
b2dpY2FsIGNoYW5uZWwgJWQuLi4nICUgY2hhbm5lbF9pZCkKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCisgICAgICAg
ICAgICBpZiBjaGFubmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6CisgICAgICAgICAg
ICAgICAgY2hhbm5lbF9kYXRhID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXQor
ICAgICAgICAgICAgICAgICMgQ2xvc2UgdGhlIGxvZ2ljYWwgY2hhbm5lbC4gbm90aWZ5X3dvcmtl
cl9kb25lKCkgd2lsbCBiZQorICAgICAgICAgICAgICAgICMgY2FsbGVkIGxhdGVyIGFuZCBpdCB3
aWxsIHNlbmQgRHJvcENoYW5uZWwuCisgICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRhLmRyb3Bf
Y29kZSA9IGNvZGUKKyAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEuZHJvcF9tZXNzYWdlID0g
bWVzc2FnZQorICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNvbm5lY3Rpb24u
c2V0X3JlYWRfc3RhdGUoCisgICAgICAgICAgICAgICAgICAgIF9Mb2dpY2FsQ29ubmVjdGlvbi5T
VEFURV9URVJNSU5BVEVEKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9zZW5kX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBjb2RlLCBtZXNzYWdlKQorICAgICAgICBm
aW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVs
ZWFzZSgpCisKKworZGVmIHVzZV9tdXgocmVxdWVzdCk6CisgICAgcmV0dXJuIGhhc2F0dHIocmVx
dWVzdCwgJ211eCcpIGFuZCByZXF1ZXN0Lm11eAorCisKK2RlZiBzdGFydChyZXF1ZXN0LCBkaXNw
YXRjaGVyKToKKyAgICBtdXhfaGFuZGxlciA9IF9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNo
ZXIpCisgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQorCisgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5u
ZWxfc2xvdHMoX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKKworICAgIG11
eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSgpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5d2Vic29ja2V0
L3N0YW5kYWxvbmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvbW9kX3B5
d2Vic29ja2V0L3N0YW5kYWxvbmUucHkKaW5kZXggODUwYWE1Y2Q0Y2U4OTVkODNjYTE1Y2NiN2Fh
ZDZlYzk2NGM5MGI1NC4uMDdhMzNkOWM5NDBiYmMzNGVhYzE1OTcxYjdhOWMzN2RlMDI4ODdkZCAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNv
Y2tldC9zdGFuZGFsb25lLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQpAQCAtMzIsMjcgKzMyLDQ0IEBACiAKICIi
IlN0YW5kYWxvbmUgV2ViU29ja2V0IHNlcnZlci4KIAorVXNlIHRoaXMgZmlsZSB0byBsYXVuY2gg
cHl3ZWJzb2NrZXQgd2l0aG91dCBBcGFjaGUgSFRUUCBTZXJ2ZXIuCisKKwogQkFTSUMgVVNBR0UK
IAotVXNlIHRoaXMgc2VydmVyIHRvIHJ1biBtb2RfcHl3ZWJzb2NrZXQgd2l0aG91dCBBcGFjaGUg
SFRUUCBTZXJ2ZXIuCitHbyB0byB0aGUgc3JjIGRpcmVjdG9yeSBhbmQgcnVuCiAKLVVzYWdlOgot
ICAgIHB5dGhvbiBzdGFuZGFsb25lLnB5IFstcCA8d3NfcG9ydD5dIFstdyA8d2Vic29ja19oYW5k
bGVycz5dCi0gICAgICAgICAgICAgICAgICAgICAgICAgWy1zIDxzY2FuX2Rpcj5dCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgWy1kIDxkb2N1bWVudF9yb290Pl0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICBbLW0gPHdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGU+XQotICAgICAgICAgICAgICAg
ICAgICAgICAgIC4uLiBmb3Igb3RoZXIgb3B0aW9ucywgc2VlIF9tYWluIGJlbG93IC4uLgorICAk
IHB5dGhvbiBtb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBbLXAgPHdzX3BvcnQ+XQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLXcgPHdlYnNvY2tfaGFuZGxl
cnM+XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLWQgPGRvY3Vt
ZW50X3Jvb3Q+XQogCiA8d3NfcG9ydD4gaXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBmb3Igd3M6
Ly8gY29ubmVjdGlvbi4KIAogPGRvY3VtZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRoZSByb290
IGRpcmVjdG9yeSBvZiBIVE1MIGZpbGVzLgogCiA8d2Vic29ja19oYW5kbGVycz4gaXMgdGhlIHBh
dGggdG8gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIFdlYlNvY2tldCBoYW5kbGVycy4KLVNlZSBfX2lu
aXRfXy5weSBmb3IgZGV0YWlscyBvZiA8d2Vic29ja19oYW5kbGVycz4gYW5kIGhvdyB0byB3cml0
ZSBXZWJTb2NrZXQKLWhhbmRsZXJzLiBJZiB0aGlzIHBhdGggaXMgcmVsYXRpdmUsIDxkb2N1bWVu
dF9yb290PiBpcyB1c2VkIGFzIHRoZSBiYXNlLgorSWYgbm90IHNwZWNpZmllZCwgPGRvY3VtZW50
X3Jvb3Q+IHdpbGwgYmUgdXNlZC4gU2VlIF9faW5pdF9fLnB5IChvcgorcnVuICQgcHlkb2MgbW9k
X3B5d2Vic29ja2V0KSBmb3IgaG93IHRvIHdyaXRlIFdlYlNvY2tldCBoYW5kbGVycy4KKworRm9y
IG1vcmUgZGV0YWlsIGFuZCBvdGhlciBvcHRpb25zLCBydW4KKworICAkIHB5dGhvbiBtb2RfcHl3
ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSAtLWhlbHAKKworb3Igc2VlIF9idWlsZF9vcHRpb25fcGFy
c2VyIG1ldGhvZCBiZWxvdy4KKworRm9yIHRyb3VibGUgc2hvb3RpbmcsIGFkZGluZyAiLS1sb2df
bGV2ZWwgZGVidWciIG1pZ2h0IGhlbHAgeW91LgorCiAKLTxzY2FuX2Rpcj4gaXMgYSBwYXRoIHVu
ZGVyIHRoZSByb290IGRpcmVjdG9yeS4gSWYgc3BlY2lmaWVkLCBvbmx5IHRoZQotaGFuZGxlcnMg
dW5kZXIgc2Nhbl9kaXIgYXJlIHNjYW5uZWQuIFRoaXMgaXMgdXNlZnVsIGluIHNhdmluZyBzY2Fu
IHRpbWUuCitUUlkgREVNTworCitHbyB0byB0aGUgc3JjIGRpcmVjdG9yeSBhbmQgcnVuCisKKyAg
JCBweXRob24gc3RhbmRhbG9uZS5weSAtZCBleGFtcGxlCisKK3RvIGxhdW5jaCBweXdlYnNvY2tl
dCB3aXRoIHRoZSBzYW1wbGUgaGFuZGxlciBhbmQgaHRtbCBvbiBwb3J0IDgwLiBPcGVuCitodHRw
Oi8vbG9jYWxob3N0L2NvbnNvbGUuaHRtbCwgY2xpY2sgdGhlIGNvbm5lY3QgYnV0dG9uLCB0eXBl
IHNvbWV0aGluZyBpbnRvCit0aGUgdGV4dCBib3ggbmV4dCB0byB0aGUgc2VuZCBidXR0b24gYW5k
IGNsaWNrIHRoZSBzZW5kIGJ1dHRvbi4gSWYgZXZlcnl0aGluZworaXMgd29ya2luZywgeW91J2xs
IHNlZSB0aGUgbWVzc2FnZSB5b3UgdHlwZWQgZWNob2VkIGJ5IHRoZSBzZXJ2ZXIuCiAKIAogU1VQ
UE9SVElORyBUTFMKQEAgLTYzLDEwICs4MCwxMCBAQCBUbyBzdXBwb3J0IFRMUywgcnVuIHN0YW5k
YWxvbmUucHkgd2l0aCAtdCwgLWssIGFuZCAtYyBvcHRpb25zLgogU1VQUE9SVElORyBDTElFTlQg
QVVUSEVOVElDQVRJT04KIAogVG8gc3VwcG9ydCBjbGllbnQgYXV0aGVudGljYXRpb24gd2l0aCBU
TFMsIHJ1biBzdGFuZGFsb25lLnB5IHdpdGggLXQsIC1rLCAtYywKLWFuZCAtLWNhLWNlcnRpZmlj
YXRlIG9wdGlvbnMuCithbmQgLS10bHMtY2xpZW50LWF1dGgsIGFuZCAtLXRscy1jbGllbnQtY2Eg
b3B0aW9ucy4KIAogRS5nLiwgJC4vc3RhbmRhbG9uZS5weSAtZCAuLi9leGFtcGxlIC1wIDEwNDQz
IC10IC1jIC4uL3Rlc3QvY2VydC9jZXJ0LnBlbSAtawotLi4vdGVzdC9jZXJ0L2tleS5wZW0gLS1j
YS1jZXJ0aWZpY2F0ZT0uLi90ZXN0L2NlcnQvY2FjZXJ0LnBlbQorLi4vdGVzdC9jZXJ0L2tleS5w
ZW0gLS10bHMtY2xpZW50LWF1dGggLS10bHMtY2xpZW50LWNhPS4uL3Rlc3QvY2VydC9jYWNlcnQu
cGVtCiAKIAogQ09ORklHVVJBVElPTiBGSUxFCkBAIC0xMTAsNiArMTI3LDcgQEAgaW1wb3J0IENH
SUhUVFBTZXJ2ZXIKIGltcG9ydCBTaW1wbGVIVFRQU2VydmVyCiBpbXBvcnQgU29ja2V0U2VydmVy
CiBpbXBvcnQgQ29uZmlnUGFyc2VyCitpbXBvcnQgYmFzZTY0CiBpbXBvcnQgaHR0cGxpYgogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCBsb2dnaW5nLmhhbmRsZXJzCkBAIC0yMjQsNiArMjQyLDEyIEBA
IGNsYXNzIF9TdGFuZGFsb25lUmVxdWVzdChvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5f
cmVxdWVzdF9oYW5kbGVyLmNvbW1hbmQKICAgICBtZXRob2QgPSBwcm9wZXJ0eShnZXRfbWV0aG9k
KQogCisgICAgZGVmIGdldF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgIiIiR2V0dGVyIHRvIG1p
bWljIHJlcXVlc3QucHJvdG9jb2wuIiIiCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3Rf
aGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24KKyAgICBwcm90b2NvbCA9IHByb3BlcnR5KGdldF9wcm90
b2NvbCkKKwogICAgIGRlZiBpc19odHRwcyhzZWxmKToKICAgICAgICAgIiIiTWltaWMgcmVxdWVz
dC5pc19odHRwcygpLiIiIgogCkBAIC0yNjQsNiArMjg4LDMyIEBAIGNsYXNzIF9TdGFuZGFsb25l
U1NMQ29ubmVjdGlvbihvYmplY3QpOgogICAgICAgICByZXR1cm4gc29ja2V0Ll9maWxlb2JqZWN0
KHNlbGYuX2Nvbm5lY3Rpb24sIG1vZGUsIGJ1ZnNpemUpCiAKIAorZGVmIF9hbGlhc19oYW5kbGVy
cyhkaXNwYXRjaGVyLCB3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKToKKyAgICAiIiJTZXQgYWxp
YXNlcyBzcGVjaWZpZWQgaW4gd2Vic29ja19oYW5kbGVyX21hcF9maWxlIGluIGRpc3BhdGNoZXIu
CisKKyAgICBBcmdzOgorICAgICAgICBkaXNwYXRjaGVyOiBkaXNwYXRjaC5EaXNwYXRjaGVyIGlu
c3RhbmNlCisgICAgICAgIHdlYnNvY2tfaGFuZGxlcl9tYXBfZmlsZTogYWxpYXMgbWFwIGZpbGUK
KyAgICAiIiIKKworICAgIGZwID0gb3Blbih3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKQorICAg
IHRyeToKKyAgICAgICAgZm9yIGxpbmUgaW4gZnA6CisgICAgICAgICAgICBpZiBsaW5lWzBdID09
ICcjJyBvciBsaW5lLmlzc3BhY2UoKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAg
ICAgICAgbSA9IHJlLm1hdGNoKCcoXFMrKVxzKyhcUyspJywgbGluZSkKKyAgICAgICAgICAgIGlm
IG5vdCBtOgorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnV3JvbmcgZm9ybWF0IGlu
IG1hcCBmaWxlOicgKyBsaW5lKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hlci5hZGRfcmVzb3VyY2VfcGF0aF9hbGlh
cygKKyAgICAgICAgICAgICAgICAgICAgbS5ncm91cCgxKSwgbS5ncm91cCgyKSkKKyAgICAgICAg
ICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgICAg
ICBsb2dnaW5nLmVycm9yKHN0cihlKSkKKyAgICBmaW5hbGx5OgorICAgICAgICBmcC5jbG9zZSgp
CisKKwogY2xhc3MgV2ViU29ja2V0U2VydmVyKFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbiwg
QmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlcik6CiAgICAgIiIiSFRUUFNlcnZlciBzcGVjaWFsaXpl
ZCBmb3IgV2ViU29ja2V0LiIiIgogCkBAIC0yNzgsNiArMzI4LDIwIEBAIGNsYXNzIFdlYlNvY2tl
dFNlcnZlcihTb2NrZXRTZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBT
ZXJ2ZXIpOgogICAgICAgICBpZiBuZWNlc3NhcnkuCiAgICAgICAgICIiIgogCisgICAgICAgICMg
U2hhcmUgYSBEaXNwYXRjaGVyIGFtb25nIHJlcXVlc3QgaGFuZGxlcnMgdG8gc2F2ZSB0aW1lIGZv
cgorICAgICAgICAjIGluc3RhbnRpYXRpb24uICBEaXNwYXRjaGVyIGNhbiBiZSBzaGFyZWQgYmVj
YXVzZSBpdCBpcyB0aHJlYWQtc2FmZS4KKyAgICAgICAgb3B0aW9ucy5kaXNwYXRjaGVyID0gZGlz
cGF0Y2guRGlzcGF0Y2hlcigKKyAgICAgICAgICAgIG9wdGlvbnMud2Vic29ja19oYW5kbGVycywK
KyAgICAgICAgICAgIG9wdGlvbnMuc2Nhbl9kaXIsCisgICAgICAgICAgICBvcHRpb25zLmFsbG93
X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCisgICAgICAgIGlmIG9wdGlvbnMud2Vic29ja19o
YW5kbGVyc19tYXBfZmlsZToKKyAgICAgICAgICAgIF9hbGlhc19oYW5kbGVycyhvcHRpb25zLmRp
c3BhdGNoZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy53ZWJzb2NrX2hh
bmRsZXJzX21hcF9maWxlKQorICAgICAgICB3YXJuaW5ncyA9IG9wdGlvbnMuZGlzcGF0Y2hlci5z
b3VyY2Vfd2FybmluZ3MoKQorICAgICAgICBpZiB3YXJuaW5nczoKKyAgICAgICAgICAgIGZvciB3
YXJuaW5nIGluIHdhcm5pbmdzOgorICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnbW9k
X3B5d2Vic29ja2V0OiAlcycgJSB3YXJuaW5nKQorCiAgICAgICAgIHNlbGYuX2xvZ2dlciA9IHV0
aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQogCiAgICAgICAgIHNlbGYucmVxdWVzdF9xdWV1ZV9z
aXplID0gb3B0aW9ucy5yZXF1ZXN0X3F1ZXVlX3NpemUKQEAgLTMyNSw3ICszODksNyBAQCBjbGFz
cyBXZWJTb2NrZXRTZXJ2ZXIoU29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLCBCYXNlSFRUUFNl
cnZlci5IVFRQU2VydmVyKToKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAg
aWYgc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMudXNlX3RsczoKICAgICAgICAgICAgICAg
ICBpZiBfSEFTX1NTTDoKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi53ZWJzb2NrZXRfc2Vy
dmVyX29wdGlvbnMuY2FfY2VydGlmaWNhdGU6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYu
d2Vic29ja2V0X3NlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfYXV0aDoKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsaWVudF9jZXJ0XyA9IHNzbC5DRVJUX1JFUVVJUkVECiAgICAgICAgICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRfY2VydF8gPSBzc2wu
Q0VSVF9OT05FCkBAIC0zMzMsNyArMzk3LDcgQEAgY2xhc3MgV2ViU29ja2V0U2VydmVyKFNvY2tl
dFNlcnZlci5UaHJlYWRpbmdNaXhJbiwgQmFzZUhUVFBTZXJ2ZXIuSFRUUFNlcnZlcik6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPXNlbGYud2Vic29ja2V0X3NlcnZlcl9vcHRpb25z
LnByaXZhdGVfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9c2VsZi53ZWJz
b2NrZXRfc2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfU1NMdjIzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY2FfY2VydHM9c2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMuY2FfY2VydGlmaWNhdGUs
CisgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1zZWxmLndlYnNvY2tldF9zZXJ2ZXJf
b3B0aW9ucy50bHNfY2xpZW50X2NhLAogICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFz
PWNsaWVudF9jZXJ0XykKICAgICAgICAgICAgICAgICBpZiBfSEFTX09QRU5fU1NMOgogICAgICAg
ICAgICAgICAgICAgICBjdHggPSBPcGVuU1NMLlNTTC5Db250ZXh0KE9wZW5TU0wuU1NMLlNTTHYy
M19NRVRIT0QpCkBAIC0zNjIsNiArNDI2LDE1IEBAIGNsYXNzIFdlYlNvY2tldFNlcnZlcihTb2Nr
ZXRTZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgogICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTa2lwIGJ5IGZhaWx1cmU6ICVyJywgZSkK
ICAgICAgICAgICAgICAgICBzb2NrZXRfLmNsb3NlKCkKICAgICAgICAgICAgICAgICBmYWlsZWRf
c29ja2V0cy5hcHBlbmQoc29ja2V0aW5mbykKKyAgICAgICAgICAgIGlmIHNlbGYuc2VydmVyX2Fk
ZHJlc3NbMV0gPT0gMDoKKyAgICAgICAgICAgICAgICAjIFRoZSBvcGVyYXRpbmcgc3lzdGVtIGFz
c2lnbnMgdGhlIGFjdHVhbCBwb3J0IG51bWJlciBmb3IgcG9ydAorICAgICAgICAgICAgICAgICMg
bnVtYmVyIDAuIFRoaXMgY2FzZSwgdGhlIHNlY29uZCBhbmQgbGF0ZXIgc29ja2V0cyBzaG91bGQg
dXNlCisgICAgICAgICAgICAgICAgIyB0aGUgc2FtZSBwb3J0IG51bWJlci4gQWxzbyBzZWxmLnNl
cnZlcl9wb3J0IGlzIHJld3JpdHRlbgorICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpdCBpcyBl
eHBvcnRlZCwgYW5kIHdpbGwgYmUgdXNlZCBieSBleHRlcm5hbCBjb2RlLgorICAgICAgICAgICAg
ICAgIHNlbGYuc2VydmVyX2FkZHJlc3MgPSAoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2Vy
dmVyX25hbWUsIHNvY2tldF8uZ2V0c29ja25hbWUoKVsxXSkKKyAgICAgICAgICAgICAgICBzZWxm
LnNlcnZlcl9wb3J0ID0gc2VsZi5zZXJ2ZXJfYWRkcmVzc1sxXQorICAgICAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdQb3J0ICVyIGlzIGFzc2lnbmVkJywgc2VsZi5zZXJ2ZXJfcG9ydCkK
IAogICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBmYWlsZWRfc29ja2V0czoKICAgICAgICAgICAg
IHNlbGYuX3NvY2tldHMucmVtb3ZlKHNvY2tldGluZm8pCkBAIC0zODYsNiArNDU5LDEwIEBAIGNs
YXNzIFdlYlNvY2tldFNlcnZlcihTb2NrZXRTZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQ
U2VydmVyLkhUVFBTZXJ2ZXIpOgogICAgICAgICBmb3Igc29ja2V0aW5mbyBpbiBmYWlsZWRfc29j
a2V0czoKICAgICAgICAgICAgIHNlbGYuX3NvY2tldHMucmVtb3ZlKHNvY2tldGluZm8pCiAKKyAg
ICAgICAgaWYgbGVuKHNlbGYuX3NvY2tldHMpID09IDA6CisgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuY3JpdGljYWwoCisgICAgICAgICAgICAgICAgJ05vIHNvY2tldHMgYWN0aXZhdGVkLiBVc2Ug
aW5mbyBsb2cgbGV2ZWwgdG8gc2VlIHRoZSByZWFzb24uJykKKwogICAgIGRlZiBzZXJ2ZXJfY2xv
c2Uoc2VsZik6CiAgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIuc2Vy
dmVyX2Nsb3NlIHRvIGVuYWJsZSBtdWx0aXBsZQogICAgICAgICBzb2NrZXRzIGNsb3NlLgpAQCAt
NTEzLDYgKzU5MCwxNyBAQCBjbGFzcyBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2Vy
dmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgICMgYXR0cmlidXRlcykuCiAgICAg
ICAgIGlmIG5vdCBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1
ZXN0KHNlbGYpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy51c2VfYmFzaWNfYXV0aDoKKyAgICAgICAgICAgIGF1dGggPSBzZWxmLmhlYWRlcnMu
Z2V0aGVhZGVyKCdBdXRob3JpemF0aW9uJykKKyAgICAgICAgICAgIGlmIGF1dGggIT0gc2VsZi5f
b3B0aW9ucy5iYXNpY19hdXRoX2NyZWRlbnRpYWw6CisgICAgICAgICAgICAgICAgc2VsZi5zZW5k
X3Jlc3BvbnNlKDQwMSkKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdXV1ctQXV0
aGVudGljYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCYXNpYyByZWFs
bT0iUHl3ZWJzb2NrZXQiJykKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkKKyAg
ICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVxdWVzdCBiYXNpYyBhdXRoZW50aWNh
dGlvbicpCisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKwogICAgICAgICBob3N0LCBwb3J0
LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKHNlbGYucGF0aCkKICAgICAg
ICAgaWYgcmVzb3VyY2UgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdJ
bnZhbGlkIFVSSTogJXInLCBzZWxmLnBhdGgpCkBAIC02NDgsMzIgKzczNiw2IEBAIGRlZiBfY29u
ZmlndXJlX2xvZ2dpbmcob3B0aW9ucyk6CiAgICAgICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUp
CiAKIAotZGVmIF9hbGlhc19oYW5kbGVycyhkaXNwYXRjaGVyLCB3ZWJzb2NrX2hhbmRsZXJzX21h
cF9maWxlKToKLSAgICAiIiJTZXQgYWxpYXNlcyBzcGVjaWZpZWQgaW4gd2Vic29ja19oYW5kbGVy
X21hcF9maWxlIGluIGRpc3BhdGNoZXIuCi0KLSAgICBBcmdzOgotICAgICAgICBkaXNwYXRjaGVy
OiBkaXNwYXRjaC5EaXNwYXRjaGVyIGluc3RhbmNlCi0gICAgICAgIHdlYnNvY2tfaGFuZGxlcl9t
YXBfZmlsZTogYWxpYXMgbWFwIGZpbGUKLSAgICAiIiIKLQotICAgIGZwID0gb3Blbih3ZWJzb2Nr
X2hhbmRsZXJzX21hcF9maWxlKQotICAgIHRyeToKLSAgICAgICAgZm9yIGxpbmUgaW4gZnA6Ci0g
ICAgICAgICAgICBpZiBsaW5lWzBdID09ICcjJyBvciBsaW5lLmlzc3BhY2UoKToKLSAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCcoXFMrKVxzKyhcUysp
JywgbGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcu
d2FybmluZygnV3JvbmcgZm9ybWF0IGluIG1hcCBmaWxlOicgKyBsaW5lKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hl
ci5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygKLSAgICAgICAgICAgICAgICAgICAgbS5ncm91cCgx
KSwgbS5ncm91cCgyKSkKLSAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2Vw
dGlvbiwgZToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKHN0cihlKSkKLSAgICBmaW5h
bGx5OgotICAgICAgICBmcC5jbG9zZSgpCi0KLQogZGVmIF9idWlsZF9vcHRpb25fcGFyc2VyKCk6
CiAgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKIApAQCAtNzAwLDcgKzc2Miw5
IEBAIGRlZiBfYnVpbGRfb3B0aW9uX3BhcnNlcigpOgogICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
dycsICctLXdlYnNvY2staGFuZGxlcnMnLCAnLS13ZWJzb2NrX2hhbmRsZXJzJywKICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSd3ZWJzb2NrX2hhbmRsZXJzJywKICAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PScuJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdXZWJTb2NrZXQg
aGFuZGxlcnMgcm9vdCBkaXJlY3RvcnkuJykKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgn
VGhlIHJvb3QgZGlyZWN0b3J5IG9mIFdlYlNvY2tldCBoYW5kbGVyIGZpbGVzLiAnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0lmIHRoZSBwYXRoIGlzIHJlbGF0aXZlLCAtLWRvY3VtZW50
LXJvb3QgaXMgdXNlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzIHRoZSBiYXNl
LicpKQogICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsICctLXdlYnNvY2staGFuZGxlcnMtbWFw
LWZpbGUnLAogICAgICAgICAgICAgICAgICAgICAgICctLXdlYnNvY2tfaGFuZGxlcnNfbWFwX2Zp
bGUnLAogICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dlYnNvY2tfaGFuZGxlcnNfbWFwX2Zp
bGUnLApAQCAtNzEwLDE1ICs3NzQsMjAgQEAgZGVmIF9idWlsZF9vcHRpb25fcGFyc2VyKCk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgsIHNlcGFy
YXRlZCBieSBzcGFjZXMuJykpCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1zJywgJy0tc2Nhbi1k
aXInLCAnLS1zY2FuX2RpcicsIGRlc3Q9J3NjYW5fZGlyJywKICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1dlYlNvY2tldCBo
YW5kbGVycyBzY2FuIGRpcmVjdG9yeS4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdN
dXN0IGJlIGEgZGlyZWN0b3J5IHVuZGVyIHdlYnNvY2tfaGFuZGxlcnMuJykpCisgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0oJ011c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgLS13ZWJzb2NrLWhh
bmRsZXJzLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ09ubHkgaGFuZGxlcnMgdW5k
ZXIgdGhpcyBkaXJlY3RvcnkgYXJlIHNjYW5uZWQgJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdhbmQgcmVnaXN0ZXJlZCB0byB0aGUgc2VydmVyLiAnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1VzZWZ1bCBmb3Igc2F2aW5nIHNjYW4gdGltZSB3aGVuIHRoZSBoYW5kbGVyICcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdCBkaXJlY3RvcnkgY29udGFpbnMgbG90
cyBvZiBmaWxlcyB0aGF0IGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCBo
YW5kbGVyIGZpbGUgb3IgYXJlIGhhbmRsZXIgZmlsZXMgYnV0IHlvdSAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2RvblwndCB3YW50IHRoZW0gdG8gYmUgcmVnaXN0ZXJlZC4gJykpCiAg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYWxsb3ctaGFuZGxlcnMtb3V0c2lkZS1yb290LWRpcics
CiAgICAgICAgICAgICAgICAgICAgICAgJy0tYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2Rp
cicsCiAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nYWxsb3dfaGFuZGxlcnNfb3V0c2lkZV9y
b290X2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKICAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdTY2FucyBXZWJTb2NrZXQgaGFuZGxlcnMgZXZlbiBpZiB0aGVpciBjYW5vbmljYWwg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRoIGlzIG5vdCB1bmRlciB3ZWJzb2Nr
X2hhbmRsZXJzLicpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRoIGlzIG5vdCB1
bmRlciAtLXdlYnNvY2staGFuZGxlcnMuJykpCiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1kJywg
Jy0tZG9jdW1lbnQtcm9vdCcsICctLWRvY3VtZW50X3Jvb3QnLAogICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J2RvY3VtZW50X3Jvb3QnLCBkZWZhdWx0PScuJywKICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSdEb2N1bWVudCByb290IGRpcmVjdG9yeS4nKQpAQCAtNzM1LDkgKzgwNCwyMCBA
QCBkZWYgX2J1aWxkX29wdGlvbl9wYXJzZXIoKToKICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PScnLCBoZWxwPSdUTFMgcHJpdmF0ZSBrZXkgZmlsZS4nKQogICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctYycsICctLWNlcnRpZmljYXRlJywgZGVzdD0nY2VydGlmaWNhdGUnLAogICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9JycsIGhlbHA9J1RMUyBjZXJ0aWZpY2F0ZSBmaWxlLicpCi0g
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tY2EtY2VydGlmaWNhdGUnLCBkZXN0PSdjYV9jZXJ0aWZp
Y2F0ZScsIGRlZmF1bHQ9JycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1RMUyBDQSBj
ZXJ0aWZpY2F0ZSBmaWxlIGZvciBjbGllbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdhdXRoZW50aWNhdGlvbi4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xpZW50
LWF1dGgnLCBkZXN0PSd0bHNfY2xpZW50X2F1dGgnLAorICAgICAgICAgICAgICAgICAgICAgIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nUmVxdWlyZXMgVExTIGNsaWVudCBhdXRoIG9uIGV2ZXJ5IGNvbm5lY3Rpb24uJykKKyAg
ICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xpZW50LWNhJywgZGVzdD0ndGxzX2NsaWVudF9j
YScsIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1NwZWNpZmllcyBh
IHBlbSBmaWxlIHdoaWNoIGNvbnRhaW5zIGEgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnY29uY2F0ZW5hdGVkIENBIGNlcnRpZmljYXRlcyB3aGljaCBhcmUgdXNlZCB0byAn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbGlkYXRlIGNlcnRpZmljYXRlcyBwYXNz
ZWQgZnJvbSBjbGllbnRzJykpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYmFzaWMtYXV0aCcs
IGRlc3Q9J3VzZV9iYXNpY19hdXRoJywKKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0
b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1Jl
cXVpcmVzIEJhc2ljIGF1dGhlbnRpY2F0aW9uLicpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0t
YmFzaWMtYXV0aC1jcmVkZW50aWFsJywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdiYXNp
Y19hdXRoX2NyZWRlbnRpYWwnLCBkZWZhdWx0PSd0ZXN0OnRlc3QnLAorICAgICAgICAgICAgICAg
ICAgICAgIGhlbHA9J1NwZWNpZmllcyB0aGUgY3JlZGVudGlhbCBvZiBiYXNpYyBhdXRoZW50aWNh
dGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgJ2J5IHVzZXJuYW1lOnBhc3N3b3JkIHBhaXIg
KGUuZy4gdGVzdDp0ZXN0KS4nKQogICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbCcsICctLWxvZy1m
aWxlJywgJy0tbG9nX2ZpbGUnLCBkZXN0PSdsb2dfZmlsZScsCiAgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD0nJywgaGVscD0nTG9nIGZpbGUuJykKICAgICAjIEN1c3RvbSBsb2cgbGV2ZWw6
CkBAIC03NzEsOSArODUxLDkgQEAgZGVmIF9idWlsZF9vcHRpb25fcGFyc2VyKCk6CiAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nTG9nIGJhY2t1cCBjb3VudCcpCiAgICAgcGFyc2VyLmFkZF9v
cHRpb24oJy0tYWxsb3ctZHJhZnQ3NScsIGRlc3Q9J2FsbG93X2RyYWZ0NzUnLAogICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nQWxsb3cgZHJhZnQgNzUgaGFuZHNoYWtlJykKKyAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdPYnNvbGV0ZSBvcHRpb24uIElnbm9yZWQuJykKICAgICBwYXJz
ZXIuYWRkX29wdGlvbignLS1zdHJpY3QnLCBkZXN0PSdzdHJpY3QnLCBhY3Rpb249J3N0b3JlX3Ry
dWUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J1N0cmljdGx5
IGNoZWNrIGhhbmRzaGFrZSByZXF1ZXN0JykKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
PUZhbHNlLCBoZWxwPSdPYnNvbGV0ZSBvcHRpb24uIElnbm9yZWQuJykKICAgICBwYXJzZXIuYWRk
X29wdGlvbignLXEnLCAnLS1xdWV1ZScsIGRlc3Q9J3JlcXVlc3RfcXVldWVfc2l6ZScsIHR5cGU9
J2ludCcsCiAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fREVGQVVMVF9SRVFVRVNUX1FV
RVVFX1NJWkUsCiAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmVxdWVzdCBxdWV1ZSBzaXpl
JykKQEAgLTg0MSw2ICs5MjEsMTIgQEAgZGVmIF9wYXJzZV9hcmdzX2FuZF9jb25maWcoYXJncyk6
CiAKIAogZGVmIF9tYWluKGFyZ3M9Tm9uZSk6CisgICAgIiIiWW91IGNhbiBjYWxsIHRoaXMgZnVu
Y3Rpb24gZnJvbSB5b3VyIG93biBwcm9ncmFtLCBidXQgcGxlYXNlIG5vdGUgdGhhdAorICAgIHRo
aXMgZnVuY3Rpb24gaGFzIHNvbWUgc2lkZS1lZmZlY3RzIHRoYXQgbWlnaHQgYWZmZWN0IHlvdXIg
cHJvZ3JhbS4gRm9yCisgICAgZXhhbXBsZSwgdXRpbC53cmFwX3BvcGVuM19mb3Jfd2luIHVzZSBp
biB0aGlzIG1ldGhvZCByZXBsYWNlcyBpbXBsZW1lbnRhdGlvbgorICAgIG9mIG9zLnBvcGVuMy4K
KyAgICAiIiIKKwogICAgIG9wdGlvbnMsIGFyZ3MgPSBfcGFyc2VfYXJnc19hbmRfY29uZmlnKGFy
Z3M9YXJncykKIAogICAgIG9zLmNoZGlyKG9wdGlvbnMuZG9jdW1lbnRfcm9vdCkKQEAgLTg3Nyw3
ICs5NjMsNyBAQCBkZWYgX21haW4oYXJncz1Ob25lKToKICAgICAgICAgICAgICAgICAgICAgJ1Rv
IHVzZSBUTFMsIHNwZWNpZnkgcHJpdmF0ZV9rZXkgYW5kIGNlcnRpZmljYXRlLicpCiAgICAgICAg
ICAgICBzeXMuZXhpdCgxKQogCi0gICAgaWYgb3B0aW9ucy5jYV9jZXJ0aWZpY2F0ZToKKyAgICBp
ZiBvcHRpb25zLnRsc19jbGllbnRfYXV0aDoKICAgICAgICAgaWYgbm90IG9wdGlvbnMudXNlX3Rs
czoKICAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1RMUyBtdXN0IGJlIGVuYWJsZWQgZm9y
IGNsaWVudCBhdXRoZW50aWNhdGlvbi4nKQogICAgICAgICAgICAgc3lzLmV4aXQoMSkKQEAgLTg4
NywyNiArOTczLDE2IEBAIGRlZiBfbWFpbihhcmdzPU5vbmUpOgogICAgIGlmIG5vdCBvcHRpb25z
LnNjYW5fZGlyOgogICAgICAgICBvcHRpb25zLnNjYW5fZGlyID0gb3B0aW9ucy53ZWJzb2NrX2hh
bmRsZXJzCiAKKyAgICBpZiBvcHRpb25zLnVzZV9iYXNpY19hdXRoOgorICAgICAgICBvcHRpb25z
LmJhc2ljX2F1dGhfY3JlZGVudGlhbCA9ICdCYXNpYyAnICsgYmFzZTY0LmI2NGVuY29kZSgKKyAg
ICAgICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVkZW50aWFsKQorCiAgICAgdHJ5OgogICAg
ICAgICBpZiBvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYyA+IDA6CiAgICAg
ICAgICAgICAjIFJ1biBhIHRocmVhZCBtb25pdG9yIHRvIHNob3cgdGhlIHN0YXR1cyBvZiBzZXJ2
ZXIgdGhyZWFkcyBmb3IKICAgICAgICAgICAgICMgZGVidWdnaW5nLgogICAgICAgICAgICAgVGhy
ZWFkTW9uaXRvcihvcHRpb25zLnRocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYykuc3RhcnQo
KQogCi0gICAgICAgICMgU2hhcmUgYSBEaXNwYXRjaGVyIGFtb25nIHJlcXVlc3QgaGFuZGxlcnMg
dG8gc2F2ZSB0aW1lIGZvcgotICAgICAgICAjIGluc3RhbnRpYXRpb24uICBEaXNwYXRjaGVyIGNh
biBiZSBzaGFyZWQgYmVjYXVzZSBpdCBpcyB0aHJlYWQtc2FmZS4KLSAgICAgICAgb3B0aW9ucy5k
aXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcigKLSAgICAgICAgICAgIG9wdGlvbnMud2Vi
c29ja19oYW5kbGVycywKLSAgICAgICAgICAgIG9wdGlvbnMuc2Nhbl9kaXIsCi0gICAgICAgICAg
ICBvcHRpb25zLmFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCi0gICAgICAgIGlmIG9w
dGlvbnMud2Vic29ja19oYW5kbGVyc19tYXBfZmlsZToKLSAgICAgICAgICAgIF9hbGlhc19oYW5k
bGVycyhvcHRpb25zLmRpc3BhdGNoZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW9ucy53ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKQotICAgICAgICB3YXJuaW5ncyA9IG9wdGlv
bnMuZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQotICAgICAgICBpZiB3YXJuaW5nczoKLSAg
ICAgICAgICAgIGZvciB3YXJuaW5nIGluIHdhcm5pbmdzOgotICAgICAgICAgICAgICAgIGxvZ2dp
bmcud2FybmluZygnbW9kX3B5d2Vic29ja2V0OiAlcycgJSB3YXJuaW5nKQotCiAgICAgICAgIHNl
cnZlciA9IFdlYlNvY2tldFNlcnZlcihvcHRpb25zKQogICAgICAgICBzZXJ2ZXIuc2VydmVfZm9y
ZXZlcigpCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkKaW5k
ZXggZDA1MWVlZTIwOWVlMmQwNmMxMzRiZjM4NmNjOWYzYmM4MzE3MjBhNi4uZWRjNTMzMjc5NzQ5
N2I1ODBlM2I3ZWZmMmY4OGQxODhkNzA0MWYxMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkKQEAg
LTUxLDYgKzUxLDcgQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBj
cmVhdGVfcGluZ19mcmFtZQogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9y
dCBjcmVhdGVfcG9uZ19mcmFtZQogZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGlt
cG9ydCBjcmVhdGVfYmluYXJ5X2ZyYW1lCiBmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5
YmkgaW1wb3J0IGNyZWF0ZV90ZXh0X2ZyYW1lCitmcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2h5YmkgaW1wb3J0IGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9ib2R5CiAKIAogIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
bW9kX3B5d2Vic29ja2V0L3V0aWwucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkKaW5kZXggNjE0NmUwNTJmYmM3NzdiYzMwNmFmMTZl
NjY5NzM0Njg0MWVjY2M0Yi4uNTY1OTFkMjMzYzViNGZlYTAxMGI3MzNiMDkwYTk4ZDE0MGI4ZDY1
OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L21vZF9weXdl
YnNvY2tldC91dGlsLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9t
b2RfcHl3ZWJzb2NrZXQvdXRpbC5weQpAQCAtMjMyLDYgKzIzMiwxMiBAQCBjbGFzcyBfRGVmbGF0
ZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAog
ICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC13
aW5kb3dfYml0cykKIAorICAgIGRlZiBjb21wcmVzcyhzZWxmLCBieXRlcyk6CisgICAgICAgIGNv
bXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21wcmVzcyhieXRlcykKKyAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyBpbnB1dCAlcicsIGJ5dGVzKQorICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNzIHJlc3VsdCAlcicsIGNvbXByZXNzZWRfYnl0ZXMp
CisgICAgICAgIHJldHVybiBjb21wcmVzc2VkX2J5dGVzCisKICAgICBkZWYgY29tcHJlc3NfYW5k
X2ZsdXNoKHNlbGYsIGJ5dGVzKToKICAgICAgICAgY29tcHJlc3NlZF9ieXRlcyA9IHNlbGYuX2Nv
bXByZXNzLmNvbXByZXNzKGJ5dGVzKQogICAgICAgICBjb21wcmVzc2VkX2J5dGVzICs9IHNlbGYu
X2NvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQpAQCAtMzE4LDE0ICszMjQsMTUgQEAg
Y2xhc3MgX1JGQzE5NzlEZWZsYXRlcihvYmplY3QpOgogICAgICAgICBzZWxmLl93aW5kb3dfYml0
cyA9IHdpbmRvd19iaXRzCiAgICAgICAgIHNlbGYuX25vX2NvbnRleHRfdGFrZW92ZXIgPSBub19j
b250ZXh0X3Rha2VvdmVyCiAKLSAgICBkZWYgZmlsdGVyKHNlbGYsIGJ5dGVzKToKLSAgICAgICAg
aWYgc2VsZi5fZGVmbGF0ZXIgaXMgTm9uZSBvciBzZWxmLl9ub19jb250ZXh0X3Rha2VvdmVyOgor
ICAgIGRlZiBmaWx0ZXIoc2VsZiwgYnl0ZXMsIGZsdXNoPVRydWUpOgorICAgICAgICBpZiBzZWxm
Ll9kZWZsYXRlciBpcyBOb25lIG9yIChzZWxmLl9ub19jb250ZXh0X3Rha2VvdmVyIGFuZCBmbHVz
aCk6CiAgICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IF9EZWZsYXRlcihzZWxmLl93aW5kb3df
Yml0cykKIAotICAgICAgICAjIFN0cmlwIGxhc3QgNCBvY3RldHMgd2hpY2ggaXMgTEVOIGFuZCBO
TEVOIGZpZWxkIG9mIGEgbm9uLWNvbXByZXNzZWQKLSAgICAgICAgIyBibG9jayBhZGRlZCBmb3Ig
Wl9TWU5DX0ZMVVNILgotICAgICAgICByZXR1cm4gc2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5k
X2ZsdXNoKGJ5dGVzKVs6LTRdCi0KKyAgICAgICAgaWYgZmx1c2g6CisgICAgICAgICAgICAjIFN0
cmlwIGxhc3QgNCBvY3RldHMgd2hpY2ggaXMgTEVOIGFuZCBOTEVOIGZpZWxkIG9mIGEKKyAgICAg
ICAgICAgICMgbm9uLWNvbXByZXNzZWQgYmxvY2sgYWRkZWQgZm9yIFpfU1lOQ19GTFVTSC4KKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9kZWZsYXRlci5jb21wcmVzc19hbmRfZmx1c2goYnl0ZXMp
WzotNF0KKyAgICAgICAgcmV0dXJuIHNlbGYuX2RlZmxhdGVyLmNvbXByZXNzKGJ5dGVzKQogCiBj
bGFzcyBfUkZDMTk3OUluZmxhdGVyKG9iamVjdCk6CiAgICAgIiIiQSBkZWNvbXByZXNzb3IgY2xh
c3MgZm9yIGJ5dGUgc2VxdWVuY2UgY29tcHJlc3NlZCBhbmQgZmx1c2hlZCBmb2xsb3dpbmcK
</data>

          </attachment>
      

    </bug>

</bugzilla>