Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2020-07-12 17:18:51

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,429

rah_post_versions plugin and Textpattern 4.8.x

I was absent from the forum for a very long time, life was not easy and there was not enough time for everything. But the development of Textpattern continued and there are many important new features. I want to thank everyone who contributed to it for the great work!

I started to update some installations, which went well so far without any problems.

Only for one plugin I am missing a current version, rah_post_versions. I’m using version 0.9.1 (2016-06-04 changed by jpdupont for Textpattern 4.6 campatibility), but since Textpattern 4.8 it doesn’t register any changes and doesn’t send emails anymore.

Does anyone know anything about this?

Offline

#2 2020-07-12 21:20:57

bici
Member
From: vancouver
Registered: 2004-02-24
Posts: 1,702
Website

Re: rah_post_versions plugin and Textpattern 4.8.x

mucho tiempo sin verte…. welcome back!

Since you have been away we have a new plugin source to check > plugins.textpattern.com

i don’t see an updated version of the plugin you are looking for herein


…. texted postive

Offline

#3 2020-07-12 21:46:14

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,429

Re: rah_post_versions plugin and Textpattern 4.8.x

Sí, bastante tiempo, gracias. ;-)

In GitHub it’s been saying the same thing for many months, rah_post_versions upcoming, and the emailing feature will be removed. This function was for me the most important part of the plugin.

Offline

#4 2020-07-12 22:14:24

etc
Developer
Registered: 2010-11-11
Posts: 3,868
Website

Re: rah_post_versions plugin and Textpattern 4.8.x

Have you also switched to php 7? Then it will not work, mysql_insert_id() function (among others) has been deprecated.

Offline

#5 2020-07-12 22:22:18

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,429

Re: rah_post_versions plugin and Textpattern 4.8.x

Yes, it’s on PHP 7.4, so that’s the reason. Thanks for the information.

Offline

#6 2020-07-12 22:43:52

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,429

Re: rah_post_versions plugin and Textpattern 4.8.x

This version rah_post_versions_v1.0beta by jakob works, but unfortunately without emailing feature.

Last edited by GugUser (2020-07-13 00:08:46)

Offline

#7 2020-07-12 23:59:43

towndock
Member
From: Oriental, NC USA
Registered: 2007-04-06
Posts: 296
Website

Re: rah_post_versions plugin and Textpattern 4.8.x

Was happy to see rah_post_versions had an update compatible with 4.8. Put it on a site with 4.8.0 (upgrading from plugin version 0.80).

The front end of the site started serving blank pages. Turned new plugin off. Site back as normal. I didn’t do detailed troubleshooting, as this is a high traffic revenue site (and I didn’t want more outages).

Will try it on a less critical site in the future. While I’ll proceed with caution, I am pleased this plugin has a likely future.

Offline

#8 2020-07-13 00:08:22

GugUser
Member
From: Quito (Ecuador)
Registered: 2007-12-16
Posts: 1,429

Re: rah_post_versions plugin and Textpattern 4.8.x

I was wrong, rah_post_versions_v1.0beta doesn’t work on Textpattern 4.8. Later I saw in the front end:

Fatal error: Uncaught Error: Call to undefined function register_tab()

Offline

#9 2020-07-13 06:37:47

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 9,724
Website

Re: rah_post_versions plugin and Textpattern 4.8.x

Fatal error: Uncaught Error: Call to undefined function register_tab()

That’s a one-line fix to include lib/txplib_admin.php before that function is used. Or (better) alter the plugin structure slightly so tab registration only occurs on the admin side.


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#10 2020-07-13 08:35:14

etc
Developer
Registered: 2010-11-11
Posts: 3,868
Website

Re: rah_post_versions plugin and Textpattern 4.8.x

Try this, who knows..

# Name: rah_post_versions v1.0beta 
# Type: Admin/AJAX plugin
# Revision control
# Author: Jukka Svahn
# URL: http://rahforum.biz
# Recommended load order: 5

# .....................................................................
# This is a plugin for Textpattern CMS - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# .....................................................................

YToxMTp7czo0OiJuYW1lIjtzOjE3OiJyYWhfcG9zdF92ZXJzaW9ucyI7czo2OiJhdXRob3Ii
O3M6MTE6Ikp1a2thIFN2YWhuIjtzOjEwOiJhdXRob3JfdXJpIjtzOjE5OiJodHRwOi8vcmFo
Zm9ydW0uYml6IjtzOjc6InZlcnNpb24iO3M6NzoiMS4wYmV0YSI7czoxMToiZGVzY3JpcHRp
b24iO3M6MTY6IlJldmlzaW9uIGNvbnRyb2wiO3M6NDoiY29kZSI7czozMjg0ODoiLyoqDQog
KiBSYWhfcG9zdF92ZXJzaW9ucyBwbHVnaW4gZm9yIFRleHRwYXR0ZXJuIENNUy4NCiAqDQog
KiBAYXV0aG9yICBKdWtrYSBTdmFobg0KICogQGRhdGUgICAgMjAxMC0NCiAqIEBsaWNlbnNl
IEdOVSBHUEx2Mg0KICogQGxpbmsgICAgaHR0cDovL3JhaGZvcnVtLmJpei9wbHVnaW5zL3Jh
aF9wb3N0X3ZlcnNpb25zDQogKg0KICogQ29weXJpZ2h0IChDKSAyMDEyIEp1a2thIFN2YWhu
IGh0dHA6Ly9yYWhmb3J1bS5iaXoNCiAqIExpY2Vuc2VkIHVuZGVyIEdOVSBHZW5yYWwgUHVi
bGljIExpY2Vuc2UgdmVyc2lvbiAyDQogKiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv
Z3BsLTIuMC5odG1sDQogKi8NCg0KCXJhaF9wb3N0X3ZlcnNpb25zOjpnZXQoKTsNCg0KLyoq
DQogKiBUaGUgcGx1Z2luIGNsYXNzLg0KICovDQoNCmNsYXNzIHJhaF9wb3N0X3ZlcnNpb25z
DQp7DQoJLyoqDQoJICogVmVyc2lvbiBudW1iZXIuDQoJICoNCgkgKiBAdmFyIHN0cmluZw0K
CSAqLw0KDQoJc3RhdGljIHB1YmxpYyAkdmVyc2lvbiA9ICcxLjAnOw0KDQoJLyoqDQoJICog
U3RvcmVzIGluc3RhbmNlcy4NCgkgKg0KCSAqIEB2YXIgcmFoX3Bvc3RfdmVyc2lvbnMNCgkg
Ki8NCg0KCXN0YXRpYyBwdWJsaWMgJGluc3RhbmNlID0gTlVMTDsNCg0KCS8qKg0KCSAqIExp
c3Qgb2YgZXZlbnQgbGFiZWxzLg0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLw0KDQoJcHJv
dGVjdGVkICRldmVudHMgPSBhcnJheSgpOw0KDQoJLyoqDQoJICogUGF0aCB0byByZXBvc2l0
b3J5Lg0KCSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8NCg0KCXByb3RlY3RlZCAkc3RhdGlj
X2RpciA9IGZhbHNlOw0KDQoJLyoqDQoJICogU3RhdGljIGhlYWRpbmcuDQoJICoNCgkgKiBA
dmFyIHN0cmluZw0KCSAqLw0KDQoJcHJvdGVjdGVkICRzdGF0aWNfaGVhZGVyID0gJyc7DQoN
CgkvKioNCgkgKiBXcml0ZSBzdGF0dXMuDQoJICoNCgkgKiBAdmFyIGJvb2wNCgkgKi8NCg0K
CXByb3RlY3RlZCAkbm93cml0ZSA9IGZhbHNlOw0KDQoJLyoqDQoJICogQ29tcHJlc3Mgb3Ig
bm90Lg0KCSAqDQoJICogQHZhciBib29sDQoJICovDQoNCglwcm90ZWN0ZWQgJGNvbXByZXNz
ID0gZmFsc2U7DQoNCgkvKioNCgkgKiBJbnN0YWxsZXIuDQoJICoNCgkgKiBAcGFyYW0gc3Ry
aW5nICRldmVudCBQbHVnaW4tbGlmZWN5Y2xlIGV2ZW50DQoJICogQHBhcmFtIHN0cmluZyAk
c3RlcCAgUGx1Z2luLWxpZmVjeWNsZSBzdGVwDQoJICovDQoNCglzdGF0aWMgcHVibGljIGZ1
bmN0aW9uIGluc3RhbGwoJGV2ZW50ID0gJycsICRzdGVwID0gJycpDQoJew0KCQlnbG9iYWwg
JHByZWZzOw0KDQoJCWlmICgkc3RlcCA9PSAnZGVsZXRlZCcpDQoJCXsNCgkJCXNhZmVfZGVs
ZXRlKA0KCQkJCSd0eHBfcHJlZnMnLA0KCQkJCSJuYW1lIGxpa2UgJ3JhaFxfcG9zdFxfdmVy
c2lvbnNcXyUnIg0KCQkJKTsNCg0KCQkJQHNhZmVfcXVlcnkoDQoJCQkJJ0RST1AgVEFCTEUg
SUYgRVhJU1RTICcuDQoJCQkJc2FmZV9wZngoJ3JhaF9wb3N0X3ZlcnNpb25zJykuJywgJy4N
CgkJCQlzYWZlX3BmeCgncmFoX3Bvc3RfdmVyc2lvbnNfc2V0cycpDQoJCQkpOw0KDQoJCQly
ZXR1cm47DQoJCX0NCg0KCQlpZiAoKHN0cmluZykgZ2V0X3ByZWYoJ3JhaF9wb3N0X3ZlcnNp
b25zX3ZlcnNpb24nKSA9PT0gc2VsZjo6JHZlcnNpb24pDQoJCXsNCgkJCXJldHVybjsNCgkJ
fQ0KDQoJCXNhZmVfcXVlcnkoDQoJCQknQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgJy5z
YWZlX3BmeCgncmFoX3Bvc3RfdmVyc2lvbnNfc2V0cycpLiIgKA0KCQkJCWBpZGAgSU5UKDEx
KSBOT1QgTlVMTCBhdXRvX2luY3JlbWVudCwNCgkJCQlgZXZlbnRgIFZBUkNIQVIoMjU1KSBO
T1QgTlVMTCwNCgkJCQlgc3RlcGAgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLA0KCQkJCWBncmlk
YCBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsDQoJCQkJYHRpdGxlYCBWQVJDSEFSKDI1NSkgTk9U
IE5VTEwsDQoJCQkJYG1vZGlmaWVkYCBEQVRFVElNRSBOT1QgTlVMTCwNCgkJCQlgY2hhbmdl
c2AgSU5UKDEyKSBOT1QgTlVMTCBkZWZhdWx0IDAsDQoJCQkJUFJJTUFSWSBLRVkoYGlkYCks
DQoJCQkJS0VZIGBldmVudF9ncmlkX2lkeGAgKGBldmVudGAoMjQpLGBncmlkYCgzMikpDQoJ
CQkpIFBBQ0tfS0VZUz0xIEFVVE9fSU5DUkVNRU5UPTEgQ0hBUlNFVD11dGY4Ig0KCQkpOw0K
DQoJCXNhZmVfcXVlcnkoDQoJCQknQ1JFQVRFIFRBQkxFIElGIE5PVCBFWElTVFMgJy5zYWZl
X3BmeCgncmFoX3Bvc3RfdmVyc2lvbnMnKS4iICgNCgkJCQlgaWRgIElOVCgxMSkgTk9UIE5V
TEwgYXV0b19pbmNyZW1lbnQsDQoJCQkJYGV2ZW50YCBWQVJDSEFSKDI1NSkgTk9UIE5VTEws
DQoJCQkJYHN0ZXBgIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwNCgkJCQlgdGl0bGVgIFZBUkNI
QVIoMjU1KSBOT1QgTlVMTCwNCgkJCQlgZ3JpZGAgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLA0K
CQkJCWBzZXRpZGAgSU5UKDExKSBOT1QgTlVMTCwNCgkJCQlgYXV0aG9yYCBWQVJDSEFSKDY0
KSBOT1QgTlVMTCwNCgkJCQlgcG9zdGVkYCBEQVRFVElNRSBOT1QgTlVMTCwNCgkJCQlgZGF0
YWAgTE9OR1RFWFQgTk9UIE5VTEwsDQoJCQkJUFJJTUFSWSBLRVkoYGlkYCksDQoJCQkJS0VZ
IGBzZXRpZF9pZHhgIChgc2V0aWRgKQ0KCQkJKSBQQUNLX0tFWVM9MSBBVVRPX0lOQ1JFTUVO
VD0xIENIQVJTRVQ9dXRmOCINCgkJKTsNCg0KCQkkcG9zaXRpb24gPSAyNTA7DQoNCgkJZm9y
ZWFjaCAoDQoJCQlhcnJheSgNCgkJCQknZ3ppcCcgICAgICAgICAgICA9PiBhcnJheSgneWVz
bm9yYWRpbycsIDApLA0KCQkJCSdyZXBvc2l0b3J5X3BhdGgnID0+IGFycmF5KCd0ZXh0X2lu
cHV0JywgJycpLA0KCQkJKSBhcyAkbmFtZSA9PiAkdmFsDQoJCSkNCgkJew0KCQkJJG4gPSAn
cmFoX3Bvc3RfdmVyc2lvbnNfJy4kbmFtZTsNCg0KCQkJaWYgKCFpc3NldCgkcHJlZnNbJG5d
KSkNCgkJCXsNCgkJCQlzZXRfcHJlZigkbiwgJHZhbFsxXSwgJ3JhaF9wb3N0dmVyJywgUFJF
Rl9QTFVHSU4sICR2YWxbMF0sICRwb3NpdGlvbik7DQoJCQl9DQoNCgkJCSRwb3NpdGlvbisr
Ow0KCQl9DQoNCgkJc2V0X3ByZWYoJ3JhaF9wb3N0X3ZlcnNpb25zX3ZlcnNpb24nLCBzZWxm
OjokdmVyc2lvbiwgJ3JhaF9wb3N0dmVyJywgUFJFRl9ISURERU4pOw0KCX0NCg0KCS8qKg0K
CSAqIFJlZGlyZWN0cyB0byB0aGUgcGx1Z2luJ3MgYWRtaW4tc2lkZSBwYW5lbC4NCgkgKi8N
Cg0KCXB1YmxpYyBmdW5jdGlvbiBwcmVmcygpDQoJew0KCQloZWFkZXIoJ0xvY2F0aW9uOiA/
ZXZlbnQ9cmFoX3Bvc3RfdmVyc2lvbnMnKTsNCg0KCQllY2hvIA0KCQkJJzxwPicubi4NCgkJ
CScJPGEgaHJlZj0iP2V2ZW50PXJhaF9wb3N0X3ZlcnNpb25zIj4nLmdUeHQoJ2NvbnRpbnVl
JykuJzwvYT4nLm4uDQoJCQknPC9wPic7DQoJfQ0KDQoJLyoqDQoJICogQ29uc3RydWN0b3Iu
DQoJICovDQoNCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQ0KCXsNCgkJaWYgKHR4
cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQoJCQlhZGRfcHJpdnMoJ3JhaF9wb3N0X3ZlcnNp
b25zJywgJzEsMicpOw0KCQkJYWRkX3ByaXZzKCdyYWhfcG9zdF92ZXJzaW9uc19kZWxldGVf
aXRlbScsICcxJyk7DQoJCQlhZGRfcHJpdnMoJ3JhaF9wb3N0X3ZlcnNpb25zX2RlbGV0ZV9y
ZXZpc2lvbicsICcxJyk7DQoJCQlhZGRfcHJpdnMoJ3JhaF9wb3N0X3ZlcnNpb25zX2RpZmYn
LCAnMSwyJyk7DQoJCQlhZGRfcHJpdnMoJ3JhaF9wb3N0X3ZlcnNpb25zX3ByZWZlcmVuY2Vz
JywgJzEnKTsNCgkJCWFkZF9wcml2cygncGx1Z2luX3ByZWZzLnJhaF9wb3N0X3ZlcnNpb25z
JywgJzEsMicpOw0KCQkJYWRkX3ByaXZzKCdwcmVmcy5yYWhfcG9zdHZlcicsICcxJyk7DQoN
CgkJCXJlZ2lzdGVyX2NhbGxiYWNrKGFycmF5KF9fQ0xBU1NfXywgJ2luc3RhbGwnKSwgJ3Bs
dWdpbl9saWZlY3ljbGUucmFoX3Bvc3RfdmVyc2lvbnMnKTsNCgkJCXJlZ2lzdGVyX2NhbGxi
YWNrKGFycmF5KCR0aGlzLCAncGFuZXMnKSwgJ3JhaF9wb3N0X3ZlcnNpb25zJyk7DQoJCQly
ZWdpc3Rlcl9jYWxsYmFjayhhcnJheSgkdGhpcywgJ3ByZWZzJyksICdwbHVnaW5fcHJlZnMu
cmFoX3Bvc3RfdmVyc2lvbnMnKTsNCgkJCXJlZ2lzdGVyX3RhYignZXh0ZW5zaW9ucycsJ3Jh
aF9wb3N0X3ZlcnNpb25zJywgZ1R4dCgncmFoX3Bvc3RfdmVyc2lvbnMnKSk7DQoNCgkJCSR0
aGlzLT5pbml0aWFsaXplKCk7DQoJCX0NCgl9DQoNCgkvKioNCgkgKiBJbml0aWFsaXplcy4N
CgkgKi8NCg0KCXB1YmxpYyBmdW5jdGlvbiBpbml0aWFsaXplKCkNCgl7DQoJCWdsb2JhbCAk
cHJlZnM7DQoNCgkJaWYgKCFkZWZpbmVkKCdyYWhfcG9zdF92ZXJzaW9uc19zdGF0aWNfZGly
JykpDQoJCXsNCgkJCWRlZmluZSgncmFoX3Bvc3RfdmVyc2lvbnNfc3RhdGljX2RpcicsIHRy
dWUpOw0KCQl9DQoNCgkJaWYgKCRwcmVmc1sncmFoX3Bvc3RfdmVyc2lvbnNfZ3ppcCddICYm
IGZ1bmN0aW9uX2V4aXN0cygnZ3plbmNvZGUnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2d6aW5m
bGF0ZScpKQ0KCQl7DQoJCQkkdGhpcy0+Y29tcHJlc3MgPSB0cnVlOw0KCQl9DQoNCgkJJHRo
aXMtPmdvX3N0YXRpYygpOw0KCX0NCg0KCS8qKg0KCSAqIEdldHMgYW4gaW5zdGFuY2UuDQoJ
ICoNCgkgKiBAcmV0dXJuIHJhaF9wb3N0X3ZlcnNpb25zDQoJICovDQoNCglzdGF0aWMgcHVi
bGljIGZ1bmN0aW9uIGdldCgpDQoJew0KCQlpZiAoc2VsZjo6JGluc3RhbmNlID09PSBudWxs
KQ0KCQl7DQoJCQlzZWxmOjokaW5zdGFuY2UgPSBuZXcgcmFoX3Bvc3RfdmVyc2lvbnMoKTsN
CgkJfQ0KDQoJCXJldHVybiBzZWxmOjokaW5zdGFuY2U7DQoJfQ0KDQoJLyoqDQoJICogU2hv
d3MgcmVxdWVzdGVkIGFkbWluLXNpZGUgcGFnZS4NCgkgKi8NCg0KCXB1YmxpYyBmdW5jdGlv
biBwYW5lcygpDQoJew0KCQlyZXF1aXJlX3ByaXZzKCdyYWhfcG9zdF92ZXJzaW9ucycpOw0K
DQoJCWdsb2JhbCAkc3RlcDsNCg0KCQkkc3RlcHMgPSBhcnJheSgNCgkJCSdicm93c2VyJyAg
ICA9PiBmYWxzZSwNCgkJCSdjaGFuZ2VzJyAgICA9PiBmYWxzZSwNCgkJCSdkaWZmJyAgICAg
ICA9PiBmYWxzZSwNCgkJCSdtdWx0aV9lZGl0JyA9PiB0cnVlLA0KCQkJJ3JldmVydCcgICAg
ID0+IHRydWUsDQoJCSk7DQoNCgkJaWYgKCEkc3RlcCB8fCAhYm91bmNlcigkc3RlcCwgJHN0
ZXBzKSkNCgkJew0KCQkJJHN0ZXAgPSAnYnJvd3Nlcic7DQoJCX0NCg0KCQkkdGhpcy0+JHN0
ZXAoKTsNCgl9DQoNCgkvKioNCgkgKiBMaXN0cyBhZG1pbi1zaWRlIGV2ZW50IG5hbWVzIGFu
ZCBsYWJlbHMuDQoJICoNCgkgKiBAcmV0dXJuIGFycmF5DQoJICovDQoNCglwcm90ZWN0ZWQg
ZnVuY3Rpb24gcG9wX2V2ZW50cygpDQoJew0KCQlpZiAoJHRoaXMtPmV2ZW50cyB8fCAhZnVu
Y3Rpb25fZXhpc3RzKCdhcmVhcycpIHx8ICFpc19hcnJheShhcmVhcygpKSkNCgkJew0KCQkJ
cmV0dXJuICR0aGlzLT5ldmVudHM7DQoJCX0NCg0KCQlmb3JlYWNoIChhcmVhcygpIGFzICR0
YWJfZ3JvdXApDQoJCXsNCgkJCWZvcmVhY2ggKCR0YWJfZ3JvdXAgYXMgJGxhYmVsID0+ICRl
dmVudCkNCgkJCXsNCgkJCQkkdGhpcy0+ZXZlbnRzWyRldmVudF0gPSAkbGFiZWw7DQoJCQl9
DQoJCX0NCg0KCQlyZXR1cm4gJHRoaXMtPmV2ZW50czsNCgl9DQoNCgkvKioNCgkgKiBHZXQg
YSByZXZpc2lvbiBmcm9tIHRoZSBkYXRhYmFzZS4NCgkgKg0KCSAqIEBwYXJhbSAgc3RyaW5n
ICR3aGVyZSBTUUwgd2hlcmUgY2xhdXNlDQoJICogQHJldHVybiBhcnJheQ0KCSAqLw0KDQoJ
cHVibGljIGZ1bmN0aW9uIGdldF9yZXZpc2lvbigkd2hlcmUpDQoJew0KCQlnbG9iYWwgJHBy
ZWZzOw0KDQoJCSRyID0gc2FmZV9yb3coJyonLCAncmFoX3Bvc3RfdmVyc2lvbnMnLCAkd2hl
cmUpOw0KDQoJCWlmICghJHIpDQoJCXsNCgkJCXJldHVybiBhcnJheSgpOw0KCQl9DQoNCgkJ
aWYgKCR0aGlzLT5ub3dyaXRlID09IHRydWUpDQoJCXsNCgkJCSRyWydkYXRhJ10gPSAnJzsN
CgkJfQ0KDQoJCWlmICgkciAmJiAkdGhpcy0+c3RhdGljX2RpcikNCgkJew0KCQkJJGZpbGUg
PSAkdGhpcy0+c3RhdGljX2RpciAuIERTIC4gJHJbJ3NldGlkJ10gLiAnX3InIC4gJHJbJ2lk
J10gLiAnLnBocCc7DQoNCgkJCWlmIChmaWxlX2V4aXN0cygkZmlsZSkgJiYgaXNfZmlsZSgk
ZmlsZSkgJiYgaXNfcmVhZGFibGUoJGZpbGUpKQ0KCQkJew0KCQkJCW9iX3N0YXJ0KCk7DQoJ
CQkJaW5jbHVkZSAkZmlsZTsNCgkJCQkkclsnZGF0YSddID0gb2JfZ2V0X2NvbnRlbnRzKCk7
DQoJCQkJb2JfZW5kX2NsZWFuKCk7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJHJbJ2Rh
dGEnXSA9ICcnOw0KCQkJfQ0KCQl9DQoNCgkJaWYgKCFlbXB0eSgkclsnZGF0YSddKSkNCgkJ
ew0KCQkJQCRyWydkYXRhJ10gPSBiYXNlNjRfZGVjb2RlKCRyWydkYXRhJ10pOw0KDQoJCQlp
ZiAoJHRoaXMtPmNvbXByZXNzICYmIHN0cm5jbXAoJHJbJ2RhdGEnXSwgIlx4MUZceDhCIiwg
MikgPT09IDApDQoJCQl7DQoJCQkJJHJbJ2RhdGEnXSA9IGd6aW5mbGF0ZShzdWJzdHIoJHJb
J2RhdGEnXSwgMTApKTsNCgkJCX0NCg0KCQkJQCRyWydkYXRhJ10gPSB1bnNlcmlhbGl6ZSgk
clsnZGF0YSddKTsNCgkJfQ0KDQoJCXJldHVybiAkcjsNCgl9DQoNCgkvKioNCgkgKiBDcmVh
dGVzIGEgbmV3IHJldmlzaW9uLg0KCSAqDQoJICogQHBhcmFtICBzdHJpbmcgJGdyaWQgICBH
cm91cCBpZGVudGlmaWVyDQoJICogQHBhcmFtICBzdHJpbmcgJHRpdGxlICBUaGUgdGl0bGUN
CgkgKiBAcGFyYW0gIHN0cmluZyAkYXV0aG9yIFRoZSBhdXRob3INCgkgKiBAcGFyYW0gIHN0
cmluZyAkZXZlbnQgIFRoZSBldmVudA0KCSAqIEBwYXJhbSAgc3RyaW5nICRzdGVwICAgVGhl
IHN0ZXANCgkgKiBAcGFyYW0gIGFycmF5ICAkZGF0YSAgIFRoZSByZXZpc2lvbiBkYXRhDQoJ
ICogQHJldHVybiBib29sICAgRkFMU0Ugb24gZmFpbHVyZQ0KCSAqLw0KDQoJcHVibGljIGZ1
bmN0aW9uIGNyZWF0ZV9yZXZpc2lvbigkZ3JpZCwgJHRpdGxlLCAkYXV0aG9yLCAkZXZlbnQs
ICRzdGVwLCAkZGF0YSkNCgl7DQoJCWdsb2JhbCAkcHJlZnM7DQoNCgkJaWYgKCR0aGlzLT5u
b3dyaXRlIHx8ICEkZ3JpZCB8fCAhJGV2ZW50IHx8ICEkc3RlcCkNCgkJew0KCQkJcmV0dXJu
IGZhbHNlOw0KCQl9DQoNCgkJZm9yZWFjaCAoYXJyYXkoJ2dyaWQnLCAndGl0bGUnLCAnYXV0
aG9yJywgJ2V2ZW50JywgJ3N0ZXAnKSBhcyAkbmFtZSkNCgkJew0KCQkJJHNxbFskbmFtZV0g
PSAkbmFtZS4iPSciLmRvU2xhc2goJCRuYW1lKS4iJyI7DQoJCX0NCg0KCQlpZiAoJHRpdGxl
ID09PSAnJykNCgkJew0KCQkJJHNxbFsndGl0bGUnXSA9ICJ0aXRsZT0nIi5kb1NsYXNoKCRn
cmlkKS4iJyI7DQoJCX0NCg0KCQkkc3FsWydwb3N0ZWQnXSA9ICdwb3N0ZWQ9bm93KCknOw0K
DQoJCSRzZXRpZCA9IHNhZmVfZmllbGQoDQoJCQknaWQnLA0KCQkJJ3JhaF9wb3N0X3ZlcnNp
b25zX3NldHMnLA0KCQkJJHNxbFsnZXZlbnQnXS4nIGFuZCAnLiRzcWxbJ2dyaWQnXS4nIGxp
bWl0IDEnDQoJCSk7DQoNCgkJaWYgKCEkc2V0aWQpDQoJCXsNCgkJCSRzZXRpZCA9IHNhZmVf
aW5zZXJ0KA0KCQkJCSdyYWhfcG9zdF92ZXJzaW9uc19zZXRzJywNCgkJCQknbW9kaWZpZWQ9
bm93KCksIGNoYW5nZXM9MSwnLg0KCQkJCSRzcWxbJ3RpdGxlJ10uJywnLg0KCQkJCSRzcWxb
J2V2ZW50J10uJywnLg0KCQkJCSRzcWxbJ3N0ZXAnXS4nLCcuDQoJCQkJJHNxbFsnZ3JpZCdd
DQoJCQkpOw0KDQoJCQlpZiAoJHNldGlkID09PSBmYWxzZSkNCgkJCXsNCgkJCQlyZXR1cm4g
ZmFsc2U7DQoJCQl9DQoJCX0NCgkJZWxzZQ0KCQl7CQ0KCQkJJGxhdGVzdCA9ICR0aGlzLT5n
ZXRfcmV2aXNpb24oInNldGlkPSciLmRvU2xhc2goJHNldGlkKS4iJyBPUkRFUiBCWSBpZCBk
ZXNjIik7DQoNCgkJCWlmICgkbGF0ZXN0ICYmICRkYXRhID09PSAkbGF0ZXN0WydkYXRhJ10p
DQoJCQl7DQoJCQkJcmV0dXJuIHRydWU7DQoJCQl9DQoNCgkJCWlmICgNCgkJCQlzYWZlX3Vw
ZGF0ZSgNCgkJCQkJJ3JhaF9wb3N0X3ZlcnNpb25zX3NldHMnLA0KCQkJCQknbW9kaWZpZWQ9
bm93KCksIGNoYW5nZXM9Y2hhbmdlcysxICcuKCR0aXRsZSA/ICcsJy4kc3FsWyd0aXRsZSdd
IDogJycgKSwNCgkJCQkJImlkPSciLmRvU2xhc2goJHNldGlkKS4iJyINCgkJCQkpID09IGZh
bHNlDQoJCQkpDQoJCQl7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9DQoNCgkJaWYg
KCR0aGlzLT5jb21wcmVzcykNCgkJew0KCQkJJGRhdGEgPSBiYXNlNjRfZW5jb2RlKGd6ZW5j
b2RlKHNlcmlhbGl6ZSgkZGF0YSkpKTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRkYXRhID0g
YmFzZTY0X2VuY29kZShzZXJpYWxpemUoJGRhdGEpKTsNCgkJfQ0KDQoJCWlmICghJHRoaXMt
PnN0YXRpY19kaXIpDQoJCXsNCgkJCSRzcWxbJ2RhdGEnXSA9ICJkYXRhPSciLmRvU2xhc2go
JGRhdGEpLiInIjsNCgkJfQ0KDQoJCSRzcWxbJ3NldGlkJ10gPSAic2V0aWQ9JyIuZG9TbGFz
aCgkc2V0aWQpLiInIjsNCg0KCQkkaWQgPSBzYWZlX2luc2VydCgNCgkJCSdyYWhfcG9zdF92
ZXJzaW9ucycsDQoJCQlpbXBsb2RlKCcsJywgJHNxbCkNCgkJKTsNCgkNCgkJaWYgKCRpZCA9
PT0gZmFsc2UpDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCWlmICgkdGhpcy0+
c3RhdGljX2RpcikNCgkJew0KCQkJaWYgKA0KCQkJCWZpbGVfcHV0X2NvbnRlbnRzKA0KCQkJ
CQkkdGhpcy0+c3RhdGljX2Rpci4nLycuJHNldGlkLidfcicuJGlkLicucGhwJywNCgkJCQkJ
JHRoaXMtPnN0YXRpY19oZWFkZXIuJGRhdGENCgkJCQkpID09PSBmYWxzZQ0KCQkJKQ0KCQkJ
ew0KCQkJCXJldHVybiBmYWxzZTsNCgkJCX0NCgkJfQ0KDQoJCWNhbGxiYWNrX2V2ZW50KCdy
YWhfcG9zdF92ZXJzaW9ucy5yZXZpc2lvbl9jcmVhdGVkJywgJycsIDAsICRkYXRhKTsNCgkJ
cmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoqDQoJICogRXhwb3J0cyByZXZpc2lvbiBkYXRhIGZy
b20gdGhlIGRhdGFiYXNlIHRvIHN0YXRpYyBmaWxlcy4NCgkgKg0KCSAqIEByZXR1cm4gYm9v
bHxudWxsIEZBTFNFIG9uIGVycm9yLCBUUlVFIG9uIHN1Y2Nlc3MuIE5VTEwgd2hlbiBleHBv
cnQgaXNuJ3QgcmVxdWlyZWQuDQoJICovDQoNCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ29fc3Rh
dGljKCkNCgl7DQoJCWdsb2JhbCAkcHJlZnM7DQoNCgkJaWYgKCR0aGlzLT5zdGF0aWNfZGly
ICE9PSBmYWxzZSkNCgkJew0KCQkJcmV0dXJuOw0KCQl9DQoNCgkJJHRoaXMtPnN0YXRpY19o
ZWFkZXIgPSANCgkJCSc8P3BocCBpZighZGVmaW5lZCgicmFoX3Bvc3RfdmVyc2lvbnNfc3Rh
dGljX2RpciIpKSBkaWUoInJhaF9wb3N0X3ZlcnNpb25zX3N0YXRpY19kaXIgdW5kZWZpbmVk
Iik7ID8+JzsNCg0KCQkkZGlyID0gdHJpbShydHJpbSgkcHJlZnNbJ3JhaF9wb3N0X3ZlcnNp
b25zX3JlcG9zaXRvcnlfcGF0aCddLCAnL1xcJykpOw0KDQoJCWlmICgkZGlyICYmIHN0cnBv
cygkZGlyLCAnLi8nKSA9PT0gMCkNCgkJew0KCQkJJGRpciA9IHR4cGF0aC5EUy5zdWJzdHIo
JGRpciwgMik7DQoJCX0NCg0KCQlpZiAoJGRpciAmJiBmaWxlX2V4aXN0cygkZGlyKSAmJiBp
c19kaXIoJGRpcikgJiYgaXNfcmVhZGFibGUoJGRpcikgJiYgaXNfd3JpdGFibGUoJGRpcikp
DQoJCXsNCgkJCSR0aGlzLT5zdGF0aWNfZGlyID0gJGRpcjsNCgkJfQ0KDQoJCWlmICghJHRo
aXMtPnN0YXRpY19kaXIgJiYgaXNzZXQoJHByZWZzWydyYWhfcG9zdF92ZXJzaW9uc19zdGF0
aWMnXSkpDQoJCXsNCgkJCSR0aGlzLT5ub3dyaXRlID0gdHJ1ZTsNCgkJCXJldHVybjsNCgkJ
fQ0KDQoJCWlmICghJHRoaXMtPnN0YXRpY19kaXIgfHwgaXNzZXQoJHByZWZzWydyYWhfcG9z
dF92ZXJzaW9uc19zdGF0aWMnXSkpDQoJCXsNCgkJCXJldHVybjsNCgkJfQ0KDQoJCSRyID0g
QGdldFRoaW5ncygnZGVzY3JpYmUgJy5zYWZlX3BmeCgncmFoX3Bvc3RfdmVyc2lvbnMnKSk7
DQoNCgkJaWYgKCEkciB8fCAhaXNfYXJyYXkoJHIpIHx8ICFpbl9hcnJheSgnZGF0YScsICRy
KSkNCgkJew0KCQkJcmV0dXJuOw0KCQl9DQoNCgkJJHJzID0gc2FmZV9yb3dzKA0KCQkJJ2Rh
dGEsIHNldGlkLCBpZCcsDQoJCQkncmFoX3Bvc3RfdmVyc2lvbnMnLA0KCQkJJzE9MScNCgkJ
KTsNCg0KCQlmb3JlYWNoICgkcnMgYXMgJGEpDQoJCXsNCgkJCSRmaWxlID0gJHRoaXMtPnN0
YXRpY19kaXIgLiBEUyAuICRhWydzZXRpZCddIC4gJ19yJyAuICRhWydpZCddIC4gJy5waHAn
Ow0KDQoJCQlpZiAoIWZpbGVfZXhpc3RzKCRmaWxlKSAmJiBmaWxlX3B1dF9jb250ZW50cygk
ZmlsZSwgJHRoaXMtPnN0YXRpY19oZWFkZXIgLiAkYVsnZGF0YSddKSA9PT0gZmFsc2UpDQoJ
CQl7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9DQoNCgkJaWYgKHNhZmVfYWx0ZXIo
J3JhaF9wb3N0X3ZlcnNpb25zJywgJ0RST1AgZGF0YScpID09PSBmYWxzZSkNCgkJew0KCQkJ
cmV0dXJuIGZhbHNlOw0KCQl9DQoNCgkJc2V0X3ByZWYoJ3JhaF9wb3N0X3ZlcnNpb25zX3N0
YXRpYycsIDEsICdyYWhfcG9zdHZlcicsIDIsICcnLCAwKTsNCgkJJHByZWZzWydyYWhfcG9z
dF92ZXJzaW9uc19zdGF0aWMnXSA9IDE7DQoNCgkJcmV0dXJuIHRydWU7DQoJfQ0KDQoJLyoq
DQoJICogTGlzdHMgYWxsIGl0ZW1zLg0KCSAqDQoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAk
bWVzc2FnZSBUaGUgYWN0aXZpdHkgbWVzc2FnZQ0KCSAqLw0KDQoJcHVibGljIGZ1bmN0aW9u
IGJyb3dzZXIoJG1lc3NhZ2UgPSAnJykNCgl7CQ0KCQlnbG9iYWwgJGV2ZW50Ow0KDQoJCWV4
dHJhY3QoZ3BzYShhcnJheSgNCgkJCSdmaWx0ZXJfZXZlbnQnLA0KCQkJJ3NvcnQnLA0KCQkJ
J2RpcicsDQoJCSkpKTsNCg0KCQkkbWV0aG9kcyA9IGFycmF5KCk7DQoJCSRjb2x1bW5zID0g
YXJyYXkoJ2lkJywgJ2V2ZW50JywgJ3RpdGxlJywgJ21vZGlmaWVkJywgJ2NoYW5nZXMnKTsN
Cg0KCQlpZiAoaGFzX3ByaXZzKCdyYWhfcG9zdF92ZXJzaW9uc19kZWxldGVfaXRlbScpKQ0K
CQl7DQoJCQkkbWV0aG9kc1snZGVsZXRlX2l0ZW0nXSA9IGdUeHQoJ2RlbGV0ZScpOw0KCQl9
DQoNCgkJaWYgKCRkaXIgIT09ICdkZXNjJyAmJiAkZGlyICE9PSAnYXNjJykNCgkJew0KCQkJ
JGRpciA9IGdldF9wcmVmKCRldmVudC4nX2Jyb3dzZXJfZGlyJywgJ2Rlc2MnKTsNCgkJfQ0K
DQoJCWlmICghaW5fYXJyYXkoKHN0cmluZykgJHNvcnQsICRjb2x1bW5zKSkNCgkJew0KCQkJ
JHNvcnQgPSBnZXRfcHJlZigkZXZlbnQuJ19icm93c2VyX2NvbHVtbicsICdtb2RpZmllZCcp
Ow0KCQl9DQoNCgkJc2V0X3ByZWYoJGV2ZW50LidfYnJvd3Nlcl9jb2x1bW4nLCAkc29ydCwg
JGV2ZW50LCAyLCAnJywgMCwgUFJFRl9QUklWQVRFKTsNCgkJc2V0X3ByZWYoJGV2ZW50Lidf
YnJvd3Nlcl9kaXInLCAkZGlyLCAkZXZlbnQsIDIsICcnLCAwLCBQUkVGX1BSSVZBVEUpOw0K
DQoJCSRzcWwgPSBhcnJheSgnMT0xJyk7DQoNCgkJaWYgKCRmaWx0ZXJfZXZlbnQpDQoJCXsN
CgkJCSRzcWxbXSA9ICJldmVudD0nIi5kb1NsYXNoKCRmaWx0ZXJfZXZlbnQpLiInIjsNCgkJ
fQ0KDQoJCSR0b3RhbCA9IHNhZmVfY291bnQoDQoJCQkncmFoX3Bvc3RfdmVyc2lvbnNfc2V0
cycsDQoJCQlpbXBsb2RlKCcgYW5kICcsICRzcWwpDQoJCSk7DQoNCgkJJGxpbWl0ID0gMTU7
DQoNCgkJbGlzdCgkcGFnZSwgJG9mZnNldCwgJG51bV9wYWdlcykgPSBwYWdlcigkdG90YWws
ICRsaW1pdCwgZ3BzKCdwYWdlJykpOw0KDQoJCWlmICgkbWV0aG9kcykNCgkJew0KCQkJJGNv
bHVtbltdID0gaENlbGwoZklucHV0KCdjaGVja2JveCcsICdzZWxlY3RfYWxsJywgMSwgJycs
ICcnLCAnJywgJycsICcnLCAnc2VsZWN0X2FsbCcpLCAnJywgJyB0aXRsZT0iJy5nVHh0KCd0
b2dnbGVfYWxsX3NlbGVjdGVkJykuJyIgY2xhc3M9Im11bHRpLWVkaXQiJyk7DQoJCX0NCg0K
CQlmb3JlYWNoICgkY29sdW1ucyBhcyAkbmFtZSkNCgkJew0KCQkJJGNvbHVtbltdID0gY29s
dW1uX2hlYWQoJGV2ZW50LidfJy4kbmFtZSwgJG5hbWUsICRldmVudCwgdHJ1ZSwgJG5hbWUg
PT09ICRzb3J0ICYmICRkaXIgPT09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYycsICcnLCAnJywg
KCRuYW1lID09PSAkc29ydCA/ICRkaXIgOiAnJykpOw0KCQl9DQoNCgkJaWYgKGhhc19wcml2
cygncmFoX3Bvc3RfdmVyc2lvbnNfcHJlZmVyZW5jZXMnKSkNCgkJew0KCQkJJG91dFtdID0g
JzxwIGNsYXNzPSJ0eHAtYnV0dG9ucyI+PGEgaHJlZj0iP2V2ZW50PXByZWZzJmFtcDtzdGVw
PWFkdmFuY2VkX3ByZWZzI3ByZWZzLXJhaF9wb3N0X3ZlcnNpb25zX2d6aXAiPicuZ1R4dCgn
cmFoX3Bvc3RfdmVyc2lvbnNfcHJlZmVyZW5jZXMnKS4nPC9hPjwvcD4nOw0KCQl9DQoNCgkJ
JG91dFtdID0NCgkJCSc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iaW5kZXgucGhwIiBj
bGFzcz0ibXVsdGlfZWRpdF9mb3JtIj4nLg0KCQkJZUlucHV0KCRldmVudCkuDQoJCQl0SW5w
dXQoKS4NCgkJCSc8ZGl2IGNsYXNzPSJ0eHAtbGlzdHRhYmxlcyI+Jy4NCgkJCSc8dGFibGUg
Y2xhc3M9InR4cC1saXN0Ij4nLg0KCQkJJzx0aGVhZD4nLnRyKGltcGxvZGUoJycsICRjb2x1
bW4pKS4nPC90aGVhZD4nLg0KCQkJJzx0Ym9keT4nOw0KDQoJCSRycyA9IHNhZmVfcm93cygN
CgkJCSdpZCwgZXZlbnQsIHN0ZXAsIGdyaWQsIHRpdGxlLCBtb2RpZmllZCwgY2hhbmdlcycs
DQoJCQkncmFoX3Bvc3RfdmVyc2lvbnNfc2V0cycsDQoJCQlpbXBsb2RlKCcgYW5kICcsICRz
cWwpIC4gIiBvcmRlciBieSB7JHNvcnR9IHskZGlyfSBsaW1pdCB7JG9mZnNldH0sIHskbGlt
aXR9Ig0KCQkpOw0KDQoJCSRldmVudHMgPSAkdGhpcy0+cG9wX2V2ZW50cygpOw0KDQoJCWZv
cmVhY2ggKCRycyBhcyAkYSkNCgkJewkJDQoJCQlpZiAodHJpbSgkYVsndGl0bGUnXSkgPT09
ICcnKQ0KCQkJew0KCQkJCSRhWyd0aXRsZSddID0gZ1R4dCgndW50aXRsZWQnKTsNCgkJCX0N
CgkNCgkJCWlmIChpc3NldCgkZXZlbnRzWyRhWydldmVudCddXSkpDQoJCQl7DQoJCQkJJGFb
J2V2ZW50J10gPSAkZXZlbnRzWyRhWydldmVudCddXTsNCgkJCX0NCg0KCQkJJGNvbHVtbiA9
IGFycmF5KCk7DQoNCgkJCWlmICgkbWV0aG9kcykNCgkJCXsNCgkJCQkkY29sdW1uW10gPSB0
ZChmSW5wdXQoJ2NoZWNrYm94JywgJ3NlbGVjdGVkW10nLCAkYVsnaWQnXSksICcnLCAnbXVs
dGktZWRpdCcpOw0KCQkJfQ0KDQoJCQkkY29sdW1uW10gPSB0ZCgkYVsnaWQnXSk7DQoJCQkk
Y29sdW1uW10gPSB0ZCh0eHBzcGVjaWFsY2hhcnMoJGFbJ2V2ZW50J10pKTsNCgkJCSRjb2x1
bW5bXSA9IHRkKCc8YSBocmVmPSI/ZXZlbnQ9Jy4kZXZlbnQuJyZhbXA7c3RlcD1jaGFuZ2Vz
JmFtcDtpdGVtPScuJGFbJ2lkJ10uJyI+Jy50eHBzcGVjaWFsY2hhcnMoJGFbJ3RpdGxlJ10p
Lic8L2E+Jyk7DQoJCQkkY29sdW1uW10gPSB0ZChzYWZlX3N0cmZ0aW1lKGdUeHQoJ3JhaF9w
b3N0X3ZlcnNpb25zX2RhdGVfZm9ybWF0JyksIHN0cnRvdGltZSgkYVsnbW9kaWZpZWQnXSkp
KTsNCgkJCSRjb2x1bW5bXSA9IHRkKCRhWydjaGFuZ2VzJ10pOw0KDQoJCQkkb3V0W10gPSB0
cihpbXBsb2RlKCcnLCAkY29sdW1uKSk7DQoJCX0NCg0KCQlpZiAoISRycykNCgkJew0KCQkJ
JG91dFtdID0gdHIoJzx0ZCBjb2xzcGFuPSInLmNvdW50KCRjb2x1bW4pLiciPicuZ1R4dCgn
cmFoX3Bvc3RfdmVyc2lvbnNfbm9fY2hhbmdlcycpLic8L3RkPicpOw0KCQl9DQoNCgkJJG91
dFtdID0gDQoJCQknPC90Ym9keT4nLm4uDQoJCQknPC90YWJsZT4nLm4uDQoJCQknPC9kaXY+
Jy5uOw0KDQoJCWlmICgkbWV0aG9kcykNCgkJew0KCQkJJG91dFtdID0gbXVsdGlfZWRpdCgk
bWV0aG9kcywgJGV2ZW50LCAnbXVsdGlfZWRpdCcpOw0KCQl9DQoNCgkJJG91dFtdID0gDQoJ
CQknPC9mb3JtPicuDQoJCQkkdGhpcy0+cGFnZXMoJ2Jyb3dzZXInLCAkdG90YWwsICRsaW1p
dCk7DQoNCgkJJHRoaXMtPnBhbmUoJG91dCwgJG1lc3NhZ2UpOw0KCX0NCg0KCS8qKg0KCSAq
IE91dHB1dHMgYSBwYW5lbC4NCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgJGNvbnRl
bnQgUGFuZSdzIEhUTUwgbWFya3VwDQoJICogQHBhcmFtIHN0cmluZ3xhcnJheSAkbWVzc2Fn
ZSBUaGUgYWN0aXZpdHkgbWVzc2FnZQ0KCSAqLw0KDQoJcHJpdmF0ZSBmdW5jdGlvbiBwYW5l
KCRjb250ZW50LCAkbWVzc2FnZSA9ICcnKQ0KCXsJDQoJCWdsb2JhbCAkZXZlbnQ7DQoNCgkJ
cGFnZXRvcChnVHh0KCdyYWhfcG9zdF92ZXJzaW9ucycpLCAkbWVzc2FnZSA/ICRtZXNzYWdl
IDogJycpOw0KDQoJCWlmIChpc19hcnJheSgkY29udGVudCkpDQoJCXsNCgkJCSRjb250ZW50
ID0gaW1wbG9kZShuLCAkY29udGVudCk7DQoJCX0NCg0KCQllY2hvICc8aDEgY2xhc3M9InR4
cC1oZWFkaW5nIj4nLmdUeHQoJ3JhaF9wb3N0X3ZlcnNpb25zJykuJzwvaDE+Jy5uOw0KDQoJ
CWlmICgkdGhpcy0+bm93cml0ZSA9PSB0cnVlKQ0KCQl7DQoJCQllY2hvICc8cCBjbGFzcz0i
YWxlcnQtYmxvY2sgd2FybmluZyI+Jy5nVHh0KCdyYWhfcG9zdF92ZXJzaW9uc19yZXBvc2l0
b3J5X2RhdGFfbWlzc2luZycpLic8L3A+JzsNCgkJfQ0KDQoJCWVjaG8gJzxkaXYgY2xhc3M9
InR4cC1jb250YWluZXIiPicubi4NCgkJCSRjb250ZW50Lm4uDQoJCQknPC9kaXY+Jy5uOw0K
CX0NCg0KCS8qKg0KCSAqIExpc3RzIGNoYW5nZXMgY29tbWl0dGVkIHRvIGFuIGl0ZW0uDQoJ
ICoNCgkgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRtZXNzYWdlIFRoZSBhY3Rpdml0eSBtZXNz
YWdlDQoJICovDQoNCglwcm90ZWN0ZWQgZnVuY3Rpb24gY2hhbmdlcygkbWVzc2FnZSA9ICcn
KQ0KCXsNCgkJZ2xvYmFsICRldmVudDsNCg0KCQlleHRyYWN0KGdwc2EoYXJyYXkoDQoJCQkn
aXRlbScsDQoJCQknc29ydCcsDQoJCQknZGlyJywNCgkJKSkpOw0KDQoJCWlmICgNCgkJCSFz
YWZlX3JvdygNCgkJCQknaWQnLA0KCQkJCSdyYWhfcG9zdF92ZXJzaW9uc19zZXRzJywNCgkJ
CQkiaWQ9JyIuZG9TbGFzaCgkaXRlbSkuIicgTElNSVQgMCwgMSINCgkJCSkNCgkJKQ0KCQl7
DQoJCQkkdGhpcy0+YnJvd3NlcihhcnJheShnVHh0KCdyYWhfcG9zdF92ZXJzaW9uc191bmtu
b3duX3NlbGVjdGlvbicpLCBFX1dBUk5JTkcpKTsNCgkJCXJldHVybjsNCgkJfQ0KDQoJCSRt
ZXRob2RzID0gYXJyYXkoKTsNCgkJJGNvbHVtbnMgPSBhcnJheSgnaWQnLCAndGl0bGUnLCAn
cG9zdGVkJywgJ3N0ZXAnLCAnYXV0aG9yJyk7DQoNCgkJaWYgKGhhc19wcml2cygncmFoX3Bv
c3RfdmVyc2lvbnNfZGlmZicpKQ0KCQl7DQoJCQkkbWV0aG9kc1snZGlmZiddID0gZ1R4dCgn
cmFoX3Bvc3RfdmVyc2lvbnNfZGlmZicpOw0KCQl9DQoNCgkJaWYgKGhhc19wcml2cygncmFo
X3Bvc3RfdmVyc2lvbnNfZGVsZXRlX3JldmlzaW9uJykpDQoJCXsNCgkJCSRtZXRob2RzWydk
ZWxldGVfcmV2aXNpb24nXSA9IGdUeHQoJ2RlbGV0ZScpOw0KCQl9DQoJCQ0KCQlpZiAoJGRp
ciAhPT0gJ2Rlc2MnICYmICRkaXIgIT09ICdhc2MnKQ0KCQl7DQoJCQkkZGlyID0gZ2V0X3By
ZWYoJGV2ZW50LidfY2hhbmdlc19kaXInLCAnZGVzYycpOw0KCQl9DQoJCQ0KCQlpZiAoISRz
b3J0KQ0KCQl7DQoJCQkkc29ydCA9IGdldF9wcmVmKCRldmVudC4nX2NoYW5nZXNfY29sdW1u
JywgJ3Bvc3RlZCcpOw0KCQl9DQoNCgkJaWYgKCFpbl9hcnJheSgoc3RyaW5nKSAkc29ydCwg
JGNvbHVtbnMpKQ0KCQl7DQoJCQkkc29ydCA9ICdwb3N0ZWQnOw0KCQl9DQoNCgkJc2V0X3By
ZWYoJGV2ZW50LidfY2hhbmdlc19jb2x1bW4nLCAkc29ydCwgJGV2ZW50LCAyLCAnJywgMCwg
UFJFRl9QUklWQVRFKTsNCgkJc2V0X3ByZWYoJGV2ZW50LidfY2hhbmdlc19kaXInLCAkZGly
LCAkZXZlbnQsIDIsICcnLCAwLCBQUkVGX1BSSVZBVEUpOw0KDQoJCSR0b3RhbCA9IHNhZmVf
Y291bnQoDQoJCQkncmFoX3Bvc3RfdmVyc2lvbnMnLA0KCQkJInNldGlkPSciLmRvU2xhc2go
JGl0ZW0pLiInIg0KCQkpOw0KDQoJCSRsaW1pdCA9IDE1Ow0KDQoJCWxpc3QoJHBhZ2UsICRv
ZmZzZXQsICRudW1fcGFnZXMpID0gcGFnZXIoJHRvdGFsLCAkbGltaXQsIGdwcygncGFnZScp
KTsNCg0KCQlpZiAoJG1ldGhvZHMpDQoJCXsNCgkJCSRjb2x1bW5bXSA9IGhDZWxsKGZJbnB1
dCgnY2hlY2tib3gnLCAnc2VsZWN0X2FsbCcsIDEsICcnLCAnJywgJycsICcnLCAnJywgJ3Nl
bGVjdF9hbGwnKSwgJycsICcgdGl0bGU9IicuZ1R4dCgndG9nZ2xlX2FsbF9zZWxlY3RlZCcp
LiciIGNsYXNzPSJtdWx0aS1lZGl0IicpOw0KCQl9DQoNCgkJZm9yZWFjaCAoJGNvbHVtbnMg
YXMgJG5hbWUpDQoJCXsNCgkJCSRjb2x1bW5bXSA9IGhDZWxsKCc8YSBocmVmPSI/ZXZlbnQ9
Jy4kZXZlbnQuYS4nc3RlcD1jaGFuZ2VzJy5hLidpdGVtPScudXJsZW5jb2RlKGdwcygnaXRl
bScpKS5hLidwYWdlPScuJHBhZ2UuYS4nc29ydD0nLiRuYW1lLmEuJ2Rpcj0nLigkbmFtZSA9
PT0gJHNvcnQgJiYgJGRpciA9PT0gJ2FzYycgPyAnZGVzYycgOiAnYXNjJykuJyI+Jy5nVHh0
KCRldmVudC4nXycuJG5hbWUpLic8L2E+JywgJycsICAoJG5hbWUgPT09ICRzb3J0ID8gJyBj
bGFzcz0iJy4kZGlyLiciJyA6ICcnKSk7DQoJCX0NCg0KCQkkb3V0W10gPSAnPHAgY2xhc3M9
InR4cC1idXR0b25zIj4nOw0KCQkkb3V0W10gPSAnPGEgaHJlZj0iP2V2ZW50PScuJGV2ZW50
LiciPicuZ1R4dCgncmFoX3Bvc3RfdmVyc2lvbnNfbWFpbicpLic8L2E+JzsNCg0KCQlpZiAo
aGFzX3ByaXZzKCdyYWhfcG9zdF92ZXJzaW9uc19wcmVmZXJlbmNlcycpKQ0KCQl7DQoJCQkk
b3V0W10gPSAnPGEgaHJlZj0iP2V2ZW50PXByZWZzJmFtcDtzdGVwPWFkdmFuY2VkX3ByZWZz
I3ByZWZzLXJhaF9wb3N0X3ZlcnNpb25zX2d6aXAiPicuZ1R4dCgncmFoX3Bvc3RfdmVyc2lv
bnNfcHJlZmVyZW5jZXMnKS4nPC9hPicubjsNCgkJfQ0KDQoJCSRvdXRbXSA9ICc8L3A+JzsN
Cg0KCQkkb3V0W10gPSANCgkJCSc8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iaW5kZXgu
cGhwIiBjbGFzcz0ibXVsdGlfZWRpdF9mb3JtIj4nLm4uDQoJCQllSW5wdXQoJGV2ZW50KS5u
Lg0KCQkJaElucHV0KCdpdGVtJywgJGl0ZW0pLm4uDQoJCQl0SW5wdXQoKS5uLg0KCQkJJzxk
aXYgY2xhc3M9InR4cC1saXN0dGFibGVzIj4nLm4uDQoJCQknPHRhYmxlIGNsYXNzPSJ0eHAt
bGlzdCI+Jy5uLg0KCQkJJzx0aGVhZD4nLnRyKGltcGxvZGUoJycsICRjb2x1bW4pKS4nPC90
aGVhZD4nLg0KCQkJJzx0Ym9keT4nLm47DQoNCgkJJHJzID0gc2FmZV9yb3dzKA0KCQkJJ2lk
LCB0aXRsZSwgcG9zdGVkLCBhdXRob3IsIHN0ZXAnLA0KCQkJJ3JhaF9wb3N0X3ZlcnNpb25z
JywNCgkJCSJzZXRpZD0nIi5kb1NsYXNoKCRpdGVtKS4iJyBPUkRFUiBCWSB7JHNvcnR9IHsk
ZGlyfSBMSU1JVCB7JG9mZnNldH0sIHskbGltaXR9Ig0KCQkpOw0KDQoJCWZvcmVhY2ggKCRy
cyBhcyAkYSkNCgkJew0KCQkJJGNvbHVtbiA9IGFycmF5KCk7DQoJCQkNCgkJCWlmICgkbWV0
aG9kcykNCgkJCXsNCgkJCQkkY29sdW1uW10gPSB0ZChmSW5wdXQoJ2NoZWNrYm94JywgJ3Nl
bGVjdGVkW10nLCAkYVsnaWQnXSksICcnLCAnbXVsdGktZWRpdCcpOw0KCQkJfQ0KDQoJCQkk
Y29sdW1uW10gPSB0ZCgkYVsnaWQnXSk7DQoJCQkkY29sdW1uW10gPSB0ZCgnPGEgaHJlZj0i
P2V2ZW50PScuJGV2ZW50LicmYW1wO3N0ZXA9ZGlmZiZhbXA7aXRlbT0nLiRpdGVtLicmYW1w
O3I9Jy4kYVsnaWQnXS4nIj4nLnR4cHNwZWNpYWxjaGFycygkYVsndGl0bGUnXSkuJzwvYT4n
KTsNCgkJCSRjb2x1bW5bXSA9IHRkKHNhZmVfc3RyZnRpbWUoZ1R4dCgncmFoX3Bvc3RfdmVy
c2lvbnNfZGF0ZV9mb3JtYXQnKSwgc3RydG90aW1lKCRhWydwb3N0ZWQnXSkpKTsNCgkJCSRj
b2x1bW5bXSA9IHRkKHR4cHNwZWNpYWxjaGFycygkYVsnc3RlcCddKSk7DQoJCQkkY29sdW1u
W10gPSB0ZCh0eHBzcGVjaWFsY2hhcnMoZ2V0X2F1dGhvcl9uYW1lKCRhWydhdXRob3InXSkp
KTsNCg0KCQkJJG91dFtdID0gdHIoaW1wbG9kZSgnJywgJGNvbHVtbikpOw0KCQl9DQoNCgkJ
aWYgKCEkcnMpDQoJCXsNCgkJCSRvdXRbXSA9DQoJCQkJJzx0cj4nLm4uDQoJCQkJJwk8dGQg
Y29sc3Bhbj0iJy5jb3VudCgkY29sdW1uKS4nIj4nLmdUeHQoJ3JhaF9wb3N0X3ZlcnNpb25z
X25vX2NoYW5nZXMnKS4nPC90ZD4nLm4uDQoJCQkJJzwvdHI+Jy5uOw0KCQl9DQoNCgkJJG91
dFtdID0NCgkJCSc8L3Rib2R5Picubi4NCgkJCSc8L3RhYmxlPicubi4NCgkJCSc8L2Rpdj4n
Lm47DQoNCgkJaWYgKCRtZXRob2RzKQ0KCQl7DQoJCQkkb3V0W10gPSBtdWx0aV9lZGl0KCRt
ZXRob2RzLCAkZXZlbnQsICdtdWx0aV9lZGl0Jyk7DQoJCX0NCg0KCQkkb3V0W10gPQ0KCQkJ
JzwvZm9ybT4nLg0KCQkJJHRoaXMtPnBhZ2VzKCdjaGFuZ2VzJywgJHRvdGFsLCAkbGltaXQp
Ow0KDQoJCSR0aGlzLT5wYW5lKCRvdXQsICRtZXNzYWdlKTsNCgl9DQoNCgkvKioNCgkgKiBT
aG93cyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byByZXZpc2lvbnMuDQoJICovDQoNCglwdWJs
aWMgZnVuY3Rpb24gZGlmZigpDQoJewkNCgkJZ2xvYmFsICRldmVudDsNCg0KCQlleHRyYWN0
KGdwc2EoYXJyYXkoDQoJCQkncicsDQoJCQknaXRlbScsDQoJCQkncGxhaW4nLA0KCQkpKSk7
DQoNCgkJJG5ldyA9ICRvbGQgPSBOVUxMOw0KDQoJCWlmICghJHIgfHwgIWlzX3N0cmluZygk
cikpDQoJCXsNCgkJCSR0aGlzLT5jaGFuZ2VzKGFycmF5KGdUeHQoJ3JhaF9wb3N0X3ZlcnNp
b25zX3NlbGVjdF9zb21ldGhpbmcnKSwgRV9XQVJOSU5HKSk7DQoJCQlyZXR1cm47DQoJCX0N
Cg0KCQkkciA9IGV4cGxvZGUoJy0nLCAkcik7DQoNCgkJaWYgKGNvdW50KCRyKSA9PT0gMSAm
JiAoJGlkID0gKGludCkgJHJbMF0pKQ0KCQl7DQoJCQkkbmV3ID0gJHRoaXMtPmdldF9yZXZp
c2lvbigiaWQ9eyRpZH0gYW5kIHNldGlkPSciLmRvU2xhc2goJGl0ZW0pLiInIik7DQoJCQkk
b2xkID0gJHRoaXMtPmdldF9yZXZpc2lvbigiaWQgPCB7JGlkfSBhbmQgc2V0aWQ9JyIuZG9T
bGFzaCgkaXRlbSkuIicgT1JERVIgQlkgaWQgZGVzYyBMSU1JVCAxIik7DQoJCX0NCgkJZWxz
ZQ0KCQl7DQoJCQkkb2xkID0gJHRoaXMtPmdldF9yZXZpc2lvbigiaWQ9JyIuZG9TbGFzaCgk
clswXSkuIicgYW5kIHNldGlkPSciLmRvU2xhc2goJGl0ZW0pLiInIik7DQoJCQkkbmV3ID0g
JHRoaXMtPmdldF9yZXZpc2lvbigiaWQ9JyIuZG9TbGFzaCgkclsxXSkuIicgYW5kIHNldGlk
PSciLmRvU2xhc2goJGl0ZW0pLiInIik7DQoJCX0NCg0KCQlpZiAoISRvbGQgJiYgISRuZXcp
DQoJCXsNCgkJCSR0aGlzLT5jaGFuZ2VzKGFycmF5KGdUeHQoJ3JhaF9wb3N0X3ZlcnNpb25z
X3Vua25vd25fc2VsZWN0aW9uJyksIEVfV0FSTklORykpOw0KCQkJcmV0dXJuOw0KCQl9DQoN
CgkJJG91dFtdID0gJzxwPicuDQoNCgkJCWdUeHQoDQoJCQkJJ3JhaF9wb3N0X3ZlcnNpb25z
X3ZpZXdfb3RoZXJfcmV2aXNpb25zJywNCgkJCQlhcnJheSgNCgkJCQkJJ3twcmV2aW91c30n
ID0+ICgkb2xkID8gJzxhIGhyZWY9Ij9ldmVudD0nLiRldmVudC4nJmFtcDtzdGVwPWRpZmYm
YW1wO2l0ZW09Jy4kaXRlbS4nJmFtcDtyPScuJG9sZFsnaWQnXS4nIj5yJy4kb2xkWydpZCdd
Lic8L2E+JyA6ICctJyksDQoJCQkJCSd7Y3VycmVudH0nID0+ICc8YSBocmVmPSI/ZXZlbnQ9
Jy4kZXZlbnQuJyZhbXA7c3RlcD1kaWZmJmFtcDtpdGVtPScuJGl0ZW0uJyZhbXA7cj0nLiRu
ZXdbJ2lkJ10uJyI+cicuJG5ld1snaWQnXS4nPC9hPicNCgkJCQkpLA0KCQkJCWZhbHNlDQoJ
CQkpLiAnICcgLg0KDQoJCQlnVHh0KA0KCQkJCSdyYWhfcG9zdF92ZXJzaW9uc19yZXZpc2lv
bl9pdGVtX25hbWUnLA0KCQkJCWFycmF5KA0KCQkJCQkne25hbWV9JyA9PiAnPGEgaHJlZj0i
P2V2ZW50PScuJGV2ZW50LicmYW1wO3N0ZXA9Y2hhbmdlcyZhbXA7aXRlbT0nLiRuZXdbJ3Nl
dGlkJ10uJyI+Jy50eHBzcGVjaWFsY2hhcnMoJG5ld1sndGl0bGUnXSkuJzwvYT4nDQoJCQkJ
KSwNCgkJCQlmYWxzZQ0KCQkJKSAuICcgJyAuDQoNCgkJCWdUeHQoDQoJCQkJJ3JhaF9wb3N0
X3ZlcnNpb25zX3JldmlzaW9uX2NvbW1pdHRlZF9ieScsDQoJCQkJYXJyYXkoDQoJCQkJCSd7
YXV0aG9yfScgPT4gdHhwc3BlY2lhbGNoYXJzKGdldF9hdXRob3JfbmFtZSgkbmV3WydhdXRo
b3InXSkpLA0KCQkJCQkne3Bvc3RlZH0nID0+IHNhZmVfc3RyZnRpbWUoZ1R4dCgncmFoX3Bv
c3RfdmVyc2lvbnNfZGF0ZV9mb3JtYXQnKSwgc3RydG90aW1lKCRuZXdbJ3Bvc3RlZCddKSks
DQoJCQkJKSwNCgkJCQlmYWxzZQ0KCQkJKS4gJyAnIC4NCg0KCQkJZ1R4dCgNCgkJCQkncmFo
X3Bvc3RfdmVyc2lvbnNfcmV2aXNpb25fZnJvbV9wYW5lbCcsDQoJCQkJYXJyYXkoDQoJCQkJ
CSd7ZXZlbnR9JyA9PiAnPGEgaHJlZj0iP2V2ZW50PScuJGV2ZW50LicmYW1wO2ZpbHRlcl9l
dmVudD0nLnR4cHNwZWNpYWxjaGFycygkbmV3WydldmVudCddKS4nIj4nLnR4cHNwZWNpYWxj
aGFycygkbmV3WydldmVudCddKS4nPC9hPicsDQoJCQkJCSd7c3RlcH0nID0+IHR4cHNwZWNp
YWxjaGFycygkbmV3WydzdGVwJ10pDQoJCQkJKSwNCgkJCQlmYWxzZQ0KCQkJKS4gJyAnIC4N
Cg0KCQkJJzwvcD4nOw0KDQoJCWlmICgkb2xkICYmICRvbGRbJ2RhdGEnXSA9PT0gJG5ld1sn
ZGF0YSddKQ0KCQl7DQoJCQkkb3V0W10gPSAnPHAgY2xhc3M9Indhcm5pbmcgYWxlcnQtYmxv
Y2siPicuZ1R4dCgncmFoX3Bvc3RfdmVyc2lvbnNfcmV2aXNpb25zX21hdGNoJykuJzwvcD4n
Ow0KCQl9DQoNCgkJaWYgKCRwbGFpbikNCgkJew0KCQkJJG91dFtdID0gJzxoMj5yJy4kbmV3
WydpZCddLic8L2gyPic7DQoNCgkJCWZvcmVhY2ggKCRuZXdbJ2RhdGEnXSBhcyAka2V5ID0+
ICR2YWwpDQoJCQl7DQoJCQkJaWYgKCR2YWwgIT09ICcnKQ0KCQkJCXsNCgkJCQkJJG91dFtd
ID0gDQoJCQkJCQknPHA+Jy50eHBzcGVjaWFsY2hhcnMoJGtleSkuJzwvcD4nLm4uDQoJCQkJ
CQknPHByZT4nLnR4cHNwZWNpYWxjaGFycygkdmFsKS4nPC9wcmU+JzsNCgkJCQl9DQoJCQl9
DQoNCgkJCWlmICghZW1wdHkoJG9sZFsnZGF0YSddKSkNCgkJCXsNCgkJCQkkb3V0W10gPSAn
PGgyPnInLiRvbGRbJ2lkJ10uJzwvaDI+JzsNCg0KCQkJCWZvcmVhY2ggKCRvbGRbJ2RhdGEn
XSBhcyAka2V5ID0+ICR2YWwpDQoJCQkJew0KCQkJCQlpZiAoJHZhbCAhPT0gJycpDQoJCQkJ
CXsNCgkJCQkJCSRvdXRbXSA9IA0KCQkJCQkJCSc8cD4nLnR4cHNwZWNpYWxjaGFycygka2V5
KS4nPC9wPicubi4NCgkJCQkJCQknPHByZT4nLnR4cHNwZWNpYWxjaGFycygkdmFsKS4nPC9w
cmU+JzsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSRkaWZm
ID0gbmV3IHJhaF9wb3N0X3ZlcnNpb25zX2RpZmYoKTsNCg0KCQkJZm9yZWFjaCAoJG5ld1sn
ZGF0YSddIGFzICRrZXkgPT4gJHZhbCkNCgkJCXsNCgkJCQlpZiAoIWlzc2V0KCRvbGRbJ2Rh
dGEnXVska2V5XSkpDQoJCQkJew0KCQkJCQkkb2xkWydkYXRhJ11bJGtleV0gPSAnJzsNCgkJ
CQl9DQoNCgkJCQlpZiAoJG9sZFsnZGF0YSddWyRrZXldID09PSAkdmFsKQ0KCQkJCXsNCgkJ
CQkJdW5zZXQoJG9sZFsnZGF0YSddWyRrZXldKTsNCgkJCQkJY29udGludWU7DQoJCQkJfQ0K
DQoJCQkJJGRpZmYtPm9sZCA9ICRvbGRbJ2RhdGEnXVska2V5XTsNCgkJCQkkZGlmZi0+bmV3
ID0gJHZhbDsNCg0KCQkJCSRvdXRbXSA9IA0KCQkJCQknPHA+Jy50eHBzcGVjaWFsY2hhcnMo
JGtleSkuJzwvcD4nLm4uDQoJCQkJCSc8cHJlPicuJGRpZmYtPmh0bWwoKS4nPC9wcmU+JzsN
Cg0KCQkJCXVuc2V0KCRvbGRbJ2RhdGEnXVska2V5XSwgJG5ld1snZGF0YSddWyRrZXldKTsN
CgkJCX0NCg0KCQkJaWYgKCFlbXB0eSgkb2xkWydkYXRhJ10pICYmIGlzX2FycmF5KCRvbGRb
J2RhdGEnXSkpDQoJCQl7DQoJCQkJZm9yZWFjaCgkb2xkWydkYXRhJ10gYXMgJGtleSA9PiAk
dmFsKQ0KCQkJCXsNCgkJCQkJJG91dFtdID0gDQoJCQkJCQknPHA+Jy50eHBzcGVjaWFsY2hh
cnMoJGtleSkuJzwvcD4nLm4uDQoJCQkJCQknPHByZT4nLg0KCQkJCQkJCSc8c3BhbiBjbGFz
cz0iZXJyb3IiPicuDQoJCQkJCQkJCXR4cHNwZWNpYWxjaGFycygkdmFsKS4NCgkJCQkJCQkn
PC9zcGFuPicuDQoJCQkJCQknPC9wcmU+Jy5uOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCSR0
aGlzLT5wYW5lKCRvdXQpOw0KCX0NCg0KCS8qKg0KCSAqIFJldmVydHMgdG8gcmV2aXNpb24u
DQoJICovDQoNCglwdWJsaWMgZnVuY3Rpb24gcmV2ZXJ0KCkNCgl7CQ0KCQlleHRyYWN0KGdw
c2EoYXJyYXkoDQoJCQkncmV2ZXJ0JywNCgkJKSkpOw0KDQoJCSRkYXRhID0gJHRoaXMtPmdl
dF9yZXZpc2lvbigiaWQ9JyIuZG9TbGFzaCgkcmV2ZXJ0KS4iJyIpOw0KCQljYWxsYmFja19l
dmVudCgncmFoX3Bvc3RfdmVyc2lvbnMucmV2ZXJ0JywgJycsIDAsICRkYXRhKTsNCgkJJHRo
aXMtPmRpZmYoKTsNCgl9DQoNCgkvKioNCgkgKiBIYW5kbGVzIG11bHRpLWVkaXQgbWV0aG9k
cy4NCgkgKi8NCg0KCXB1YmxpYyBmdW5jdGlvbiBtdWx0aV9lZGl0KCkNCgl7CQ0KCQlleHRy
YWN0KHBzYShhcnJheSgNCgkJCSdzZWxlY3RlZCcsDQoJCQknZWRpdF9tZXRob2QnLA0KCQkp
KSk7DQoNCgkJcmVxdWlyZV9wcml2cygncmFoX3Bvc3RfdmVyc2lvbnNfJy4oKHN0cmluZykg
JGVkaXRfbWV0aG9kKSk7DQoNCgkJaWYgKCFpc19zdHJpbmcoJGVkaXRfbWV0aG9kKSB8fCBl
bXB0eSgkc2VsZWN0ZWQpIHx8ICFpc19hcnJheSgkc2VsZWN0ZWQpKQ0KCQl7DQoJCQkkdGhp
cy0+YnJvd3NlcihhcnJheShnVHh0KCdyYWhfcG9zdF92ZXJzaW9uc19zZWxlY3Rfc29tZXRo
aW5nJyksIEVfV0FSTklORykpOw0KCQkJcmV0dXJuOw0KCQl9DQoNCgkJJG1ldGhvZCA9ICdt
dWx0aV9vcHRpb25fJyAuICRlZGl0X21ldGhvZDsNCg0KCQlpZiAoIW1ldGhvZF9leGlzdHMo
JHRoaXMsICRtZXRob2QpKQ0KCQl7DQoJCQkkbWV0aG9kID0gJ2Jyb3dzZSc7DQoJCX0NCg0K
CQkkdGhpcy0+JG1ldGhvZCgpOw0KCX0NCg0KCS8qKg0KCSAqIFJlbW92ZXMgaXRlbXMgYW5k
IGFsbCB0aGVpciByZXZpc2lvbnMuDQoJICovDQoNCglwcm90ZWN0ZWQgZnVuY3Rpb24gbXVs
dGlfb3B0aW9uX2RlbGV0ZV9pdGVtKCkNCgl7CQ0KCQkkc2VsZWN0ZWQgPSBwcygnc2VsZWN0
ZWQnKTsNCgkJJGluID0gaW1wbG9kZSgnLCcsIHF1b3RlX2xpc3QoJHNlbGVjdGVkKSk7DQoN
CgkJaWYgKA0KCQkJc2FmZV9kZWxldGUoDQoJCQkJJ3JhaF9wb3N0X3ZlcnNpb25zJywNCgkJ
CQknc2V0aWQgaW4oJy4kaW4uJyknDQoJCQkpID09IGZhbHNlIHx8DQoJCQlzYWZlX2RlbGV0
ZSgNCgkJCQkncmFoX3Bvc3RfdmVyc2lvbnNfc2V0cycsDQoJCQkJJ2lkIGluKCcuJGluLicp
Jw0KCQkJKSA9PSBmYWxzZQ0KCQkpDQoJCXsNCgkJCSR0aGlzLT5icm93c2VyKGFycmF5KGdU
eHQoJ3JhaF9wb3N0X3ZlcnNpb25zX2Vycm9yX3JlbW92aW5nJyksIEVfRVJST1IpKTsNCgkJ
CXJldHVybjsNCgkJfQ0KDQoJCWlmICgkdGhpcy0+c3RhdGljX2RpcikNCgkJew0KCQkJJGRp
ciA9IHByZWdfcmVwbGFjZSgnLyhcKnxcP3xcWykvJywgJ1skMV0nLCAkdGhpcy0+c3RhdGlj
X2Rpcik7DQoNCgkJCWZvcmVhY2ggKCRzZWxlY3RlZCBhcyAkaWQpDQoJCQl7DQoJCQkJJGlk
ID0gKGludCkgJGlkOw0KDQoJCQkJZm9yZWFjaCAoZ2xvYigkZGlyLkRTLiRpZC4nX3IqLnBo
cCcpIGFzICRmaWxlKQ0KCQkJCXsNCgkJCQkJdW5saW5rKCRmaWxlKTsNCgkJCQl9DQoJCQl9
DQoJCX0NCg0KCQkkdGhpcy0+YnJvd3NlcihnVHh0KCdyYWhfcG9zdF92ZXJzaW9uc19yZW1v
dmVkJykpOw0KCX0NCg0KCS8qKg0KCSAqIFJlbW92ZXMgaW5kaXZpZHVhbCByZXZpc2lvbnMu
DQoJICovDQoNCglwcm90ZWN0ZWQgZnVuY3Rpb24gbXVsdGlfb3B0aW9uX2RlbGV0ZV9yZXZp
c2lvbigpDQoJewkNCgkJJHNlbGVjdGVkID0gcHMoJ3NlbGVjdGVkJyk7DQoJCSRpbiA9IGlt
cGxvZGUoJywnLCBxdW90ZV9saXN0KCRzZWxlY3RlZCkpOw0KCQkkc2V0aWQgPSAoaW50KSBw
cygnaXRlbScpOw0KDQoJCWlmICgNCgkJCXNhZmVfZGVsZXRlKA0KCQkJCSdyYWhfcG9zdF92
ZXJzaW9ucycsDQoJCQkJImlkIGluKCIuJGluLiIpIGFuZCBzZXRpZCA9ICciLmRvU2xhc2go
JHNldGlkKS4iJyINCgkJCSkgPT0gZmFsc2UNCgkJKQ0KCQl7DQoJCQkkdGhpcy0+Y2hhbmdl
cyhhcnJheShnVHh0KCdyYWhfcG9zdF92ZXJzaW9uc19lcnJvcl9yZW1vdmluZycpLCBFX0VS
Uk9SKSk7DQoJCQlyZXR1cm47DQoJCX0NCg0KCQlpZiAoJHRoaXMtPnN0YXRpY19kaXIpDQoJ
CXsNCgkJCWZvcmVhY2ggKCRzZWxlY3RlZCBhcyAkaWQpDQoJCQl7DQoJCQkJJGlkID0gKGlu
dCkgJGlkOw0KCQkJCUB1bmxpbmsoJHRoaXMtPnN0YXRpY19kaXIuRFMuJHNldGlkLidfcicu
JGlkLicucGhwJyk7DQoJCQl9DQoJCX0NCg0KCQkkdGhpcy0+Y2hhbmdlcyhnVHh0KCdyYWhf
cG9zdF92ZXJzaW9uc19yZW1vdmVkJykpOw0KCX0NCg0KCS8qKg0KCSAqIFNob3dzIGRpZmZz
Lg0KCSAqLw0KDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIG11bHRpX29wdGlvbl9kaWZmKCkNCgl7
DQoJCSRzZWxlY3RlZCA9IHBzKCdzZWxlY3RlZCcpOw0KDQoJCWlmIChjb3VudCgkc2VsZWN0
ZWQpICE9PSAyKQ0KCQl7DQoJCQkkdGhpcy0+Y2hhbmdlcyhhcnJheShnVHh0KCdyYWhfcG9z
dF92ZXJzaW9uc19zZWxlY3RfdHdvX2l0ZW1zJyksIEVfRVJST1IpKTsNCgkJCXJldHVybjsN
CgkJfQ0KDQoJCSRzZWxlY3RlZCA9IGRvQXJyYXkoJHNlbGVjdGVkLCAnaW50dmFsJyk7DQoJ
CXNvcnQoJHNlbGVjdGVkKTsNCgkJJF9HRVRbJ3InXSA9ICRzZWxlY3RlZFswXSAuICctJyAu
IGVuZCgkc2VsZWN0ZWQpOw0KCQkkdGhpcy0+ZGlmZigpOw0KCX0NCg0KCS8qKg0KCSAqIEdl
bmVyYXRlcyBwYWdpbmF0aW9uLg0KCSAqDQoJICogQHBhcmFtICBzdHJpbmcgJHN0ZXAgIFRo
ZSBzdGVwDQoJICogQHBhcmFtICBpbnQgICAgJHRvdGFsIFRvdGFsIGl0ZW1zICANCgkgKiBA
cGFyYW0gIGludCAgICAkbGltaXQgVGhlIGxpbWl0DQoJICogQHJldHVybiBzdHJpbmcgSFRN
TA0KCSAqLw0KDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIHBhZ2VzKCRzdGVwLCAkdG90YWwsICRs
aW1pdCkNCgl7CQ0KCQlnbG9iYWwgJGV2ZW50Ow0KDQoJCWxpc3QoJHBhZ2UsICRvZmZzZXQs
ICRudW1fcGFnZXMpID0gcGFnZXIoJHRvdGFsLCAkbGltaXQsIGdwcygncGFnZScpKTsNCg0K
CQlpZiAoJG51bV9wYWdlcyA8PSAxKQ0KCQl7DQoJCQlyZXR1cm47DQoJCX0NCg0KCQkkc3Rh
cnQgPSBtYXgoMSwgJHBhZ2UtNSk7DQoJCSRlbmQgPSBtaW4oJG51bV9wYWdlcywgJHN0YXJ0
KzEwKTsNCg0KCQlpZiAoJHBhZ2UgPiAxICYmICRudW1fcGFnZXMgPiAxKQ0KCQl7DQoJCQkk
b3V0W10gPSAnPGEgY2xhc3M9Im5hdmxpbmsiIGhyZWY9Ij9ldmVudD0nLiRldmVudC5hLidz
dGVwPScuJHN0ZXAuYS4naXRlbT0nLnVybGVuY29kZShncHMoJ2l0ZW0nKSkuYS4ncGFnZT0n
LigkcGFnZS0xKS4nIj4nLmdUeHQoJ3ByZXYnKS4nPC9hPic7DQoJCX0NCgkJZWxzZQ0KCQl7
DQoJCQkkb3V0W10gPSAnPHNwYW4gY2xhc3M9Im5hdmxpbmstZGlzYWJsZWQiPicuZ1R4dCgn
cHJldicpLic8L3NwYW4+JzsNCgkJfQ0KDQoJCWZvciAoJHBnID0gJHN0YXJ0OyAkcGcgPD0g
JGVuZDsgJHBnKyspDQoJCXsJDQoJCQlpZiAoJHBnID09ICRwYWdlKQ0KCQkJew0KCQkJCSRj
bGFzcyA9ICduYXZsaW5rLWFjdGl2ZSc7DQoJCQl9DQoJCQllbHNlDQoJCQl7DQoJCQkJJGNs
YXNzID0gJ25hdmxpbmsnOw0KCQkJfQ0KDQoJCQkkb3V0W10gPSAnPGEgY2xhc3M9IicuJGNs
YXNzLiciIGhyZWY9Ij9ldmVudD0nLiRldmVudC5hLidzdGVwPScuJHN0ZXAuYS4naXRlbT0n
LnVybGVuY29kZShncHMoJ2l0ZW0nKSkuYS4ncGFnZT0nLiRwZy4nIj4nLiRwZy4nPC9hPic7
DQoJCX0NCg0KCQlpZiAoJHBhZ2UgPCAkbnVtX3BhZ2VzICYmICRudW1fcGFnZXMgPiAxKQ0K
CQl7DQoJCQkkb3V0W10gPSAnPGEgY2xhc3M9Im5hdmxpbmsiIGhyZWY9Ij9ldmVudD0nLiRl
dmVudC5hLidzdGVwPScuJHN0ZXAuYS4naXRlbT0nLnVybGVuY29kZShncHMoJ2l0ZW0nKSku
YS4ncGFnZT0nLigkcGFnZSsxKS4nIj4nLmdUeHQoJ25leHQnKS4nPC9hPic7DQoJCX0NCgkJ
ZWxzZQ0KCQl7DQoJCQkkb3V0W10gPSAnPHNwYW4gY2xhc3M9Im5hdmxpbmstZGlzYWJsZWQi
PicuZ1R4dCgnbmV4dCcpLic8L3NwYW4+JzsNCgkJfQ0KDQoJCXJldHVybiAnPHAgY2xhc3M9
Im5hdi10ZXJ0aWFyeSI+Jy5pbXBsb2RlKCcnLCAkb3V0KS4nPC9wPic7DQoJfQ0KfQ0KDQoN
Ci8qKg0KICogR2VuZXJhdGVzIEhUTUwgaW5saW5lIGRpZmZzLCBhIGNvbXBhcmlzb24gdG9v
bC4NCiAqDQogKiBVc2VzIFBhdWwgQnV0bGVyJ3MgU2ltcGxlIERpZmYgQWxnb3JpdGhtLg0K
ICoNCiAqIEBwYWNrYWdlIHJhaF9wb3N0X3ZlcnNpb25zDQogKiBAYXV0aG9yICBKdWtrYSBT
dmFobg0KICogQGRhdGUgICAgMjAxMC0NCiAqIEBsaWNlbnNlIEdOVSBHUEx2Mg0KICogQGxp
bmsgICAgaHR0cDovL3JhaGZvcnVtLmJpei9wbHVnaW5zL3JhaF9wb3N0X3ZlcnNpb25zDQog
Kg0KICogQ29weXJpZ2h0IChDKSAyMDEyIEp1a2thIFN2YWhuIGh0dHA6Ly9yYWhmb3J1bS5i
aXoNCiAqIExpY2Vuc2VkIHVuZGVyIEdOVSBHZW5yYWwgUHVibGljIExpY2Vuc2UgdmVyc2lv
biAyDQogKiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sDQogKg0K
ICogVGhlIGRpZmYgZ2VuZXJhdG9yIHVzZXMgUGF1bCBCdXRsZXIncyBTaW1wbGUgRGlmZiBB
bGdvcml0aG0uDQogKg0KICogQGF1dGhvciAgUGF1bCBCdXRsZXINCiAqIEBsaWNlbnNlIHps
aWIvbGlicG5nDQogKiBAbGluayAgICBodHRwOi8vd3d3LnBhdWxidXRsZXIub3JnDQogKiBA
bGluayAgICBodHRwczovL2dpdGh1Yi5jb20vcGF1bGdiL3NpbXBsZWRpZmYNCiAqLw0KDQpj
bGFzcyByYWhfcG9zdF92ZXJzaW9uc19kaWZmDQp7DQoJLyoqDQoJICogT2xkIHZhbHVlLg0K
CSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8NCg0KCXB1YmxpYyAkb2xkOw0KDQoJLyoqDQoJ
ICogTmV3IHZhbHVlLg0KCSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8NCg0KCXB1YmxpYyAk
bmV3Ow0KDQoJLyoqDQoJICogTGluZSBkZWxpbWl0ZXIuDQoJICoNCgkgKiBAdmFyIHN0cmlu
Zw0KCSAqLw0KDQoJcHJvdGVjdGVkICRkZWxpbWl0ZXIgPSBuOw0KDQoJLyoqDQoJICogQ2xl
YW4gbGluZSBicmVha3MuDQoJICoNCgkgKiBAcGFyYW0gIHN0cmluZ3xhcnJheSAkc3RyaW5n
DQoJICogQHJldHVybiBhcnJheQ0KCSAqLw0KDQoJcHJvdGVjdGVkIGZ1bmN0aW9uIGxpbmVz
KCRzdHJpbmcpDQoJew0KCQlpZiAoaXNfYXJyYXkoJHN0cmluZykpDQoJCXsNCgkJCSRzdHJp
bmcgPSBqc29uX2VuY29kZSgkc3RyaW5nKTsNCgkJfQ0KDQoJCXJldHVybiAJZXhwbG9kZSgk
dGhpcy0+ZGVsaW1pdGVyLA0KCQkJc3RyX3JlcGxhY2UoYXJyYXkoIlxyXG4iLCJcciIpLCBu
LCBodG1sc3BlY2lhbGNoYXJzKCRzdHJpbmcpKQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIFJl
dHVybnMgSFRNTCBwcmVzZW50YXRpb24gb2YgdGhlIGRpZmYuDQoJICoNCgkgKiBAcmV0dXJu
IHN0cmluZyBIVE1MIG1hcmt1cC4NCgkgKi8NCg0KCXB1YmxpYyBmdW5jdGlvbiBodG1sKCkN
Cgl7CQ0KCQkkdGhpcy0+b2xkID0gJHRoaXMtPmxpbmVzKCR0aGlzLT5vbGQpOw0KCQkkdGhp
cy0+bmV3ID0gJHRoaXMtPmxpbmVzKCR0aGlzLT5uZXcpOw0KDQoJCWZvcmVhY2ggKCR0aGlz
LT5kaWZmKCR0aGlzLT5vbGQsICR0aGlzLT5uZXcpIGFzICRrZXkgPT4gJGxpbmUpDQoJCXsN
CgkJCWlmIChpc19hcnJheSgkbGluZSkpDQoJCQl7DQoJCQkJaWYgKA0KCQkJCQkhZW1wdHko
JGxpbmVbJ2QnXSkgJiYNCgkJCQkJKCRkID0gaW1wbG9kZSgkdGhpcy0+ZGVsaW1pdGVyLCRs
aW5lWydkJ10pKSAhPT0gJycNCgkJCQkpDQoJCQkJew0KCQkJCQkkb3V0W10gPSAnPHNwYW4g
Y2xhc3M9ImVycm9yIj4nLiRkLic8L3NwYW4+JzsNCgkJCQl9DQoNCgkJCQlpZiAoIWVtcHR5
KCRsaW5lWydpJ10pKQ0KCQkJCXsNCgkJCQkJJG91dFtdID0gDQoJCQkJCQknPHNwYW4gY2xh
c3M9InN1Y2Nlc3MiPicuDQoJCQkJCQkJaW1wbG9kZSgkdGhpcy0+ZGVsaW1pdGVyLCAkbGlu
ZVsnaSddKS4NCgkJCQkJCSc8L3NwYW4+JzsNCgkJCQl9DQoJCQl9DQoJCQllbHNlDQoJCQl7
DQoJCQkJJG91dFtdID0gJGxpbmU7DQoJCQl9DQoJCX0NCg0KCQlyZXR1cm4gaW1wbG9kZSgk
dGhpcy0+ZGVsaW1pdGVyLCAkb3V0KTsNCgl9DQoNCgkvKioNCgkgKiBDb21wYXJlcyBsaW5l
cy93b3JkcyBhbmQgcmV0dW5zIGRpZmZlcmVuY2VzIG1hcmtlZC4NCgkgKg0KCSAqIEBwYXJh
bSAgYXJyYXkgJG9sZCBDb250ZW50cyBvZiBvbGQgcmV2aXNpb24uDQoJICogQHBhcmFtICBh
cnJheSAkbmV3IENvbnRlbnRzIG9mIG5ldyByZXZpc2lvbi4NCgkgKiBAcmV0dXJuIGFycmF5
DQoJICovDQoNCglwdWJsaWMgZnVuY3Rpb24gZGlmZigkb2xkLCAkbmV3KQ0KCXsNCgkJLyoN
CgkJCVRoaXMgKHJhaF9wb3N0X3ZlcnNpb25zX2RpZmY6OmRpZmYoKSkgbWV0aG9kcydzIGNv
bnRlbnRzIGFyZSBiYXNlZCBvbjoNCgkJCQ0KCQkJUGF1bCdzIFNpbXBsZSBEaWZmIEFsZ29y
aXRobSB2IDAuMQ0KCQkJKEMpIFBhdWwgQnV0bGVyIDIwMDcgPGh0dHA6Ly93d3cucGF1bGJ1
dGxlci5vcmcvPg0KCQkJTWF5IGJlIHVzZWQgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB6
bGliL2xpYnBuZyBsaWNlbnNlLg0KDQoJCQlUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdh
cy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZA0KCQkJd2FycmFudHkuIElu
IG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1h
Z2VzDQoJCQlhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLg0KDQoJCQlQ
ZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZv
ciBhbnkgcHVycG9zZSwNCgkJCWluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywg
YW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQNCgkJCWZyZWVseSwgc3ViamVj
dCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoNCg0KCQkJMS4gVGhlIG9yaWdpbiBv
ZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBu
b3QNCgkJCWNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYg
eW91IHVzZSB0aGlzIHNvZnR3YXJlDQoJCQlpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdt
ZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUNCgkJCWFwcHJlY2lh
dGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuDQoNCgkJCTIuIEFsdGVyZWQgc291cmNlIHZlcnNp
b25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlDQoJ
CQltaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuDQoNCgkJ
CTMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55
IHNvdXJjZQ0KCQkJZGlzdHJpYnV0aW9uLg0KCQkqLw0KDQoJCSRtYXhsZW4gPSAwOw0KDQoJ
CWZvcmVhY2ggKCRvbGQgYXMgJG9pbmRleCA9PiAkb3ZhbHVlKQ0KCQl7DQoJCQkkbmtleXMg
PSBhcnJheV9rZXlzKCRuZXcsICRvdmFsdWUpOw0KDQoJCQlmb3JlYWNoICgkbmtleXMgYXMg
JG5pbmRleCkNCgkJCXsNCgkJCQkkbWF0cml4WyRvaW5kZXhdWyRuaW5kZXhdID0gDQoJCQkJ
CWlzc2V0KCRtYXRyaXhbJG9pbmRleCAtIDFdWyRuaW5kZXggLSAxXSkgPyANCgkJCQkJCSRt
YXRyaXhbJG9pbmRleCAtIDFdWyRuaW5kZXggLSAxXSArIDEgOiAxOw0KDQoJCQkJaWYgKCRt
YXRyaXhbJG9pbmRleF1bJG5pbmRleF0gPiAkbWF4bGVuKQ0KCQkJCXsNCgkJCQkJJG1heGxl
biA9ICRtYXRyaXhbJG9pbmRleF1bJG5pbmRleF07DQoJCQkJCSRvbWF4ID0gJG9pbmRleCAr
IDEgLSAkbWF4bGVuOw0KCQkJCQkkbm1heCA9ICRuaW5kZXggKyAxIC0gJG1heGxlbjsNCgkJ
CQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoJG1heGxlbiA9PSAwKQ0KCQl7DQoJCQlyZXR1cm4g
YXJyYXkoYXJyYXkoJ2QnID0+ICRvbGQsICdpJyA9PiAkbmV3KSk7DQoJCX0NCg0KCQlyZXR1
cm4gDQoJCQlhcnJheV9tZXJnZSgNCgkJCQkkdGhpcy0+ZGlmZigNCgkJCQkJYXJyYXlfc2xp
Y2UoJG9sZCwgMCwgJG9tYXgpLA0KCQkJCQlhcnJheV9zbGljZSgkbmV3LCAwLCAkbm1heCkN
CgkJCQkpLA0KCQkJCWFycmF5X3NsaWNlKCRuZXcsICRubWF4LCAkbWF4bGVuKSwNCgkJCQkk
dGhpcy0+ZGlmZigNCgkJCQkJYXJyYXlfc2xpY2UoJG9sZCwgJG9tYXggKyAkbWF4bGVuKSwN
CgkJCQkJYXJyYXlfc2xpY2UoJG5ldywgJG5tYXggKyAkbWF4bGVuKQ0KCQkJCSkNCgkJCSkN
CgkJOw0KCX0NCn0NCg0KDQoNCi8qKg0KICogVHJhY2tzIGNoYW5nZXMgYW5kIGNyZWF0ZXMg
cmV2aXNpb25zDQogKg0KICogQGF1dGhvciAgSnVra2EgU3ZhaG4NCiAqIEBkYXRlICAgIDIw
MTAtDQogKiBAbGljZW5zZSBHTlUgR1BMdjINCiAqIEBsaW5rICAgIGh0dHA6Ly9yYWhmb3J1
bS5iaXovcGx1Z2lucy9yYWhfcG9zdF92ZXJzaW9ucw0KICoNCiAqIENvcHlyaWdodCAoQykg
MjAxMiBKdWtrYSBTdmFobiBodHRwOi8vcmFoZm9ydW0uYml6DQogKiBMaWNlbnNlZCB1bmRl
ciBHTlUgR2VucmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMg0KICogaHR0cDovL3d3dy5n
bnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbA0KICovDQoNCm5ldyByYWhfcG9zdF92ZXJz
aW9uc190cmFjaygpOw0KDQovKioNCiAqIFRyYWNrcyBjaGFuZ2VzLg0KICovDQoNCmNsYXNz
IHJhaF9wb3N0X3ZlcnNpb25zX3RyYWNrDQp7DQoJLyoqDQoJICogVGhlIGZvcm0gZGF0YS4N
CgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8NCg0KCXByaXZhdGUgJGZvcm0gPSBhcnJheSgp
Ow0KDQoJLyoqDQoJICogQ29uc3RydWN0b3IuDQoJICovDQoNCglwdWJsaWMgZnVuY3Rpb24g
X19jb25zdHJ1Y3QoKQ0KCXsNCgkJaWYgKCFlbXB0eSgkX1BPU1QpKQ0KCQl7DQoJCQkkdGhp
cy0+Zm9ybSA9IHBzYShhcnJheV9rZXlzKCRfUE9TVCkpOw0KCQkJdW5zZXQoJHRoaXMtPmZv
cm1bJ190eHBfdG9rZW4nXSk7DQoJCX0NCg0KCQlyZWdpc3Rlcl9jYWxsYmFjayhhcnJheSgk
dGhpcywgJ3B1c2hfYXJ0aWNsZScpLCAnYXJ0aWNsZV9zYXZlZCcpOw0KCQlyZWdpc3Rlcl9j
YWxsYmFjayhhcnJheSgkdGhpcywgJ3B1c2hfYXJ0aWNsZScpLCAnYXJ0aWNsZV9wb3N0ZWQn
KTsNCgkJcmVnaXN0ZXJfY2FsbGJhY2soYXJyYXkoJHRoaXMsICdwdXNoX25hbWVkJyksICdw
YWdlJyk7DQoJCXJlZ2lzdGVyX2NhbGxiYWNrKGFycmF5KCR0aGlzLCAncHVzaF9uYW1lZCcp
LCAnZm9ybScpOw0KCQlyZWdpc3Rlcl9jYWxsYmFjayhhcnJheSgkdGhpcywgJ3B1c2hfbmFt
ZWQnKSwgJ2NzcycpOw0KCQlyZWdpc3Rlcl9jYWxsYmFjayhhcnJheSgkdGhpcywgJ3B1c2hf
bmFtZWQnKSwgJ3NlY3Rpb24nKTsNCgkJcmVnaXN0ZXJfY2FsbGJhY2soYXJyYXkoJHRoaXMs
ICdwdXNoX2xpbmsnKSwgJ2xpbmsnKTsNCgkJcmVnaXN0ZXJfY2FsbGJhY2soYXJyYXkoJHRo
aXMsICdwdXNoX211bHRpX2VkaXQnKSwgJ2xpc3QnKTsNCgl9DQoNCgkvKioNCgkgKiBUcmFj
a3MgYXJ0aWNsZXMuDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nICRldmVudA0KCSAqIEBwYXJh
bSBzdHJpbmcgJHN0ZXANCgkgKiBAcGFyYW0gYXJyYXkgICRyDQoJICovDQoNCglwdWJsaWMg
ZnVuY3Rpb24gcHVzaF9hcnRpY2xlKCRlLCAkcywgJHIpDQoJew0KCQlnbG9iYWwgJHR4cF91
c2VyLCAkZXZlbnQsICRzdGVwOw0KDQoJCXJhaF9wb3N0X3ZlcnNpb25zOjpnZXQoKS0+Y3Jl
YXRlX3JldmlzaW9uKA0KCQkJKHN0cmluZykgJHJbJ0lEJ10sIChzdHJpbmcpICRyWydUaXRs
ZSddLCAkdHhwX3VzZXIsICRldmVudCwgJHN0ZXAsICR0aGlzLT5mb3JtDQoJCSk7DQoJfQ0K
DQoJLyoqDQoJICogVHJhY2sgcG9zdHMuDQoJICovDQoNCglwdWJsaWMgZnVuY3Rpb24gcHVz
aF9uYW1lZCgpDQoJew0KCQlnbG9iYWwgJHR4cF91c2VyLCAkZXZlbnQsICRzdGVwOw0KDQoJ
CWlmICghJHRoaXMtPmZvcm0gfHwgIXBzKCduYW1lJykpDQoJCXsNCgkJCXJldHVybjsNCgkJ
fQ0KDQoJCXJhaF9wb3N0X3ZlcnNpb25zOjpnZXQoKS0+Y3JlYXRlX3JldmlzaW9uKA0KCQkJ
KHN0cmluZykgcHMoJ25hbWUnKSwgKHN0cmluZykgcHMoJ25hbWUnKSwgJHR4cF91c2VyLCAk
ZXZlbnQsICRzdGVwLCAkdGhpcy0+Zm9ybQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIFRyYWNr
cyBsaW5rcy4NCgkgKi8NCg0KCXB1YmxpYyBmdW5jdGlvbiBwdXNoX2xpbmsoKQ0KCXsNCgkJ
Z2xvYmFsICR0eHBfdXNlciwgJGV2ZW50LCAkc3RlcCwgJElEOw0KDQoJCWlmICghJHRoaXMt
PmZvcm0gfHwgIXBzKCdpZCcpKQ0KCQl7DQoJCQlyZXR1cm47DQoJCX0NCg0KCQlyYWhfcG9z
dF92ZXJzaW9uczo6Z2V0KCktPmNyZWF0ZV9yZXZpc2lvbigNCgkJCShzdHJpbmcpIHBzKCdp
ZCcpLCAoc3RyaW5nKSBwcygnbGlua25hbWUnKSwgJHR4cF91c2VyLCAkZXZlbnQsICRzdGVw
LCAkdGhpcy0+Zm9ybQ0KCQkpOw0KCX0NCg0KCS8qKg0KCSAqIE11bHRpLWVkaXQgdHJhY2tp
bmcuDQoJICovDQoNCglwdWJsaWMgZnVuY3Rpb24gcHVzaF9tdWx0aV9lZGl0KCkNCgl7DQoJ
CWdsb2JhbCAkdHhwX3VzZXIsICRldmVudCwgJHN0ZXAsICRJRDsNCg0KCQlpZiAoISR0aGlz
LT5mb3JtIHx8ICFwcygnZWRpdF9tZXRob2QnKSB8fCAhcHMoJ3NlbGVjdGVkJykgfHwgIWlz
X2FycmF5KHBzKCdzZWxlY3RlZCcpKSkNCgkJew0KCQkJcmV0dXJuOw0KCQl9DQoNCgkJZm9y
ZWFjaCAocHMoJ3NlbGVjdGVkJykgYXMgJGlkKQ0KCQl7DQoJCQlyYWhfcG9zdF92ZXJzaW9u
czo6Z2V0KCktPmNyZWF0ZV9yZXZpc2lvbigNCgkJCQkoc3RyaW5nKSAkaWQsICcnLCAkdHhw
X3VzZXIsICRldmVudCwgcHMoJ2VkaXRfbWV0aG9kJyksICR0aGlzLT5mb3JtDQoJCQkpOw0K
CQl9DQoJfQ0KfSI7czo0OiJ0eXBlIjtzOjE6IjQiO3M6NToib3JkZXIiO3M6MToiNSI7czo1
OiJmbGFncyI7czoxOiIzIjtzOjQ6ImhlbHAiO3M6MTQ5MjI6IjxoMT5yYWhfcG9zdF92ZXJz
aW9uczwvaDE+Cgo8cD5TdG9yZSBhbmQgcmV2aXZlIG9sZCB2ZXJzaW9ucyBvZiBhcnRpY2xl
cywgY2F0ZWdvcmllcywgc2VjdGlvbnMsIGZvcm1zIGFuZCBwYWdlcy4gUmFoX3Bvc3RfdmVy
c2lvbnMgZW1iZWRzIHJldmlzaW9uIGNvbnRyb2wgdG8gPGEgaHJlZj0iaHR0cDovL3d3dy50
ZXh0cGF0dGVybi5jb20iIHJlbD0ibm9mb2xsb3ciPlRleHRwYXR0ZXJuJiM4MjE3O3M8L2E+
IGFkbWluLXNpZGUgdXNlciBpbnRlcmZhY2UuIFRoZSBwbHVnaW4gbW9uaXRvcnMgY2hhbmdl
cyBtYWRlIGZyb20gdGhlIHdlYi1iYXNlZCBhZG1pbiBpbnRlcmZhY2UgYW5kIHN0b3JlcyB0
aGUgcmV2ZXJzaW9ucyBpbiBhIHJlcG9zaXRvcnkuPC9wPgoKPGgyPkxpc3Qgb2YgZmVhdHVy
ZXM8L2gyPgoKPHVsPgoJPGxpPlRyYWNrcyBjaGFuZ2VzIG1hZGUgdmlhIFRleHRwYXR0ZXJu
JiM4MjE3O3MgaW50ZXJmYWNlLjwvbGk+Cgk8bGk+QnkgZGVmYXVsdCB0aGUgcGx1Z2luIHRy
YWNrcyBlZGl0cyBhbmQgc2F2ZXMgb2YgYXJ0aWNsZXMsIHBhZ2VzLCBmb3JtcywgcHJlZmVy
ZW5jZXMsIGNhdGVnb3JpZXMsIHNlY3Rpb25zLCBzdHlsZXMsIGRpc2N1c3Npb24gYW5kIGxp
bmtzLiBUaGUgcGx1Z2luJiM4MjE3O3MgdHJhY2tpbmcgY2FuIGJlIGV4dGVuZGVkIHRvIG90
aGVyIGFyZWFzIGZyb20gdGhlIHBsdWdpbiYjODIxNztzIHByZWZlcmVuY2VzLjwvbGk+Cgk8
bGk+QWJpbGl0eSB0byByZXZlcnQgZWRpdHMgdG8gYSBwcmV2aW91cyByZXZpc2lvbi48L2xp
Pgo8L3VsPgoKPGgyPkJhc2ljIGNvbmNlcHQ8L2gyPgoKPHA+VGhlIHJhaF9wb3N0X3ZlcnNp
b25zIHRyYWNrcyB0aGUgY2hhbmdlcyBtYWRlIHZpYSBUZXh0cGF0dGVybiYjODIxNztzIGlu
dGVyZmFjZS4gSW5zdGVhZCBpdCB0cmFja2luZyB0aGUgZGF0YWJhc2UsIGl0IHRyYWNrcyB0
aGUgZGF0YSBzZW50IGJ5IHlvdXIgYnJvd3NlciBhbmQgcmVjZWl2ZWQgYnkgdGhlIHNlcnZl
ci4gQWZ0ZXIgaXQgaGFzIGNvbGxlY3RlZCB0aGUgYXBwcm9wcmlhdGUgZGF0YSBhbmQgZmls
dGVyZWQgaXQgdG8gYmUgdmFsaWQsIGl0IHN0YXJ0cyBpZGVudGlmeWluZyBwcm9jZXNzLiBB
ZnRlciBpdCBoYXMgdGhlIGV4YWN0IGluZm8gd2hhdCB0aGUgY2hhbmdlIGlzIGFuZCB3aGVy
ZSBpdCBzaG91bGQgZ28sIGl0IHN0b3JlcyB0aGUgaW5mb3JtYXRpb24gdG8gdGhlIHJldmlz
aW9uIGNvbnRyb2wsIHRocmVhZGVkIHVuZGVyIGFwcHJvcHJpYXRlIGl0ZW0uIDwvcD4KCjxo
Mj5SZXF1aXJlbWVudHM8L2gyPgoKPHA+UmFoX3Bvc3RfdmVyc2lvbnPigJwgbWluaW11bSBy
ZXF1aXJlbWVudHM6PC9wPgoKPHVsPgoJPGxpPlRleHRwYXR0ZXJuIDQuNS4wIG9yIG5ld2Vy
LjwvbGk+Cgk8bGk+PHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gNS4yLjAgb3IgbmV3
ZXIuPC9saT4KPC91bD4KCjxoMj5JbnN0YWxsYXRpb248L2gyPgoKPHA+VGhlIGdlbmVyYWwg
YmVoYXZpb3Igc3RhbmRzOjwvcD4KCjxvbD4KCTxsaT5HbyB0byB5b3VyIFRleHRwYXR0ZXJu
IGluc3RhbGxhdGlvbiYjODIxNztzIGFkbWluIHBhbmVsLjwvbGk+Cgk8bGk+TmF2aWdhdGUg
dG8gPGVtPkFkbWluIC8gUGx1Z2luczwvZW0+LjwvbGk+Cgk8bGk+RG93bmxvYWQgYW5kIG9w
ZW4gdGhlIHBsdWdpbiBjb2RlLjwvbGk+Cgk8bGk+Q29weSB0aGUgcGx1Z2luIGNvZGUgdG8g
dGhlIGluc3RhbGwgcGx1Z2luIGJveC48L2xpPgoJPGxpPkNsaWNrIGluc3RhbGwgYW5kIGdv
IHRocnUgdGhlIGF1dG9tYXRlZCBpbnN0YWxsYXRpb24gcHJvY2Vzcy48L2xpPgoJPGxpPkFm
dGVyIGluc3RhbGxhdGlvbiBmaW5kIHRoZSBwbHVnaW4gZnJvbSB0aGUgcGx1Z2luIGxpc3Qg
YW5kIGNsaWNrIEFjdGl2YXRlLjwvbGk+Cgk8bGk+Tm93IHRoZSBwbHVnaW4gaXMgaW5zdGFs
bGVkIGFuZCByZWFkeSB0byBiZSB1c2VkLiBUaGUgcGx1Z2luJiM4MjE3O3MgaW50ZXJmYWNl
IGNhbiBiZSBub3cgZm91bmQgZnJvbSA8ZW0+RXh0ZW5zaW9ucy9Qb3N0IFZlcnNpb25zPC9l
bT4uPC9saT4KPC9vbD4KCjxoMj5JbnRlcmZhY2U8L2gyPgoKPHA+QWZ0ZXIgYSBzdWNjZXNz
ZnVsIGluc3RhbGxhdGlvbiB5b3UgY2FuIGZpbmQgcmFoX3Bvc3RfdmVyc2lvbnPigJwgaW50
ZXJmYWNlIHVuZGVyIDxlbT5FeHRlbnNpb25zL1Bvc3QgVmVyc2lvbnM8L2VtPi4gVGhlIGlu
dGVyZmFjZSBpcyBkaXZpZGVkIHRvIHR3byBtYWluIGFyZWFzOyA8ZW0+U3VidmVyc2lvbiBy
ZXBvc2l0b3J5IGJyb3dzZXI8L2VtPiwgdGhhdCBpcyB0aGUgPGVtPm1haW48L2VtPiB0YWIs
IGFuZCA8ZW0+UHJlZmVyZW5jZXM8L2VtPi48L3A+Cgo8aDM+VGhlIE1haW4gYXJlYSwgcmVw
b3NpdG9yeSBicm93c2VyPC9oMz4KCjxwPldoZW4geW91IG9wZW4gdGhlIE1haW4gYXJlYSB5
b3Ugd2lsbCBzZWUgdGhlIGRlZmF1bHQgdmlldzsgYSBsaXN0IG9mIGl0ZW1zLiBUaGUgbGlz
dCBjb25zaXN0cyB0aGUgaXRlbXMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQgb3Igc2F2ZWQs
IGFuZCByZXZpc2lvbmVkLiBXaGVuIHlvdSBjbGljayBvbmUgb2YgdGhlc2UgaXRlbXMsIHRo
ZSBpdGVtJiM4MjE3O3MgY2hhbmdlc2V0IHdpbGwgZXhwYW5kLCBhbmQgeW91IHdpbGwgc2Vl
IHRoZSBsaXN0IG9mIGluZGl2aWR1YWwgY2hhbmdlcyBtYWRlIHRvIHRoYXQgc3BlY2lmaWMg
aXRlbS4gVGhlIGNoYW5nZXMgY2FuIGJlIHZpZXdlZCB0b28uPC9wPgoKPGgzPlByZWZlcmVu
Y2VzIHBhbmVsPC9oMz4KCjxwPlByZWZlcmVuY2VzIHBhbmVsIGxldHMgdGhlIHVzZXIgY2hh
bmdlIHNvbWUgb2YgdGhlIGNvbW1vbiBzZXR0aW5ncy4gVGhlc2UgaW5jbHVkZSBleGNsdWRl
IGZvcm0gZmllbGRzIGZyb20gdHJhY2tpbmcsIGV4Y2x1ZGUgY2hhbmdlcyBtYWRlIGJ5IHNw
ZWNpZmljIGF1dGhvcnMsIHNldCB3aGljaCBwYWdlcywgb3IgZXZlbnRzLCB0byB0cmFjaywg
YW5kIHNldCBpZGVudGlmaWNhdGlvbiBjb2RlLiBXaGVuIHlvdSBvcGVuIHRoZSBQcmVmZXJl
bmNlcyBwYW5lbCwgeW91IHdpbGwgc2VlIHRoYXQgdGhlIDxlbT5pZGVudGlmaWNhdGlvbiBj
b2RlPC9lbT4gaXMgc21hbGwgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gc25pcHBl
dC4gSXQgd2lsbCBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgaWRlbnRpZmljYXRpb24gZm9yIGEg
cG9zdGVkIGNoYW5nZS4gV2l0aG91dCBwcm9wZXIgSUQsIGEgY2hhbmdlIGNhbiBub3QgYmUg
dGhyZWFkZWQgdG8gY29ycmVjdCBzZXQgb2YgY2hhbmdlcy48L3A+Cgo8aDI+UHJlZmVyZW5j
ZXMgYW5kIGNvbmZpZ3VyYXRpb248L2gyPgoKPHA+UHJlZmVyZW5jZXMgcGFuZWwgbGV0cyB0
aGUgdXNlciBjaGFuZ2Ugc29tZSBvZiB0aGUgY29tbW9uIHNldHRpbmdzLiBBdmFpbGFibGUg
c2V0dGluZ3MgYXJlIGFzIGZvbGxvd3MuPC9wPgoKPGgzPkNvbXByZXNzIHJlcG9zaXRvcnkg
ZGF0YT88L2gzPgoKPHA+SWYgc2V0IHRvIHllcywgY3JlYXRlZCByZXBvc2l0b3J5IGRhdGEg
aXMgY29tcHJlc3NlZCB1c2luZyBHemlwLjwvcD4KCjxoMz5JZ25vcmVkIGF1dGhvcnM8L2gz
PgoKPHA+Q2hhbmdlcyBkb25lIGJ5IGF1dGhvcnMgbGlzdGVkIGFyZSBub3Qgc3RvcmVkIGlu
IHRoZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtLiBUaGV5IGZpZWxkIHRha2VzIGNvbW1hLXNl
cGFyYXRlZCBsaXN0IG9mIGxvZ2luIG5hbWVzLiBCeSBkZWZhdWx0IG5vIGF1dGhvcnMgYXJl
IGlnbm9yZWQuPC9wPgoKPGgzPlBhdGggdG8gcmVwb3NpdG9yeSBkaXJlY3Rvcnk8L2gzPgoK
PHA+TmVlZHMgZGVzY3JpcHRpb24uPC9wPgoKPGgyPkZvciBEZXZlbG9wZXJzPC9oMj4KCjxw
PkFzIG9mIHZlcnNpb24gMS4wLCByYWhfcG9zdF92ZXJzaW9ucyBoYXMgcHJvdmlkZWQgdG9v
bHMgZm9yIGRldmVsb3BlcnMuIFRoZXNlIHRvb2xzLCBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+
QVBJPC9zcGFuPiBhbmQgYWRkZWQgaG9va2luZyBwb2ludHMsIGFsbG93IGRldmVsb3BlcnMg
dG8gZXh0ZW5kIHBsdWdpbiYjODIxNztzIGZ1bmN0aW9uYWxpdHksIGFuZCBmb3IgaW5zdGFu
Y2UsIGNyZWF0ZSByZXZpc2lvbnMgZGlyZWN0bHkgZnJvbSB0aGVpciBjb2RlLCBhcyBlYXNp
bHkgYXMgY2FsbGluZyBzaW5nbGUgY2xhc3MgbWV0aG9kLjwvcD4KCjxoMz48c3BhbiBjbGFz
cz0iY2FwcyI+QVBJPC9zcGFuPjwvaDM+Cgo8cD5UaGUgPHNwYW4gY2xhc3M9ImNhcHMiPkFQ
STwvc3Bhbj4gYWxsb3dzIHBpY2tpbmcgdXAgY2hhbmdlcyAoY29tbWl0cyksIGFuZCBjcmVh
dGluZyBuZXcgcmV2aXNpb25zIGRpcmVjdGx5IGZyb20gcGx1Z2lucywgYW5kIG90aGVyIDxz
cGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IGNvZGUgc25pcHBldHMuIFRoZSA8c3BhbiBj
bGFzcz0iY2FwcyI+QVBJPC9zcGFuPiBjYW4gYmUgdXNlZCB0byBtYWtlIHJhaF9wb3N0X3Zl
cnNpb25zIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGNoYW5nZXMgZG9uZSB2aWEgcGx1Z2luJiM4
MjE3O3MgZWRpdG9yIGludGVyZmFjZS48L3A+Cgo8cD5DcmVhdGluZyBhIG5ldyByZXZpc2lv
biBpcyBhcyBlYXN5IGFzIGNhbGxpbmcgYSBzaW5nbGUgY2xhc3MgbWV0aG9kLCA8c3Ryb25n
PnJhaF9wb3N0X3ZlcnNpb25zOjpjcmVhdGVfcmV2aXNpb24obWl4ZWQgJGdyaWQsIHN0cmlu
ZyAkdGl0bGUsIHN0cmluZyAkYXV0aG9yLCBzdHJpbmcgJGV2ZW50LCBzdHJpbmcgJHN0ZXAs
IGFycmF5ICRkYXRhKTwvc3Ryb25nPi4gVGhlIGFyZ3VtZW50cyBhcmUgYXMgZm9sbG93cy48
L3A+Cgo8cD48c3Ryb25nPmdyaWQ8L3N0cm9uZz4gKHN0cmluZywgMS0yNTUgYnl0ZXMsIHJl
cXVpcmVkKTxiciAvPgpJcyBhIHVuaXF1ZSBJRCB3aGljaCBpcyB1c2VkIHRvZ2V0aGVyIHdp
dGggPGNvZGU+ZXZlbnQ8L2NvZGU+IHRvIGRldGVjdCB3aGljaCBpdGVtIHRoZSByZXZpc2lv
biBiZWxvbmdzIHRvLiBUaGUgPGNvZGU+Z3JpZDwvY29kZT4mIzgyMTc7cyB2YWx1ZSBjYW4g
YmUgYW55IHN0cmluZyBiZXR3ZWVuIDEtMjU1IGJ5dGVzLCBhcyBsb25nIGFzIGl0IGhlbHBz
IHRvIGRldGVjdCB0aGUgaXRlbSBjb3JyZWN0bHkuIE90aGVyd2lzZSB0aGUgcmV2aXNpb24g
ZG9lc24mIzgyMTc7dCBrbm93IHdoaWNoIGl0ZW0gaXQgYmVsb25ncyB0by48L3A+Cgo8cD48
c3Ryb25nPnRpdGxlPC9zdHJvbmc+IChzdHJpbmcsIDEtMjU1IGJ5dGVzLCByZXF1aXJlZCk8
YnIgLz4KSXRlbSYjODIxNztzIHRpdGxlL25hbWUuIEl0JiM4MjE3O3MgdGhlIHRoaW5nIHRo
YXQgaXMgc2hvd24gYXMgdGhlIGl0ZW0mIzgyMTc7cyBuYW1lIGluIHRoZSByZXBvc2l0b3J5
IGJyb3dzZXIuPC9wPgoKPHA+PHN0cm9uZz5hdXRob3I8L3N0cm9uZz4gKHN0cmluZywgMS02
NCBieXRlcywgcmVxdWlyZWQpPGJyIC8+ClJldmlzaW9uJiM4MjE3O3MgYXV0aG9yLiBUaGUg
PGNvZGU+YXV0aG9yPC9jb2RlPiB3aWxsIG5lZWQgdG8gYmUgYSB2YWxpZCB1c2VybmFtZS4g
VXNlcyBsb2dpbiBuYW1lcy5UIGhlcmUgaXMgbm8gbGltaXRhdGlvbiB0byBzZXQgd2hpY2gg
dXNlciBncm91cCB0aGUgdXNlciBoYXMgYmVsb25nIHRvLCBidXQgaXQgd2lsbCBoYXZlIHRv
IGJlIGEgcmVhbCB1c2VyLjwvcD4KCjxwPjxzdHJvbmc+ZXZlbnQ8L3N0cm9uZz4gKHN0cmlu
ZywgMS0yNTUgYnl0ZXMsIHJlcXVpcmVkKTxiciAvPgpBZG1pbi1zaWRlIGV2ZW50IHRoZSBy
ZXZpc2lvbiBjb21lcyBmcm9tIG9yIGJlbG9uZ3MgdG8uIFVzdWFsbHkgdGhlIDxjb2RlPmV2
ZW50PC9jb2RlPiB3b3VsZCBiZSBhIGFkbWluLXNpZGUgcGFuZWwmIzgyMTc7cyBuYW1lL2V2
ZW50LCBidXQgaXQgY2FuIHJlYWxseSBiZSBhbnl0aGluZy4gSWYgdGhlIGNvbW1pdCBjb21l
cyBmcm9tIGFuIGFkbWluLXNpZGUgcGFuZSAoYWRtaW4tc2lkZSBwbHVnaW4gZXRjKSwgdXNl
IHRoZSBwYW5lJiM4MjE3O3MgZXZlbnQsIGlmIGVsc2V3aGVyZSwgdXNlIHdoYXQgc291bmRz
IG1vc3QgYXBwcm9wcmlhdGUsIHVuaXF1ZSwgYW5kIG1vc3QgcmVjb2duaXphYmxlLjwvcD4K
CjxwPjxzdHJvbmc+c3RlcDwvc3Ryb25nPiAoc3RyaW5nLCAxLTI1NSBieXRlcywgcmVxdWly
ZWQpPGJyIC8+CkFkbWluLXNpZGUgc3RlcCB0aGUgcmV2aXNpb24gY29tZXMgZnJvbSwgb3Ig
YWN0aW9uIGNvbW1pdHRlZCAoZGVsZXRlLCBzYXZlLCBjcmVhdGUgZXRjKS4gU2FtZSBydWxl
cyBhcHBseSBhcyB0byB0aGUgPGNvZGU+ZXZlbnQ8L2NvZGU+IGFib3ZlLjwvcD4KCjxwPjxz
dHJvbmc+ZGF0YTwvc3Ryb25nPiAoYXJyYXksIHVwIHRvIDQgR0IsIHJlcXVpcmVkKTxiciAv
PgpUaGUgPGNvZGU+ZGF0YTwvY29kZT4gaXMgdGhlIGFjdHVhbCBjb21taXR0ZWQgcmV2aXNp
b24gZGF0YS4gVGhlIDxjb2RlPmRhdGE8L2NvZGU+IHRha2UmIzgyMTc7cyBhbiBhcnJheSBt
YXAsIGNvbnRhaW5pbmcgPGNvZGU+RmllbGROYW1lID0mZ3Q7IEZpZWxkRGF0YTwvY29kZT4g
cHJvcGVydHkgcGFpcnMuPC9wPgoKPHA+PGNvZGU+cmFoX3Bvc3RfdmVyc2lvbnM6OmNyZWF0
ZV9yZXZpc2lvbigpPC9jb2RlPiByZXR1cm5zIDxjb2RlPkZBTFNFPC9jb2RlPiBvbiBlcnJv
ciwgYW5kIDxjb2RlPlRSVUU8L2NvZGU+IG9uIHN1Y2Nlc3Mgb3Igd2hlbiBuZXcgcmV2aXNp
b24gaXNuJiM4MjE3O3QgbmVlZGVkLiBOZXcgcmV2aXNpb24gaXNuJiM4MjE3O3QgbmVlZGVk
IGlmIGNvbW1pdHRlZCBkYXRhIG1hdGNoZXMgbGFzdCByZXZpc2lvbi48L3A+Cgo8cD48c3Ry
b25nPkJhc2ljIHVzYWdlPC9zdHJvbmc+PC9wPgoKPHByZT48Y29kZT4vKiBTb21lIGRhdGEg
Zm9yIHRoZSByZXZpc2lvbiAqLwoKJGRhdGEgPSBhcnJheSgKCSdjb250ZW50JyA9Jmd0OyAn
SGVsbG8gV29ybGQhJywKCSdhY3RpdmUnID0mZ3Q7IDEsCgknc2t5JyA9Jmd0OyAnQmx1ZScs
CgkncGFyZW50X2l0ZW0nID0mZ3Q7ICdVbml2ZXJzZScsCik7CgovKiBDcmVhdGUgdGhlIHJl
dmlzaW9uICovCgpyYWhfcG9zdF92ZXJzaW9uczo6Z2V0KCktJmd0O2NyZWF0ZV9yZXZpc2lv
bignbXlfaXRlbV9zcGVjaWZpY19pZCcsICdJdGVtIE5hbWUnLCAnbG9naW5uYW1lJywgJ3h4
eF9teXBsdWdpbl9ldmVudCcsICdzYXZlJywgJGRhdGEpOzwvY29kZT48L3ByZT4KCjxoMz5I
b29raW5nIGFuZCBjYWxsYmFja3M8L2gzPgoKPHA+T3RoZXIgd2F5IG9mIGV4dGVuZGluZyBw
bHVnaW4mIzgyMTc7cyBmdW5jdGlvbmFsaXR5IGFuZCBwb3NzaWJpbGl0aWVzIGFyZSB0aGUg
aG9va3MuIFRoZSBjYWxsYmFjayBmdW5jdGlvbmFsaXR5IHVzZXMgVGV4dHBhdHRlcm4gNC54
JiM4MjE3O3MgcmVndWxhciB3YXkgb2YgaGFuZGxpbmcgY2FsbGJhY2tzLCB0aGUgc2FtZSBz
dHVmZiB1c2VkIGluIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5uZXQvd2lraS9pbmRl
eC5waHA/dGl0bGU9UGx1Z2luX0RldmVsb3BtZW50X0d1aWRlbGluZXMjQ2FsbGJhY2tzIiBy
ZWw9Im5vZm9sbG93Ij5QbHVnZ2FibGUgVUkgYW5kIG90aGVyIGNhbGxiYWNrIHJlZ2lzdGVy
aW5nPC9hPi4gUmFoX3Bvc3RfdmVyc2lvbiYjODIxNztzIGNhbGxiYWNrcyBhcmUgYXMgZm9s
bG93cy48L3A+Cgo8cD48c3Ryb25nPnJhaF9wb3N0X3ZlcnNpb25zLnJldmlzaW9uX2NyZWF0
ZWQ8L3N0cm9uZz48YnIgLz4KSXMgY2FsbGVkIHdoZW4gYSBuZXcgcmV2aXNpb24gaXMgc3Vj
Y2Vzc2Z1bGx5IGNyZWF0ZWQuIFJldmlzaW9uIGRhdGEgaXMgcGFzc2VkIHRvIHRoZSBob29r
ZWQgZnVuY3Rpb24uIFRoZSByZXZpc2lvbiBkYXRhIGlzIHRoZSBzYW1lIGFycmF5IG1hcCBh
cyBwYXNzZWQgdG8gdGhlIDxhIGhyZWY9IiNyYWhfcG9zdF92ZXJzaW9ucy1jcmVhdGVfcmV2
aXNpb24iIHJlbD0ibm9mb2xsb3ciPnJhaF9wb3N0X3ZlcnNpb246OmNyZWF0ZV9yZXZpc2lv
bjwvYT4gbWV0aG9kLjwvcD4KCjxoMj5MaW1pdGF0aW9uczwvaDI+Cgo8cD5UaGVyZSBhcmUg
c29tZSBsaW1pdGF0aW9ucywgYmVjYXVzZSB0aGUgd2F5IHRoZSBwbHVnaW4gd29ya3MgaXMg
d2hhdCBpdCBpcy4gTW9zdCBvYnZpb3VzIGlzIHRoYXQgaXQgd2lsbCBvbmx5IHRyYWNrIHRo
ZSBmb3JtIHN1Ym1pdHMuIElmIHNvbWUgaW50ZXJmYWNlIGRvZXNuJiM4MjE3O3QgdXNlIGZv
cm0gc3VibWl0cywgb3Igd29ya3Mgb3V0c2lkZSB5b3VyIGJyb3dzZXIgKGRlc2t0b3AgY2xp
ZW50IG9yIHNpbWlsYXIpLCBpdCB3b24mIzgyMTc7dCB0cmFjayBpdC4gTmVpdGhlciB0aGUg
cGx1Z2luIGlzIGluZm9ybWVkIGFib3V0IGRlbGV0ZSwgYW5kIHJlbmFtaW5nIGZvcm1zLCBv
ciBwYWdlcyB3aWxsIHN0YXJ0IGEgbmV3IHNldCBvZiBjaGFuZ2VzIHVuZGVyIGEgbmV3IGl0
ZW0uPC9wPgoKPGgyPkNoYW5nZWxvZzwvaDI+Cgo8aDM+VmVyc2lvbiAxLjAgJiM4MjExOyB1
cGNvbWluZzwvaDM+Cgo8dWw+Cgk8bGk+Rml4ZWQ6IFRyaW1zIGl0ZW0gbmFtZSBmcm9tIHVu
bmVlZGVkIHdoaXRlc3BhY2UgYmVmb3JlIHNhdmluZyB0aGUgcmV2aXNpb24uIEZpeGVzIGlz
c3VlIHdoZXJlIGEgbmFtZWxlc3MgaXRlbSBjb3VsZCBwb3RlbnRpYWxseSBiZSBhZGRlZCB0
byB0aGUgcmV2aXNpb24gYnJvd3Nlci48L2xpPgoJPGxpPkZpeGVkOiBpc3N1ZSB3aGVyZSBh
ZG1pbi1zaWRlIDxjb2RlPnN0ZXA8L2NvZGU+IHdhcyB1c2VkIGRpcmVjdGx5IGluIGxpbmtz
4oCcIHRhcmdldC4gSW4gc29tZSBjYXNlcyBzb21lIGxpbmtzIGNvdWxkIGJlY29tZSBpbnZh
bGlkLCBvciBjYXVzZSBleHRyYSB1bm5lZWRlZCBwcm9jZXNzaW5nIHdoaWxlIHN0aWxsIHdv
cmtpbmcuPC9saT4KPC91bD4KCjx1bD4KCTxsaT5BZGRlZDogPHNwYW4gY2xhc3M9ImNhcHMi
PkFQSTwvc3Bhbj4gYW5kIGhvb2tpbmcgcG9pbnRzIGZvciBkZXZlbG9wZXJzLiBFeHRyYSBm
dW5jdGlvbmFsaXR5IGNhbiBiZSBhZGRlZCBieSBob29raW5nIHRvIGNhbGxiYWNrIGV2ZW50
cywgYW5kIGRldmVsb3BlcnMgY2FuIGNyZWF0ZSByZXZpc2lvbnMgZGlyZWN0bHkgZnJvbSB0
aGVpciBjb2RlIChwbHVnaW5zIGV0Yykgd2l0aCBhIHNpbmdsZSBjbGFzcyBtZXRob2QuPC9s
aT4KCTxsaT5BZGRlZDogT3B0aW9uYWwgc3VwcG9ydCBmb3Igc3RvcmluZyByZXZpc2lvbiBk
YXRhIGluIHN0YXRpYyBmaWxlcywgbGVhdmluZyBvbmx5IGxlc3Mgc3RvcmFnZSBzcGFjZSBy
ZXF1aXJpbmcgbWV0YSBkYXRhIHRvIHRoZSBkYXRhYmFzZSB0YWJsZS48L2xpPgoJPGxpPkFk
ZGVkOiA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NSRjwvc3Bhbj4gcHJvdGVjdGlvbi48L2xpPgoJ
PGxpPkFkZGVkOiBEb2VzbiYjODIxNzt0IHNhdmUgYSByZXZpc2lvbiBpZiBub3RoaW5nIGNo
YW5nZWQgZnJvbSB0aGUgbGF0ZXN0IHJldmlzaW9uLjwvbGk+Cgk8bGk+QWRkZWQ6IEFkbWlu
LXNpZGUgaW50ZXJmYWNlIHVzZXMgbGFuZ3VhZ2Ugc3RyaW5ncy4gVGhlIGludGVyZmFjZSBp
cyB0cmFuc2xhdGFibGUgdXNpbmcgVGV4dHBhdHRlcm4mIzgyMTc7cyBUZXh0cGFja3MuPC9s
aT4KCTxsaT5BZGRlZDogUmVtZW1iZXJzIGxpc3Rz4oCcIHNvcnRpbmcgYW5kIGZpbHRlcmlu
ZyBvcHRpb25zIGFjcm9zcyBzZXNzaW9ucy48L2xpPgoJPGxpPkFkZGVkOiBSZW5hbWluZyBh
biBpdGVtIGlzIHJlZmxlY3RlZCBpbiB0aGUgbWFpbiBpdGVtIGxpc3RpbmcsIGluc3RlYWQg
b2YgdGhlIGl0ZW0ga2VlcGluZyB0aGUgb3JpZ2luYWwgbmFtZS48L2xpPgoJPGxpPkFkZGVk
OiBMaXN0cyBjYW4gbm93IGJlIGFycmFuZ2VkIGJ5IGNsaWNraW5nIGNvbHVtbiBoZWFkaW5n
cy48L2xpPgoJPGxpPkFkZGVkOiBHcm91cCBwZXJtaXNzaW9uIGludGVncmF0aW9uLiBGb3Ig
aW5zdGFuY2UsIG5vdyBvbmx5IFB1Ymxpc2hlcnMgY2FuIHJlbW92ZSBpdGVtcywgYW5kIG9u
bHkgYXBwcm9wcmlhdGUgaW50ZXJmYWNlIGVsZW1lbnRzIGFyZSBzaG93biB0byB1c2VycyB3
aXRoIGRpZmZlcmVudCBwZXJtaXNzaW9ucy48L2xpPgoJPGxpPkFkZGVkOiBEaXJlY3QgbGlu
ayB0byBkaWZmIHRvb2wgb24gaW5kaXZpZHVhbCBpdGVtJiM4MjE3O3MgcGFnZS4gTWFrZXMg
aXQgZWFzaWVyIHRvIGNvbXBhcmUgY2hhbmdlcyB0byB0aGUgb2xkZXIgcmV2aXNpb24uPC9s
aT4KCTxsaT5DaGFuZ2VkOiBJbnRlZ3JhdGVkIHBsdWdpbiYjODIxNztzIHByZWZlcmVuY2Vz
IHRvIFRleHRwYXR0ZXJuJiM4MjE3O3MgbmF0aXZlIGFkbWluLXNpZGUgcHJlZmVyZW5jZXMg
cGFuZWwuIEFzIHN1Y2gsIGVkaXRpbmcgcHJlZmVyZW5jZXMgaXMgcmVzdHJpY3RlZCBieSBn
cm91cCBwZXJtaXNzaW9ucy48L2xpPgoJPGxpPkNoYW5nZWQ6IERpZmYgdG9vbCBub3cgdGFr
ZXMgbmV3ZXN0IGFuZCBvbGRlc3QgcmV2aXNpb24gZnJvbSB0aGUgc2VsZWN0aW9uLCBpbnN0
ZWFkIG9mIHRoZSBmaXJzdCB0d28uPC9saT4KCTxsaT5DaGFuZ2VkOiBEb2VzbiYjODIxNzt0
IGNhcnJ5IHNvcnRpbmcgb3B0aW9ucyBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu
PnMuPC9saT4KCTxsaT5JbXByb3ZlZDogU3R5bGluZywgSmF2YVNjcmlwdCBhbmQgPHNwYW4g
Y2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IG1hcmt1cCBzdHJ1Y3R1cmUgaW4gZ2VuZXJhbC48
L2xpPgoJPGxpPkltcHJvdmVkOiBSZWR1Y2VkIGNvbnRpbnVlcyA8Y29kZT5odG1sc3BlY2lh
bGNoYXJzKCk8L2NvZGU+IGNhbGxzIGNhdXNlZCBieSB0aGUgZGlmZiBhbGdvcml0aG0uPC9s
aT4KCTxsaT5JbXByb3ZlZDogRGF0YWJhc2UgcXVlcnkgZWZmaWNpZW5jeS4gTmV3IGluc3Rh
bGxzIGdldCBzb21lIG5ldyBpbmRleGVzIHRvby48L2xpPgoJPGxpPlJlbW92ZWQ6IEVtYWls
aW5nIGZlYXR1cmUuIFJlbGF0aXZlbHkgcG9pbnRsZXNzLCBhbmQgZGlkbiYjODIxNzt0IGRv
IGFueXRoaW5nLjwvbGk+Cgk8bGk+UmVtb3ZlZDogRmlsdGVyaW5nIGJhci4gQWxsIHRoZSBv
cHRpb25zIGFyZSBpbnRlZ3JhdGVkIHRvIGVsc2V3aGVyZSwgdG8gYXBwcm9wcmlhdGUgbG9j
YXRpb25zLiBBcyBzdWNoLCBzZXBhcmF0ZSBjbHVua3kgZmlsdGVyaW5nIGJhciBpc24mIzgy
MTc7dCBuZWVkZWQuPC9saT4KCTxsaT5SZW1vdmVkOiBwcmVmZXJlbmNlIGZpZWxkcywgaW5j
bHVkaW5nIGlkZW50aWZpY2F0aW9uIGNvZGUsIGV4Y2x1ZGVkLSBhbmQgaGlkZGVuLWZpZWxk
cyBhbmQgdHJhY2tlZCBldmVudHMuPC9saT4KCTxsaT5SZS13cml0dGVuIGluIFBIUDUtbGV2
ZWwgPHNwYW4gY2xhc3M9ImNhcHMiPk9PUDwvc3Bhbj4uIFRha2VzIGFkdmFudGFnZSBvZiBj
aGFpbmluZyBhbmQgc28gb24uPC9saT4KCTxsaT5Ob3cgcmVxdWlyZXMgVGV4dHBhdHRlcm4g
dmVyc2lvbiA0LjUuMCBvciBuZXdlci48L2xpPgo8L3VsPgoKPGgzPlZlcnNpb24gMC45ICYj
ODIxMTsgMjAxMS8wNi8xODwvaDM+Cgo8dWw+Cgk8bGk+Rml4ZWQ6IERvZXNuJiM4MjE3O3Qg
c3BpdCBvdXQgZXh0cmEgY29udGVudCB0byB0aGUgdG9wIG9mIHRoZSBwYWdlIGlmIEphdmFT
Y3JpcHQgaXMgZGlzYWJsZWQuPC9saT4KCTxsaT5GaXhlZDogRXJyb3IgaW4gY29uZGl0aW9u
IHRoYXQgY2hvc2UgaWYgSmF2YVNjcmlwdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHBhZ2Ug
b3Igbm90LjwvbGk+Cgk8bGk+QWRkZWQ6IE5vdyBpbmZvcm1zIHRoZSB1c2VyIGlmIHJlbW92
aW5nIGl0ZW1zIGZyb20gdGhlIGRhdGFiYXNlIGZhaWxlZC48L2xpPgoJPGxpPkFkZGVkOiBV
bmluc3RhbGxlciB0aGF0IGlzIHJhbiB3aGVuIHBsdWdpbiBpcyBkZWxldGVkLiBEcm9wcyBw
bHVnaW4gc3BlY2lmaWMgdGFibGVzLjwvbGk+Cgk8bGk+Q2hhbmdlZDogTmV3IGRhdGFiYXNl
IHRhYmxlcyBnZXQgPHNwYW4gY2xhc3M9ImNhcHMiPlVURjwvc3Bhbj4tOCBhcyB0aGVpciBj
aGFyc2V0IGJ5IGRlZmF1bHQgaW5zdGVhZCBvZiB1c2luZyBzZXJ2ZXIgZGVmYXVsdC48L2xp
PgoJPGxpPkNoYW5nZWQ6IE1ha2Ugc3VyZSBzZWxlY3Rpb24gaXNuJiM4MjE3O3QgZW1wdHku
PC9saT4KCTxsaT5DaGFuZ2VkOiBJbXByb3ZlZCBKYXZhU2NyaXB0IGJhc2VkIG11bHRpLWVk
aXQgc2NyaXB0LjwvbGk+Cgk8bGk+Tm93IGNvbXBhdGlibGUgd2l0aCBUZXh0cGF0dGVybiA0
LjQuMSBhbmQgbmV3ZXI7IHN1cHBvcnRzIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1JGPC9zcGFu
PiBwcm90ZWN0aW9uIGFkZGVkIGluIDQuNC4xLCBmcm9tIG5vdyBvbiBkb2VzbiYjODIxNzt0
IHN0b3JlIHRva2VucyBhbmQgdXNlcyB0b2tlbnMgd2hlbiByZXZlcnRpbmcgdG8gb2xkZXIg
dmVyc2lvbi48L2xpPgo8L3VsPgoKPGgzPlZlcnNpb24gMC44ICYjODIxMTsgMjAxMC8xMC8x
OTwvaDM+Cgo8dWw+Cgk8bGk+QWRkZWQgdG9vbC10aXBzIHRvIHRoZSBwYWdpbmF0aW9uJiM4
MjE3O3MganVtcCBsaW5rcyAoPGVtPkdvIHRvIHRoZSBmaXJzdCBwYWdlPC9lbT4gYW5kIDxl
bT5HbyB0byB0aGUgbGFzdCBwYWdlPC9lbT4pLjwvbGk+Cgk8bGk+UmVtb3ZlZCB1c2VybmFt
ZSBmcm9tIHNob3dpbmcgdXAgaW4gdGhlIG1haWxzLjwvbGk+Cgk8bGk+VW5pZmllZCBjb25k
aXRpb25hbCBzdGF0ZW1lbnRzOyBub3cgYWxsIHVzZSA8Y29kZT58fDwvY29kZT4gYW5kIDxj
b2RlPiZhbXA7JmFtcDs8L2NvZGU+IG9wZXJhdG9ycyBpbnN0ZWFkIG9mIHN5bm9ueW0gbWFz
aG1peG1lc3MuPC9saT4KPC91bD4KCjxoMz5WZXJzaW9uIDAuNyAmIzgyMTE7IDIwMTAvMDYv
MjE8L2gzPgoKPHVsPgoJPGxpPkZpeC9jaGFuZ2U6IERpZmYgdG9vbCBzaG93cy9jb21wYXJl
cyBhcnJheSBkYXRhIGFzIGJsb2Nrcy4gQXJyYXkmIzgyMTc7cyBhcmUgaW1wbG9kZWQgYW5k
IHZhbHVlcyBhcmUgc2VwYXJhdGVkIHdpdGggbGluZSBicmVha3MuPC9saT4KPC91bD4KCjxo
Mz5WZXJzaW9uIDAuNiAmIzgyMTE7IDIwMTAvMDYvMjA8L2gzPgoKPHVsPgoJPGxpPkZpeGVk
OiBpbnN0YW5jZXMgb2YgbWlzc2luZyA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4g
ZXNjYXBpbmcgKDxzcGFuIGNsYXNzPSJjYXBzIj5QT1NUPC9zcGFuPiBrZXlzKS48L2xpPgoJ
PGxpPkZpeGVkOiBub3cgdGhlIHBsdWdpbiBjaGVja3MgaWYgdGhlIHJldmlzaW9uZWQgZGF0
YSBjb250YWlucyBhbiBhcnJheSAoPGNvZGU+Jmx0O2lucHV0IG5hbWU9JnF1b3Q7Zm9vW2Jh
cl0mcXVvdDsgLyZndDs8L2NvZGU+IGV0YykgYW5kIHNob3dzIGl0IGNvcnJlY3RseS4gPGEg
aHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0y
MzA1NDEjcDIzMDU0MSIgcmVsPSJub2ZvbGxvdyI+VGhhbmsgeW91IGZvciByZXBvcnRpbmcs
IFRKPC9hPi48L2xpPgo8L3VsPgoKPGgzPlZlcnNpb24gMC41ICYjODIxMTsgMjAxMC8wNi8x
NTwvaDM+Cgo8dWw+Cgk8bGk+UmVtb3ZlZCB0d2ljZSBwcmVzZW50ZWQgY29uZGl0aW9uYWwu
PC9saT4KPC91bD4KCjxoMz5WZXJzaW9uIDAuNCAmIzgyMTE7IDIwMTAvMDYvMTE8L2gzPgoK
PHVsPgoJPGxpPkFkZGVkIGRpZmYgdG9vbC4gVGhlIGZlYXR1cmUgaXMgZm91bmQgZnJvbSB0
aGUgbGlzdCB2aWV3JiM4MjE3O3MgbXVsdGllZGl0OiBjaGVjayB0d28gcmV2aXNpb25zIGFu
ZCBzZWxlY3QgPGVtPsKrRGlmZsK7PC9lbT4gZnJvbSB0aGUgZHJvcC1kb3duLiBUaGUgZGlm
ZiBmZWF0dXJlIHVzZXMgPGEgaHJlZj0iaHR0cDovL3d3dy5wYXVsYnV0bGVyLm9yZyIgcmVs
PSJub2ZvbGxvdyI+UGF1bCBCdXRsZXImIzgyMTc7czwvYT4gPGEgaHJlZj0iaHR0cDovL3Bh
dWxidXRsZXIub3JnL2FyY2hpdmVzL2Etc2ltcGxlLWRpZmYtYWxnb3JpdGhtLWluLXBocC8i
IHJlbD0ibm9mb2xsb3ciPlNpbXBsZSBEaWZmIEFsZ29yaXRobTwvYT4uPC9saT4KCTxsaT5B
ZGRlZCA8ZW0+QXJlIHlvdSBzdXJlPzwvZW0+IGNoZWNrcyB0byB0aGUgbXVsdGllZGl0Ljwv
bGk+CjwvdWw+Cgo8aDM+VmVyc2lvbiAwLjMgJiM4MjExOyAyMDEwLzA2LzA5PC9oMz4KCjx1
bD4KCTxsaT5GaXhlZDogbm8gbG9uZ2VyIHVuc2V0cyBJRCBhbmQgVGl0bGUgZnJvbSB0aGUg
Zm9ybXMuIFRoZXNlIHdlcmUgbGVmdG92ZXJzIGZyb20gdGhlIGRldmVsb3BtZW50IHBlcmlv
ZC4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhw
P3BpZD0yMjk5NDMjcDIyOTk0MyIgcmVsPSJub2ZvbGxvdyI+VGhhbmsgeW91IGZvciByZXBv
cnRpbmcsIEphbjwvYT4uPC9saT4KPC91bD4KCjxoMz5WZXJzaW9uIDAuMiAmIzgyMTE7IDIw
MTAvMDYvMDc8L2gzPgoKPHVsPgoJPGxpPlVwZGF0ZWQgb3JpZ2luYWwgaW5zdGFsbGVyIHRv
IGFkZCBtb3JlIG1vbml0b3JlZCBwYWdlcy4gPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRw
YXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0yMjk4NTIjcDIyOTg1MiIgcmVsPSJub2Zv
bGxvdyI+VGhhbmsgeW91IGZvciByZS1wb3N0aW5nLCBEYWxlPC9hPi4gQ3VycmVudCB1c2Vy
cyBjYW4gYWRkIHRvIHRoZSBmaWVsZCBmb2xsb3dpbmcgY29kZTogPGNvZGU+YXJ0aWNsZTpl
ZGl0LCBhcnRpY2xlOmNyZWF0ZSwgYXJ0aWNsZTpwdWJsaXNoLCBhcnRpY2xlOnNhdmUsIHBh
Z2U6cGFnZV9jcmVhdGUsIHBhZ2U6cGFnZV9lZGl0LCBwYWdlOnBhZ2Vfc2F2ZSwgZm9ybTpm
b3JtX2NyZWF0ZSwgZm9ybTpmb3JtX2VkaXQsIGZvcm06Zm9ybV9zYXZlLCBwcmVmczpwcmVm
c19zYXZlLCBwcmVmczphZHZhbmNlZF9wcmVmc19zYXZlLCBjYXRlZ29yeTpjYXRfYXJ0aWNs
ZV9jcmVhdGUsIGNhdGVnb3J5OmNhdF9pbWFnZV9jcmVhdGUsIGNhdGVnb3J5OmNhdF9maWxl
X2NyZWF0ZSwgY2F0ZWdvcnk6Y2F0X2xpbmtfY3JlYXRlLCBjYXRlZ29yeTpjYXRfYXJ0aWNs
ZV9zYXZlLCBjYXRlZ29yeTpjYXRfaW1hZ2Vfc2F2ZSwgY2F0ZWdvcnk6Y2F0X2ZpbGVfc2F2
ZSwgY2F0ZWdvcnk6Y2F0X2xpbmtfc2F2ZSwgc2VjdGlvbjpzZWN0aW9uX2NyZWF0ZSwgc2Vj
dGlvbjpzZWN0aW9uX3NhdmUsIGxpbms6bGlua19wb3N0LCBsaW5rOmxpbmtfc2F2ZSwgZGlz
Y3VzczpkaXNjdXNzX3NhdmUsIGltYWdlOmltYWdlX3NhdmUsIGZpbGU6ZmlsZV9zYXZlLCBj
c3M6Y3NzX3NhdmU8L2NvZGU+PC9saT4KPC91bD4KCjxoMz5WZXJzaW9uIDAuMSAmIzgyMTE7
IDIwMTAvMDYvMDc8L2gzPgoKPHVsPgoJPGxpPkluaXRpYWwgcmVsZWFzZS48L2xpPgo8L3Vs
PiI7czozOiJtZDUiO3M6MzI6IjYxN2I3N2EzYzNjZjZlNzUxODEwNjllZTkzZmMxMTM0Ijt9

Offline

Board footer

Powered by FluxBB