FAQ
6.0.24
OTRS AG
https://otrs.com/
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
- Updated minimum framework version to OTRS 6.0.26.
- Updated translations.
- Updated copyright.
- Updated translations, thanks to all translators.
- Fixed: Fixed Limit and FetchrowArray() wrapped in while, thanks to Maxim (PR#78).
- Changed system configuration from text to select, improved description.
- Fixed: Wrong layout in personal preferences (bug#14600).
- Updated minimum framework version to OTRS 6.0.22.
- Fixed: FAQ Add and Edit calls old configuration settings (bug#14776).
- Updated translations, thanks to all translators.
- Fixed: Sorting by dynamic fields in FAQ search result does not work (bug#12780).
- Updated translations, thanks to all translators.
- Updated minimum framework version to OTRS 6.0.20.
- Disabled translation for permission groups.
- Modernized FAQ articles on a page input field.
- Fixed: FAQ state list does not honor FAQ::Agent::StateTypes config (bug#14515).
- Updated translations, thanks to all translators.
- Fixed Portuguese language file.
- Updated framework files to OTRS 6.0.17.
- Updated translations, thanks to all translators.
- Fixed: FAQ History Entry created on install shows first FAQ entry double in FAQ journal (bug#13762).
- Updated framework files to OTRS 6.0.17.
- Updated translations, thanks to all translators.
- Updated copyright.
- Updated minimum framework version to 6.0.15.
- Code cleanup.
- Set minimum framework version back to 6.0.13.
- Updated translations, thanks to all translators.
- Fixed: Editing FAQ article deletes before stored inline picture (bug#14232).
- Updated translations, thanks to all translators.
- Fixed: After deleting image from the FAQ article, it's still stored in the DB (bug#13871).
- Fixed: FAQ CSV Stats always 10 lines long (bug#11041).
- Fixed: FAQ groups faq and faq_admin are still in use in search screens (bug#14068).
- Updated translations, thanks to all translators.
- Fixed: The category tree in the customer interface is different from the agent portal (bug#14053).
- Revert "Fixed: FAQ actions may have bad influence on a systems performance."
- Fixed: FAQ actions may have bad influence on a systems performance.
- Fixed: When deleting a FAQ attachment in AgentticketCompose, the delete button causes a submit if the answer (bug#13704).
- Updated license information.
- Fixed: FAQCount() does not count but returns the count of the last category (bug#7980).
- Fixed AgentFAQJournal Selenium test.
- Follow-up fix: Old settings in FAQ System Configuration (bug#13875).
- Fixed: FAQ journal should check the groups of categories, thanks to Renee (PR#76).
- Updated translations, thanks to all translators.
- Follow up: In agent FAQ search is not modernized (bug#12698).
- Fixed: CustomerFAQExplorer does not show pagination if configured SearchLimit is reached (bug#13885).
- Fixed: Old settings in FAQ System Configuration (bug#13875).
- Fixed: Inconsistent field 'Add another attribute' in AgentFAQSearch compared to framework (bug#13895).
- Code cleanup.
- Updated translations, thanks to all translators.
- Fixed: Misleading documentation for FAQRelatedArticles in AgentFrontend (bug#13803).
- Updated translations, thanks to all translators.
- Fixed: Broken reference to Date::Pcalc in FAQAccess.pm (bug#12304).
- Fixed: Wrong Sysconfig descriptions for public interface (bug#13739).
- Updated translations, thanks to all translators.
- Fixed bug#11646 - SQL quoting of category IDs ineffective.
- Fixed bug#11889 - CategoryAdd returns wrong CategoryID if subcategory name already exists.
- Fixed bug#10650 - Navigation broken when keyword search result opened in CSS overlay.
- Updated translations, thanks to all translators.
- Fixed: FAQ Permissions not working correctly in customer frontend (bug#12326).
- Updated translations, thanks to all translators.
- Fixed bug#11446 - Refresh after language is added tries to add the language again.
- Fixed bug#13443 - Personal settings are not displayed.
- Fixed bug#13416 - Trying to enable multi-language feature from language management leads to an error.
- Fixed bug#13421 - FAQ link for ticket compose does not show for new default groups.
- Added related FAQ article for agents feature (for OTRS Business Solution™).
- Updated translations, thanks to all translators.
- Improved display of 'FAQ::Default::State' setting.
- Updated documentation (Config chapter).
- Bug#12063 - Some characters overflow in titles.
- Updated translations, thanks to all translators.
- Fixed upgrade from lower than 4.0.1.
- Bug#13311 - Can't insert FAQ into new ticket.
- Updated translations, thanks to all translators.
- Changed default group configuration and implemented migration path for existing systems. FAQ specific user groups will no longer be automatically created on new systems.
- Changed access keys for several screens in order to avoid conflicts.
- Initial version for OTRS 6.
- Updated translations, thanks to all translators.
- Replaced UserFistname, UserLastname in favor of a more flexible UserFullname, thanks to Dian Tong Software.
The FAQ/knowledge base.
Die FAQ-/Wissensdatenbank.
A GyIK/tudásbázis csomag.
6.0.x
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to install the OTRS package FAQ.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WILLKOMMEN</strong>
<br/>
<br/>
Sie sind im Begriff das OTRS-Paket FAQ zu installieren.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>BIENVENIDO</strong>
<br/>
<br/>
Usted está a punto de instalar el paquete FAQ de OTRS.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ÜDVÖZÖLJÜK</strong>
<br/>
<br/>
Ön az FAQ OTRS csomag telepítésére készül.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>NOTICE</strong>
<br/>
<br/>
The menu items that were added by this package will be visible after you log-in to the system again.
<br/>
<br/>
To create new FAQ article you need to create categories and define the permission who can access categories.
<br/>
<br/>
If you are using the FAQ approval feature, you need to create a group and define a queue.
You will find further information in the sysconfig in FAQ -> Core::Approval.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>HINWEIS</strong>
<br/>
<br/>
Die von diesem Paket hinzugefügten Menü-Punkte sind erst nach einem erneuten Anmeldevorgang im System sichtbar.
<br/>
<br/>
Um FAQ Artikel erstellen zu können müssen zuerst Kategorien erstellt und die Berechtigungs-Gruppen dieser Kategorien definiert werden.
<br/>
<br/>
Wenn Sie das FAQ-Freigabe-Feature verwenden möchten, müssen Sie eine Gruppe dafür anlegen und eine Queue definieren.
Weitere Informationen finden Sie in der Sysconfig unter FAQ -> Core::Approval.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>AVISO</strong>
<br/>
<br/>
Los elementos del menu que fueron agregados por este paquete serán visibles después de que cierre y abra su sesión de nuevo.
<br/>
<br/>
Para crear un nuevo artículo FAQ usted necesita crear una categoría y definir los permisos de quienes pueden acceder esta categoría.
<br/>
<br/>
Si usted está utilizando la funcionalidad de "FAQ approval", necesita crear un grupo y definir una cola.
Encontrará más información en sysconfig, en FAQ -> Core::Approval.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>FIGYELMEZTETÉS</strong>
<br/>
<br/>
Azok a menüpontok, amelyeket ez a csomag adott hozzá, azután lesznek láthatóak, miután ismét bejelentkezik a rendszerbe.
<br/>
<br/>
Egy új GyIK bejegyzés létrehozásához kategóriákat kell létrehoznia, és meg kell határoznia a jogosultságokat, hogy ki férhet hozzá a kategóriákhoz.
<br/>
<br/>
Ha használja a GyIK jóváhagyás szolgáltatást, akkor létre kell hoznia egy csoportot, és meg kell határoznia egy várólistát.
További információkat fog találni a rendszerbeállításokban a FAQ -> Core::Approval alcsoportban.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ATTENTION</strong>
<br/>
<br/>
If you uninstall this package, all database tables that were created during installation will be deleted.
All data from these tables will be irrevocably lost!
<br/>
<br/>
All Dynamic Fields created for this package and its data will be deleted permanently.
<br/>
<br/>
The groups 'faq' and 'faq_admin' that were created during package installation will be deactivated.
You can activate these groups again in the admin area.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ACHTUNG</strong>
<br/>
<br/>
Bei der Deinstallation werden die von diesem Paket angelegten Datenbank-Tabellen gelöscht.
Alle darin enthaltenen Daten gehen unwiderruflich verloren!
<br/>
<br/>
Alle dynamischen Felder für dieses Paket erstellt und seine Daten dauerhaft gelöscht werden.
<br/>
<br/>
Die von diesem Paket angelegten Gruppen 'faq' und 'faq_admin' werden deaktiviert.
Sie können jederzeit im Admin-Bereich wieder aktiviert werden.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ATENCIÓN</strong>
<br/>
<br/>
Si usted desinstala este paquete, todas las tablas de la base de datos creadas durante la instalación serán borradas.
¡Todos los datos de esas tablas se perderán irrevocablemente!.
<br/>
<br/>
Todos los Campos Dinámicos creados para este paquete y sus datos serán borrados permanentemente.
<br/>
<br/>
Los grupos 'faq' y 'faq_admin' que fueron creados durante la instalación del paquete serán desactivados.
Usted puede activar estos grupos nuevamente en el área de admin.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>FIGYELEM</strong>
<br/>
<br/>
Ha eltávolítja ezt a csomagot, akkor a telepítés során létrehozott összes adatbázistábla törlésre kerül.
Az ezekben a táblákban lévő összes adat visszavonhatatlanul el fog veszni!
<br/>
<br/>
A csomaghoz létrehozott összes dinamikus mező és azok adatai véglegesen törölve lesznek.
<br/>
<br/>
A csomagtelepítés során létrehozott „faq” és „faq_admin” csoport ki lesz kapcsolva.
Ezeket a csoportokat az adminisztrációs területen tudja ismét bekapcsolni.
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WELCOME</strong>
<br/>
<br/>
You are about to upgrade the OTRS package FAQ.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>WILLKOMMEN</strong>
<br/>
<br/>
Sie sind im Begriff das OTRS-Paket FAQ zu aktualisieren.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>BIENVENIDO</strong>
<br/>
<br/>
Usted está apunto de actualizar el paquete FAQ de OTRS.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
<br/>
<strong>ÜDVÖZÖLJÜK</strong>
<br/>
<br/>
Ön az FAQ OTRS csomag frissítésére készül.<br/>
<br/>
<br/>
((enjoy))<br/>
<br/>
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeInstall();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgrade();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeSpecial();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_1();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_91();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_5_0_92();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUninstall();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeReinstall();
45213c653c3418f438094350d42c2fcb744108d7
2020-01-24 17:19:20
opms.otrs.com
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgVXNlIC4uLy4uLyBhcyBsaWIgbG9jYXRpb24uCnVzZSBGaW5kQmluIHF3KCRCaW4pOwp1c2UgbGliICIkQmluLy4uLy4uIjsKdXNlIGxpYiAiJEJpbi8uLi8uLi9LZXJuZWwvY3Bhbi1saWIiOwp1c2UgbGliICIkQmluLy4uLy4uL0N1c3RvbSI7CgojIDA9b2ZmOzE9b247Cm15ICREZWJ1ZyA9IDA7CgpwcmludCAibG9jYXRpb246IHB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXJcbiI7CnByaW50ICJcbiI7CnByaW50ICI8YSBocmVmPSdwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyJz5tb3ZlZDwvYT5cbiI7Cg==
IyEvdXNyL2Jpbi9wZXJsCiMgLS0KIyBmYXEucGwgLSB0aGUgZ2xvYmFsIENHSSBoYW5kbGUgZmlsZSBmb3IgT1RSUwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEyIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLm9yZy8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQUZGRVJPIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKIyBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKIyBvciBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIFVzZSAuLi8uLi8gYXMgbGliIGxvY2F0aW9uLgp1c2UgRmluZEJpbiBxdygkQmluKTsKdXNlIGxpYiAiJEJpbi8uLi8uLiI7CnVzZSBsaWIgIiRCaW4vLi4vLi4vS2VybmVsL2NwYW4tbGliIjsKdXNlIGxpYiAiJEJpbi8uLi8uLi9DdXN0b20iOwoKdXNlIHZhcnMgcXcoQElOQyk7CgojIDA9b2ZmOzE9b247Cm15ICREZWJ1ZyA9IDA7CgojIENoZWNrIEBJTkMgZm9yIG1vZF9wZXJsIChhZGQgbGliIHBhdGggZm9yICJyZXF1aXJlIG1vZHVsZSIhKS4KcHVzaCAoQElOQywgIiRCaW4vLi4vLi4iLCAiJEJpbi8uLi8uLi9LZXJuZWwvY3Bhbi1saWIiKTsKCnByaW50ICJsb2NhdGlvbjogcHVibGljLmZwbD9BY3Rpb249UHVibGljRkFRRXhwbG9yZXJcbiI7CnByaW50ICJcbiI7CnByaW50ICI8YSBocmVmPSdwdWJsaWMuZnBsP0FjdGlvbj1QdWJsaWNGQVFFeHBsb3Jlcic+bW92ZWQ8L2E+XG4iOwo=
iVBORw0KGgoAAAANSUhEUgAAA1wAAANwCAIAAAC06fzeAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdd1iT5/o48DsJhCnIVpkyBGSLilRUNogFLYoiYp3Yak+to1Xb+tXqUetercdZxUktqIALQSjKqkdBQFGLIqJWZKkJO2T8/nja95eThBAZYXh/rnOdK7zjeV9iAw/Pew+aQCAAhBBCCCH0YaN39w0ghBBCCKHuh5NChBBCCCGEk0KEEEIIIYSTQoQQQgghBDgpRAghhBBCgJNChBBCCCEEOClECCGEEEKAk0KEEEIIIQQ4KUQIIYQQQgCgIH13cXGxfO4DSVFbW9vdt4AQQgihvsDV1bW1XW1MClFPYGk1rLtvASGEEEK93pPHeVL24uNjhBBCCCGEk0KEEEIIISSfSWFtbe2zZ894PJ4croUQQgghhNrhvSeFtbW11tbW9kJ+/fVXsuvt27d2dna7d++mDq6qqoqIiAgODl6+fPlHH320a9cuPp8vffwbN24sXLiwsbExJibmfe8NIYQQQgi1TzsTTQoLC+l00QnlpUuXHB0dExMTv/rqKxqNBgDz588PDg6eP38+AFRXV8+ePVtHR+fTTz+VMvKoUaOcnJzq6+sPHTo0ffr09t0eQgghhBB6L535+PjChQurVq2i0+l5eXkA8PLlSwAgM0IA0NXVjYiISE9PFznr0KFD/v7+UVFR27Ztu3nzZlFR0f79+1euXFlVVfXNN9904u0hhBBCCKHWtHOlcP369eRF//79lyxZAgCPHz+uq6tzcnIKCgq6ePGiq6vrzZs37e3thc/y9fXdvHlzY2OjiooK2VJaWnrt2rW4uLjnz5/Pnj3b0tJSIBA8f/58y5YtYWFh27Zt68C3hhBCCCGEZNXOlUJnZ2cXFxcXF5ehQ4eSLfHx8TY2NpmZmdra2leuXGlpaamurm5oaBA+S1VVtbm5WXhLamrqxIkTNTQ07O3tP/roo/bdDEIIIYQQ6qB2rhSGhIQIxxTyeLzExMTRo0cnJSUBgKqqakZGhoWFxfHjx1taWhQVFQUCQU1NTWFhoZWVFbVMCAAlJSUuLi7ktaamZge+EYQQQggh1H6dE1OYnZ1tYGCwefPmDRs2bNiwISIiIiEhwc/PT11d/fjx4wDw/PnzGTNmbN68eenSpcInWltbp6en8/n8urq6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B6b9BcJwImP3oPpWQEBAX48Of1EIAB0dT/9RehWoVAaDTqfi2mpkkyuUMpkMFMoZQfyxY62Hezp9wtSNXCMlY8YD0/7CYDiRkRsBRSFCCCGEEBpq+otC/Jk7hBBCCCGERSFCCCGEEMKiECGEEEIIARaFCCGEEEIIsChECCGEEEKARSFCCCGEEAIsChFCCCGEEGBRiBBCCCGEAItChBBCCCEEWBQihBBCCCHAohAhhBBCCAEWhQghhBBCCLAoRAghhBBCgEUhQgghhBACLAoRQgghhBBgUYgQQgghhACLQoQQQgghBFgUIoQQQgghAKD32+NB9a0XMA+EEEIIITSMKEqlcrjngBBCCCGEhhnuPkYIIYQQQlgUIoQQQgghLAoRQgghhBBgUYgQQgghhACLQoQQQgghBFgUIoQQQgghwKIQIYQQQggBFoUIIYQQQggA/j9rfWeWKWKoeAAAAABJRU5ErkJggg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+aW50ZXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5leHRlcm5hbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5leHRlcm5hbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RGVmYXVsdDo6Um9vdENhdGVnb3J5TmFtZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IGNhdGVnb3J5IG5hbWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+RkFRPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeUNvbW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBjYXRlZ29yeSBuYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFRPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPmRlZmF1bHQgY29tbWVudDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpJdGVtOjpWb3Rpbmc6OlJhdGVzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6Okl0ZW06OlZvdGluZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMDAiPjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ijc1Ij40PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI1MCI+MzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpJdGVtOjpWb3Rpbmc6OlNob3ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpJdGVtOjpWb3Rpbmc8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iaW50ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+aW50ZXJuYWwgKGFnZW50KTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZXh0ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+ZXh0ZXJuYWwgKGN1c3RvbWVyKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkV4cGxvcmVyOjpQYXRoOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgRkFRIHBhdGggeWVzL25vLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHREZWNpbWFsUGxhY2VzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpFeHBsb3Jlcjo6SXRlbUxpc3Q6OlZvdGluZ1Jlc3VsdENvbG9ycyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+cmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSI3MCI+b3JhbmdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMDAiPmdyZWVuPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlF1aWNrU2VhcmNoOjpTaG93IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InB1YmxpYyIgVHJhbnNsYXRhYmxlPSIxIj5wdWJsaWMgKHB1YmxpYyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpFeHBsb3Jlcjo6TGFzdENoYW5nZTo6U2hvdyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iaW50ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+aW50ZXJuYWwgKGFnZW50KTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iZXh0ZXJuYWwiIFRyYW5zbGF0YWJsZT0iMSI+ZXh0ZXJuYWwgKGN1c3RvbWVyKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHVibGljIiBUcmFuc2xhdGFibGU9IjEiPnB1YmxpYyAocHVibGljKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q2hhbmdlOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpFeHBsb3Jlcjo6TGFzdENoYW5nZTo6TGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjM8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okxhc3RDcmVhdGU6OlNob3ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJpbnRlcm5hbCIgVHJhbnNsYXRhYmxlPSIxIj5pbnRlcm5hbCAoYWdlbnQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJleHRlcm5hbCIgVHJhbnNsYXRhYmxlPSIxIj5leHRlcm5hbCAoY3VzdG9tZXIpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwdWJsaWMiIFRyYW5zbGF0YWJsZT0iMSI+cHVibGljIChwdWJsaWMpPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6Okxhc3RDcmVhdGU6OlNob3dTdWJDYXRlZ29yeUl0ZW1zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6RXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkV4cGxvcmVyOjpMYXN0Q3JlYXRlOjpMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpFeHBsb3Jlcjo6VG9wMTA6OlNob3ciIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJpbnRlcm5hbCIgVHJhbnNsYXRhYmxlPSIxIj5pbnRlcm5hbCAoYWdlbnQpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJleHRlcm5hbCIgVHJhbnNsYXRhYmxlPSIxIj5leHRlcm5hbCAoY3VzdG9tZXIpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwdWJsaWMiIFRyYW5zbGF0YWJsZT0iMSI+cHVibGljIChwdWJsaWMpPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlRvcDEwOjpMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RXhwbG9yZXI6OlRvcDEwOjpTaG93U3ViQ2F0ZWdvcnlJdGVtcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGQVFIb29rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5GQVEjPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OlRpdGxlU2l6ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj41MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpEZWZhdWx0OjpTdGF0ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iaW50ZXJuYWwgKGFnZW50KSI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9ImludGVybmFsIChhZ2VudCkiIFRyYW5zbGF0YWJsZT0iMSI+aW50ZXJuYWwgKGFnZW50KTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iZXh0ZXJuYWwgKGN1c3RvbWVyKSIgVHJhbnNsYXRhYmxlPSIxIj5leHRlcm5hbCAoY3VzdG9tZXIpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJwdWJsaWMgKGFsbCkiIFRyYW5zbGF0YWJsZT0iMSI+cHVibGljIChhbGwpPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6QXBwcm92YWxSZXF1aXJlZCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6QXBwcm92YWw8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkFwcHJvdmFsR3JvdXAiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkFwcHJvdmFsPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPnVzZXJzPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkFwcHJvdmFsUXVldWUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkFwcHJvdmFsPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPkZBUV9BcHByb3ZhbDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldFN1YmplY3QiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpBcHByb3ZhbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj5GQVEgYXBwcm92YWwgcmVxdWlyZWQgZm9yIEZBUSMgJmx0O09UUlNfRkFRX05VTUJFUiZndDs8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6QXBwcm92YWxUaWNrZXRCb2R5IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6QXBwcm92YWw8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlRleHRhcmVhIj5IaSwKCmEgbmV3IEZBUSBhcnRpY2xlIG5lZWRzIHlvdXIgYXBwcm92YWwgYmVmb3JlIGl0IGNhbiBiZSBwdWJsaXNoZWQuCgogIEZBUSMgICA6ICZsdDtPVFJTX0ZBUV9OVU1CRVImZ3Q7CiAgVGl0bGUgIDogJmx0O09UUlNfRkFRX1RJVExFJmd0OwogIEF1dGhvciA6ICZsdDtPVFJTX0ZBUV9BVVRIT1ImZ3Q7CiAgU3RhdGUgIDogJmx0O09UUlNfRkFRX1NUQVRFJmd0OwoKSWYgeW91IHdhbnQgdG8gZG8gdGhpcywgY2xpY2sgb24gdGhpcyBsaW5rOgoKJmx0O09UUlNfQ09ORklHX0h0dHBUeXBlJmd0OzovLyZsdDtPVFJTX0NPTkZJR19GUUROJmd0Oy8mbHQ7T1RSU19DT05GSUdfU2NyaXB0QWxpYXMmZ3Q7aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9Jmx0O09UUlNfRkFRX0lURU1JRCZndDsKCllvdXIgT1RSUyBOb3RpZmljYXRpb24gTWFzdGVyCiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldFByaW9yaXR5IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6QXBwcm92YWw8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkVudGl0eSIgVmFsdWVFbnRpdHlUeXBlPSJQcmlvcml0eSIgVmFsdWVSZWdleD0iIj4zIG5vcm1hbDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpBcHByb3ZhbFRpY2tldERlZmF1bHRTdGF0ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OkFwcHJvdmFsPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJFbnRpdHkiIFZhbHVlRW50aXR5VHlwZT0iU3RhdGUiIFZhbHVlUmVnZXg9IiI+bmV3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkFwcHJvdmFsVGlja2V0VHlwZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6QXBwcm92YWw8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkVudGl0eSIgVmFsdWVFbnRpdHlUeXBlPSJUeXBlIj5VbmNsYXNzaWZpZWQ8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPnB1YmxpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TeW1wdG9tPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpJdGVtOjpGaWVsZDIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6Okl0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+cHVibGljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlByb2JsZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjIwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkMyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6SXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93Ij5wdWJsaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U29sdXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6Okl0ZW06OkZpZWxkNCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6SXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RmllbGQ0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj40MDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpJdGVtOjpGaWVsZDUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6Okl0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvdyI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZpZWxkNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NTAwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6SXRlbTo6RmllbGQ2IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3ciPmludGVybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbW1lbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjYwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdGQVEnIG9iamVjdHMgdXNpbmcgdGhlICdOb3JtYWwnIGxpbmsgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPk5vcm1hbDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMaW5rT2JqZWN0OjpQb3NzaWJsZUxpbmsjIyM4MzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSAnRkFRJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyICdGQVEnIG9iamVjdHMgdXNpbmcgdGhlICdQYXJlbnRDaGlsZCcgbGluayB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+UGFyZW50Q2hpbGQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6UG9zc2libGVMaW5rIyMjODMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgJ0ZBUScgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciAnVGlja2V0JyBvYmplY3RzIHVzaW5nIHRoZSAnTm9ybWFsJyBsaW5rIHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rT2JqZWN0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9iamVjdDEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MiI+VGlja2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5Ob3JtYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6UG9zc2libGVMaW5rIyMjODMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgJ0ZBUScgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciAnVGlja2V0JyBvYmplY3RzIHVzaW5nIHRoZSAnUGFyZW50Q2hpbGQnIGxpbmsgdHlwZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT2JqZWN0MSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPYmplY3QyIj5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPlBhcmVudENoaWxkPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUV4cGxvcmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRGQVFFeHBsb3JlciMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5GQVEuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50RkFRRXhwbG9yZXIjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEFyZWE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRRXhwbG9yZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPk1lbnU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkl0ZW1BcmVhPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+ZjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zNTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgRXhwbG9yZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5FeHBsb3JlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij54PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjkxMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVyRkFRRXhwbG9yZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXIgRkFRLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLldpZGdldC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRkFRWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNDdXN0b21lckZBUUV4cGxvcmVyIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5NZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NzAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgRXhwbG9yZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgRXhwbG9yZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPlN1Ym1lbnU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPng8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NzEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJGQVFJRCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlRpdGxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJGQVFJRCIgVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkNhdGVnb3J5IiBUcmFuc2xhdGFibGU9IjEiPkNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJMYW5ndWFnZSIgVHJhbnNsYXRhYmxlPSIxIj5MYW5ndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRG93biIgVHJhbnNsYXRhYmxlPSIxIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJVcCIgVHJhbnNsYXRhYmxlPSIxIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjVGl0bGVTaXplIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSwzfSQiPjUwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6Q29tbW9uUGFyYW0jIyNBY3Rpb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+UHVibGljRkFRRXhwbG9yZXI8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFFeHBsb3JlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlB1YmxpYyBGQVEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljRkFRRXhwbG9yZXIjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLldpZGdldC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRkFRWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpOYXZpZ2F0aW9uIyMjUHVibGljRkFRRXhwbG9yZXIjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249UHVibGljRkFRRXhwbG9yZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+eDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj40MDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFFeHBsb3JlciMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUUV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDN9JCI+NDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUUV4cGxvcmVyIyMjU29ydEJ5OjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUUV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkZBUUlEIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQ2F0ZWdvcnkiIFRyYW5zbGF0YWJsZT0iMSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ikxhbmd1YWdlIiBUcmFuc2xhdGFibGU9IjEiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFFeHBsb3JlciMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUUV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEb3duIiBUcmFuc2xhdGFibGU9IjEiPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlVwIiBUcmFuc2xhdGFibGU9IjEiPlVwPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUUV4cGxvcmVyIyMjVGl0bGVTaXplIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUUV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDN9JCI+NTA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFSU1MiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5QdWJsaWMgRkFRLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljRkFRUlNTIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6Okl0ZW06OkhUTUwiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6Okl0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZSMjIzMtRkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpBZ2VudEZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpIZWFkZXJNZXRhTW9kdWxlIyMjMy1GQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SGVhZGVyTWV0YTo6Q3VzdG9tZXJGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+Q3VzdG9tZXJGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUjIyMzLUZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGE6OlB1YmxpY0ZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5QdWJsaWNGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok91dHB1dDo6RmlsdGVyRWxlbWVudFBvc3QjIyNGQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGVyZSB0aGUgJ0luc2VydCBGQVEnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6T3V0cHV0RmlsdGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZpbHRlckVsZW1lbnRQb3N0OjpGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlYnVnIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUZW1wbGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Q2xvc2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRDb21wb3NlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0RW1haWwiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRFbWFpbE91dGJvdW5kIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Rm9yd2FyZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEZyZWVUZXh0Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0Tm90ZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldE93bmVyIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0UGVuZGluZyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFBob25lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50VGlja2V0UHJpb3JpdHkiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRUaWNrZXRSZXNwb25zaWJsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok91dHB1dDo6T3V0cHV0RmlsdGVyVGV4dEF1dG9MaW5rIyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkEgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpPdXRwdXRGaWx0ZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUmVnRXhwIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPihGQVEpWyNcc10qPzEoXGR7NH0pPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVSTDEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVUkwiPi9vdHJzL2luZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSZsdDtNQVRDSDImZ3Q7PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkltYWdlIj4vb3Rycy13ZWIvc2tpbnMvQWdlbnQvZGVmYXVsdC9pbWcvaGVscC1zbWFsbC5wbmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5fYmxhbms8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUFkZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50RkFRQWRkIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkZBUS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRGQVFBZGQjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TmV3IEZBUSBBcnRpY2xlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk5ldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFBZGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+YjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj45MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFFZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBFZGl0LjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50RkFRRWRpdCMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5GQVEuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFMYW5ndWFnZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPmFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRGQVFMYW5ndWFnZSMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRGQVFMYW5ndWFnZSMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPmFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkxhbmd1YWdlIE1hbmFnZW1lbnQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TGFuZ3VhZ2UgTWFuYWdlbWVudDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFMYW5ndWFnZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij5sPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjk0MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUNhdGVnb3J5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEFyZWEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudEZBUUNhdGVnb3J5IyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUUNhdGVnb3J5IyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q2F0ZWdvcnkgTWFuYWdlbWVudC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeSBNYW5hZ2VtZW50PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUNhdGVnb3J5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+OTUwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRGQVFTZWFyY2gjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5GQVEuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50RkFRU2VhcmNoIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBGQVEuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj5vbmNsaWNrPSJDb3JlLkFnZW50LlNlYXJjaC5PcGVuU2VhcmNoRGlhbG9nKCdBZ2VudEZBUVNlYXJjaCcpOyBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9IGVsc2UgeyB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPno8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+OTYwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRU2VhcmNoU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoIEZBUSBTbWFsbC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUVNlYXJjaFNtYWxsIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2gjIyNGQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51OjpTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iXig/OkFnZW50fEFkbWluKUZBUSI+QWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1BSkFYPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpGQVFPdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFPdmVydmlldzo6U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCIgVHJhbnNsYXRhYmxlPSIxIj5TPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDYXRlZ29yeSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlZCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRkFRSUQiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDYXRlZ29yeSIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTGFuZ3VhZ2UiIFRyYW5zbGF0YWJsZT0iMSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhbmd1YWdlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZWQiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI1NvcnRCeTo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRkFRSUQiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDYXRlZ29yeSIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTGFuZ3VhZ2UiIFRyYW5zbGF0YWJsZT0iMSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRRXhwbG9yZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsOH0kIj4yMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNUaXRsZVNpemUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUV4cGxvcmVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDN9JCI+NTA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRRXhwbG9yZXIjIyNTaG93SW52YWxpZEZBUUl0ZW1zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFFeHBsb3JlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlByZWZlcmVuY2VzR3JvdXBzIyMjRkFRT3ZlcnZpZXdTbWFsbFBhZ2VTaG93biIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpQcmVmZXJlbmNlczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZmVyZW5jZUdyb3VwIj5NaXNjZWxsYW5lb3VzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5TZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjAiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzUiPjM1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YVNlbGVjdGVkIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VXNlckZBUU92ZXJ2aWV3U21hbGxQYWdlU2hvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBcmVhLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRGQVFab29tIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFsbG9jYXRpb25MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuRkFRWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5UYWJsZS5Tb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRhYmxlRmlsdGVycy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFSaWNoVGV4dCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0LjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBBSkFYIFJlc3BvbmRlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDAwLUJhY2siIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRWm9vbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+WyUgRW52KCJMYXN0U2NyZWVuT3ZlcnZpZXciKSAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5CYWNrPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMTAtRWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFab29tOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkVkaXQgdGhpcyBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRGQVFFZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFFZGl0O0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV07U2NyZWVuVHlwZT1Qb3B1cDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDIwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVpvb206Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeSBvZiB0aGlzIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUUhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUhpc3Rvcnk7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDMwLVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFab29tOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPlByaW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5QcmludCB0aGlzIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUVByaW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRGQVFQcmludDtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rUGFyYW0iPnRhcmdldD0icHJpbnRfRkFRIjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDQwLUxpbmsiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVpvb206Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+TGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50TGlua09iamVjdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9RkFRO1NvdXJjZUtleT1bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzA1MC1EZWxldGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVpvb206Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkRlbGV0ZSB0aGlzIEZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudEZBUURlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRRGVsZXRlO0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+Q29uZmlybWF0aW9uRGlhbG9nPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVyRkFRWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXIgRkFRIFpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lckZBUVpvb20jIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkN1c3RvbWVyLkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkZBUVpvb20uY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkN1c3RvbWVyLkZBUVpvb20uanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lckZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lciBGQVEgc2VhcmNoLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVyRkFRU2VhcmNoIyMjMDAyLUZBUSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQ3VzdG9tZXJGQVFTZWFyY2gjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5TdWJtZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij5mPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjc4MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw4fSQiPjIwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFTZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj40MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFTZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkZBUUlEIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+VGl0bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkZBUUlEIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQ2F0ZWdvcnkiIFRyYW5zbGF0YWJsZT0iMSI+Q2F0ZWdvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ikxhbmd1YWdlIiBUcmFuc2xhdGFibGU9IjEiPkxhbmd1YWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5TdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEb3duIiBUcmFuc2xhdGFibGU9IjEiPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlVwIiBUcmFuc2xhdGFibGU9IjEiPlVwPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBQcmludC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lckZBUVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lciBGQVEgUHJpbnQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVFTZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5QdWJsaWMgRkFRIHNlYXJjaC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggRkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpQdWJsaWNGQVFTZWFyY2gjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkN1c3RvbWVyLkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNQdWJsaWNGQVFTZWFyY2gjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+NjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSwzfSQiPjQwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRkFRSUQiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5UaXRsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRkFRSUQiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDYXRlZ29yeSIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTGFuZ3VhZ2UiIFRyYW5zbGF0YWJsZT0iMSI+TGFuZ3VhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPlN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0ZBUVpvb20iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIEZBUSBab29tLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6UHVibGljRkFRWm9vbSMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5DdXN0b21lci5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuRkFRWm9vbS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQ3VzdG9tZXIuRkFRWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNGQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIEZBUSBab29tLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWNGcm9udGVuZDo6TW9kdWxlIyMjUHVibGljRkFRUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIEZBUSBQcmludC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRSm91cm5hbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5GQVEgQXJlYS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50RkFRSm91cm5hbCMjIzAwMi1GQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUUpvdXJuYWwjIyMwMDItRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEpvdXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Kb3VybmFsPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudEZBUUpvdXJuYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+ajwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj45MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUpvdXJuYWwjIyNTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRSm91cm5hbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnkiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRSm91cm5hbCMjI0pvdXJuYWxMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFKb3VybmFsPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+MjAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUpvdXJuYWwjIyNUaXRsZVNpemUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRSm91cm5hbDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSwzfSQiPjUwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI0ZBUUpvdXJuYWxPdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6UHJlZmVyZW5jZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZlcmVuY2VHcm91cCI+TWlzY2VsbGFuZW91czwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+RkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5TZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0LjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMCI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzNSI+MzU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRkFRSm91cm5hbE92ZXJ2aWV3U21hbGxQYWdlU2hvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpKb3VybmFsT3ZlcnZpZXcjIyNTbWFsbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OkZBUUpvdXJuYWxPdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXc6OlNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lU2hvcnQiIFRyYW5zbGF0YWJsZT0iMSI+UzwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFIaXN0b3J5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBIaXN0b3J5LjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRRGVsZXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkZBUSBEZWxldGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6VGlja2V0Q29tcG9zZSMjI0luc2VydE1ldGhvZCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OlRpY2tldENvbXBvc2U8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRnVsbCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkZ1bGwiIFRyYW5zbGF0YWJsZT0iMSI+RnVsbCBGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlRleHQiIFRyYW5zbGF0YWJsZT0iMSI+VGV4dCBPbmx5PC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6VGlja2V0Q29tcG9zZSMjI0luY2x1ZGVJbnRlcm5hbCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OlRpY2tldENvbXBvc2U8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OlRpY2tldENvbXBvc2UjIyNTaG93RmllbGROYW1lcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpUaWNrZXRDb21wb3NlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjU2hvd0luc2VydFRleHRCdXR0b24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTo6VGlja2V0Q29tcG9zZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6VGlja2V0Q29tcG9zZSMjI1Nob3dJbnNlcnRMaW5rQnV0dG9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpUaWNrZXRDb21wb3NlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjU2hvd0luc2VydFRleHRBbmRMaW5rQnV0dG9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgIkluc2VydCBGQVEgVGV4dCAmYW1wOyBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJmFtcDsgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpUaWNrZXRDb21wb3NlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpUaWNrZXRDb21wb3NlIyMjVXBkYXRlQXJ0aWNsZVN1YmplY3QiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE6OlRpY2tldENvbXBvc2U8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6Ok11bHRpTGFuZ3VhZ2UiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFRPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpEZWZhdWx0OjpMYW5ndWFnZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+ZW48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkNTUyMjIzIwMC1GQVEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBDU1MgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5GQVEuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkpTIyMjMjAwLUZBUSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIEpTIGZpbGVzIHRvIGFsd2F5cyBiZSBsb2FkZWQgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+RkFRLkFnZW50LlRpY2tldENvbXBvc2UuanM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lclRpY2tldE1lc3NhZ2UjIyMwMDMtRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+RkFRLlJlbGF0ZWRBcnRpY2xlcy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkZBUS5DdXN0b21lci5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6Vm90aW5nIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpGQVE8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkNhY2hlVFRMIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkZBUTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTcyODAwPC9JdGVtPiA8IS0tIGRlZmF1bHQgMTcyLDgwMCAoNjAgKiA2MCAqIDI0ICogMikgLS0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkRhc2hib2FyZEJhY2tlbmQjIyMwMzk4LUZBUS1MYXN0Q2hhbmdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RGFzaGJvYXJkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5MYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPkxhc3RDaGFuZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OS1GQVEtTGFzdENyZWF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkRhc2hib2FyZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+TGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5MYXN0Q3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29udGVudFNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Ij4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYW5kYXRvcnkiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNGQVE6Okxhbmd1YWdlTGlzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5MYW5ndWFnZUxpc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjRkFROjpQdWJsaWNDYXRlZ29yeUxpc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+UHVibGljQ2F0ZWdvcnlMaXN0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5GQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0ZBUTo6UHVibGljRkFRR2V0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPlB1YmxpY0ZBUUdldDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+RkFRPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNGQVE6OlB1YmxpY0ZBUVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5QdWJsaWNGQVFTZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsNH0kIj4xMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw1fSQiPjI1MDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVySFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw0fSQiPjEwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJIVE1MRmllbGRIZWlnaHRNYXgiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkZBUVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsNX0kIj4yNTAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUFkZCMjI1JpY2hUZXh0V2lkdGgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgd2lkdGggZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUFkZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJT8kIj42MjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRQWRkIyMjUmljaFRleHRIZWlnaHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFBZGQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyU/JCI+MzIwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUVkaXQjIyNSaWNoVGV4dFdpZHRoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHdpZHRoIGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFFZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCslPyQiPjYyMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFZGl0IyMjUmljaFRleHRIZWlnaHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFFZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCslPyQiPjMyMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlRvb2xCYXJNb2R1bGUjIyM5MC1GQVE6OkFnZW50RkFRQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6VG9vbEJhcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpUb29sQmFyOjpMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkFkZCBGQVEgYXJ0aWNsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50RkFRQWRkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50RkFRQWRkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3NzQ2xhc3MiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSWNvbiI+ZmEgZmEtcXVlc3Rpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4xMDIwMDkwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUjIyNGQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pY0ZpZWxkIG9iamVjdCByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkZBUTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpGQVE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjIwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpPdmVydmlld1NtYWxsIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpGQVFPdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFBZGQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUUFkZDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUVkaXQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFFZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRWm9vbSMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRWm9vbSMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkZBUVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVpvb20jIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRUHJpbnQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRUHJpbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRUHJpbnQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRUHJpbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OlB1YmxpY0ZBUVByaW50IyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRUHJpbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCBzaG93biBieSBkZWZhdWx0PC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI1NlYXJjaENTVkR5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIEZpZWxkcyB1c2VkIHRvIGV4cG9ydCB0aGUgc2VhcmNoIHJlc3VsdCBpbiBDU1YgZm9ybWF0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFPdmVydmlldyMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpGQVFPdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVNlYXJjaCMjI1NlYXJjaENTVkR5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIEZpZWxkcyB1c2VkIHRvIGV4cG9ydCB0aGUgc2VhcmNoIHJlc3VsdCBpbiBDU1YgZm9ybWF0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgc2hvd24gYnkgZGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRT3ZlcnZpZXcjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpGQVFPdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2gjIyNTZWFyY2hDU1ZEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBGaWVsZHMgdXNlZCB0byBleHBvcnQgdGhlIHNlYXJjaCByZXN1bHQgaW4gQ1NWIGZvcm1hdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNGdWxsdGV4dCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI051bWJlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI1RpdGxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjS2V5d29yZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0xhbmd1YWdlSURzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjQ2F0ZWdvcnlJRHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNWYWxpZElEcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI1N0YXRlSURzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjVm90ZVNlYXJjaFR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNSYXRlU2VhcmNoVHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0FwcHJvdmVkU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjQ3JlYXRlZFVzZXJJRHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNMYXN0Q2hhbmdlZFVzZXJJRHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkZBUVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIyMjRGVmYXVsdHMjIyNJdGVtQ3JlYXRlVGltZVBvaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjSXRlbUNyZWF0ZVRpbWVTbG90IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVNlYXJjaCMjI0RlZmF1bHRzIyMjSXRlbUNoYW5nZVRpbWVQb2ludCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNEZWZhdWx0cyMjI0l0ZW1DaGFuZ2VUaW1lU2xvdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6RkFRU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6QWdlbnRGQVFTZWFyY2gjIyNUaXRsZVNpemUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj41MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFTZWFyY2gjIyNUaXRsZVNpemUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj41MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6UHVibGljRkFRU2VhcmNoIyMjVGl0bGVTaXplIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpGQVFTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsM30kIj41MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6Q29tcGxleFRhYmxlOjpTZXR0aW5nc1Zpc2liaWxpdHkjIyNGQVEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50RkFRWm9vbTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6Q29tcGxleFRhYmxlIyMjRkFRIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0OjpGQVEucG08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHRDb2x1bW5zIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEF2YWlsYWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBieSBkZWZhdWx0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZBUU51bWJlciIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVkIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnlOYW1lIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBcHByb3ZlZCIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRlbnRUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlZCIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZBUU51bWJlciI+MTAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4xMTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjEyMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVkIj4xMzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2F0ZWdvcnlOYW1lIj4xNDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFuZ3VhZ2UiPjE1MDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBcHByb3ZlZCI+MTYwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRlbnRUeXBlIj4xNzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlZCI+MTgwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkN1c3RvbWVyOjpSZWxhdGVkQXJ0aWNsZXM6OkVuYWJsZWQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpSZWxhdGVkQXJ0aWNsZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCMjI091dHB1dEZpbHRlclBvc3RGQVFDdXN0b21lclJlbGF0ZWRBcnRpY2xlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5PdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6Ok91dHB1dEZpbHRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFRQ3VzdG9tZXJSZWxhdGVkQXJ0aWNsZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRlbXBsYXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5DdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OktleXdvcmRBcnRpY2VMaXN0OjpTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RkFROjpSZWxhdGVkQXJ0aWNsZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjUwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzIyMjUXVldWVzRW5hYmxlZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6RkFRUmVsYXRlZEFydGljbGVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+UmF3PC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcyMjI0RlZmF1bHRMYW5ndWFnZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OkZBUVJlbGF0ZWRBcnRpY2xlczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPmVuPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcyMjI1Nob3dMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5PdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6RkFRUmVsYXRlZEFydGljbGVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4xMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMjIyNWb3RlU3RhcnNWaXNpYmxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSAnMCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6RkFRUmVsYXRlZEFydGljbGVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj40PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+Cg==
CnJlcXVpcmUgNTsKcGFja2FnZSBYTUw6OlJTUzo6U2ltcGxlR2VuOwp1c2Ugc3RyaWN0Owp1c2UgQ2FycCAoKTsKcmVxdWlyZSBFeHBvcnRlcjsKdXNlIHZhcnMgcXcoCiAgQEVYUE9SVCAlRVhQT1JUX1RBR1MgQElTQSAkVkVSU0lPTgogICVFbnRpdGllcyAlV2luTGFtZUVudGl0aWVzICVDb21tb25FbnRzICRNSU1FX1R5cGUgCiAgJERURF91cmwgJERURF9wdWJpZCAkTmF0aXZpemVfbmV3bGluZXMgJERXSU0gQEhpZGllcyAkUlNTX29iagogICRTbGVlcHkgJUlzQmxvY2tNYXJrdXAgJE1heWJlSW5kZW50ICRNYXliZU5MICVQZXJpb2RBc1NlY29uZHMKICAkTkFNRVNQQUNFX1NZICRDSFVOS19NSU5VVEVTICVCYWRQb3J0cwogIEBSZXRyeV9kZWxheXMgJFVzZXJBZ2VudFN0cmluZwopOwoKJFZFUlNJT04gPSAnMTEuMTEnOwpCRUdJTiB7ICpERUJVRyA9IHN1YiAoKSB7MH0gdW5sZXNzIGRlZmluZWQgJkRFQlVHOyB9ICAgIyBzZXQgREVCVUcgbGV2ZWwKCkBJU0EgPSBxdyhFeHBvcnRlcik7CgojJERURF91cmwgICB8fD0gJ2h0dHA6Ly9teS5uZXRzY2FwZS5jb20vcHVibGlzaC9mb3JtYXRzL3Jzcy0wLjkxLmR0ZCc7CiMkRFREX3B1YmlkIHx8PSAnLS8vTmV0c2NhcGUgQ29tbXVuaWNhdGlvbnMvL0RURCBSU1MgMC45MS8vRU4nOwokTkFNRVNQQUNFX1NZIHx8PSAnaHR0cDovL3B1cmwub3JnL3Jzcy8xLjAvbW9kdWxlcy9zeW5kaWNhdGlvbi8nOwokQ0hVTktfTUlOVVRFUyA9IDEwOwoKJE5hdGl2aXplX25ld2xpbmVzID0gMSB1bmxlc3MgZGVmaW5lZCAkTmF0aXZpemVfbmV3bGluZXM7CiREV0lNID0gMSB1bmxlc3MgZGVmaW5lZCAkRFdJTTsKJFNsZWVweSA9CiAkRU5WeydNQUlMVE8nfSA/IDQgICMgdW5kZXIgY3JvbnRhYgogOiAoJEVOVnsnVEVSTSd9IHx8ICRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gfHwgJEVOVnsnQ09NU1BFQyd9ICkgPyAwCiAgICAjIGFsbW9zdCBkZWZpbml0ZWx5IG5vdCB1bmRlciBjcm9udGFiCiA6IDQgICB1bmxlc3MgZGVmaW5lZCAkU2xlZXB5OwpAUmV0cnlfZGVsYXlzID0gKDQsIDEwLCAyMCwgNDApOwokTWF5YmVJbmRlbnQgPSAnICAnOwokTWF5YmVOTCA9ICJcbiI7CiMkTWF5YmVOTCA9ICRNYXliZUluZGVudCA9ICcnOyAgIyB0ZXJzZXIsIG1vcmUgZ3JlcC13b3J0aHkKCmZvcmVhY2ggbXkgJHAgKCAgIyBwb3J0cyB3ZSdsbCByZWZ1c2UgdG8gZG8gSFRUUCBvbgpxdzwwIDEgNyA5IDExIDEzIDE1IDE3IDE5IDIwIDIxIDIyIDIzIDI1IDM3IDQyIDQzIDUzIDcwIDc5IDk1IDEwMSAxMDIgMTAzCiAgMTA0IDEwNyAxMDkgMTEwIDExMSAxMTMgMTE1IDExNyAxMTkgMTIzIDEzNSAxMzcgMTM4IDEzOSAxNDMgMzg5IDQ0MyA1MTIKICA1MTMgNTE0IDUxNSA1MTcgNTE4IDUyNiA1MzAgNTMxIDUzMiA1NDAgNTU2IDY2NjcKPikgeyAkQmFkUG9ydHN7JHB9ID0gMSB1bmxlc3MgZGVmaW5lZCAkQmFkUG9ydHN7JHB9OyB9CgokVXNlckFnZW50U3RyaW5nIHx8PSAiWG1sUnNzU2ltcGxlR2VuLyRWRVJTSU9OIjsKCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpzdWIgX2hpZGUge3B1c2ggQEhpZGllcywgQF8gfTsKX2hpZGUgcXcoaW5pdCBpbXBvcnQpOwoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgoKPWhlYWQxIE5BTUUKClhNTDo6UlNTOjpTaW1wbGVHZW4gLSBmb3Igd3JpdGluZyBSU1MgZmlsZXMKCj1oZWFkMSBTWU5PUFNJUwoKICAjIEEgY29tcGxldGUgc2NyZWVuLXNjcmFwZXIgYW5kIFJTUyBnZW5lcmF0b3IgaGVyZToKICAKICB1c2Ugc3RyaWN0OwogIHVzZSBYTUw6OlJTUzo6U2ltcGxlR2VuOwogIG15ICR1cmwgPSBxPGh0dHA6Ly93d3cuZXhpbGUucnUvPjsKICAKICByc3NfbmV3KCAkdXJsLCAiZVhpbGUiLCAiTW9zY293LWJhc2VkIEFsdGVybmF0aXZlIE5ld3NwYXBlciIgKTsKICByc3NfbGFuZ3VhZ2UoICdlbicgKTsKICByc3Nfd2VibWFzdGVyKCAneHh4eHhAeW91cmRvbWFpbi5jb20nICk7CiAgcnNzX3R3aWNlX2RhaWx5KCk7CiAgCiAgZ2V0X3VybCggJHVybCApOwogIAogIHdoaWxlKAogICBtezxoND5ccyo8YSBocmVmPScvKC4qPyknLio/PiguKj8pPC9hPlxzKjwvaDQ+XHMqPHAuKj8+KC4qPyk8YSBocmVmPScvfXNnCiAgKSB7CiAgICByc3NfaXRlbSgiJHVybCQxIiwgJDIsICQzKTsKICB9CiAgCiAgZGllICJObyBpdGVtcyBpbiB0aGlzIGNvbnRlbnQ/ISB7e1xuJF9cbn19XG5BYm9ydGluZyIKICAgdW5sZXNzIHJzc19pdGVtX2NvdW50KCk7CiAgCiAgcnNzX3NhdmUoICdleGlsZS5yc3MnLCA0NSApOwogIGV4aXQ7Cgo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgbW9kdWxlIGlzIGZvciB3cml0aW5nIFJTUyBmaWxlcywgc2ltcGx5LiBJdCB0cmFuc3BhcmVudGx5IGhhbmRsZXMKYWxsIHRoZSB1bnBsZWFzYW50IGRldGFpbHMgb2YgUlNTLCBsaWtlIHByb3BlciBYTUwgZXNjYXBpbmcsIGFuZCBhbHNvIGhhcwphIGdvb2QgbnVtYmVyIG9mIERvLVdoYXQtSS1NZWFuIGZlYXR1cmVzLCBsaWtlIG5vdCBjaGFuZ2luZyB0aGUgbW9kdGltZQpvbiBhIHdyaXR0ZW4tb3V0IFJTUyBmaWxlIGlmIHRoZSBmaWxlIGNvbnRlbnQgaGFzbid0IGNoYW5nZWQsIGFuZCBsaWtlCmF1dG9tYXRpY2FsbHkgcmVtb3ZpbmcgYW55IEhUTUwgdGFncyBmcm9tIGNvbnRlbnQgeW91IG1pZ2h0IHBhc3MgaW4uCgpUaGlzIG1vZHVsZSBpc24ndCBtZWFudCB0byBoYXZlIHRoZSBmdWxsIGV4cHJlc3NpdmUgcG93ZXIgb2YgUlNTOwppbnN0ZWFkLCBpdCBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCBhcmUgbW9zdCBjb21tb25seSBuZWVkZWQgYnkKUlNTLXdyaXRpbmcgcHJvZ3JhbXMuCgo9aGVhZDEgSU5URVJGQUNFCgpUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyBmb3Igc3RhcnRpbmcgYW4gUlNTIGZlZWQgaW4KbWVtb3J5LCBwdXR0aW5nIGl0ZW1zIGludG8gaXQsIGFuZCBzYXZpbmcgaXQgdG8gZGlzayAob3IgcHJpbnRpbmcgaXQgYXMKYSBzdHJpbmcsIGFzIGluIGEgQ0dJKS4gSWYgeW91IHByZWZlciBhbiBvYmplY3Qtb3JpZW50ZWQgaW50ZXJmYWNlCihvYnZpb3VzbHkgbW9yZSB1c2VmdWwgaWYgeW91J3JlIGNvbXBvc2luZyBzZXZlcmFsIGZlZWRzIGF0IG9uY2UpLCB0aGVuCnlvdSBjYW4gdXNlIHRoaXMgbW9kdWxlIGFzIGEgY2xhc3Mgd2hvc2UgbWV0aG9kcyBhcmUgdGhlIHNhbWUgYXMgdGhlCmZ1bmN0aW9uIG5hbWVzIG1pbnVzICJyc3NfIi4gRXhjZXB0IGZvciB0aGlzIGRldGFpbCBvZiB0aGUgbmFtaW5nLCB0aGUKZnVuY3Rpb25zIGFuZCBtZXRob2RzIGFyZSB0aGUgc2FtZSwgYmVoYXZlIHRoZSBzYW1lLCBhbmQgdGFrZSB0aGUgc2FtZQphcmd1bWVudHMuCgpUaGF0IGlzLCB0aGlzIGZ1bmN0aW9uYWwgY29kZToKCiAgdXNlIFhNTDo6UlNTOjpTaW1wbGVHZW47CiAgbXkgJHVybCA9IHE8aHR0cDovL3d3dy5leGlsZS5ydS8+OwogIAogIHJzc19uZXcoICR1cmwsICJlWGlsZSIgKTsKICByc3NfbGFuZ3VhZ2UoICdlbicgKTsKICBnZXRfdXJsKCAkdXJsICk7CiAgLi4uCgpkb2VzIHRoZSBzYW1lIHdvcmsgYXMgdGhpcyBPTyBjb2RlOgoKICB1c2UgWE1MOjpSU1M6OlNpbXBsZUdlbiAoKTsKICBteSAkdXJsID0gcTxodHRwOi8vd3d3LmV4aWxlLnJ1Lz47CiAgbXkgJHJzcyA9IFhNTDo6UlNTOjpTaW1wbGVHZW4tPm5ldyggJHVybCwgImVYaWxlIik7CiAgJHJzcy0+bGFuZ3VhZ2UoICdlbicgKTsKICAkcnNzLT5nZXRfdXJsKCAkdXJsICk7CiAgLi4uCgooTm90ZSB0aGF0IHRoZSBmdW5jdGlvbiBDPGdldF91cmw+IGRvZXNuJ3QgaGF2ZSBhIGxlYWRpbmcgInJzc18iLApzbyBpdHMgbWV0aG9kIG5hbWUgaXMgdGhlIHNhbWUgYXMgaXRzIGZ1bmN0aW9uIG5hbWUuICBJdCdzIHRoZQpvbmUgZXhjZXB0aW9uLikKCklmIHRoaXMgdGFsayBvZiBvYmplY3RzIHB1enpsZXMgeW91LCBzZWUgCkw8SFRNTDo6VHJlZTo6QWJvdXRPYmplY3RzPiBpbiB0aGUgQzxIVE1MLVRyZWU+IGRpc3QsIGFuZC9vciBzZWUKdGhlIGNoYXB0ZXIgIlVzZXIncyBWaWV3IG9mIE9iamVjdC1PcmllbnRlZCBNb2R1bGVzIgppbiBteSBib29rIEk8UGVybCAmIExXUD4gKEw8aHR0cDovL3d3dy5hbWF6b24uY29tL2V4ZWMvb2JpZG9zL0FTSU4vMDU5NjAwMTc4OT4pLgooVGhlIGJvb2sgaXMgYWxzbyB1c2VmdWwgYXMgYW4gZXh0ZW5kZWQgZGlzY3Vzc2lvbiBvZiBzY3JlZW4tc2NyYXBpbmcuKQoKTm90ZTogaW4gdGhlIGNvZGUgYmVsb3csIEkgdXNlIHRoZSB3b3JkICJhY2Nlc3NvciIgYSBsb3QsIHRvIHJlZmVyCnRvIGEgZnVuY3Rpb24gb3IgbWV0aG9kIHRoYXQgeW91IGNhbiBjYWxsIHR3byBwb3NzaWJsZSB3YXlzOgoxKSBsaWtlIEM8Zm9vKEk8dmFsPik+IHRvIHNldCB0aGUgImZvbyIgYXR0cmlidXRlIHRvIHRoZSB2YWx1ZSBJPHZhbD4sCm9yIDIpIGxpa2UgQzxmb28oKT4gdG8gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgImZvbyIgYXR0cmlidXRlLgoKCj1oZWFkMSBGVU5DVElPTlMKCj1vdmVyCgo9aXRlbSBDPHJzc19uZXcoIEk8dXJsPiApOz4KCj1pdGVtIEM8cnNzX25ldyggSTx1cmwsIHRpdGxlPiApOz4KCj1pdGVtIEM8cnNzX25ldyggSTx1cmwsIHRpdGxlLCBkZXNjcmlwdGlvbj4gKTs+Cgo9aXRlbSBJPG9yOj4gQzw8ICRyc3MgPSBYTUw6OlJTUzo6U2ltcGxlR2VuLT5uZXcoLi4uKTsgPj4KClRoaXMgZnVuY3Rpb24gY3JlYXRlcyBhIG5ldyBSU1MgZmVlZCBpbiBtZW1vcnkuICBUaGlzIHNob3VsZCBiZSB0aGUgZmlyc3QKQzxyc3NfSTx3aGF0ZXZlcj4+IGZ1bmN0aW9uIHlvdSBjYWxsIGluIHlvdXIgcHJvZ3JhbS4gIElmIHlvdSBjYWxsIGl0CmFnYWluLCBpdCBlcmFzZXMgdGhlIGN1cnJlbnQgb2JqZWN0IChpZiBhbnkpIGFuZCBzZXRzIHVwIGEgbmV3IG9uZSBhY2NvcmRpbmcKdG8gd2hhdGV2ZXIgcGFyYW1ldGVycyB5b3UgcGFzcy4KClRoZSBwYXJhbWV0ZXJzIGFyZSB0aGUgZnVsbCBVUkwsIHRoZSB0aXRsZSwgYW5kIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUKc2l0ZSAob3IgcGFnZSkgdGhhdCB5b3UncmUgcHJvdmlkaW5nIGFuIFJTUyBmZWVkIG9mLiBUaGUgZGVzY3JpcHRpb24gaXMKb3B0aW9uYWwsIGJ1dCB5b3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYSBVUkwgYW5kIHRpdGxlLgoKRXhhbXBsZXM6CgogIHJzc19uZXcoICR1cmwsICJlWGlsZSIsICJNb3Njb3ctYmFzZWQgQWx0ZXJuYXRpdmUgTmV3c3BhcGVyIiApOwoKICByc3NfbmV3KCAnaHR0cDovL3d3dy5teWJhem91a2kuY29tL25ld3MvJywgIkJhem91a2kgTmV3cyEiICk7CgooQXMgYSBtZXRob2QsIFhNTDo6UlNTOjpTaW1wbGVHZW4tPm5ldyBzaW1wbHkgcmV0dXJucyBhIG5ldwpSU1Mgb2JqZWN0LikKCj1jdXQKCnN1YiBuZXcgewogIG15ICRjbGFzcyA9IHNoaWZ0OwogICRjbGFzcyA9IHJlZigkY2xhc3MpIHx8ICRjbGFzczsKICBteSAkbmV3ID0gYmxlc3MgeyAnaXRlbXMnID0+IFtdIH0sICRjbGFzczsKICAkbmV3LT5pbml0KCk7CgogIEBfIGFuZCAkbmV3LT51cmwoc2hpZnQpOwogIEBfIGFuZCAkbmV3LT50aXRsZShzaGlmdCk7CiAgQF8gYW5kICRuZXctPmRlc2NyaXB0aW9uKHNoaWZ0KTsKCiAgJG5ldy0+aXRlbV9saW1pdCggMCApOwogICRuZXctPnJldGVudGlvbiggMzIgKiAyNCAqIDYwICogNjAgKTsgIyAzMiBkYXlzCgojICAoLWUgInJzcy5jc3MiKSA/ICRuZXctPmNzcygiLi9yc3MuY3NzIikKIyAgICA6ICRuZXctPmNzcygiaHR0cDovL3d3dy5pbnRlcmdsYWNpYWwuY29tL3Jzcy9yc3MuY3NzIik7CgojICAoLWUgImFib3V0X3Jzcy5odG1sIikgPyAkbmV3LT5kb2NzKCIuL2Fib3V0X3Jzcy5odG1sIikKIyAgICA6ICRuZXctPmRvY3MoImh0dHA6Ly93d3cuaW50ZXJnbGFjaWFsLmNvbS9yc3MvYWJvdXQuaHRtbCIpOwoKICByZXR1cm4gJG5ldzsKfQoKc3ViIGluaXQgeyByZXR1cm47IH0gICAjIG92ZXJyaWRlIGluIHN1YmNsYXNzIGFzIG5lY2Vzc2FyeQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCl9fUEFDS0FHRV9fLT5fYWNjZXNzb3JpemUoCiBxdygKICB0aXRsZSBkZXNjcmlwdGlvbiB1cmwgbGFuZ3VhZ2UgY3NzIHhzbCB3ZWJNYXN0ZXIgZG9jcwogIGl0ZW1fbGltaXQgdHRsCiByZXRlbnRpb24KICBhbGxvd19kdXBsaWNhdGVzCiAgaW1hZ2VfdGl0bGUgaW1hZ2VfbGluayBpbWFnZV91cmwgaW1hZ2Vfd2lkdGggaW1hZ2VfaGVpZ2h0IGltYWdlX2Rlc2NyaXB0aW9uIAogKQopOwoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX2xhbmd1YWdlKEk8bGFuZ3VhZ2VfdGFnPik+CgpUaGlzIGRlY2xhcmVzIHdoYXQgbGFuZ3VhZ2UgdGhpcyBSU1MgZmVlZCBpcyBpbi4gIEl0IG11c3QgYmUKYW4gUkZDMzA2Ni1zdHlsZSBsYW5ndWFnZSB0YWdzIGxpa2UgImVuIiwgb3IgImVuLVVTIiwgb3IgInpoLVRXIi4KKFNlZSBJPEkxOE46OkxhbmdUYWdzOjpMaXN0PiBmb3IgYSBsaXN0LikKSWYgeW91IGRvbid0IHNldCB0aGUgZmVlZCdzIGxhbmd1YWdlLCBpdCBkZWZhdWx0cyB0byAiZW4iLCBmb3IgZ2VuZXJpYyBFbmdsaXNoLgoKSWYgeW91IGNhbGwgdGhpcyBmdW5jdGlvbiB3aXRob3V0IGEgcGFyYW1ldGVyLCBpdCByZXR1cm5zCnRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBSU1MgZmVlZCdzIGxhbmd1YWdlLiAgRm9yIGV4YW1wbGU6CgogIHByaW50ICJJJ20gbWFraW5nIGFuIFJTUyBmZWVkIGZvciAiLCByc3NfbGFuZ3VhZ2UoKSwgIiFcbiI7CgpUaGUgc2FtZSBpcyB0cnVlIGZvciBhbGwgdGhlIGZ1bmN0aW9ucyB0aGF0IEkgbGFiZWwgYXMgImFjY2Vzc29ycyIuCgoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX2l0ZW1fbGltaXQoSTxudW1iZXI+KT4KClRoaXMgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdGhhdCB0aGlzIGZlZWQgd2lsbCBzaG93LgoKVGhlIGRlZmF1bHQgdmFsdWUgaXMgMCwgbWVhbmluZyB0aGF0IHRoZXJlIGlzIG5vIG1heGltdW0uCgpJZiB5b3Ugc2V0IGl0IHRvIGEgcG9zaXRpdmUgbnVtYmVyIEk8Tj4sIHRoZW4gdGhlIGZlZWQgd2lsbCBzaG93IG9ubHkKdGhlIGZpcnN0IEk8Tj4gaXRlbXMgdGhhdCB5b3UgZGVjbGFyZSB3aXRoIEM8cnNzX2l0ZW0+LiAoT3IsIGlmIHlvdSBzZXQKQzxyc3NfaGlzdG9yeV9maWxlPiwgdGhlbiB0aGUgbmV3ZXN0IEk8Tj4gaXRlbXMgdGhhdCB5b3UgZGVjbGFyZQp3aXRoIEM8cnNzX2l0ZW0+LikKCklmIHlvdSBzZXQgaXQgdG8gYSBuZWdhdGl2ZSBudW1iZXIgSTwtTj4sIHRoZW4gdGhlIGZlZWQgd2lsbCBzaG93IG9ubHkKdGhlIGxhc3QgSTxOPiBpdGVtcyB0aGF0IHlvdSBkZWNsYXJlIHdpdGggQzxyc3NfaXRlbT4uIChPciwgaWYgeW91IHNldApDPHJzc19oaXN0b3J5X2ZpbGU+LCB0aGVuIHRoZSBvbGRlc3QgSTxOPiBpdGVtcyB5b3UgZGVjbGFyZSB3aXRoIEM8cnNzX2l0ZW0+LAp3aGljaCBpcyB1bmxpa2VseSB0byBiZSB1c2VmdWwhKQoKCj1pdGVtIHRoZSBhY2Nlc3NvciBDPHJzc193ZWJNYXN0ZXIoSTxlbWFpbC1hZGRyZXNzPik+CgpUaGlzIGRlY2xhcmVzIHdoYXQgZW1haWwgYWRkcmVzcyB5b3UsIHRoZSBSU1MgZ2VuZXJhdG9yIG1hbmFnZXIsIGNhbiBiZQpyZWFjaGVkIGF0LiAgRXhhbXBsZToKCiAgcnNzX3dlYk1hc3RlciggJ3NidXJrZUBiYXpvdWtpLW5ld3MuaW50JyApOwoKPWN1dAoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgo9aXRlbSBDPHJzc19oaXN0b3J5X2ZpbGUoIEk8ZmlsZW5hbWU+ICk+CgpUaGlzIGRlY2xhcmVzIHRoYXQgeW91IHdhbnQgdGhpcyBSU1MgZmVlZCB0byBrZWVwIHRyYWNrIG9mIHdoYXQgaXRlbXMgYXJlCm5ldywgYW5kIHRvIGxpc3QgdGhlbSBmaXJzdCB3aGVuIHRoZSBSU1MgaXMgZW1pdHRlZC4gIFRvIGRvIHRoaXMsIHRoZSBSU1MKZ2VuZXJhdG9yIGhhcyB0byBzdG9yZSBpbmZvcm1hdGlvbiBpbiBhIGZpbGUsIHdoZXJlIGl0IHRyYWNrcyBpdHMgImhpc3RvcnkiLAppLmUuLCB3aGVuIHdhcyB0aGUgZmlyc3QgdGltZSBpdCBzYXcgZ2l2ZW4gVVJMcywgYW5kIHRoZSBtb3N0IHJlY2VudCB0aW1lCml0IHNhdyBnaXZlbiBVUkxzLgoKVHlwaWNhbCB1c2FnZSBpczoKCiAgcnNzX2hpc3RvcnlfZmlsZSggJ3RoaXNyc3NmZWVkLmRhdCcgKTsKCllvdSBzaG91bGQgY2FsbCBDPHJzc19oaXN0b3J5X2ZpbGU+IEk8YmVmb3JlPiB5b3UgbWFrZSBhbnkgY2FsbHMgdG8KQzxyc3NfaXRlbT4uCgpUaGUgaGlzdG9yeS1maWxlIGZlYXR1cmUgaXMgbWVhbnQgZm9yIGNhc2VzIHdoZXJlIHlvdXIgUlNTLWdlbmVyYXRvcgpwcm9ncmFtIGNhbGxzIEM8cnNzX2l0ZW0+IG9uIEk8ZXZlcnk+IGxpbmsgaXQgc2VlcywgYnV0IG9ubHkgd2FudHMgdGhlCkk8bmV3PiBsaW5rcyB0byBhcHBlYXIgaW4gdGhlIFJTUyBvdXRwdXQuIChUaGlzIGNhbiBiZSBhIGdvb2QgYXBwcm9hY2gKaWYgeW91J3JlIG1ha2luZyBhbiBSU1MgZmVlZCBvZiBhIHBhZ2UgbGlrZQpDPGh0dHA6Ly93d3cuZ3VhcmRpYW4uY28udWsvPiB3aGVyZSB0aGVyZSdzIHNvbWUgbmV3IGxpbmtzICh0byB0aGUKcmVjZW50bHkgYWRkZWQgc3RvcmllcyksIGJ1dCBhbHNvIGxpbmtzIHRvIHNvbWUgZGF5cy1vbGQgc3RvcmllcywgYW5kCkk8YWxzbz4gbGlua3MgdG8gc29tZSBhbHdheXMtdGhlcmUgdGhpbmdzIGxpa2UgIkFyY2hpdmUgU2VhcmNoIiBhbmQKIkNvbnRhY3QgVXMiIHBhZ2VzLgoKT25jZSB5b3UgY2FsbCByc3NfaGlzdG9yeV9maWxlLCB0aGUgc3BlY2lmaWVkIGZpbGUgaXMgcmVhZCBpbi4gIFRoZQppbi1tZW1vcnkgaGlzdG9yeSAoc3RvcmVkIGluIHRoZSBSU1Mgb2JqZWN0KSBpcyB1cGRhdGVkIGFzIHlvdQpjYWxsIEM8cnNzX2l0ZW0+LiAgQnV0IHRoZSBmaWxlIGlzbid0IHVwZGF0ZWQgdW50aWwgeW91IGNhbGwgcnNzX3NhdmUuCgooQSBkby13aGF0LUktbWVhbiBzaWRlIGVmZmVjdCBvZiBjYWxsaW5nIEM8cnNzX2hpc3RvcnlfZmlsZT4gaXMgdGhhdCBpdApzZXRzIHJzc19pdGVtX2xpbWl0IHRvIDI1IGlmIGl0IGlzIGN1cnJlbnRseSAwLikKCihJbmNpZGVudGFsbHksIGlmIHlvdSdyZSB1c2luZyByc3NfaGlzdG9yeV9maWxlIGFzIHBhcnQgb2YgYSBDR0kgdGhhdAplbWl0cyBSU1MgZGF0YSwgaW5zdGVhZCBvZiBhIHByb2dyYW0gdGhhdCBqdXN0IHNhdmVzIHRvIGFuIFJTUyBmaWxlLAp0aGVuIHRoaW5ncyB3aWxsIGdldCBjb21wbGljYXRlZC4gWW91J2xsIG5lZWQgdG8gY2FsbCBhbiBpbnRlcm5hbCBtZXRob2QKdG8gZXhwbGljaXRseSBjb21taXQgdGhlIGhpc3RvcnkgZmlsZSB0byBkaXNrLCBhbmQgeW91J2xsIG5lZWQgYQpzZW1hcGhvcmUgZmlsZSB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMuIEVtYWlsIG1lIGZvciBmdWxsIGluZm8uKQoKPWN1dAoKc3ViIGhpc3RvcnlfZmlsZSB7CiAgbXkgJHNlbGYgPSBzaGlmdDsKICByZXR1cm4gJHNlbGYtPnsnaGlzdG9yeV9maWxlJ30gdW5sZXNzIEBfOyAgICMgcmVhZCBhY2Nlc3Npb24KICBteSAkZmlsZSA9ICRfWzBdOwogIAogIHVubGVzcyhkZWZpbmVkICRmaWxlICBhbmQgIGxlbmd0aCAkZmlsZSAgYW5kICAkZmlsZSA9fiBtL1xTLykgewogICAgREVCVUcgYW5kIHByaW50ICJLaWxsaW5nICRzZWxmICdzIG1lbW9yeS1oaXN0b3J5LlxuIjsKICAgICAjIEkgZG9uJ3Qga25vdyBpZiB0aGlzJ2QgYmUgYWN0dWFsbHkgdXNlZnVsIGZvciBhbnl0aGluZyB0aG8uCiAgICBkZWxldGUgJHNlbGYtPnsnaGlzdG9yeV9maWxlJ307CiAgICBkZWxldGUgJHNlbGYtPnsnX2ZpcnN0X3NlZW4nIH07CiAgICBkZWxldGUgJHNlbGYtPnsnX2xhc3Rfc2VlbicgIH07CiAgICByZXR1cm4gdW5kZWY7CiAgfQogIAogIERFQlVHIGFuZCBwcmludCAiQ29uc2lkZXJpbmcgJGZpbGUgYXMgJHNlbGYgJ3MgaGlzdG9yeS5cbiI7CiAgJHNlbGYtPnsnaGlzdG9yeV9maWxlJ30gPSAkZmlsZTsKICAkc2VsZi0+X3JlYWRfaGlzdG9yeV9maWxlOwogIAogICRzZWxmLT5pdGVtX2xpbWl0KCAyNSApIGlmICREV0lNIGFuZCAhJHNlbGYtPml0ZW1fbGltaXQoKTsKCiAgcmV0dXJuICRmaWxlOwp9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCgo9aXRlbSBDPHJzc19pdGVtKCBJPHVybD4gKTs+Cgo9aXRlbSBDPHJzc19pdGVtKCBJPHVybCwgdGl0bGU+ICk7PgoKPWl0ZW0gQzxyc3NfaXRlbSggSTx1cmwsIHRpdGxlLCBkZXNjcmlwdGlvbj4gKTs+CgpUaGlzIGFkZHMgYSBuZXcgaXRlbSB0byB0aGUgY3VycmVudCBmZWVkLiBZb3Ugd2lsbCBuZWVkIHRvIHNwZWNpZnkgdGhlClVSTCB0byBhZGQgKGFuZCBpdCBzaG91bGQgYmUgYSB2YWxpZC1sb29raW5nIFVSTCwgc3RhcnRpbmcgd2l0aAoiSTxzb21ldGhpbmc6PiIsIGFuZCBub3QgY29udGFpbmluZyBhbnkgc3BhY2VzKS4gWW91IG1heSBhbHNvIHNwZWNpZnkKdGhlIHRpdGxlLCBidXQgaXQncyBvcHRpb25hbC4gQW5kIGZpbmFsbHksIHlvdSBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGEKZGVzY3JpcHRpb24uIChZb3UgY2FuIHJlbWVtYmVyIHRoaXMgYmVjYXVzZSBpdCBzdGFydHMgd2l0aCB0aGUgZXNzZW50aWFsCml0ZW0gZmlyc3QsIGFuZCBwcm9ncmVzc2VzIHRvd2FyZCB0aGUgbW9zdCBvcHRpb25hbC4pCgpMZWFkaW5nIGFuZCB0YWlsaW5nIHdoaXRlc3BhY2UgaXMgcmVtb3ZlZCBmcm9tIHdoaWNoZXZlciBvZiBJPHVybCwKdGl0bGUsPiBhbmQgSTxkZXNjcmlwdGlvbj4gYXJlIGRlZmluZWQgdmFsdWVzLCBhbmQgSFRNTCBpcyBwYXJzZWQgb3V0LgoKQSBzaW1wbGUgdXNhZ2U6CgogIHJzc19pdGVtKAogICAgImh0dHA6Ly93d3cuaGFycGVycy5vcmcvTW9zdFJlY2VudFdSLmh0bWwiLAogICAgIkhhcnBlcidzIE1hZ2F6aW5lJ3MgV2Vla2x5IFJldmlldyIKICApOwoKQWx0aG91Z2ggaW4gcHJhY3RpY2UsIGEgdHlwaWNhbCBjYWxsIHdvbid0IGhhdmUgc3RyaW5nIGNvbnN0YW50cywgYnV0CndpbGwgaW5zdGVhZCBiZSBsaWtlIHRoZSBleGFtcGxlIGluIHRoZSBMPFN5bm9wc2lzIHNlY3Rpb3N8LyJTWU5PUFNJUyI+LApuYW1lbHk6CgogIHJzc19pdGVtKCIkdXJsJDEiLCAkMiwgJDMpOwoKSW5jaWRlbnRhbGx5LCBhcyBhIGRvLXdoYXQtSS1tZWFuIGZlYXR1cmUsIGlmIHRoZSBmaXJzdCBwYXJhbWV0ZXIKZG9lc24ndCBsb29rIGxpa2UgYSBVUkwgYnV0IG9uZSBvZiB0aGUgb3RoZXJzIGRvZXMsIHRoZW4gdGhpcyBlcnJvciBpcwpzaWxlbnRseSBmb3JnaXZlbi4gIFRoaXMgaXMgc28geW91IGNhbiBvY2Nhc2lvbmFsbHkgc2xpcCB1cCBhbmQgZm9yZ2V0CnRoZSBvcmRlciBvZiB0aGUgcGFyYW1ldGVycy4KCihJbiB0aGUgdW5saWtlbHkgZXZlbnQgd2hlcmUgeW91IEk8bmVlZD4gdG8gYXZvaWQgdGhlIEhUTUwtcmVtb3ZhbApmZWF0dXJlcywgeW91IGNhbiBkbyB0aGlzIGJ5IHBhc3Npbmcgc2NhbGFyLXJlZmVyZW5jZXMgaW5zdGVhZCBvZgpub3JtYWwgc3RyaW5ncywgbGlrZSBzbzogQzxyc3NfaXRlbSgkdXJsLCAkdGl0bGUsIFwkbm90X3RvX2JlX2VzY2FwZWQpPi4pCgo9Y3V0CgpzdWIgaXRlbSB7ICMgQWRkIGFuIGl0ZW06ICAodXJsLCB0aXRsZSwgZGVzY3JpcHRpb24pCiAgbXkoJHNlbGYsIEBwYXJhbXMpID0gQF87CiAgaWYoIGdyZXAgZGVmaW5lZCgkXykgJiYgbGVuZ3RoKCRfKSwgQHBhcmFtcyApIHsKICAgIHB1c2ggQHskc2VsZi0+eydpdGVtcyd9fSwKICAgICAgWwogICAgICAgICRzZWxmLT5fcHJvY2Vzc19pdGVtX3BhcmFtcyhAcGFyYW1zKSAgIyBEV0lNIHRoaW5ncyBoYXBwZW4gaGVyZQogICAgICBdCiAgICA7CiAgICBERUJVRyBhbmQgcHJpbnQgIkFkZGluZyBpdGVtICIsCiAgICAgam9pbigifCIsIEB7ICRzZWxmLT57J2l0ZW1zJ31bLTFdIH0pLCAiXG4iOwoKICAgICMgVXBkYXRlIGhpc3RvcnkuLi4KICAgIGlmKCAkc2VsZi0+eydfZmlyc3Rfc2Vlbid9ICkgewogICAgICBteSAkdXJsID0gJHNlbGYtPnsnaXRlbXMnfVstMV1bMF07CiAgICAgIG15ICRub3cgPQogICAgICAgICAgICAkc2VsZi0+eydfdmlyZ2luX2l0ZW1fdGltZXN0YW1wJ30KICAgICAgICA/IC0tJHNlbGYtPnsnX3Zpcmdpbl9pdGVtX3RpbWVzdGFtcCd9CiAgICAgICAgOiB0aW1lKCkKICAgICAgOwogICAgICAkc2VsZi0+eydfZmlyc3Rfc2Vlbid9eyR1cmx9IHx8PSAkbm93OwogICAgICAkc2VsZi0+eydfbGFzdF9zZWVuJyB9eyR1cmx9ICAgPSAkbm93OwogICAgfQoKICB9IGVsc2UgewogICAgREVCVUcgYW5kIHByaW50ICJOb3QgYWRkaW5nIGl0ZW0gLS0gZW1wdHkgcGFyYW1zXG4iOwogIH0KICByZXR1cm4gJHNlbGY7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfaXRlbV9jb3VudCgpPgoKVGhpcyByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgeW91J3ZlIGRlY2xhcmVkLiAgSSBhbnRpY2lwYXRlIHRoYXQgaXRzCm1haW4gdXNhZ2Ugd2lsbCBiZSBzb21ldGhpbmcgbGlrZToKCiAgZGllICJXaGF0LCBubyBvYmplY3RzIGZvdW5kIGF0ICR1cmwgPyEiCiAgIHVubGVzcyByc3NfaXRlbV9jb3VudCgpOwoKb3IsIG1heWJlLi4uCgogIGV4aXQgdW5sZXNzIHJzc19pdGVtX2NvdW50KCk7CgouLi5kZXBlbmRpbmcgb24gaG93L3doZXRoZXIgeW91J2Qgd2FudCB0byByZWFjdCB0byBjYXNlcyB3aGVyZSB5b3UgZG9uJ3QKc2VlIGFueXRoaW5nIHRvIHB1dCBpbnRvIGFuIFJTUyBmZWVkLgoKTm90ZSB0aGF0IHRoZSBwYXJlbnMgYXJlIG9wdGlvbmFsLCBzaW5jZSB0aGlzIGNvbW1hbmQgdGFrZXMgbm8gb3B0aW9ucwooanVzdCBsaWtlIFBlcmwncyBDPHRpbWUoKT4gZnVuY3Rpb24pLgoKPWN1dAoKc3ViIGl0ZW1fY291bnQgIHsgc2NhbGFyIEB7ICRfWzBdLT57J2l0ZW1zJ30gfTsgfQpzdWIgaXRlbXNfY291bnQgeyBzaGlmdC0+aXRlbV9jb3VudCB9ICMgaGFybWxlc3MgYWxpYXMKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgX3NvcnRfaXRlbXNfbmV3ZXN0X2ZpcnN0IHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICRzZWVuID0gJHNlbGYtPnsnX2ZpcnN0X3NlZW4nfTsKCiAgJHNlZW4gb3IgQ2FycDo6Y29uZmVzcygKICAgIkNhbid0IHNvcnQgaXRlbXMgYnkgYWdlIHVubGVzcyB5b3UgZGVmaW5lIGEgaGlzdG9yeSBmaWxlISIpOwoKICBteSAkaXRlbXMgPSAkc2VsZi0+eydpdGVtcyd9IHx8IGRpZSAiTk8gSVRFTVMhPyI7CgogIGlmKCBERUJVRyApIHsKICAgIHByaW50ICJcblNvcnRpbmcgIiwgc2NhbGFyKEAkaXRlbXMpLCAiIGl0ZW1zLCBuZXdlc3QgZmlyc3QuICBBZ2UgZHVtcDpcbiI7CiAgICBmb3JlYWNoIG15ICRpIChAJGl0ZW1zKSB7CiAgICAgIGlmKCAkaS0+WzBdICkgewogICAgICAgIHByaW50ZiAiICAlcyA6ICVzICglcylcbiIsCiAgICAgICAgICRpLT5bMF0sICRzZWVuLT57JGktPlswXX0gfHwgMCwgc2NhbGFyIGxvY2FsdGltZSgKICAgICAgICAgICAgICAgICAgJHNlZW4tPnskaS0+WzBdfSB8fCAwKQogICAgICAgIDsKICAgICAgfSBlbHNlIHsKICAgICAgICBwcmludCAiIE5PVVJMXG4iOwogICAgICB9CiAgICB9CiAgICBwcmludCAiIChubyBpdGVtcylcbiIgdW5sZXNzIEAkaXRlbXM7CiAgICBwcmludCAiKEVuZCBoaXN0b3J5IGR1bXAuKVxuXG4iOwogIH0KCiAgQCRpdGVtcyA9CiAgICBzb3J0IHsgKCRzZWVuLT57JGItPlswXSB8fCcnfSB8fDApCiAgICAgICA8PT4gKCRzZWVuLT57JGEtPlswXSB8fCcnfSB8fDApCiAgICAgICBvciAkYS0+WzBdIGNtcCAkYi0+WzBdICAjIFNvIGl0J3MgYXQgbGVhc3QgcHJlZGljdGFibGUKICAgIH0KICAgICAgQCRpdGVtczsKICByZXR1cm47Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfaW1hZ2UoIEk8dXJsLCBoLCB3PiApOz4KClRoaXMgZGVjbGFyZXMgdGhhdCB5b3Ugd2FudCB0byBkZWNsYXJlIGEgcGFydGljdWxhciBpbWFnZSBhcyB0aGUgbG9nbyBmb3IKdGhpcyBmZWVkLiAgTW9zdCBmZWVkcyBkb24ndCBoYXZlIHN1Y2ggYSB0aGluZywgYW5kIG1vc3QgcmVhZGVycyBqdXN0IGlnbm9yZQppdCBhbnl3YXksIGJ1dCBpZiB5b3Ugd2FudCB0byBkZWNsYXJlIGl0LCB0aGlzIGZ1bmN0aW9uIGlzIGhvdy4gIFRoZQp0aHJlZSBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgYWxsIHJlcXVpcmVkLCBhcmU6IHRoZSBpbWFnZSdzIFVSTCwgaXRzCmhlaWdodCBpbiBwaXhlbHMsIGFuZCBpdHMgd2lkdGggaW4gcGl4ZWxzLgpBY2NvcmRpbmcgdG8gdmFyaW91cyBzcGVjcywgdGhlIHdpZHRoIHNob3VsZC9tdXN0IGJlIGJldHdlZW4gMSBhbmQgMTQ0LAphbiB0aGUgaGVpZ2h0IHNob3VsZC9tdXN0IGJlIGJldHdlZW4gMSBhbmQgNDAwLgoKQSB0eXBpY2FsIHVzYWdlOgoKICByc3NfaW1hZ2UoImh0dHA6Ly9pbnRlcmdsYWNpYWwuY29tL3Jzcy93ZWVibC5naWYiLCAxMDYsIDE0MCk7CgpCZSBjYXJlZnVsIG5vdCB0byBtaXggdXAgdGhlIGhlaWdodCBhbmQgd2lkdGguCgo9Y3V0CgoKc3ViIGltYWdlIHsKICBteSgkc2VsZiwgJHVybCwgJGgsICR3KSA9IHNwbGljZShAXywwLDQpOwogIENhcnA6OmNyb2FrICJVc2FnZTogXCRyc3MtPmltYWdlKFwkdXJsLCBcJGgsIFwkdykiCiAgIHVubGVzcyAkdXJsIGFuZCAkaCBhbmQgJHcKICAgICBhbmQgJGggPX4gbS9eXGR7MSwzfSQvcwogICAgIGFuZCAkdyA9fiBtL15cZHsxLDN9JC9zCiAgOwogICRzZWxmLT5pbWFnZV91cmwoJHVybCk7CiAgJHNlbGYtPmltYWdlX2hlaWdodCgkaCk7CiAgJHNlbGYtPmltYWdlX3dpZHRoKCAkdyk7CgogICAgIyAgd2lkdGggbXVzdCAoc2hvdWxkPykgYmUgYmV0d2VlbiAxIGFuZCAxNDQKICAgICMgaGVpZ2h0IG11c3QgKHNob3VsZD8pIGJlIGJldHdlZW4gMSBhbmQgNDAwCgogIEBfIGFuZCAkc2VsZi0+aW1hZ2VfbGluayggICAgICAgIHNoaWZ0KTsKICBAXyBhbmQgJHNlbGYtPmltYWdlX3RpdGxlKCAgICAgICBzaGlmdCk7CiAgQF8gYW5kICRzZWxmLT5pbWFnZV9kZXNjcmlwdGlvbiggc2hpZnQpOwogIHJldHVybjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgo9aXRlbSBDPHJzc19zYXZlKCBJPGZpbGVuYW1lPiApOz4KCj1pdGVtIEM8cnNzX3NhdmUoIEk8ZmlsZW5hbWUsIG1heF9hZ2VfZGF5cz4gKTs+CgpUaGlzIHNhdmVzIHRoZSBSU1MgZGF0ZSB0byB0aGUgZmlsZSB5b3Ugc3BlY2lmeS4gIElmIHRoZSBSU1MgZGF0YSBoYXNuJ3QKY2hhbmdlZCwgdGhlIGZpbGUgKGFuZCBpdHMgbW9kdGltZSkgYXJlbid0IGFsdGVyZWQuICBUaGUgb3B0aW9uYWwgSTxtYXhfYWdlX2RheXM+CnBhcmFtZXRlciBtZWFucyB0aGF0IGlmIGV2ZXIgdGhlIGZpbGUgZXhpc3RzLCBhbmQgaXRzIGNvbnRlbnQgaGFzbid0IGNoYW5nZWQKZm9yIHRoYXQgbWFueSBkYXlzIG9yIGxvbmdlciwgdGhlbiB0aGUgcHJvZ3JhbSBzaG91bGQgZGllIHdpdGggYSB3YXJuaW5nCm1lc3NhZ2UuICBGb3IgZXhhbXBsZSwgaW4gdGhlIGNhc2Ugb2YgYSBzY3JlZW4tc2NyYXBlciBmb3IgYSBzaXRlIHRoYXQgd2UKa25vdyBzaG91bGQgKGluIHRoZW9yeSkgY2hhbmdlIGl0cyBjb250ZW50IGF0IGxlYXN0IHdlZWtseSwgd2UgbWlnaHQgc2F2ZQp0aGUgUlNTIGZpbGUgd2l0aDoKCiAgcnNzX3NhdmUoIndoYXRldmVyLnJzcyIsIDE3KTsKICAgIyBTY3JlYW0gaWYgdGhlIGZlZWQgaXMgdW5jaGFuZ2VkIGZvciAxNyBkYXlzLgoKVGhlIHNldmVudGVlbiB0aGVyZSBpcyBnb3R0ZW4gYnkgYXNzdW1pbmcgdGhhdCBqdXN0IG1heWJlIHRoZSBzaXRlCm1pZ2h0IHNraXAgdHdvIHdlZWtzIGZvciBhIHZhY2F0aW9uIG5vdyBhbmQgdGhlbiwgYW5kIG1pZ2h0IGV2ZW4gcHV0Cm91dCB0aGUgcHJlLXZhY2F0aW9uIGlzc3VlIGEgZmV3IGRheXMgZWFybHkgLS0gYnV0IHRoYXQgaWYgZXZlciB0aGUgcHJvZ3JhbQpub3RpY2VzIHRoYXQgdGhlIGRhdGEgaGFzbid0IGNoYW5nZWQgZm9yIDE3IGRheXMsIHRoZW4gaXQgc2hvdWxkIGVtaXQKZXJyb3IgbWVzc2FnZXMuICBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRoaXMgZmVhdHVyZSBvbiBhIG9uZS10aW1lIGJhc2lzLApqdXN0IGNoYW5nZSB0aGUgbW9kdGltZSAobGlrZSB2aWEgQzx0b3VjaD4pIG9uIHRoZSBGPHdoYXRldmVyLnJzcz4gZmlsZS4KCklmIHlvdSBkb24ndCBzcGVjaWZ5IGEgQzxtYXhfYWdlX2RheXM+IHZhbHVlLCB0aGVuIHRoaXMgd2hvbGUKY29tcGxhaW4taWYtaXQncy1vbGQgZmVhdHVyZSBpcyBkaXNhYmxlZC4KCj1jdXQKCnN1YiBzYXZlIHsKICBteSgkc2VsZiwgJGZpbGVuYW1lLCAkbWF4YWdlKSA9IEBfOwogIENhcnA6OmNyb2FrKCJJIG5lZWQgYSBmaWxlbmFtZSB0byBzYXZlIHRvIikKICAgdW5sZXNzIGRlZmluZWQgJGZpbGVuYW1lIGFuZCBsZW5ndGggJGZpbGVuYW1lOwoKICAkc2VsZi0+aGlzdG9yeV9maWxlIGFuZCAkc2VsZi0+X3NvcnRfaXRlbXNfbmV3ZXN0X2ZpcnN0OwogICRzZWxmLT5fd3JpdGVfaGlzdG9yeV9maWxlOwoKICBteSAkbmV3X2NvbnRlbnQgPSAkc2VsZi0+YXNfc3RyaW5nOwoKICBsb2NhbCAqUlNTOwogICMgU2VlIGlmIHdlIGNhbiBza2lwIHdyaXRpbmcgdG8gZGlzawogIGlmKC1lICRmaWxlbmFtZSBhbmQgLWYgXyBhbmQgLXIgXyBhbmQgLXMgXykgewogICAgREVCVUcgYW5kIHByaW50ICJDb21wYXJpbmcgdG8gJGZpbGVuYW1lLi4uXG4iOwogICAgb3BlbiBSU1MsICRmaWxlbmFtZQogICAgIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHJlYWQtb3BlbiAkZmlsZW5hbWU6ICQhIjsgIyBpbnNhbml0eQogICAgbG9jYWwgJC87CiAgICBteSAkY29udGVudCA9IDxSU1M+OwogICAgY2xvc2UoUlNTKTsKICAgIAogICAgaWYoICRjb250ZW50IGVxICRuZXdfY29udGVudCApIHsKICAgICAgREVCVUcgYW5kIHByaW50ICIgJGZpbGVuYW1lXCdzIGNvbnRlbnQgaXMgdGhlIHNhbWUuXG4iOwogICAgICByZXR1cm4gJHNlbGYtPl9jaGVja19hZ2UoJGZpbGVuYW1lLCAkbWF4YWdlKTsKICAgIH0KICAgIAogICAgbXkgJG5ld19jb250ZW50X3dpdGhvdXRfYnVpbGRkYXRlID0gJG5ld19jb250ZW50OwogICAgZm9yZWFjaCBteSAkYyAoJG5ld19jb250ZW50X3dpdGhvdXRfYnVpbGRkYXRlLCAkY29udGVudCkgewogICAgICAkYyA9fiBzezxsYXN0W0JiXXVpbGRbRGRdYXRlPi4qPzwvbGFzdFtCYl11aWxkW0RkXWF0ZT59e307CiAgICAgICRjID1+IHN7PHB1YltEZF1hdGU+Lio/PC9wdWJbRGRdYXRlPn17fTsKICAgICAgJGMgPX4gdHJ7XG5ccn17fXM7ICAjIEFuZCBzbWFzaCBuZXdsaW5lcyB3aGlsZSB3ZSdyZSBhdCBpdC4uLgogICAgfQogICAgaWYoICRjb250ZW50IGVxICRuZXdfY29udGVudF93aXRob3V0X2J1aWxkZGF0ZSApIHsKICAgICAgREVCVUcgYW5kIHByaW50ICIgJGZpbGVuYW1lXCdzIGNvbnRlbnQgaXMgdGhlIHNhbWUsIGJhc2ljYWxseS5cbiI7CiAgICAgIHJldHVybiAkc2VsZi0+X2NoZWNrX2FnZSgkZmlsZW5hbWUsICRtYXhhZ2UpOwogICAgfQogICAgREVCVUcgYW5kIHByaW50ICIgJGZpbGVuYW1lXCdzIGNvbnRlbnQgaXMgc3RhbGUuICBPdmVyd3JpdGluZy5cbiI7CiAgfQogIERFQlVHIGFuZCBwcmludCAiV3JpdGluZyB0byAkZmlsZW5hbWUgLi4uXG4iOwogIAogICMgT0ssIHdlIGhhdmUgdG8gYWN0dWFsbHkgd3JpdGUgaXQuICBMZXQncyBkbyBpdCBmYXN0LgogIG9wZW4oUlNTLCAiPiRmaWxlbmFtZSIpCiAgIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHdyaXRlLW9wZW4gJGZpbGVuYW1lOiAkIVxuQWJvcnRpbmciOwogIHByaW50IFJTUyAkbmV3X2NvbnRlbnQKICAgb3IgQ2FycDo6Y29uZmVzcyAiQ2FuJ3QgcHJpbnQgdG8gJGZpbGVuYW1lOiAkIVxuQWJvcnRpbmciOwogIGNsb3NlKFJTUykKICAgb3IgQ2FycDo6Y29uZmVzcyAiQ2FuJ3QgY2xvc2UgJGZpbGVuYW1lOiAkIVxuQWJvcnRpbmciOwogIGV2YWwgeyBjaG1vZCAwNjQ0LCAkZmlsZW5hbWUgfTsKICBERUJVRyBhbmQgcHJpbnQgIkRvbmUgd3JpdGluZyB0byAkZmlsZW5hbWVcbiI7CiAgcmV0dXJuIDE7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfYXNfc3RyaW5nKCk7PgoKVGhpcyByZXR1cm5zIHRoZSBSU1MtWE1MIGRhdGEgYXMgYSBzdHJpbmcuICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAppbnRlcm5hbGx5IGJ5IHRoZSByc3Nfc2F2ZSBmdW5jdGlvbjsgYnV0IHlvdSBtaWdodCB3YW50IHRvIGNhbGwgaXQKZXhwbGljaXRseSwgYXMgaW4gYSBDR0ksIHdoZXJlIHlvdXIgQ0dJIHdvdWxkIHByb2JhYmx5IGVuZCBsaWtlIHRoaXM6CgogIHByaW50ICJDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3htbFxuXG4iLCByc3NfYXNfc3RyaW5nKCk7CiAgZXhpdDsKCj1jdXQKCgpzdWIgYXNfc3RyaW5nIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIAogIG15ICRuYW1lc3BhY2VzID0gJHNlbGYtPl9uYW1lc3BhY2VzX2FzX3N0cmluZzsKICAKICByZXR1cm4gam9pbiAnJyA9PgogICAgcXF7PD94bWwgdmVyc2lvbj0iMS4wIj8+XG59LAogICAgKCREVERfcHViaWQgYW5kICREVERfdXJsKQogICAgID8gcXF7PCFET0NUWVBFIHJzcyBQVUJMSUMgIiREVERfcHViaWQiXG4gICIkRFREX3VybCI+XG59IDogKCksCgogICAgJHNlbGYtPmNzcyA/ICggIyBodHRwOi8vd3d3LnczLm9yZy9UUi94bWwtc3R5bGVzaGVldC8KICAgICAgcXF7PD94bWwtc3R5bGVzaGVldCB0aXRsZT0iQ1NTX2Zvcm1hdHRpbmciIHR5cGU9InRleHQvY3NzIiBocmVmPSJ9LAogICAgICAkc2VsZi0+eG1sZXNjKCRzZWxmLT5jc3MpLAogICAgICBxcXsiPz5cbn0KICAgICkgOiAoKSwKICAgICRzZWxmLT54c2wgPyAoCiAgICAgIHFxezw/eG1sLXN0eWxlc2hlZXQgdGl0bGU9IlhTTF9mb3JtYXR0aW5nIiB0eXBlPSJ0ZXh0L3htbCIgaHJlZj0ifSwgIyBUT0RPOiBiZXR0ZXIgbWltZSB0eXBlPwogICAgICAkc2VsZi0+eG1sZXNjKCRzZWxmLT54c2wpLAogICAgICBxcXsiPz5cbn0KICAgICkgOiAoKSwKICAgIHFxezxyc3MgdmVyc2lvbj0iMi4wIiRuYW1lc3BhY2VzPjxjaGFubmVsPn0sCiAgICAkc2VsZi0+X21vZHZlcnNpb25fY29tbWVudCwKICAgICRzZWxmLT5fdmFyaW91c19jb21tZW50cywKICAgICRzZWxmLT5fbWV0YWRhdGFfYXNfeG1sLAogICAgJHNlbGYtPl9pdGVtc19hc194bWwsCiAgICAiXG48L2NoYW5uZWw+PC9yc3M+XG4iLAogIDsKfQoKc3ViIF9uYW1lc3BhY2VzX2FzX3N0cmluZyB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSAkbnMgPSAkc2VsZi0+eydfbmFtZXNwYWNlcyd9OwogIHJldHVybiAnJyB1bmxlc3MgJG5zIGFuZCBrZXlzICUkbnM7CiAgcmV0dXJuCiAgICBqb2luICcnLCAiXG4iLAogICAgbWFwIHFxeyAgeG1sbnM6JF89IiQkbnN7JF99IlxufSwKICAgIHNvcnQga2V5cyAlJG5zCiAgOwp9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCnN1YiBfbWV0YWRhdGFfYXNfeG1sIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15KCR1cmwsICR0aXRsZSwgJGRlc2NyaXB0aW9uKSA9ICgKICAgIG1hcCBkZWZpbmVkKCRfKSA/ICRfIDogJycsCiAgICAkc2VsZi0+dXJsLCAkc2VsZi0+dGl0bGUsICRzZWxmLT5kZXNjcmlwdGlvbiwKICApOwogIAogIGlmKCREV0lNKSB7CiAgICAjIHRvbGVyYXRlIHN3aXRjaGluZyB0aGUgZGVzY3JpcHRpb24vdGl0bGUgYW5kIHRoZSBVUkwKICAgIGlmKCR1cmwgIX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgICBERUJVRyBhbmQgcHJpbnQgIlVSTCBcIiR1cmxcIiBsb29rcyBmaXNoeS4uLlxuIjsKICAgICAgaWYoICR0aXRsZSA9fiBte15bYS16XStbYS16MC05XSo6XFMrJH1zKSB7CiAgICAgICAgREVCVUcgYW5kIHByaW50ICJTd2FwcGluZyB3aXRoIHRpdGxlIFwiJHRpdGxlXCJcbiI7CiAgICAgICAgKCR1cmwsICR0aXRsZSkgPSAoJHRpdGxlLCAkdXJsKTsKICAgICAgICAkc2VsZi0+dXJsKCR1cmwpOwogICAgICAgICRzZWxmLT50aXRsZSgkdGl0bGUpOwogICAgICB9IGVsc2lmKCAkZGVzY3JpcHRpb24gPX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgICAgIERFQlVHIGFuZCBwcmludCAiU3dhcHBpbmcgd2l0aCBkZXNjcmlwdGlvbiBcIiRkZXNjcmlwdGlvblwiXG4iOwogICAgICAgICgkdXJsLCAkZGVzY3JpcHRpb24pID0gKCRkZXNjcmlwdGlvbiwgJHVybCk7CiAgICAgICAgJHNlbGYtPnVybCgkdXJsKTsKICAgICAgICAkc2VsZi0+ZGVzY3JpcHRpb24oJGRlc2NyaXB0aW9uKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBDYXJwOjpjcm9hayggIkludmFsaWQgVVJMIFwiJHVybFwiIGluIG1ldGFkYXRhICIKICAgICAgICAgLiAoJHRpdGxlfHwkZGVzY3JpcHRpb258fCI/Pz8iKSAuICJcbkFib3J0aW5nIgogICAgICAgICk7CiAgICAgIH0KICAgIH0KICB9CgogIG15ICRsYW5nID0gJHNlbGYtPmxhbmd1YWdlOwogICRsYW5nIGFuZCAkbGFuZyA9fiB0cltfXVtcLV07ICMgdG9sZXJhdGUgdW5kZXJzY29yZXMKICAkbGFuZyA9ICdlbicgdW5sZXNzIGRlZmluZWQgJGxhbmcKICAgIyBGcm9tIEkxOE46OkxhbmdUYWdzLi4uCiAgIGFuZCAkbGFuZyAhfiBtL15baUl4SV0kL3MKICAgYW5kICRsYW5nID1+CiAgICBtL14oPzogICMgRmlyc3Qgc3VidGFnCiAgICAgICAgIFt4aUlYXSB8IFthLXpBLVpdezIsM30KICAgICAgKQogICAgICAoPzogICMgU3VidGFncyB0aGVyZWFmdGVyCiAgICAgICAgIC0gICAgICAgICAgICMgc2VwYXJhdG9yCiAgICAgICAgIFtBLVphLXowLTldezEsOH0gICMgc3VidGFnICAKICAgICAgKSoKICAgICQveHMKICA7CgogIHJldHVybiBqb2luICcnLCBzcHJpbnRmKCBxcXsKPGxpbms+JXM8L2xpbms+Cjx0aXRsZT4lczwvdGl0bGU+CjxkZXNjcmlwdGlvbj4lczwvZGVzY3JpcHRpb24+CjxsYW5ndWFnZT4lczwvbGFuZ3VhZ2U+CjxsYXN0QnVpbGREYXRlPiVzPC9sYXN0QnVpbGREYXRlPgp9LAogICAgICBtYXAoICRzZWxmLT5odG1sMnRleHQoJF8pLAogICAgICAgICR1cmwgICAgICAgICB8fCAnISEhIUR1bW15VVJMISEhIScsCiAgICAgICAgJHRpdGxlICAgICAgIHx8ICRkZXNjcmlwdGlvbiB8fCAkdXJsIHx8ICchISEhRHVtbXlUaXRsZSEhISEnLAogICAgICAgICRkZXNjcmlwdGlvbiB8fCAkdGl0bGUgfHwgJHVybCB8fCAnISEhIUR1bW15RGVzY3JpcHRpb24hISEhJywKICAgICAgKSwKICAgICAgJGxhbmcsCiAgICAgICRzZWxmLT5fZGF0ZV9yZmM4MjIoKSwKICAgICksCiAgICBncmVwICRfLAogICAgCiAgICAkc2VsZi0+eyJza2lwSG91cnMifSwKICAgICRzZWxmLT57InNraXBEYXlzIn0sCiAgICAkc2VsZi0+X3N5X3VwZGF0ZV9hc194bWwsCiAgICAoKCRzZWxmLT57InR0bCJ9IHx8ICcnKSA9fiBtL14oXGQrKSQvcykgJiYgIjx0dGw+JDE8L3R0bD5cbiIsCiAgICAkc2VsZi0+d2ViTWFzdGVyICYmCiAgICAgKCI8d2ViTWFzdGVyPiIgLiAkc2VsZi0+aHRtbDJ0ZXh0KCRzZWxmLT53ZWJNYXN0ZXIpIC4gIjwvd2ViTWFzdGVyPlxuIiksCiAgICAKICAgICRzZWxmLT5kb2NzICYmCiAgICAgKCI8ZG9jcz4iIC4gJHNlbGYtPmh0bWwydGV4dCgkc2VsZi0+ZG9jcykgLiAiPC9kb2NzPlxuIiksCgogICAgJHNlbGYtPl9pbWFnZV9hc194bWwsCiAgICAkc2VsZi0+eydtb3JlX21ldGFkYXRhJ30sICMgYSBoYWNrIGZvciBzbmVha2luZyBpbiBtb3JlIHRoaW5ncwogIDsKCiMgLi4ud2l0aCBzYW5pdHktY2hlY2tlcnMKCn0KIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgX3Byb2Nlc3NfaXRlbV9wYXJhbXMgewogIG15ICRzZWxmID0gc2hpZnQ7CiAgbXkoJHVybCwgJHRpdGxlLCAkZGVzY3JpcHRpb24pID0KICAgIG1hcCB7OyAoZGVmaW5lZCgkXykgJiYgbS9cUy8pID8gJF8gOiAnJyB9ICMgY29udGVudGZ1bG5lc3MgZmlsdGVyCiAgICBtYXAgJHNlbGYtPmh0bWwydGV4dCgkXyksICAjIGhlcmUncyB3aGVyZSB3ZSBkZS1odG1saWZ5IHRoaW5ncwogICAgQF87CiAgOwogIAogIGZvcigkdXJsLCAkdGl0bGUsICRkZXNjcmlwdGlvbikgewogICAgaWYocmVmICRfICAgICAgICkgeyB9ICAjIE9rYXkKICAgIGVsc2lmKGRlZmluZWQgJF8pIHsgcy9eXHMrLy9zOyBzL1xzKyQvL3MgfQogICAgZWxzZSAgICAgICAgICAgICAgeyAkXyA9ICcnIH0KICB9CiAgCiAgIyBUb2xlcmF0ZSBzd2l0Y2hpbmcgdGhlIGRlc2NyaXB0aW9uL3RpdGxlIGFuZCB0aGUgVVJMCiAgaWYoJERXSU0gYW5kICR1cmwgIX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgREVCVUcgYW5kIHByaW50ICJVUkwgXCIkdXJsXCIgbG9va3MgZmlzaHkuLi5cbiI7CiAgICBpZiggJHRpdGxlID1+IG17XlthLXpdK1thLXowLTldKjpcUyskfXMpIHsKICAgICAgREVCVUcgYW5kIHByaW50ICJTd2FwcGluZyB3aXRoIHRpdGxlIFwiJHRpdGxlXCJcbiI7CiAgICAgICgkdXJsLCAkdGl0bGUpID0gKCR0aXRsZSwgJHVybCk7CiAgICB9IGVsc2lmKCAkZGVzY3JpcHRpb24gPX4gbXteW2Etel0rW2EtejAtOV0qOlxTKyR9cykgewogICAgICBERUJVRyBhbmQgcHJpbnQgIlN3YXBwaW5nIHdpdGggZGVzY3JpcHRpb24gXCIkZGVzY3JpcHRpb25cIlxuIjsKICAgICAgKCR1cmwsICRkZXNjcmlwdGlvbikgPSAoJHRpdGxlLCAkZGVzY3JpcHRpb24pOwogICAgfSBlbHNlIHsKICAgICAgQ2FycDo6Y29uZmVzcyggIkludmFsaWQgVVJMIFwiJHVybFwiIGluIGl0ZW0gIgogICAgICAgLiAoJHRpdGxlfHwkZGVzY3JpcHRpb258fCI/Pz8iKSAuICJcbkFib3J0aW5nIgogICAgICApOwogICAgfQogIH0KICByZXR1cm4gKCR1cmwsICR0aXRsZSwgJGRlc2NyaXB0aW9uKTsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgX2l0ZW1zX2FzX3htbCB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSBAaXRlbXM7CiAgbXkgQHhtbF9vdXQgPSAoJE1heWJlTkwpOwoKICBpZiggJHNlbGYtPmFsbG93X2R1cGxpY2F0ZXMgKSB7CiAgICBAaXRlbXMgPSBAeyAkc2VsZi0+eydpdGVtcyd9IHx8IGRpZSAiTk8gSVRFTVMhPyE/IiB9OwogIH0gZWxzZSB7CiAgICBteSAlc2VlbjsKICAgIGZvcmVhY2ggbXkgJGkgKEB7ICRzZWxmLT57J2l0ZW1zJ30gfHwgZGllICJOTyBJVEVNUyE/IT8iIH0pIHsKICAgICAgaWYoICRzZWVueyAkaS0+WzBdIH0gKysgKSB7CiAgICAgICAgREVCVUcgYW5kIHByaW50ICJSZW1vdmluZyBkdXBsaWNhdGUgaXRlbSBAJGlcbiI7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcHVzaCBAaXRlbXMsICRpOwogICAgICB9CiAgICB9CiAgfQoKICBteSAkaXRlbV9saW1pdCA9IGludCggJHNlbGYtPml0ZW1fbGltaXQgfHwgMCApOwogIGlmKCRpdGVtX2xpbWl0KSB7CiAgICBpZihAaXRlbXMgPiBhYnMoJGl0ZW1fbGltaXQpKSB7CiAgICAgIGlmKCRpdGVtX2xpbWl0ID4gMCkgeyAjIGxpa2UgNCB0byBtZWFuIGp1c3QgdGhlIGZpcnN0IDQKICAgICAgICBERUJVRyBhbmQgcHJpbnQgIiBLaWxsaW5nIGFsbCBidXQgdGhlIGZpcnN0ICRpdGVtX2xpbWl0IGl0ZW1zLlxuIjsKICAgICAgICBzcGxpY2UgQGl0ZW1zLCAkaXRlbV9saW1pdDsKICAgICAgfSBlbHNlIHsgIyBsaWtlIC00IHRvIG1lYW4ganVzdCB0aGUgbGFzdCA0CiAgICAgICAgREVCVUcgYW5kIHByaW50ICIgS2lsbGluZyBhbGwgYnV0IHRoZSBsYXN0ICIsIDAtJGl0ZW1fbGltaXQsICIgaXRlbXMuXG4iOwogICAgICAgIHNwbGljZSBAaXRlbXMsIDAsIEBpdGVtcyArICRpdGVtX2xpbWl0OwogICAgICAgICAjIFNvIGlmIGl0ZW1fbGltaXQgaXMgLTMgYW5kIEBpdGVtcyBoYXMgMTAgZWxlbWVudHMsCiAgICAgICAgICMgIHRoZW4gdGhhdCBudW1iZXIgd2lsbCBiZSA3LCBpLmUuLCB0byBjaG9wIHRoZSBmaXJzdCA3CiAgICAgICAgICMgIGVsZW1lbnRzLCBsZWF2aW5nIHRoZSBsYXN0IDMuCiAgICAgIH0KICAgIH0KICB9CiAgREVCVUcgYW5kIHByaW50IHNjYWxhcihAaXRlbXMpLCAiIGl0ZW1zIGF0IGhhbmQ6XG4iOwogIAogIGZvcmVhY2ggbXkgJGkgKEBpdGVtcykgewogICAgbXkoJHVybCwgJHRpdGxlLCAkZGVzY3JpcHRpb24pID0gQCRpOwogICAgREVCVUcgPiAxIGFuZCBwcmludCAiSTogKHUgJHVybCkgKHQgJHRpdGxlKSAoZCAkZGVzY3JpcHRpb24pXG4iOwogICAgbmV4dCB1bmxlc3MgJHVybCBvciAkdGl0bGUgb3IgJGRlc2NyaXB0aW9uOwogICAgcHVzaCBAeG1sX291dCwgCiAgICAgIjxpdGVtPiRNYXliZU5MIiwKICAgICAobWFwICIkTWF5YmVJbmRlbnQkXyRNYXliZU5MIiwKICAgICAgIGxlbmd0aCgkdGl0bGUpICAgICAgID8gIjx0aXRsZT4kdGl0bGU8L3RpdGxlPiIgOiAoKSwKICAgICAgIGxlbmd0aCgkdXJsKSAgICAgICAgID8gIjxsaW5rPiR1cmw8L2xpbms+IiA6ICgpLAogICAgICAgbGVuZ3RoKCRkZXNjcmlwdGlvbikgPyAiPGRlc2NyaXB0aW9uPiRkZXNjcmlwdGlvbjwvZGVzY3JpcHRpb24+IiA6ICgpLAogICAgICksCiAgICAgIjwvaXRlbT4kTWF5YmVOTFxuIiwKICB9CiAgREVCVUcgYW5kIHByaW50ICJfaXRlbXNfYXNfeG1sIHJldHVybmluZyB7XG4iLCBqb2luKCcnLCBAeG1sX291dCksICJ9XG5cbiI7CiAgCiAgcmV0dXJuIGpvaW4gJycsIEB4bWxfb3V0Owp9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCnN1YiBfaW1hZ2VfYXNfeG1sIHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIHJldHVybiAnJyB1bmxlc3MKICAgICRzZWxmLT5pbWFnZV91cmwgYW5kICRzZWxmLT5pbWFnZV9oZWlnaHQgYW5kICRzZWxmLT5pbWFnZV93aWR0aDsKCiAgIyA8IUVMRU1FTlQgaW1hZ2UgKHRpdGxlIHwgdXJsIHwgbGluayB8IHdpZHRoPyB8IGhlaWdodD8gfCBkZXNjcmlwdGlvbj8pKj4KCiAgcmV0dXJuIGpvaW4gJycsCiAgICAiPGltYWdlPlxuIiwKICAgIG1hcCgiICAkX1xuIiA9PgogICAgICAkc2VsZi0+eG1sZWxlbSggJ3RpdGxlJyAgPT4gJHNlbGYtPmltYWdlX3RpdGxlIHx8ICRzZWxmLT5odG1sMnRleHQoJHNlbGYtPnRpdGxlKSksCiAgICAgICRzZWxmLT54bWxlbGVtKCAndXJsJyAgICA9PiAkc2VsZi0+aW1hZ2VfdXJsKSwgIyB1cmwgb2YgdGhlIGltYWdlCiAgICAgICRzZWxmLT54bWxlbGVtKCAnbGluaycgICA9PiAkc2VsZi0+aW1hZ2VfbGluayAgfHwgJHNlbGYtPmh0bWwydGV4dCgkc2VsZi0+dXJsICApKSwKICAgICAgJHNlbGYtPnhtbGVsZW0oICd3aWR0aCcgID0+ICRzZWxmLT5pbWFnZV93aWR0aCksCiAgICAgICRzZWxmLT54bWxlbGVtKCAnaGVpZ2h0JyA9PiAkc2VsZi0+aW1hZ2VfaGVpZ2h0KSwKICAgICAgJHNlbGYtPnhtbGVsZW0oICdkZXNjcmlwdGlvbicKICAgICAgICAgICAgICAgICA9PiAkc2VsZi0+aW1hZ2VfZGVzY3JpcHRpb24KICAgICAgICAgICAgICAgICAgICB8fCAkc2VsZi0+aHRtbDJ0ZXh0KCRzZWxmLT5kZXNjcmlwdGlvbikpLAogICAgKSwKICAgICI8L2ltYWdlPlxuIiwKICA7Cn0KCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCj1pdGVtIEM8Z2V0X3VybCggSTx1cmw+ICk7PgoKPWl0ZW0gQzwkY29udGVudCA9IGdldF91cmwoIEk8dXJsPiApOz4KCj1pdGVtIEk8b3I6PiBDPDwgJGNvbnRlbnQgPSAkcnNzLT5nZXRfdXJsKC4uLik7ID4+Cgo9aXRlbSBJPG9yOj4gQzw8ICRjb250ZW50LT5nZXRfdXJsKC4uLik7ID4+CgpUaGlzIHRyaWVzIHRvIGdldCB0aGUgY29udGVudCBvZiB0aGUgZ2l2ZW4gdXJsLCBhbmQgcmV0dXJucyBpdC4KClRoaXMgaXMgcXVpdGUgbGlrZSBMPExXUDo6U2ltcGxlPidzIEM8Z2V0PiBmdW5jdGlvbiwgYnV0IHdpdGggc29tZQphZGRpdGlvbmFsIGZlYXR1cmVzOgoKPW92ZXIKCj1pdGVtICogSWYgaXQgY2FuJ3QKZ2V0IHRoZSBVUkwncyBjb250ZW50IGF0IGZpcnN0LCBpdCB3aWxsIHNsZWVwIGZvciBhIGZldyBzZWNvbmRzIGFuZCB0cnkKYWdhaW4sIHVwIHRvIGFib3V0IGZpdmUgdGltZXMuIChUaGlzIGlzIHRvIGF2b2lkIHRoZSBjYXNlIG9mIHRoZSBVUkwKYmVpbmcgdGVtcG9yYXJpbHkgaW5hY2Nlc3NpYmxlIHNpbXBseSBiZWNhdXNlIHRoZSBETlMgaXMgYSBiaXQgc2xvdywKb3IgYmVjYXVzZSB0aGUgc2VydmVyIGlzIHRvbyBidXN5LikKCj1pdGVtICogSWYgaXQgY2FuJ3QgZ2V0IHRoZSBjb250ZW50LCBldmVuIGFmdGVyIHNldmVyYWwgcmV0cmllcywKaXQgd2lsbCBhYm9ydCB0aGUgcHJvZ3JhbSAobGlrZSBhIEM8ZGllPikuICBJZiB5b3Ugd2FudCB0byBvdmVycmlkZSB0aGlzCmJlaGF2aW9yLCB0aGVuIGNhbGwgaXQgYXMgQzxldmFsIHsgZ2V0X3VybCgkdXJsKSB9Oz4KCj1pdGVtICogSWYgeW91IGNhbGwgdGhlIGZ1bmN0aW9uIGluIHZvaWQgY29udGV4dCAoaS5lLiwgbm90IHVzaW5nIGl0cwpyZXR1cm4gdmFsdWUpLCB0aGVuIHRoZSBmdW5jdGlvbiBhc3NpZ25zIHRoZSBVUkwncyBjb250ZW50IHRvIEM8JF8+LgpUaGF0J3Mgc28geW91IGNhbiB3cml0ZSBuaWNlIGNvbmNpc2UgY29kZSBsaWtlIHRoaXM6CgogICAgICAgICAgIGdldF91cmwgJHRoYXRzaXRlOwogICAgICAgICAgIG0vVG9wIFN0b3JpZXMgVG9uaWdodC8gb3IgZGllICJXaGF0LCBubyB0b3Agc3Rvcmllcz8iOwogICAgICAgICAgIHdoaWxlKCBtezxhIGNsYXNzPSJ0b3AiIGhyZWY9IiguKj8pIj4oLio/KTwvYT59ZyApIHsKICAgICAgICAgICAgIHJzc19pdGVtKCIkdGhhdHNpdGUvJDEiLCAkMik7CiAgICAgICAgICAgfQoKPWl0ZW0gKiBUaGlzIHJldHVybnMgdGhlIGNvbnRlbnQgb2YgdGhlIFVSTCBub3QgZXhhY3RseSBhcy1pcywgYnV0IGFmdGVyCmNoYW5naW5nIGl0cyBuZXdsaW5lcyB0byBuYXRpdmUgZm9ybWF0LiAgVGhhdCBpcywgaWYgdGhlIGNvbnRlbnRzIG9mIHRoZQpVUkwgdXNlIENSLUxGIHBhaXJzIHRvIGV4cHJlc3MgbmV3bGluZXMsIHRoZW4gQzxnZXRfdXJsPiBjaGFuZ2VzIHRoZXNlCnRvIEM8XG4+J3MgYmVmb3JlIHJldHVybmluZyB0aGUgY29udGVudC4gIChTaW1pbGFybHkgZm9yIG9sZCBNYWNPUwpuZXdsaW5lIGZvcm1hdC4pICBDbGVhcmx5IHRoaXMgaXMgd3JvbmcgaW4geW91J3JlIGRlYWxpbmcgd2l0aCBiaW5hcnkKZGF0YTsgaW4gdGhhdCBjYXNlLCB1c2UgTFdQOjpTaW1wbGUncyBDPGdldD4gZGlyZWN0bHkuCgo9aXRlbSAqIEZpbmFsbHksIGFzIGEgcmVzb3VyY2UtY29udmVyc2F0aW9uIG1lYXN1cmUsIHRoaXMgZnVuY3Rpb24Kd2lsbCBhbHNvIHRyeSB0byBjYWxsIEM8c2xlZXA+IGEgZmV3IHRpbWVzIGlmIGl0IHNlZXMgc2V2ZXJhbCBxdWljawpjYWxscyB0byBpdHNlbGYgY29taW5nIGZyb20gYSBwcm9ncmFtIHRoYXQgc2VlbXMgdG8gYmUgcnVubmluZwp1bmRlciBjcm9udGFiLiAgQXMgbW9zdCBvZiBteSBSU1MtZ2VuZXJhdG9ycyBhcmUgY3JvbnRhYmJlZCwgSQpmaW5kIGl0IHZlcnkgdXNlZnVsIHRoYXQgSSBjYW4gaGF2ZSBob3dldmVyIG1hbnkgQzxnZXRfdXJsPidzIGluCm15IGNyb250YWJiZWQgcHJvZ3JhbXMgd2l0aG91dCB3b3JyeWluZyB0aGF0IHRoZXknbGwgdGFrZSBldmVuIGEKbm90aWNlYWJsZSBwYXJ0IG9mIHRoZSBzZXJ2ZXIncyBiYW5kd2lkdGguCgo9YmFjawoKPWN1dAoKbXkgJGxhc3RfdXJsX2dldF90aW1lOwoKc3ViIGdldF91cmwgKCQpIHsKICBteSAkc2VsZiA9IHNoaWZ0IGlmIEBfID4gMTsgIyB3b3JrIGFzIGEgZnVuY3Rpb24gb3IgbWV0aG9kCgogICMgIEdvIHdoaXAgdXAgYW4gb2JqZWN0IHVubGVzcyBvbmUgd2FzIGdpdmVuOgogICRzZWxmID0gKCRSU1Nfb2JqIHx8PSBYTUw6OlJTUzo6U2ltcGxlR2VuOjotPm5ldykgdW5sZXNzIGRlZmluZWQgJHNlbGY7CiAgJHNlbGYgPSAkc2VsZi0+bmV3IHVubGVzcyByZWYgJHNlbGY7CiAgCiAgbXkgJHVybCA9ICRfWzBdOwogIENhcnA6OmNyb2FrICJcIiR1cmxcIiBkb2Vzbid0IGxvb2sgbGlrZSBhIFVSTCFcbkFib3J0aW5nIgogICB1bmxlc3MgZGVmaW5lZCgkdXJsKSBhbmQgJHVybCA9fiBte15bYS16XStbYS16MC05XSo6XFMrJH1zOwogIAogIGlmKCRTbGVlcHkgYW5kICRsYXN0X3VybF9nZXRfdGltZSkgewogICAgbXkgJGRlbGF5ID0gJFNsZWVweSAtICh0aW1lKCkgLSAkbGFzdF91cmxfZ2V0X3RpbWUpOwogICAgaWYoICRkZWxheSA+IDAgKSB7CiAgICAgIERFQlVHIGFuZCBwcmludCAiTGFzdCBVUkxnZXQgd2FzIGF0ICRsYXN0X3VybF9nZXRfdGltZSwgc2xlZXAgJGRlbGF5XG4iOwogICAgICBzbGVlcCAkZGVsYXk7CiAgICB9IGVsc2UgewogICAgICBERUJVRyBhbmQgcHJpbnQgIkxhc3QgVVJMZ2V0IHdhcyBhdCAkbGFzdF91cmxfZ2V0X3RpbWUsIHNvIG5vIHNsZWVwLlxuIjsKICAgIH0KICB9CiAgCiAgbXkgJGNvbnRlbnQ7CiAgbXkgJGNvdW50ID0gMDsKICBmb3JlYWNoIG15ICRkZWxheSAoQFJldHJ5X2RlbGF5cywgMCkgewogICAgZGVsZXRlICRzZWxmLT57J19sb29wcyd9OwogICAgZGVsZXRlICRzZWxmLT57J19odHRwX2Fib3J0J307CgogICAgREVCVUcgYW5kIHByaW50ICJHZXR0aW5nICR1cmwgLi4uXG4iOwogICAgKyskY291bnQ7CiAgICBpZiggZGVmaW5lZCgKICAgICAgJGNvbnRlbnQgID0gICRzZWxmLT5fZ2V0KCR1cmwpCiAgICApKSB7CiAgICAgIERFQlVHIGFuZCBwcmludCAiT0ssIGdvdCBpdCAoIiwgbGVuZ3RoKCRjb250ZW50KSwgIiBieXRlcylcbiI7CiAgICAgIGxhc3Q7CiAgICB9CiAgICAKICAgIGlmKCAkc2VsZi0+eydfaHR0cF9hYm9ydCd9ICkgewogICAgICBERUJVRyBhbmQgcHJpbnQgIkNvdWxkbid0IGdldCBpdCBhbmQgd29uJ3QgcmV0cnkgKCIsIAogICAgICAgICRzZWxmLT57J19odHRwX2Fib3J0J30sICIpXG4iOwogICAgICBsYXN0OwogICAgfSBlbHNlIHsKICAgICAgREVCVUcgYW5kIHByaW50ICJPZGQsIGNvdWxkbid0IGdldCBpdC5cbiI7CiAgICB9CiAgICBpZigkZGVsYXkpIHsgREVCVUcgYW5kIHByaW50ICJTbGVlcGluZyAkZGVsYXkgc2VjLi4uXG4iOyBzbGVlcCAkZGVsYXk7IH0KICB9CiAgJGxhc3RfdXJsX2dldF90aW1lID0gdGltZSgpOwoKICB1bmxlc3MoIGRlZmluZWQgJGNvbnRlbnQgKSB7CiAgICBteSAkaGVhZGVycyA9ICRzZWxmLT57J19odHRwX2hlYWRlcnMnfTsKICAgIGlmKCAkaGVhZGVycyBhbmQgJGhlYWRlcnMgPX4gc3tefXsgIH1tZyApIHsKICAgICAgJGhlYWRlcnMgPSAiXG5SZXNwb25zZSBoZWFkZXJzOlxuJGhlYWRlcnMiOwogICAgfSBlbHNlIHsKICAgICAgJGhlYWRlcnMgPSAnJzsKICAgIH0KICAgICRjb3VudCAuPSAoJGNvdW50ID09IDEpID8gIiB0cnkiIDogIiB0cmllcyI7CiAgICBDYXJwOjpjcm9haygiQ291bGRuJ3QgZ2V0ICR1cmwgaW4gJGNvdW50JGhlYWRlcnNcblNvLCBhYm9ydGluZyIpCiAgfQogIAogIGlmKCROYXRpdml6ZV9uZXdsaW5lcykgewogICAgaWYoIlxuIiBlcSAiXGNqIikgeyAgICAgICAjIENSID0+IExGICAgIENSIExGTEYuLi4gPT4gTEYgICBMRiA9PiBMRgogICAgICAkY29udGVudCA9fiBzL1xjbVxjaiovXG4vZzsgIyBtb3N0IGVmZmljaWVudCwgSSBkYXJlIHNheQogICAgfSBlbHNpZigiXG4iIGVxICJcY20iKSB7ICAjIENSID0+IENSICAgIENSIExGTEYuLi4gPT4gQ1IgICBMRiA9PiBDUgogICAgICAkY29udGVudCA9fiBzLyg/Oig/OlxjbVxjaispfFxjaikvXG4vZzsKICAgIH0gZWxzZSB7CiAgICAgICRjb250ZW50ID1+IHMvKD86XG58XHJ8XG5ccikvXG4vZzsKICAgIH0KICB9CiAgCiAgJF8gPSAkY29udGVudCB1bmxlc3MgZGVmaW5lZCB3YW50YXJyYXk7CiAgcmV0dXJuICRjb250ZW50Owp9CgojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAgVGhpbmdzIGJlbG93IGhlcmUgYXJlIGxlc3MgYW5kIGxlc3MgaW50ZXJlc3RpbmcgdG8gdGhlIGNhc3VhbCByZWFkZXIuCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKc3ViIF9nZXQgewogIG15ICRzZWxmID0gc2hpZnQ7CiAgaWYoCiAgICAhJExXUDo6U2ltcGxlOjpWRVJTSU9OCiAgICBhbmQgJF9bMF0gPX4gbXteaHR0cDovLyhbXiBcblxyXHQvOlxAXSspKD86OihcZCspKT8oL1xTKik/JH0KICApIHsKICAgIG15ICRob3N0ID0gJDE7CiAgICBteSAkcGF0aCA9ICQzOwogICAgbXkgJHBvcnQgPSAwICsgKCQyIHx8IDgwKTsKICAgIGlmKCAkQmFkUG9ydHN7JHBvcnR9ICkgewogICAgICBERUJVRyBhbmQgcHJpbnQgIldlIGRvbid0IGxpa2UgcG9ydCAkcG9ydCBmcm9tICRfWzBdXG4iOwogICAgICByZXR1cm4gdW5kZWY7CiAgICB9CiAgICAKICAgICRwYXRoID0gIi8iIHVubGVzcyBkZWZpbmVkKCRwYXRoKTsKICAgICRzZWxmID0gJHNlbGYtPm5ldyB1bmxlc3MgcmVmKCRzZWxmKTsgIyBuZWVkIHRvIGJlIGFuIG9iamVjdCBtZXRob2QKICAgIHJldHVybiAkc2VsZi0+X3RyaXZpYWxfaHR0cF9nZXQoJGhvc3QsICRwb3J0LCAkcGF0aCk7CiAgfSBlbHNlIHsKICAgIHJldHVybiAkc2VsZi0+X2x3cF9nZXQoQF8pOwogIH0KfQoKc3ViIF9sd3BfZ2V0IHsKICByZXF1aXJlIExXUDo6U2ltcGxlOwogIERFQlVHIGFuZCBwcmludCAiQ2FsbGluZyBMV1A6OlNpbXBsZSBvbiAkX1sxXVxuIjsKICByZXR1cm4gTFdQOjpTaW1wbGU6OmdldCgkX1sxXSk7Cn0KCnN1YiBfdHJpdmlhbF9odHRwX2dldCB7CiAgIG15KCRzZWxmLCAkaG9zdCwgJHBvcnQsICRwYXRoKSA9IEBfOwogICBERUJVRyA+IDEgYW5kIHByaW50ICJHZXR0aW5nIEhPU1Q9JGhvc3QsIFBPUlQ9JHBvcnQsIFBBVEg9JHBhdGhcbiI7CgogICAkc2VsZiA9ICRzZWxmLT5uZXcgdW5sZXNzIHJlZigkc2VsZik7ICMgbmVlZCB0byBiZSBhbiBvYmplY3QgbWV0aG9kCiAgIG15ICRzZWVuID0gKCAkc2VsZi0+eydfbG9vcHMnfSB8fD0ge30gKTsKCiAgIHJlcXVpcmUgSU86OlNvY2tldDsKICAgbG9jYWwoJF5XKSA9IDA7CiAgIG15ICRzb2NrID0gSU86OlNvY2tldDo6SU5FVC0+bmV3KFBlZXJBZGRyID0+ICRob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQZWVyUG9ydCA9PiAkcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdG8gICAgPT4gJ3RjcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVvdXQgID0+IDYwKSB8fCByZXR1cm4gdW5kZWY7CiAgICRzb2NrLT5hdXRvZmx1c2g7CiAgIG15ICRuZXRsb2MgPSAkaG9zdDsKICAgJG5ldGxvYyAuPSAiOiRwb3J0IiBpZiAkcG9ydCAhPSA4MDsKICAgcHJpbnQgJHNvY2sgam9pbigiXDAxNVwwMTIiID0+CiAgICAgICAgICAgICAgICAgICJHRVQgJHBhdGggSFRUUC8xLjAiLAogICAgICAgICAgICAgICAgICAiSG9zdDogJG5ldGxvYyIsCiAgICAgICAgICAgICAgICAgICJVc2VyLUFnZW50OiAkVXNlckFnZW50U3RyaW5nIiwKICAgICAgICAgICAgICAgICAgIiIsICIiKTsKCiAgIG15ICRidWYgPSAiIjsKICAgbXkgJG47CiAgIHdoaWxlKCAkbiA9IHN5c3JlYWQoJHNvY2ssICRidWYsIDgqMTAyNCwgbGVuZ3RoKCRidWYpKSApIHsKICAgICBERUJVRyA+IDEwIGFuZCBwcmludCAiICAgIEdvdCAkbiBieXRlcy4uLlxuIjsKICAgICAxOwogICB9CiAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCgkbik7CgogICBpZiggJGJ1ZiA9fiBte15IVFRQL1xkK1wuXGQrXHMrKFxkKylbXlwwMTJdKlwwMTJ9ICkgewogICAgIG15ICRjb2RlID0gJDE7CiAgICAgREVCVUcgYW5kIHByaW50ICIgR290IEhUVFAgc3RhdHVzOiAkY29kZVxuIjsKICAgICBpZiggJGNvZGUgPX4gbS9eMzBbMTIzN10vcyBhbmQgJGJ1ZiA9fiBtL1wwMTJMb2NhdGlvbjpccyooXFMrKS8gKSB7CiAgICAgICAjIFJlZGlyZWN0aW9uCiAgICAgICBteSAkdXJsID0gJDE7CiAgICAgICBpZiggJHVybCA9fiBtL14oZmlsZXxtYWlsdG8pOi8gICMgcHJvdG9jb2xzIHdlIGhhdGUKICAgICAgICAgb3IgJHNlZW4tPnskdXJsfSsrCiAgICAgICAgIG9yIHNjYWxhcihrZXlzICUkc2VlbikgPiAyMAogICAgICAgKSB7CiAgICAgICAgIERFQlVHIGFuZCBwcmludCAiSSBkb24ndCBsaWtlIHRoZSByZWRpcmVjdGlvbiByZXNwb25zZSAkdXJsXG4iOwogICAgICAgICAkc2VsZi0+eydfaHR0cF9hYm9ydCd9ID0gIkJhZCBIVFRQLXJlZGlyZWN0aW9uIGxvb3AuIjsKICAgICAgICAgcmV0dXJuIHVuZGVmOwogICAgICAgfQogICAgICAgcmV0dXJuICRzZWxmLT5fZ2V0KCR1cmwpOyAgIyBSZWN1cnNlIQogICAgIH0KCiAgICAgJGJ1ZiA9fiBzLyguKz8pXDAxNT9cMDEyXDAxNT9cMDEyLy9zOyAgIyB6YXAgdGhlIGhlYWRlcgogICAgICggJHNlbGYtPnsnX2h0dHBfaGVhZGVycyd9ID0gJDEgKSAgID1+ICAgdHIvXDAxNVwwMTIvXG4vc2Q7CiAgICAgCiAgICAgREVCVUcgPiAxMCBhbmQgcHJpbnQgIkhlYWRlcnM6ICQkc2VsZnsnX2h0dHBfaGVhZGVycyd9XG4iOwogICAgIAogICAgICRzZWxmLT57J19odHRwX2Fib3J0J30gPSAiSFRUUCBzdGF0dXMgJGNvZGUiCiAgICAgIGlmICRjb2RlIGVxICc0MDQnIG9yICRjb2RlIGVxICc0MDMnOwogICAgIHJldHVybiB1bmRlZiB1bmxlc3MgJGNvZGUgPX4gbS9eMi87CiAgICAgCiAgICAgREVCVUcgYW5kIHByaW50ICJSZXR1cm5pbmcgIiwgbGVuZ3RoKCRidWYpLCAiIGJ5dGVzIG9mIGNvbnRlbnQuXG4iOwogICB9IGVsc2UgewogICAgIERFQlVHIGFuZCBwcmludCAiR290IGEgaGVhZGVybGVzcyByZXNwb25zZS4gIFJldHVybmluZy5cbiI7CiAgIH0KCiAgIHJldHVybiAkYnVmOwp9CgojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCnN1YiBfcmVhZF9oaXN0b3J5X2ZpbGUgewogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJGhmID0gJHNlbGYtPmhpc3RvcnlfZmlsZTsKICB1bmxlc3MoZGVmaW5lZCAkaGYgYW5kIGxlbmd0aCAkaGYpIHsKICAgIERFQlVHIGFuZCBwcmludCAiTm8gaGlzdG9yeV9maWxlIGRlZmluZWQgZm9yICRzZWxmLlxuIjsKICAgIHJldHVybjsKICB9CiAgCiAgbXkoJWZpcnN0LCAlbGFzdCk7ICAjICJsYXN0IiBpbiB0aGUgc2Vuc2Ugb2YgIm1vc3QgcmVjZW50bHkiCiAgJHNlbGYtPnsnX2ZpcnN0X3NlZW4nfSA9IFwlZmlyc3Q7CiAgJHNlbGYtPnsnX2xhc3Rfc2VlbicgfSA9IFwlbGFzdCA7CgogIHVubGVzcyggLWUgJGhmIGFuZCAtcyBfICkgewogICAgJHNlbGYtPnsnX3Zpcmdpbl9pdGVtX3RpbWVzdGFtcCd9ID0gdGltZSgpIGlmICREV0lNOwogICAgcmV0dXJuIDA7CiAgfQoKICBteSAkbm93ID0gdGltZSgpOwogIG15ICRmb3JnZXRfYmVmb3JlOwogIAogIG15ICRpbjsKICB7CiAgICBsb2NhbCAqSU47CiAgICBvcGVuKElOLCAkaGYpIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHJlYWQtb3BlbiAkaGY6ICQhIjsgICMgaW5zYW5lCiAgICAkaW4gPSAqSU57SU99OwogIH0KICBsb2NhbCAkXzsKICBteSBAZjsKICB3aGlsZSg8JGluPikgewogICAgdHIvXG5cci8vZDsKICAgIG5leHQgdW5sZXNzIEBmID0gc3BsaXQgIlx0IiwgJF8sIDMgYW5kIGRlZmluZWQoJGZbMF0pIGFuZCBsZW5ndGgoJGZbMF0pOwoKICAgICRsYXN0eyRmWzBdfSA9ICRmWzJdIGlmICRmWzJdOwoKICAgIGlmKCAkZlsxXSApIHsKICAgICAgJGZpcnN0eyRmWzBdfSA9ICRmWzFdOwogICAgICBERUJVRyA+IDMgYW5kIHByaW50ICIgTGVhcm5pbmcgJGZbMF0gZmlyc3Qgc2VlbiBhdCAkZlsxXVxuIjsKICAgIH0gZWxzZSB7CiAgICAgICRmaXJzdHskZlswXX0gPSAkbm93OwogICAgICBERUJVRyA+IDMgYW5kIHByaW50ICIgUHJlbGVhcm5pbmcgJGZbMF0gZmlyc3Qgc2VlbiBhdCAkZlsxXVxuIjsKICAgICAgICMgVE9ETzogaXMgdGhpcyB1c2VmdWw/CiAgICB9CiAgfQogIGNsb3NlKCRpbik7CgogIHJldHVybiAxOwp9CgojIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4KCnN1YiBfd3JpdGVfaGlzdG9yeV9maWxlIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15ICRoZiA9ICRzZWxmLT5oaXN0b3J5X2ZpbGU7CiAgdW5sZXNzKGRlZmluZWQgJGhmIGFuZCBsZW5ndGggJGhmKSB7CiAgICBERUJVRyBhbmQgcHJpbnQgIk5vIGhpc3RvcnlfZmlsZSBkZWZpbmVkIGZvciAkc2VsZi5cbiI7CiAgICByZXR1cm47CiAgfQogIAogIG15ICRmaXJzdCA9ICRzZWxmLT57J19maXJzdF9zZWVuJ307CiAgbXkgJGxhc3QgID0gJHNlbGYtPnsnX2xhc3Rfc2VlbicgfTsKICBteSAkbm93ICAgPSB0aW1lKCk7CiAgCiAgbXkgJG91dDsKICBERUJVRyBhbmQgcHJpbnQgIlNhdmluZyB0byBoaXN0b3J5IGZpbGUgJGhmXG4iOwogIERFQlVHID4gMiBhbmQgcHJpbnRmICJUaW1lIG5vdzogJXMgPSAlc1xuIiwgdGltZSgpLCBzY2FsYXIobG9jYWx0aW1lKTsKICB7CiAgICBsb2NhbCAqSEY7CiAgICBvcGVuKEhGLCAiPiRoZiIpIG9yIENhcnA6OmNvbmZlc3MgIkNhbid0IHdyaXRlLW9wZW4gJGhmOiAkISI7ICAjIGluc2FuZQogICAgJG91dCA9ICpIRntJT307CiAgfQogIHsKICAgIG15KEBmLCBAeCk7CiAgICB7CiAgICAgIG15ICV4OwogICAgICBAeHtrZXlzICUkZmlyc3QsIGtleXMgJSRsYXN0fSA9ICgpOwogICAgICBAeCA9IHNvcnQga2V5cyAleDsKICAgIH0KCiAgICBteSAkZm9yZ2V0X2JlZm9yZTsKICAgIHsKICAgICAgbXkgJHIgPSAkc2VsZi0+cmV0ZW50aW9uOwogICAgICBpZiggJHIgYW5kICRyID4gMCApIHsgJGZvcmdldF9iZWZvcmUgPSB0aW1lKCkgLSAkciB9CiAgICB9CiAgICBmb3JlYWNoIG15ICRrZXkgKEB4KSB7CiAgICAgIG5leHQgaWYgJGtleSA9fiBtL1tcdFxuXHJdLzsKICAgICAgaWYoICRmb3JnZXRfYmVmb3JlIGFuZCAkbGFzdC0+eyRrZXl9IDwgJGZvcmdldF9iZWZvcmUgKSB7CiAgICAgICAgREVCVUcgYW5kIHByaW50ZigKICAgICAgICAgICIgRm9yZ2V0dGluZyAlcyBhcyBiZWluZyB0b28gb2xkIHNpbmNlIGxhc3Qtc2VlbiAoJXMgPSAlcylcbiIsCiAgICAgICAgICAka2V5LAogICAgICAgICAgJGxhc3QtPnska2V5fSwKICAgICAgICAgIHNjYWxhcihsb2NhbHRpbWUoJGxhc3QtPnska2V5fSkpLAogICAgICAgICk7CiAgICAgICAgbmV4dDsKICAgICAgfQogICAgICBwcmludCAkb3V0ICAgICAgJGtleSwgIlx0IiwKICAgICAgICAkZmlyc3QtPnska2V5fXx8JycsICJcdCIsCiAgICAgICAgICRsYXN0LT57JGtleX18fCcnLCAiXG4iLAogICAgICA7CiAgICAgIAogICAgICBpZihERUJVRyA+IDIpIHsKICAgICAgICBwcmludGYgIiAgS2V5ICVzXG4gICAgRmlyc3Qgc2VlbjogJXMgPSAlc1xuICAgIExhc3Qgc2VlbjogICVzID0gJXNcbiIsCiAgICAgICAgICAka2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpcnN0LT57JGtleX18fCctJywKICAgICAgICAgIHNjYWxhcihsb2NhbHRpbWUoICRmaXJzdC0+eyRrZXl9fHwwICApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGFzdC0+eyRrZXl9fHwnLScsCiAgICAgICAgICBzY2FsYXIobG9jYWx0aW1lKCAgJGxhc3QtPnska2V5fXx8MCAgKSksCiAgICAgIH0KCiAgICB9CiAgICBjbG9zZSgkb3V0KTsKICB9CiAgREVCVUcgYW5kIHByaW50ICJEb25lIHNhdmluZyB0byAkaGZcbiI7CiAgcmV0dXJuIDE7Cn0KCiMtXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXy1fLV8tXwoKCj1pdGVtIEM8cnNzX2hvdXJseT4gSTxvcj4gQzxyc3NfZGFpbHk+IEk8b3I+IEM8cnNzX3R3aWNlX2RhaWx5PgogSTxvcj4gQzxyc3NfdGhyaWNlX2RhaWx5PiBJPG9yPiBDPHJzc193ZWVrbHk+IEk8b3I+IEM8cnNzX2V2ZXJ5X290aGVyX2hvdXI+CgpDYWxsaW5nIG9uZSBvZiB0aGVzZSBmdW5jdGlvbnMgZGVjbGFyZXMgdGhhdCB0aGlzIGZlZWQgaXMgdXN1YWxseQpnZW5lcmF0ZWQgYXQgdGhlIHNhbWUgdGltZShzKSBldmVyeSBkYXkgKG9yIGV2ZXJ5IHdlZWssIGluIHRoZSBjYXNlIG9mCkM8cnNzX3dlZWtseT4pLiBBbmQsIHdoZXJlIGl0J3Mgbm90IGp1c3Qgb25jZSBhIGRheS93ZWVrLCB0aGVzZSBtdWx0aXBsZQp0aW1lcyBhIGRheSBhcmUgZXZlbmx5IHNwYWNlZC4gIFRoZXNlIGZ1bmN0aW9ucyB0aGVuIHNldCB0aGUgZmVlZCdzCkM8dXBkYXRlUGVyaW9kPiwgQzx1cGRhdGVCYXNlPiwgQzx1cGRhdGVGcmVxdWVuY3k+LCBDPHNraXBIb3Vycz4sCkM8c2tpcERheXM+LCBhbmQgQzx0dGw+IGVsZW1lbnRzIGFwcHJvcHJpYXRlbHksIHNvIHRoYXQgUlNTIHJlYWRlcnMgY2FuIGtub3cgYXQKYXQgd2hhdCB0aW1lcyB0aGVyZSBjb3VsZCAob3IgY291bGRuJ3QpIGJlIG5ldyBjb250ZW50IGluIHRoaXMgZmVlZC4KCkluIG90aGVyIHdvcmRzOiB1c2UgQzxyc3NfdHdpY2VfZGFpbHk+IGlmIHRoaXMgZmVlZCBpcyB1cGRhdGVkIGF0IGFib3V0IHRoZQpzYW1lIHRpbWUgZXZlcnkgZGF5IGFuZCB0aGVuIGFnYWluIDEyIGhvdXJzIGxhdGVyLiAgVXNlIEM8cnNzX3RocmljZV9kYWlseT4KaWYgdGhpcyBmZWVkIGlzIHVwZGF0ZWQgYXQgdGhlIHNhbWUgdGltZSBkYWlseSwgYW5kIHRoZW4gOCBob3VycyBsYXRlciwgYW5kCnRoZW4gOCBob3VycyBsYXRlci4gIEFuZCB1c2UgQzxyc3NfZXZlcnlfb3RoZXJfaG91cj4gaWYgdGhlIGZlZWQgdXBkYXRlcwphdCBhYm91dCBJPG4+IG1pbnV0ZXMgcGFzdCBldmVyeSBldmVuIG51bWJlcmVkIGhvdXIsIG9yIGV2ZXJ5IG9kZC1udW1iZXJlZApob3VyLgoKQ2xlYXJseSBJIG1lYW4gdGhlc2UgZnVuY3Rpb25zIHRvIGJlIHVzZWQgaW4gcHJvZ3JhbXMgdGhhdCBhcmUgY3JvbnRhYmJlZAp0byBydW4gYXQgcGFydGljdWxhciBpbnRlcnZhbHMsIGFzIHdpdGggYSBjcm9udGFiIGxpbmUgbGlrZSBvbmUgb2YgdGhlc2U6CgogICAgICAgNTIgKiAqICogKiAgICAgICAgIH4vdGhpbmd5ICAgIyA9PiByc3NfaG91cmx5CiAgICAgICA1MiAyMyAqICogKiAgICAgICAgfi90aGluZ3kgICAjID0+IHJzc19kYWlseQogICAgICAgNTIgNCwxNiAqICogKiAgICAgIH4vdGhpbmd5ICAgIyA9PiByc3NfdHdpY2VfZGFpbHkKICAgICAgIDUyIDUsMTMsMjEgKiAqICogICB+L3RoaW5neSAgICMgPT4gcnNzX3RocmljZV9kYWlseQogICAgICAgNTIgMjMgKiAqIDMgICAgICAgIH4vdGhpbmd5ICAgIyA9PiByc3Nfd2Vla2x5CiAgICAgICA1MiAqLzIgKiAqICogICAgICAgfi90aGluZ3kgICAjID0+IHJzc19ldmVyeV9vdGhlcl9ob3VyCgpDbGVhcmx5IHRoZXJlIGFyZW4ndCBDPHJzc19JPGludGVydmFsPj4gZnVuY3Rpb25zIGZvciBhbGwgdGhlIHNjaGVkdWxpbmcKcG9zc2liaWxpdGllcyBwcm9ncmFtcyAtLSBpZiB5b3UgaGF2ZSBhIHByb2dyYW0gdGhhdCBoYXMgdG8gcnVuIGF0CjZhbSwgOGFtLCAxcG0sIGFuZCA0cG0sIHRoZXJlJ3Mgbm8gZnVuY3Rpb24gZm9yIHRoYXQuICBIb3dldmVyLCB0aGUgYWJvdmUKY3JvbnRhYiBsaW5lcyAob3Igd2l0aCBtaW5vciBjaGFuZ2VzLCBsaWtlIEM8MSw5LDE3PiBpbnN0ZWFkIG9mIEM8NSwxMywyMT4pCmFyZSBqdXN0IGZpbmUgZm9yIGFsbW9zdCBldmVyeSBSU1MgZmVlZCBJJ3ZlIHJ1bi4KCkFuIGFzaWRlOiBJIHJlY29tbWVuZCBydW5uaW5nIHRoZSBwcm9ncmFtcyBhdCBhYm91dCA1MiBtaW51dGVzIHBhc3QgdGhlIGhvdXIsCmdlbmVyYWxseSBpbiBzZXJpZXMsIGxpa2Ugc286CgogICAgICAgNTIgNSwxMywyMSAqICogKiAgIH4vdGhpbmd5IDsgfi9kb2RhZCA7IH4vbWFrZXRoaW5nIDsgfi9naXptbwoKSG93ZXZlciwgeW91ciBtaWxlYWdlIG1heSB2YXJ5LgoKSW5jaWRlbnRhbGx5LCB0aGVzZSBmdW5jdGlvbnMgdGFrZSBubyBhcmd1bWVudHMsIHNvIHRoZSBwYXJlbnRoZXNlcyBhcmUKb3B0aW9uYWwuICBUaGF0IGlzLCB0aGVzZSB0d28gbGluZXMgZG8gdGhlIHNhbWUgdGhpbmc6CgogICAgICAgcnNzX2hvdXJseTsKICAgICAgIHJzc19ob3VybHkoKTsKCj1jdXQKCiMjIFNvbWUgaGFuZHkgaWYgc29tZXdoYXQgYXJiaXRyYXJ5IHNob3J0Y3V0czoKIwpzdWIgaG91cmx5IHsKICBteSAkc2VsZiA9ICRfWzBdOwogICRzZWxmLT51cGRhdGVQZXJpb2QoJ2hvdXJseScpOwogICRzZWxmLT50dGwoJzYwJyk7CiAgcmV0dXJuOwp9CgpzdWIgZGFpbHkgewogIG15ICRzZWxmID0gJF9bMF07CiAgJHNlbGYtPnVwZGF0ZUhvdXJzKCk7CiAgJHNlbGYtPnVwZGF0ZVBlcmlvZCgnZGFpbHknKTsKICAkc2VsZi0+dHRsKCAyNCAqIDYwICk7CiAgcmV0dXJuOwp9CgpzdWIgdHdpY2VfZGFpbHkgIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15ICRoID0gKGdtdGltZSggJHNlbGYtPl9ub3dfcm91bmRlZF91cCApKVsyXTsKICAkc2VsZi0+dXBkYXRlSG91cnMoICRoLCAgKCRoKzEyKSAlIDI0ICk7CiAgJHNlbGYtPnVwZGF0ZVBlcmlvZCgnZGFpbHknLDIpOwogICRzZWxmLT50dGwoIDEyICogNjAgKTsKICByZXR1cm47Cn0KCnN1YiB0aHJpY2VfZGFpbHkgIHsKICBteSAkc2VsZiA9ICRfWzBdOwogIG15ICRoID0gKGdtdGltZSggJHNlbGYtPl9ub3dfcm91bmRlZF91cCApKVsyXTsKICAkc2VsZi0+dXBkYXRlSG91cnMoICRoLCAgKCRoKyA4KSAlIDI0LCAgKCRoKzE2KSAlIDI0ICk7CiAgJHNlbGYtPnVwZGF0ZVBlcmlvZCgnZGFpbHknLDMpOwogICRzZWxmLT50dGwoIDggKiA2MCApOwogIHJldHVybjsKfQoKc3ViIHdlZWtseSB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICAkc2VsZi0+dXBkYXRlSG91cnMoKTsKICAkc2VsZi0+dXBkYXRlRGF5cygpOwogICRzZWxmLT51cGRhdGVQZXJpb2QoJ3dlZWtseScsMSk7CiAgJHNlbGYtPnR0bCggNyAqIDI0ICogNjAgKTsKICByZXR1cm47Cn0KCnsKbXkoQG9kZHMsIEBldmVucyk7CmZvcigwIC4uIDIzKSB7IHB1c2ggQHsgICgkXyAmIDEpID8gXEBvZGRzIDogXEBldmVucyAgfSwgJF8gfQoKc3ViIGV2ZXJ5X290aGVyX2hvdXIgewogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJGggPSAoZ210aW1lKCAkc2VsZi0+X25vd19yb3VuZGVkX3VwICkpWzJdOwogICRzZWxmLT5za2lwSG91cnMoICgkaCAmIDEpID8gQGV2ZW5zIDogQG9kZHMpOyAKICAkc2VsZi0+dXBkYXRlUGVyaW9kKCdkYWlseScsMTIpOwogICRzZWxmLT50dGwoICcxMjAnICk7CiAgcmV0dXJuOwp9Cn0KIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpteSBAZGF5X25hbWVzID0gKAogIlN1bmRheSIsICJNb25kYXkiLCAiVHVlc2RheSIsICJXZWRuZXNkYXkiLCAiVGh1cnNkYXkiLCAiRnJpZGF5IiwgIlNhdHVyZGF5IiwgCik7Cm15ICVpc19kYXlfbmFtZTsKQGlzX2RheV9uYW1le0BkYXlfbmFtZXN9ID0gQGRheV9uYW1lczsKCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKc3ViIF9ub3dfcm91bmRlZF91cCB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSAkbm93ID0gJF9bMF17J19mb3JjZV9ub3cnfSAgICMgdG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzCiAgICB8fCB0aW1lKCk7CiAgaWYoICRDSFVOS19NSU5VVEVTICkgewogICAgbXkgJHR3ZWFrID0gKCRDSFVOS19NSU5VVEVTICogNjApIC0gKCRub3cgJSAoJENIVU5LX01JTlVURVMgKiA2MCkpOwogICAgREVCVUcgYW5kIHByaW50ICJUd2Vha2luZyAkbm93ICgiLCBzY2FsYXIoZ210aW1lKCRub3cpKSwKICAgICAgIiBHTVQpIGJ5ICR0d2VhayBzZWNvbmRzXG4gc28gaXQnbGwgYmUgYW4gZXZlbiAkQ0hVTktfTUlOVVRFUyBtaW51dGVzOiAiOwogICAgJG5vdyArPSAkdHdlYWs7CiAgICBERUJVRyBhbmQgcHJpbnQgIiRub3cgKCIsIHNjYWxhcihnbXRpbWUoJG5vdykpLCAiIEdNVClcbiI7CiAgfSBlbHNlIHsKICAgICMgcHJvYmFibHkgbm90IGEgZ29vZCBpZGVhCiAgICBERUJVRyBhbmQgcHJpbnQgIkFyY2hvcmluZyB0aW1lYmFzZSB0byByaWdodCB0aGlzIG1vbWVudC5cbiI7CiAgfQogIHJldHVybiAkbm93Owp9CgpzdWIgX25vdyB7IHJldHVybiAkX1swXXsnX2ZvcmNlX25vdyd9IHx8IHRpbWUoKSB9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCj1iYWNrCgo9aGVhZDIgTUlOT1IgRlVOQ1RJT05TCgpUaGVzZSBhcmUgZnVuY3Rpb25zIHRoYXQgeW91IHByb2JhYmx5IHdvbid0IG5lZWQgb2Z0ZW4sIG9yIGF0IGFsbC4gIEkgaW5jbHVkZQp0aGVzZSBmb3IgdGhlIHNha2Ugb2YgY29tcGxldGVuZXNzLCBhbmQgc28gdGhhdCBhZHZhbmNlZCB1c2VycyBtaWdodCBmaW5kIHRoZW0KdXNlZnVsIGluIHNvbWUgY2FzZXMuCgo9b3ZlcgoKPWl0ZW0gQzxyc3Nfc2tpcEhvdXJzKCBJPGdtdF9ob3VyX251bSwgZ210X2hvdXJfbnVtLCAuLi4+ICk7PgoKVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBzZXRzIHRoZSBDPHNraXBIb3Vycz4gZWxlbWVudCdzIHZhbHVlcyB0byB0aGUKc3BlY2lmaWVkIEdNVCBob3VyIG51bWJlcnMuCgo9Y3V0CgpzdWIgc2tpcEhvdXJzIHsKICBteSgkc2VsZiwgQGluKSA9IEBfOwogIG15IEBza2lwaG91cnM7CiAgZm9yZWFjaCBteSAkaG91ciAoQGluKSB7CiAgICBuZXh0IHVubGVzcyBkZWZpbmVkICRob3VyOwogICAgQ2FycDo6Y3JvYWsgIlwiJGhvdXJcIiBpc24ndCBhIHZhbGlkIGhvdXIgbnVtYmVyIChtdXN0IGJlIDAtMjMpIgogICAgIHVubGVzcyAkaG91ciA8PSAyNCBhbmQgJGhvdXIgPj0gMDsKICAgIHB1c2ggQHNraXBob3VycywgKCRob3VyID09IDI0KSA/IDAgOiAoMCArICRob3VyKTsKICAgICAjIHRvbGVyYXRlICIyNCIgdG8gbWVhbiAwaC4KICB9CiAgREVCVUcgYW5kIHByaW50ICJTa2lwZGF5czogQHNraXBob3Vyc1xuIjsKICAkc2VsZi0+eydza2lwSG91cnMnfSA9IGpvaW4gJycsCiAgICAiPHNraXBIb3Vycz4iLCBtYXAoICI8aG91cj4kXzwvaG91cj4iLCBAc2tpcGhvdXJzKSwgIjwvc2tpcEhvdXJzPlxuIgogIDsKICByZXR1cm47Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKPWl0ZW0gQzxyc3NfdXBkYXRlSG91cnMoKTs+Cgo9aXRlbSBDPHJzc191cGRhdGVIb3VycyggSTxnbXRfaG91cl9udW0sIGdtdF9ob3VyX251bSwgLi4uPiApOz4KClRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBDPHJzc19za2lwSG91cnM+IC0tIHlvdSBjYWxsCkM8cnNzX3VwZGF0ZUhvdXJzPiB3aXRoIGEgbGlzdCBvZiBHTVQgaG91ciBudW1iZXJzLCBhbmQgCkM8cnNzX3VwZGF0ZUhvdXJzPiB3aWxsIGNhbGwgQzxyc3Nfc2tpcEhvdXJzKDAgLi4gMjMpPiBleGNlcHQgSTx3aXRob3V0Pgp3aGF0ZXZlciBob3VyIG51bWJlcnMgeW91IHNwZWNpZmllZC4KCklmIHlvdSBjYWxsIHdpdGggYW4gZW1wdHkgbGlzdCAoaS5lLiwgQzxyc3NfdXBkYXRlSG91cnMoKTs+KSwgdGhlbgp3ZSB1c2VzIEM8Z210aW1lPiB0byBmaW5kIG91dCB0aGUgY3VycmVudCBob3VyIChhbmQgcm91bmRzIGl0IHVwCmlmIGl0J3MgYWZ0ZXIgNTAgbWludXRlcyBwYXN0KSwgYmFzaWNhbGx5IGp1c3QgYXMgaWYgeW91J2QgY2FsbGVkOgoKICAgICAgcnNzX3VwZGF0ZUhvdXJzKCAoZ210aW1lKDYwMCt0aW1lKCkpKVsyXSApOwoKPWN1dAoKc3ViIHVwZGF0ZUhvdXJzIHsgIyBKdXN0IHRoZSBjb21wbGVtZW50IG9mIHNraXBIb3Vycy4KICAjIEZlZWRpbmcgaXQgKCkgbWVhbnMgdXBkYXRlcyBvbmx5IGF0IHRoaXMgaG91ciBvZiBkYXkKICAjIChUaGlzIGlzIGZpbmUgc2luY2UgeW91J2QgbmV2ZXIgbWVhbiB0byBhY3R1YWxseSBkZWNsYXJlCiAgIyBhIGZlZWQgd2hvc2UgdXBkYXRlSG91cnMgaXMgbmV2ZXIsIGkuZS4gd2hvc2Ugc2tpcEhvdXJzCiAgIyBpcyBhbGwgb2YgMC0yMykKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICVob3VyczsKICBAaG91cnN7ICBAXyAgPyAgKG1hcCAkXyswLCBAXykgIDoKICAgICggZ210aW1lKCAkc2VsZi0+X25vd19yb3VuZGVkX3VwICkgKVsyXSAgfSA9ICgpOwogICMgbWlnaHQgYXMgd2VsbCBjb3VudCAxMDo1NyBhcyAxMWgsIGV0YwogIERFQlVHIGFuZCBwcmludCAiSE9VUlMgVVBEQVRFWSA6Iiwgam9pbignICcsIHNvcnQga2V5cyAlaG91cnMpLCAiXG4iOwogICRzZWxmLT5za2lwSG91cnMoIGdyZXAgIWV4aXN0cygkaG91cnN7JF99KSwgMCAuLiAyMyApOwogIHJldHVybjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgo9aXRlbSBDPHJzc19za2lwRGF5cygpOz4KCj1pdGVtIEM8cnNzX3NraXBEYXlzKCBJPGdtdF9kYXlfbnVtLCBnbXRfZGF5X251bSwgLi4uPiApOz4KCj1pdGVtIEM8cnNzX3NraXBEYXlzKCBJPGdtdF9kYXlfbmFtZSwgZ210X2RheV9uYW1lLCAuLi4+ICk7PgoKVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBzZXRzIHRoZSBDPHNraXBEYXlzPiBlbGVtZW50J3MgdmFsdWVzIHRvIHRoZQpzcGVjaWZpZWQgd2Vla2RheXMuICBOb3RlIHRoYXQgdGhpcyBhY2NlcHRzIGVpdGhlciBpbnRlZ2VycyAobGlrZQo2IGZvciBTYXR1cmRheSwgU3VuZGF5IGJlaW5nIGVpdGhlciAwIG9yIDcpLCBvciB0aGVpciBleGFjdApFbmdsaXNoIG5hbWVzLgoKSWYgeW91IHVzZSB0aGUgQzxza2lwRGF5cz4gZmllbGQsIGNvbnNpZGVyIHRoYXQgaXQgcmVmZXJzIHRvIGRheXMKZmlndXJlZCBieSBHTVQsIG5vdCBsb2NhbCB0aW1lLiAgRm9yIGV4YW1wbGUsIGlmIEkgc2F5IHRvIHNraXAgU2F0dXJkYXlzLAp0aGF0IG1lYW5zIFNhdHVyZGF5cyBHTVQsIHdoaWNoIGluIG15IHRpbWV6b25lIChBbGFza2EpIHN0YXJ0cwppbiB0aGUgbWlkZGxlIG9mIEZyaWRheSBhZnRlcm5vb24uCgo9Y3V0CgpzdWIgc2tpcERheXMgewogIG15KCRzZWxmLEBpbikgPSBAXzsKICBteSBAc2tpcGRheXM7CiAgZm9yZWFjaCBteSAkZGF5IChAaW4pIHsKICAgIG5leHQgdW5sZXNzIGRlZmluZWQgJGRheTsKICAgIGlmKCRkYXkgPX4gbS9eWzAtN10kL3MpIHsgIyB0b2xlcmF0ZSBudW1lcmljIGRheSBzcGVjcwogICAgICAkZGF5ID0gMCBpZiAkZGF5ID09IDc7CiAgICAgICRkYXkgPSAkZGF5X25hbWVzWyRkYXldCiAgICAgICB8fCBDYXJwOjpjcm9hayAiRGF5IG51bWJlciBcIiRkYXlcIiBpcyBvdXQgb2YgcmFuZ2UgKDAtNikiOwogICAgfSBlbHNlIHsKICAgICAgQ2FycDo6Y3JvYWsgIlwiJGRheVwiIGlzbid0IGEgdmFsaWQgZGF5IG5hbWUgKHVzZSAwLTYgb3Igb25lIG9mOiBAZGF5X25hbWVzKSIKICAgICAgIHVubGVzcyAkaXNfZGF5X25hbWV7JGRheX07CiAgICB9CiAgICBwdXNoIEBza2lwZGF5cywgJGRheTsKICB9OwogIAogIERFQlVHIGFuZCBwcmludCAiU2tpcGRheXM6IEBza2lwZGF5c1xuIjsKICAkc2VsZi0+eydza2lwRGF5cyd9ID0gam9pbiAnJywKICAgICI8c2tpcERheXM+IiwgbWFwKCAiPGRheT4kXzwvZGF5PiIsIEBza2lwZGF5cyksICI8L3NraXBEYXlzPlxuIgogIDsKICByZXR1cm47Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfdXBkYXRlRGF5cygpOz4KCj1pdGVtIEM8cnNzX3VwZGF0ZURheXMoIEk8Z210X2RheV9udW0sIGdtdF9kYXlfbnVtLCAuLi4+ICk7PgoKPWl0ZW0gQzxyc3NfdXBkYXRlRGF5cyggSTxnbXRfZGF5X25hbWUsIGdtdF9kYXlfbmFtZSwgLi4uPiApOz4KClRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGFyb3VuZCBDPHJzc19za2lwRGF5cz4gLS0geW91IGNhbGwKQzxyc3NfdXBkYXRlRGF5cz4gd2l0aCBhIGxpc3Qgb2YgR01UIGRheSBuYW1lcy9udW1iZXJzLCBhbmQgCkM8cnNzX3VwZGF0ZURheXM+IHdpbGwgY2FsbCBDPHJzc19za2lwRGF5cygwIC4uIDYpPiBleGNlcHQgSTx3aXRob3V0Pgp3aGF0ZXZlciBkYXlzIHlvdSBzcGVjaWZpZWQuCgpJZiB5b3UgY2FsbCB3aXRoIGFuIGVtcHR5IGxpc3QgKGkuZS4sIEM8cnNzX3VwZGF0ZURheXMoKTs+KSwgdGhlbgp3ZSB1c2VzIEM8Z210aW1lPiB0byBmaW5kIG91dCB0aGUgY3VycmVudCBkYXkgKEdNVCEpLCBiYXNpY2FsbHkKanVzdCBhcyBpZiB5b3UnZCBjYWxsZWQ6CgogICAgICByc3NfdXBkYXRlRGF5cyggKGdtdGltZSg2MDArdGltZSgpKSlbNl0gKTsKCgo9Y3V0CgpzdWIgdXBkYXRlRGF5cyB7ICMganVzdCB0aGUgY29tcGxlbWVudCBvZiBza2lwRGF5cwogICMgRmVlZGluZyBpdCAoKSBtZWFucyB1cGRhdGVzIG9ubHkgYXQgdGhpcyBkYXkgb2YgdGhlIHdlZWsKICAjIChUaGlzIGlzIGZpbmUgc2luY2UgeW91J2QgbmV2ZXIgbWVhbiB0byBhY3R1YWxseSBkZWNsYXJlCiAgIyBhIGZlZWQgd2hvc2UgdXBkYXRlRGF5cyBpcyBuZXZlciwgaS5lLiwgd2hvc2UgdXBkYXRlRGF5cwogICMgaXMgYWxsIG9mIE1vbmRheSB0aHJ1IFN1bmRheSkKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICVkYXlzOwogIEBkYXlzewogICAgbWFwIHs7CiAgICAgIG0vXlswLTddJC8gPyAkZGF5X25hbWVzWyAoJF8gPT0gNykgPyAwIDogJF8gXQogICAgICA6ICRpc19kYXlfbmFtZXskX30gPyAkXwogICAgICA6IENhcnA6OmNyb2FrICJcIiRfXCIgaXNuJ3QgYSB2YWxpZCBkYXkgbmFtZSAodXNlIDAtNiBvciBvbmUgb2Y6IEBkYXlfbmFtZXMpIgogICAgfQogICAgQF8gPyBAXyA6ICggZ210aW1lKCAkc2VsZi0+X25vd19yb3VuZGVkX3VwICkgKVs2XQogIH0gPSAoKTsKICBERUJVRyBhbmQgcHJpbnQgIkRBWVMgVVBEQVRFWSA6Iiwgam9pbignICcsIHNvcnQga2V5cyAlZGF5cyksICJcbiI7CiAgJHNlbGYtPnNraXBEYXlzKCBncmVwICFleGlzdHMoJGRheXN7JF99KSwgQGRheV9uYW1lcyApOwogIHJldHVybjsKfQoKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKPWl0ZW0gQzxyc3NfdXBkYXRlUGVyaW9kKCBJPHBlcmlvZHN0cmluZz4gKTs+CgpUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldHMgdGhlIEM8c3k6dXBkYXRlUGVyaW9kPiBlbGVtZW50J3MgdmFsdWUgdG8gdGhlCnBlcmlvZCBzcGVjaWZpZWQuICBZb3UgbXVzdCBzcGVjaWZ5IG9uZSBvZiB0aGUgc3RyaW5nczoKInllYXJseSIsICJtb250aGx5IiwgIndlZWtseSIsICJkYWlseSIsICJob3VybHkiLgpJIGFkdmlzZSB1c2luZyAid2Vla2x5IiBvbmx5IGlmIHlvdSBrbm93IHdoYXQgeW91J3JlIGRvaW5nLCBhbmQKInllYXJseSIsICJtb250aGx5IiBvbmx5IGlmIHlvdSBJPHJlYWxseT4ga25vdyB3aGF0IHlvdSdyZSBkb2luZy4KCj1pdGVtIEM8cnNzX3VwZGF0ZVBlcmlvZCggSTxwZXJpb2RzdHJpbmc+LCBJPGludD4sIEk8YmFzZT4gKTs+CgpUaGlzIGlzIGEgc2hvcnRjdXQgZm9yCkM8PApyc3NfdXBkYXRlUGVyaW9kKEk8cGVyaW9kc3RyaW5nPik7IHJzc191cGRhdGVGcmVxdWVuY3koSTxpbnQ+KQo+PgoKPWl0ZW0gQzxyc3NfdXBkYXRlUGVyaW9kKCBJPHBlcmlvZHN0cmluZz4sIEk8aW50PiwgSTxiYXNlPiApOz4KClRoaXMgaXMgYSBzaG9ydGN1dCBmb3IKQzw8CnJzc191cGRhdGVQZXJpb2QoSTxwZXJpb2RzdHJpbmc+KTsgcnNzX3VwZGF0ZUZyZXF1ZW5jeShJPGludD4pOwpyc3NfdXBkYXRlQmFzZShJPGJhc2U+KQo+PgoKPWN1dAoKc3ViIHVwZGF0ZVBlcmlvZCB7CiAgcmV0dXJuICRfWzBdLT57J3VwZGF0ZVBlcmlvZCd9IGlmIEBfID09IDE7CiAgIyBFbHNlIHdlJ3JlIGEgd3JpdGUgYWNjZXNzb3I6CiAgCiAgbXkoJHNlbGYsICRwZXJpb2QpID0gQF87CiAgJHBlcmlvZCBvciBDYXJwOjpjb25mZXNzKAogICAiV2hhdCBwZXJpb2Q/IHllYXJseS9tb250aGx5L3dlZWtseS9kYWlseS9ob3VybHk/Iik7CgogIGlmKCRwZXJpb2QgPX4gbS9eKHllYXJseXxtb250aGx5fHdlZWtseXxkYWlseXxob3VybHkpJC9zKSB7CiAgICAkc2VsZi0+eyd1cGRhdGVQZXJpb2QnfSA9ICRwZXJpb2Q7CiAgICAkc2VsZi0+dXBkYXRlRnJlcXVlbmN5KCRfWzJdKSBpZiBAXyA+IDI7CQogICAgJHNlbGYtPnVwZGF0ZUJhc2UoJF9bM10pIGlmIEBfID4gMzsKICAgICRzZWxmLT57J19uYW1lc3BhY2VzJ317J3N5J30gPSAkTkFNRVNQQUNFX1NZOwogICAgcmV0dXJuICRwZXJpb2Q7CiAgfSBlbHNlIHsKICAgIENhcnA6OmNvbmZlc3MoCiAgICAgIldoYXQga2luZCBvZiBwZXJpb2QgaXMgXCIkcGVyaW9kXCI/ICBVc2Ugb25lIG9mOiB5ZWFybHl8bW9udGhseXx3ZWVrbHl8ZGFpbHl8aG91cmx5Iik7CiAgfQp9CgojIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KCj1pdGVtIEM8cnNzX3VwZGF0ZUJhc2UoIEk8aXNvX2RhdGVfc3RyaW5nPiApOz4KCj1pdGVtIEM8cnNzX3VwZGF0ZUJhc2UoIEk8ZXBvY2hfdGltZT4gKTs+CgpUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IHNldHMgdGhlIEM8c3k6dXBkYXRlQmFzZT4gZWxlbWVudCdzIHZhbHVlIHRvIHRoZQptb21lbnQgc3BlY2lmaWVkLiAgSWYgeW91IHBhc3MgaW4gYW4gZXBvY2ggdGltZSwgaXQgaXMgY29udmVydGVkIHRvCmFuIElTTyBkYXRlIHN0cmluZy4KCj1jdXQKCnN1YiB1cGRhdGVCYXNlIHsKICByZXR1cm4gJF9bMF0tPnsndXBkYXRlQmFzZSd9IGlmIEBfID09IDE7CiAgIyBFbHNlIHdlJ3JlIGEgd3JpdGUgYWNjZXNzb3I6CiAgCiAgbXkoJHNlbGYsICR0aGVuKSA9IEBfOwogIGlmKCAkdGhlbiA9fiBtL14tP1xkKyQvcyApIHsKICAgICRzZWxmLT57J3VwZGF0ZUJhc2UnfSA9ICRzZWxmLT5fZXBvY2gyaXNvZGF0ZSgkdGhlbik7CiAgfSBlbHNpZiAoICR0aGVuID1+ICAjIGJhc2ljYWxseSBJU084NjAxCiAgICAgIG08XgogICAgICAgIFxkXGRcZFxkCQkjIHllYXIKICAgICAgICAoPzoKICAgICAgICAgIC1cZFxkCQkJIyBtb250aAogICAgICAgICAgKD86CiAgICAgICAgICAgIC1cZFxkICAjIGRheQogICAgICAgICAgICAoPzoKICAgICAgICAgICAgICBUXGRcZDpcZFxkCSMgaGg6bW0KICAgICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgIDpcZFxkCQkjIHNlY29uZHMKICAgICAgICAgICAgICAgICg/OgogICAgICAgICAgICAgICAgICBcLlxkKwkJIyBmcmFjdGlvbnMgb2YgYSBzZWNvbmQKICAgICAgICAgICAgICAgICk/CiAgICAgICAgICAgICAgKT8KICAgICAgICAgICAgICAoPzoJCSMgVFogb2Zmc2V0CiAgICAgICAgICAgICAgICBaCQkjIFp1bHUKICAgICAgICAgICAgICAgfAogICAgICAgICAgICAgICAgKD86CQkjIG9yIGJ5IG9mZnNldDoKICAgICAgICAgICAgICAgICAgWy0rXQogICAgICAgICAgICAgICAgICBcZFxkOlxkXGQgICAgICMgaGg6bW0sIHdpdGggbGVhZGluZyAnKycgb3IgJy0nCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgKT8KICAgICAgICAgICAgKT8KICAgICAgICAgICk/CiAgICAgICAgICAKICAgICAgICApPwogICAgICAgICAjIFRoZSBtb250aCB3YXMgb3B0aW9uYWwsIGJ1dCB0aGF0CiAgICAgICAgICMgIG1ha2VzICIxOTk0IiBhbWJpZ3VvdXMgLS0gYSB5ZWFyIG9yIGFuIGVwb2NoIHRpbWU/CiAgICAgICAgICMgSSBkb3VidCBhbnlvbmUgd2FudHMgdG8gd3JpdGUgPHVwZGF0ZUJhc2U+MjAwMDwvdXBkYXRlQmFzZT4sCiAgICAgICAgICMgIGVzcCBhcyB0aGUgZGVmYXVsdCBpcyBiYXNpY2FsbHkgPT0gPHVwZGF0ZUJhc2U+MTk3MDwvdXBkYXRlQmFzZT4uCiAgICAgICAgJAogICAgICA+c3gKICApIHsKICAgICRzZWxmLT57J3VwZGF0ZUJhc2UnfSA9ICR0aGVuOwogIH0gZWxzZSB7CiAgICBDYXJwOjpjb25mZXNzKCJXaGF0IGtpbmQgb2YgdXBkYXRlQmFzZSBpcyBcIiR0aGVuXCI/Iik7CiAgfQogIHJldHVybiAkc2VsZi0+eyd1cGRhdGVCYXNlJ307Cn0KCiMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQpzdWIgX2Vwb2NoMmlzb2RhdGUgewogIG15KCRzZWxmLCAkdGltZSkgPSBAXzsKICBteShAdGltZWxpc3QpID0gZ210aW1lKCR0aW1lKTsKICArKyR0aW1lbGlzdFs0XTsKICAkdGltZWxpc3RbNV0gKz0gMTkwMDsKICByZXR1cm4gc3ByaW50ZigiJTA0ZC0lMDJkLSUwMmRUJTAyZDolMDJkKzAwOjAwIiwKICAgICAgIEB0aW1lbGlzdFsgNSwgICA0LCAgIDMgICwgMiAgICwxICBdKTsKICAgICAgIAp9CgojIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KJVBlcmlvZEFzU2Vjb25kcyA9ICgKICAnaG91cmx5JyA9PiA2MCAqIDYwLAogICdkYWlseScgID0+IDYwICogNjAgKiAyNCwKICAnd2Vla2x5JyA9PiA2MCAqIDYwICogMjQgKiA3LAopOwoKc3ViIF91cGRhdGVCYXNlX2luaXQgewogICMgV2hhdCB0byBkbz8gIFBlZyBpdCBvbiBub3cgcGx1cyBJbnRlcnZhbCwgcm91bmRlZCB1cCB0byBuZXh0IE0tbWludXRlIGludGVydmFsPwogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJG5vdyA9ICRzZWxmLT5fbm93X3JvdW5kZWRfdXA7CiAgCiAgbXkgJHBlcmlvZF90eXBlID0gJHNlbGYtPnVwZGF0ZVBlcmlvZDsKICBpZiggJHBlcmlvZF90eXBlIGVxICdtb250aGx5JyBvciAkcGVyaW9kX3R5cGUgZXEgJ3llYXJseScpIHsKICAgICRub3cgPSAkc2VsZi0+X2Vwb2NoMmlzb2RhdGUoICRub3cgKTsKICAgIGlmKCRwZXJpb2RfdHlwZSBlcSAneWVhcmx5JykgewogICAgICAkbm93ID1+ICAgICAgIHMvXi4uLi4tLzIwMDAtL3MgfHwgZGllICJTUE9SSzkzOTMxISI7ICMgc2FuaXR5CiAgICB9IGVsc2lmKCRwZXJpb2RfdHlwZSBlcSAnbW9udGhseScpIHsKICAgICAgJG5vdyA9fiBzL14uLi4uLS4uLS8yMDAwLTAxLS9zIHx8IGRpZSAiU1BPUkszNTI4NiEiOyAjIHNhbml0eQogICAgfSBlbHNlIHsKICAgICAgZGllICJTUE9SSyEhISEhOTQ4MjkwNDUiOyAjc2FuaXR5CiAgICB9CiAgICBERUJVRyA+IDFhbmQgcHJpbnQgIlVzaW5nICRub3cgYXMgdXBkYXRlQmFzZS5cbiI7CiAgfSBlbHNlIHsKICAgICMgSXQncyBhIHBsYWluIG9sJyBpbnRlcnZhbC4KICAgIERFQlVHID4gMSBhbmQgcHJpbnQgIlNsYXBwaW5nICRub3cgKCIsIGdtdGltZSgkbm93KS4gIiBpbnRvIDE5NzAuXG4iOwogICAgbXkgJGZyZXEgPSAkc2VsZi0+dXBkYXRlRnJlcXVlbmN5KCk7CiAgICBteSAkaW50ZXJ2YWxfYXNfc2Vjb25kcyA9IGludCgKICAgICAgKCRQZXJpb2RBc1NlY29uZHN7JHBlcmlvZF90eXBlfSB8fGRpZSAiU1BPUks4NDI1OCBvbiAnJHBlcmlvZF90eXBlJyEiKQogICAgICAvICRmcmVxKQogICAgOwogICAgREVCVUcgPiAxIGFuZCBwcmludAogICAgICJTbywgJGZyZXEgdGltZXMgJHBlcmlvZF90eXBlIGlzICRpbnRlcnZhbF9hc19zZWNvbmRzIHNlY29uZHMuLi5cbiI7CiAgICAkbm93ICU9ICRpbnRlcnZhbF9hc19zZWNvbmRzOwogICAgREVCVUcgPiAxIGFuZCBwcmludCAiVXNpbmcgJG5vdyAoIiwgZ210aW1lKCRub3cpLiAiIGFzIHVwZGF0ZUJhc2UuXG4iOwogIH0KICAkc2VsZi0+dXBkYXRlQmFzZSgkbm93KTsKICByZXR1cm47Cn0KCiMgLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX3VwZGF0ZUZyZXF1ZW5jeSggSTxpbnRlZ2VyPiApOz4KClRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgc2V0cyB0aGUgQzxzeTp1cGRhdGVGcmVxdWVuY3k+IGVsZW1lbnQncyB2YWx1ZSB0byB0aGUKdmFsdWUgc3BlY2lmaWVkLiAgVGhlIHZhbHVlIGhhcyB0byBiZSBhIG5vbnplcm8gcG9zaXRpdmUgaW50ZWdlci4KCkZvciBleGFtcGxlLCB0aGlzIG1lYW5zIHRoYXQgdGhpcyBmZWVkIHVwZGF0ZXMgYXQvYnkgdGhlIHN0YXJ0IG9mIGV2ZXJ5IGhvdXIKYW5kIDMwIG1pbnV0ZXMgcGFzdDoKCiAgcnNzX3VwZGF0ZUJhc2UoJzIwMDAtMDEtMDFUMDA6MDAtMDA6MDAnKTsKICByc3NfdXBkYXRlRnJlcXVlbmN5KDIpOwogIHJzc191cGRhdGVQZXJpb2QoJ2hvdXJseScpOyAgIyAyKmhvdXJseSBtZWFucyAidHdpY2UgYW4gaG91ciIKClJlY2FsbCB0aGF0IHRoaXMgY2FuIGFsc28gYmUgZG9uZSB3aXRoIHRoZQp0aGUgQzxyc3NfdXBkYXRlUGVyaW9kKCBJPHBlcj4sIEk8ZnJlcT4sIEk8YmFzZT4gKT4gc2hvcnRjdXQsIGxpa2Ugc286CgogIHJzc191cGRhdGVCYXNlKCdob3VybHknLCAyLCAnMjAwMC0wMS0wMVQwMDowMC0wMDowMCcpOwoKPWN1dAoKc3ViIHVwZGF0ZUZyZXF1ZW5jeSB7ICMgc2ltcGxlIGFjY2Vzc29yLCBwbHVzIHRoZSBpbnQoKSB0aGluZwogIGlmKEBfID4gMSkgewogICAgJF9bMF0tPnsndXBkYXRlRnJlcXVlbmN5J30gPSBpbnQoJF9bMV0pIHx8IDE7CiAgfSBlbHNlIHsKICAgICRfWzBdLT57J3VwZGF0ZUZyZXF1ZW5jeSd9CiAgfQp9CgpzdWIgX3VwZGF0ZUZyZXF1ZW5jeV9pbml0IHsgJF9bMF0tPnsndXBkYXRlRnJlcXVlbmN5J30gfHw9IDEgfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgX3N5X3VwZGF0ZV9hc194bWwgewogIG15ICRzZWxmID0gJF9bMF07CiAgcmV0dXJuICcnIHVubGVzcyAkc2VsZi0+eyd1cGRhdGVQZXJpb2QnfTsKICAkc2VsZi0+X3VwZGF0ZUZyZXF1ZW5jeV9pbml0KCk7CiAgJHNlbGYtPl91cGRhdGVCYXNlX2luaXQoKTsKICByZXR1cm4gc3ByaW50ZigKCnF7PHN5OnVwZGF0ZUZyZXF1ZW5jeT4lczwvc3k6dXBkYXRlRnJlcXVlbmN5Pgo8c3k6dXBkYXRlUGVyaW9kPiVzPC9zeTp1cGRhdGVQZXJpb2Q+CjxzeTp1cGRhdGVCYXNlPiVzPC9zeTp1cGRhdGVCYXNlPgp9LAogICAgJHNlbGYtPnVwZGF0ZUZyZXF1ZW5jeSwKICAgICRzZWxmLT51cGRhdGVQZXJpb2QsCiAgICAkc2VsZi0+dXBkYXRlQmFzZSwKICApOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMgQWxpYXNlczoKc3ViIHNraXBfaG91cnMgICAgICAge3NoaWZ0LT5za2lwSG91cnMoICAgICAgIEBfKX0Kc3ViIHNraXBfZGF5cyAgICAgICAge3NoaWZ0LT5za2lwRGF5cyggICAgICAgIEBfKX0Kc3ViIHVwZGF0ZV9kYXlzICAgICAge3NoaWZ0LT51cGRhdGVEYXlzKCAgICAgIEBfKX0Kc3ViIHVwZGF0ZV9ob3VycyAgICAge3NoaWZ0LT51cGRhdGVIb3VycyggICAgIEBfKX0Kc3ViIHVwZGF0ZV9wZXJpb2QgICAge3NoaWZ0LT51cGRhdGVQZXJpb2QoICAgIEBfKX0Kc3ViIHVwZGF0ZV9iYXNlICAgICAge3NoaWZ0LT51cGRhdGVCYXNlKCAgICAgIEBfKX0Kc3ViIHVwZGF0ZV9mcmVxdWVuY3kge3NoaWZ0LT51cGRhdGVGcmVxdWVuY3koIEBfKX0Kc3ViIHdlYm1hc3RlciAgICAgICAge3NoaWZ0LT53ZWJNYXN0ZXIoICAgICAgIEBfKX0KCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCj1pdGVtIHRoZSBhY2Nlc3NvciBDPHJzc19yZXRlbnRpb24oSTxudW1iZXI+KT4KCklmIHlvdSBhcmUgdXNpbmcgYW4gQzxyc3NfaGlzdG9yeV9maWxlKEk8ZmlsZT4pPiwgdGhlIGhpc3RvcnkgZmlsZSB3aWxsCmFjY3JldGUgYSBsaXN0IG9mIGFsbCBVUkxzIGl0IGhhcyBzZWVuLiAgQnV0IHRvIGtlZXAgdGhpcyBmaWxlIGZyb20gcG90ZW50aWFsbHkKZ2V0dGluZyBpbW1lbnNlLCBpdGVtcyB0aGF0IGhhdmVuJ3QgYmVlbiBzZWVuIGZvciBhIHdoaWxlIGFyZSB0aHJvd24gb3V0LgpUaGUgcGVyaW9kIG9mIHRpbWUgYSBmZWVkJ3MgaXRlbXMgZ28gdW5zZWVuIGJlZm9yZSBlYWNoIGlzIGZvcmdvdHRlbiBpcwpjYWxsZWQgdGhhdCBmZWVkJ3MgQjxyZXRlbnRpb24+LCBhbmQgaXMgZXhwcmVzc2VkIGluIHNlY29uZHMuCgpUaGUgZGVmYXVsdCByZXRlbnRpb24gdmFsdWUgaXMgMzIgZGF5cyAoaS5lLiwgMzIqMjQqNjAqNjAsIHRoZSBudW1iZXIKb2Ygc2Vjb25kcyBpbiAzMiBkYXlzKS4gIElmIHlvdSB3YW50ZWQgdG8gY2hhbmdlIGl0IHRvIGp1c3QgYSB3ZWVrLAp5b3Ugd291bGQgZG8gdGhpcyB3aXRoIEM8cnNzX3JldGVudGlvbig3KjI0KjYwKjYwKT4uCgpBcyBhIHNwZWNpYWwgY2FzZSwgYSB6ZXJvIG9yIG5lZ2F0aXZlIHZhbHVlIGZvciB0aGUgcmV0ZW50aW9uIG1lYW5zCnRvIG5ldmVyIGNsZWFyIGFueXRoaW5nIGZyb20gdGhlIGhpc3RvcnkgZmlsZSwgbm8gbWF0dGVyIGhvdyBsb25nCml0IGhhcyBnb25lIHVuc2Vlbi4KCj1jdXQKCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKPWl0ZW0gQzxyc3NfYWRkX2NvbW1lbnQoIEk8c3RyaW5ncz4gKTs+CgpDYWxsIHRoaXMgZnVuY3Rpb24gaWYgeW91IHdhbnQgdG8gYWRkIGV4dHJhIFhNTCBjb21tZW50cyB0byB0aGlzIFJTUyBmaWxlLgpGb3IgZXhhbXBsZSwgaWYgeW91IGNhbGwgdGhpczoKCiAgICAgICAgcnNzX2FkZF9jb21tZW50KAogICAgICAgICAgIk91ciB0ZXJtcyBvZiB1c2U6IGh0dHA6Ly93aGVyZXZlci5pbnQvcnNzdG91Lmh0bWwiLAogICAgICAgICAgIkFueSBxdWVzdGlvbnM/IEFzayBqaW1teUB3aGVyZXZlci5pbnQiLAogICAgICAgICk7CgouLi50aGVuIHRoaXMgUlNTIGZlZWQgd2lsbCBjb250YWluIHRoaXMgWE1MIGZhaXJseSBlYXJseSBvbiBpbiB0aGUgZmlsZToKCiAgICAgICAgPCEtLSBPdXIgdGVybXMgb2YgdXNlOiBodHRwOi8vd2hlcmV2ZXIuaW50L3Jzc3RvdS5odG1sIC0tPgogICAgICAgIDwhLS0gQW55IHF1ZXN0aW9ucz8gQXNrIGppbW15QHdoZXJldmVyLmludCAtLT4KCj1jdXQKCnN1YiBhZGRfY29tbWVudCB7CiAgbXkgJHNlbGYgPSBzaGlmdDsKICBmb3JlYWNoIG15ICRjIChAXykgewogICAgcHVzaCBAeyAkc2VsZi0+eydfY29tbWVudHMnfSB9LCAkYwogICAgIGlmIGRlZmluZWQgJGMgYW5kIGxlbmd0aCAkYyBhbmQgJGMgPX4gbS9cUy87CiAgICAgICMgbm8gcG9pbnQgaW4gaGF2aW5nIGNvbnRlbnRsZXNzIGNvbW1lbnRzCiAgfQogIHJldHVybjsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgo9aXRlbSB0aGUgYWNjZXNzb3IgQzxyc3NfY3NzKCBJPHVybD4gKT4KClRoaXMgZGVmaW5lcyB0aGUgZ2l2ZW4gVVJMIGFzIGJlaW5nIHRoZSBYTUwtQ1NTIHN0eWxlc2hlZXQgZm9yIHRoaXMgUlNTCmZlZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAiLi9yc3MuY3NzIiBpZiBDPC1lICJyc3MuY3NzIj4gaXMgdHJ1ZSwgb3RoZXJ3aXNlCmlzIHRoZSB2YWx1ZSBodHRwOi8vd3d3LmludGVyZ2xhY2lhbC5jb20vcnNzL3Jzcy5jc3MKCj1pdGVtIHRoZSBhY2Nlc3NvciBDPHJzc194c2woIEk8dXJsPiApPgoKVGhpcyBkZWZpbmVzIHRoZSBnaXZlbiBVUkwgYXMgYmVpbmcgdGhlIFhNTC1YU0wgc3R5bGVzaGVldCBmb3IgdGhpcyBSU1MKZmVlZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIG5vbmUuCgo9aXRlbSBUaGUgYWNjZXNzb3JzCkM8PApyc3NfdXJsKCBJPHN0cmluZz4gKSwgcnNzX3RpdGxlKCBJPHN0cmluZz4gKSwgcnNzX2Rlc2NyaXB0aW9uKCBJPHN0cmluZz4gKQo+PgoKVGhlc2UgZGVmaW5lIHRoaXMgZmVlZCdzIFVSTCwgdGl0bGUsIGFuZCBkZXNjcmlwdGlvbi4gIFRoZXNlIGZ1bmN0aW9ucwphcmUganVzdCBmb3IgY29tcGxldGVuZXNzLCBzaW5jZSBpdCdzIHNpbXBsZXIgdG8ganVzdCBzcGVjaWZ5IGFueS9hbGwgb2YKdGhlc2UgcGFyYW1ldGVycyBpbiB0aGUgY2FsbCB0byBDPHJzc19uZXc+LgoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX3R0bCggSTxudW1iZXI+ICk+CgpUaGlzIHNldHMgdGhlIHBhcmFtZXRlciBvZiB0aGlzIFJTUyBmZWVkJ3MgQzx0dGw+IGVsZW1lbnQsIHdoaWNoCnN1Z2dlc3RzIGhvdyBsb25nIChpbiBtaW51dGVzLCBub3Qgc2Vjb25kcyEpIGFuIFJTUyByZWFkZXIgc2hvdWxkIHdhaXQgYWZ0ZXIgaXQgcG9sbHMKYSBmZWVkIHVudGlsIGl0IHBvbGxzIGl0IGFnYWluLiAgRm9yIGV4YW1wbGUsIEM8cnNzX3R0bCg5MCk+IHdvdWxkIHN1Z2dlc3QKdGhhdCBhIHJlYWRlciBzaG91bGQgbm90IHBvbGwgdGhpcyBmZWVkIG1vcmUgb2Z0ZW4gdGhhbiBldmVyeSA5MCBtaW51dGVzLgoKKFRoaXMgZWxlbWVudCBpcyBzb21ld2hhdCBvYnNvbGVzY2VudCBuZXh0IHRvIHRoZSBuZXdlciBhbmQgbW9yZQppbmZvcm1hdGl2ZSBDPHN5OnVwZGF0ZSo+IGVsZW1lbnRzLCBidXQgaXMgaW5jbHVkZWQgZm9yIGJhY2t3YXJkCmNvbXBhdGFiaWxpdHkuKQoKPWl0ZW0gdGhlIGFjY2Vzc29yIEM8cnNzX2FsbG93X2R1cGxpY2F0ZXMoIEk8Ym9vbGVhbj4gKT4KClRoaXMgY29udHJvbHMgd2hldGhlciBvciBub3QgZHVwbGljYXRlIGl0ZW1zIGFyZSBmaWx0ZXJlZCBvdXQgb3V0IHRoZQpmZWVkLiAgQnkgZGVmYXVsdCB0aGlzIGlzIEk8b24+LiAgTm90ZSB0aGF0IGR1cGxpY2F0ZXMgYXJlIGRldGVjdGVkIG9ubHkKYnkgdGhlaXIgVVJMLCBzbyBpZiB5b3UgY2FsbCB0aGlzOgoKICAgICAgICByc3NfaXRlbSgnaHR0cDovL2Zvby5pbnQvZG9uYXRlJywgIkdpdmUhIik7CiAgICAgICAgcnNzX2l0ZW0oJ2h0dHA6Ly9mb28uaW50L2RvbmF0ZScsICJXZSBuZWVkIG1vbmV5ISIpOwogICAgICAgIHJzc19zYXZlKCdiZWdnaW5nLnJzcycpOwoKLi4udGhlbiBvbmx5IHRoZSBmaXJzdCB3aWxsIGFwcGVhciBpbiB0aGUgZmVlZCwgc2luY2UgdGhlIHNlY29uZCBpdGVtCmhhcyBhIFVSTCB0aGF0IGlzIGFscmVhZHkgYmVpbmcgc2F2ZWQgaW4gdGhpcyBmZWVkLiAgKEhvd2V2ZXIsCkM8cnNzX2l0ZW1fY291bnQ+IGlzIHN0aWxsIDIsIGJlY2F1c2UgZmlsdGVyaW5nIG91dCBkdXBsaWNhdGVzIGlzCnNvbWV0aGluZyB0aGF0IG9ubHkgaGFwcGVucyBhcyB0aGUgZmVlZCBpcyBzYXZlZC4pCgo9aXRlbSB0aGUgYWNjZXNzb3IgQzxyc3NfZG9jcyggSTx1cmw+ICk+CgpUaGlzIHNldHMgdGhlIHZhbHVlIG9mIHRoZSBub3QtZ2VuZXJhbGx5LXVzZWZ1bCBDPGRvYz4gUlNTIGVsZW1lbnQuClRoZSBkZWZhdWx0IHZhbHVlIGlzICIuL2Fib3V0X3Jzcy5odG1sIiBpZiBDPC1lICJhYm91dF9yc3MuaHRtbCI+IGlzCnRydWUsIG90aGVyd2lzZSAiaHR0cDovL3d3dy5pbnRlcmdsYWNpYWwuY29tL3Jzcy9hYm91dC5odG1sIi4KCj1pdGVtIHRoZSBhY2Nlc3NvcnMKQzw8CnJzc19pbWFnZV91cmwoSTx1cmw+KSwgcnNzX2ltYWdlX3dpZHRoKEk8bnVtYmVyPiksCnJzc19pbWFnZV9oZWlnaHQoSTxudW1iZXI+KSwKcnNzX2ltYWdlX3RpdGxlKEk8dGV4dD4pLCByc3NfaW1hZ2VfbGluayhJPHVybD4pLApyc3NfaW1hZ2VfZGVzY3JpcHRpb24oSTx0ZXh0PikKPj4KClRoZXNlIGFyZSBmb3IgbWFudWFsbHkgc2V0dGluZyB0aGUgdmFsdWVzIG9mIHRoaXMgZmVlZCdzIGltYWdlIGVsZW1lbnQncwpzdWJlbGVtZW50czoKCiAgPGltYWdlPgogICAgICAgICAgICAgIDx1cmw+IChyc3NfaW1hZ2VfdXJsKSAgICAgICAgIDwvdXJsPgogICAgICAgICAgICA8d2lkdGg+IChyc3NfaW1hZ2Vfd2lkdGgpICAgICAgIDwvd2lkdGg+CiAgICAgICAgICAgPGhlaWdodD4gKHJzc19pbWFnZV9oZWlnaHQpICAgICAgPC9oZWlnaHQ+CiAgICAgICAgICAgIDx0aXRsZT4gKHJzc19pbWFnZV90aXRsZSkgICAgICAgPC90aXRsZT4KICAgICAgICAgICAgIDxsaW5rPiAocnNzX2ltYWdlX2xpbmspICAgICAgICA8L2xpbms+CiAgICAgIDxkZXNjcmlwdGlvbj4gKHJzc19pbWFnZV9kZXNjcmlwdGlvbikgPC9kZXNjcmlwdGlvbj4KICA8L2ltYWdlPgoKWW91IHJhcmVseSBuZWVkIHRvIGNhbGwgYW55IG9mIHRoZXNlIEM8cnNzX2ltYWdlX0k8d2hhdGV2ZXI+PiBmdW5jdGlvbnMgLS0KdXN1YWxseSBqdXN0IGNhbGxpbmcgQzxyc3NfaW1hZ2UoIEk8dXJsLCBoLCB3PiApOz4gaXMgZW5vdWdoLgoKPWN1dAoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpteSBARG9XICAgPSBxdyhTdW4gTW9uIFR1ZSBXZWQgVGh1IEZyaSBTYXQpOwpteSBATW9udGggPSBxdyhKYW4gRmViIE1hciBBcHIgTWF5IEp1biBKdWwgQXVnIFNlcCBPY3QgTm92IERlYyk7CgpzdWIgX2RhdGVfcmZjODIyIHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15IEB0aW1lbGlzdCA9IChAXyA9PSAwKSA/IGdtdGltZSA6IChAXyA9PSAxKSA/IGdtdGltZSgkX1swXSkgOiBAXzsKICAkdGltZWxpc3RbNV0gKz0gMTkwMDsKCiAgcmV0dXJuIHNwcmludGYoCiAgICAgIiVzLCAlMDJkICVzICUwNGQgJTAyZDolMDJkOiUwMmQgR01UIiwKICAgICAgJERvV1skdGltZWxpc3RbNl1dLAogICAgICAgICAgJHRpbWVsaXN0WzNdLAogICAgICAgICAgICAgICAkTW9udGhbJHRpbWVsaXN0WzRdXSwKICAgICAgICAgICAgICAgICAgICAgICBAdGltZWxpc3RbNSwgMiwxLDBdLAogICk7Cn0KCnN1YiBfY2hlY2tfYWdlIHsKICBteSgkc2VsZiwgJGZpbGVuYW1lLCAkbWF4YWdlKSA9IEBfOwogIG15ICRhZ2U7CiAgaWYoJGZpbGVuYW1lIGFuZCAkbWF4YWdlIGFuZCAkbWF4YWdlIDwgKCRhZ2UgPSAtTSAkZmlsZW5hbWUpKSB7CiAgICBDYXJwOjpjYXJwKAogICAgICBzcHJpbnRmICIlcyB3YXJuaW5nIC0gJXMgaXMgZ2V0dGluZyBvbGQgLS0gaXQgaGFzbid0IGNoYW5nZWQgaW4gJTAuMWYgZGF5cyEiLAogICAgICAgIHJlZigkc2VsZikgfHwgJHNlbGYsCiAgICAgICAgJGZpbGVuYW1lLAogICAgICAgICRhZ2UsCiAgICApOwogIH0KICByZXR1cm4gMDsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCnN1YiBfdmFyaW91c19jb21tZW50cyB7CiAgbXkgJHNlbGYgPSAkX1swXTsKICBteSAkeDsKICByZXR1cm4KICAgIGpvaW4gJycsCiAgICBtYXAgezsgJHggPSAkXzsgJHggPX4gcy8tLS9fXy9nOyAiPCEtLSAkeCAtLT5cbiI7IH0KICAgIEB7ICRzZWxmLT57J19jb21tZW50cyd9IHx8IFtdIH0KICA7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKc3ViIF9tb2R2ZXJzaW9uX2NvbW1lbnQgewogIG15ICRzZWxmID0gJF9bMF07CiAgbXkgJHNlbGZjbGFzcyA9IHJlZigkc2VsZik7CiAgbXkgJHYgPSBldmFsIHsgJHNlbGZjbGFzcy0+VkVSU0lPTiB9IHx8ICRWRVJTSU9OOwogIHJldHVybiAiXG48IS0tIEdlbmVyYXRlZCB3aXRoIFBlcmwncyAkc2VsZmNsYXNzIHYkdiAtLT5cbiI7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKc3ViIF9hY2Nlc3Nvcml6ZSB7ICAjIEEgc2ltcGxlLW1pbmRlZCBtZXRob2QtbWFrZXIKICBubyBzdHJpY3QgJ3JlZnMnOwogIGZvcmVhY2ggbXkgJGF0dHJuYW1lIChAXykgewogICAgbmV4dCBpZiAkYXR0cm5hbWUgPX4gbS86Oi87ICMgYSBoYWNrCiAgICAqe2NhbGxlcigpIC4gJzo6JyAuICRhdHRybmFtZX0gPSBzdWIgewogICAgICB1c2Ugc3RyaWN0OwogICAgICB1bmxlc3MoKEBfID09IDEgb3IgQF8gPT0gMikgYW5kIHJlZiAkX1swXSApIHsKICAgICAgICAkQ2FycDo6Q2FycExldmVsID0gMTsKICAgICAgICBDYXJwOjpjcm9haygKICAgICAgICAgIkFjY2Vzc29yIHVzYWdlOiBcJG9iai0+JGF0dHJuYW1lKCkgb3IgXCRvYmotPiRhdHRybmFtZShcJG5ld192YWx1ZSkiCiAgICAgICAgKTsKICAgICAgfQogICAgICAoQF8gPT0gMSkgPyAgJF9bMF0tPnskYXR0cm5hbWV9CiAgICAgICAgICAgICAgICA6ICgkX1swXS0+eyRhdHRybmFtZX0gPSAkX1sxXSk7CiAgICB9OwogIH0KICAjIFlhIGtub3csIHRoZXkgc2F5IGFjY2Vzc29yaWVzIG1ha2UgdGhlIGVuc2VtYmxlIQogIHJldHVybjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgeG1sZXNjIHsKICBteSAkc2VsZiA9IHNoaWZ0OwogIG15ICRvdXQgPSBqb2luICcnLCBAXzsKICAkb3V0ID1+IHM8KFteXHgyMFx4MjFceDIzXHgyNFx4MjVceDI3LVx4M2JceDNkXHgzZi1ceDdlXSk+CiAgICAgICAgICAgPCRDb21tb25FbnRzeyQxfSB8fCAoJyYjJy4ob3JkKCQxKSkuJzsnKSA+c2VnOwogIHJldHVybiAkb3V0Owp9CgpzdWIgeG1sZWxlbSB7CiAgbXkgJHNlbGYgPSBzaGlmdDsKICBteSAkZ2kgICA9IHNoaWZ0OwogIHJldHVybiAiPCRnaT4iIC4gJHNlbGYtPnhtbGVzYyhAXykgLiAiPC8kZ2k+IjsKfQoKIy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpzdWIgaHRtbDJ0ZXh0IHsKCiAgIyBBIHJ1ZGltZW50YXJ5IEhUTUwgdG9rZW5pemVyLCBhZGFwdGVkIGFuZCBzaW1wbGlmaWVkCiAgIyBmcm9tIEdpc2xlIEFhcydzIEhUTUw6OlBhcnNlciB2Mi4yNS4uLgoKICBsb2NhbCAkXzsKICBteSgkc2VsZiwgQG91dCk7CiAgKCRzZWxmLCAkXykgPSBAXzsKCiAgcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICRfOwogIHJldHVybiAkJF8gICBpZiByZWYoJF8pIGVxICdTQ0FMQVInOyAgIyBQYXNzIGEgc2NhbGFyIHJlZiB0byBieXBhc3MhCiAgcmV0dXJuICcnICAgIHVubGVzcyBsZW5ndGggICRfOwoKICBpZiggbS9eW1x4MDAtXHg3ZV0rJC9zIGFuZCAhIG0vWzw+Jl0vcykgewogICAgIyBNb3N0IGNvbW1vbiBjYXNlOiBhIHNpbXBsZSBzdHJpbmcgbmVlZGluZyBubyBIVE1MIHBhcnNpbmcuCiAgICAjIFNvIGp1c3QgY29tcGFjdCBhbmQgdHJpbSB3aGl0ZXNwYWNlLCBhbmQgbW92ZSBvbi4KICAgIHRyL1xuXHJcZlx0IC8gL3M7CiAgICBzLyAkLy9zOwogICAgcy9eIC8vczsKICAgIHJldHVybiAkXzsKICB9CiAgCiAgd2hpbGUoIGxlbmd0aCgkXykgKSB7CiAgICBpZiAoIHNAXihbXiY8XSspQEBzKSB7ICAjIEFueSBwbGFpbnRleHQKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogUGxhaW50ZXh0IHskMX1cbiI7CiAgICAgIHB1c2ggQG91dCwgJDE7CiAgICB9IGVsc2lmICggc0BeCiAgICAgICgKICAgICAgICAmXCMKICAgICAgICAoPzoKICAgICAgICAgICg/OiAjIGRlYwogICAgICAgICAgICAoWzAtOV17MSw3fSkKICAgICAgICAgICl8KD86ICMgb3IgaGV4CiAgICAgICAgICAgW3hYXShbMC05YS1mQS1GXXsxLDd9KQogICAgICAgICAgKQogICAgICAgICkKICAgICAgKQogICAgICBcYgogICAgICA7PwogICAgICBAQHN4CiAgICApIHsKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogTnVtZXJpYyBlbnQgeyQxfSIsCiAgICAgICAgIGRlZmluZWQoJDIpID8gIiAoZGVjICQyKSIgCiAgICAgICA6IGRlZmluZWQoJDMpID8gIiAoaGV4ICQzKSIgCiAgICAgICA6ICIgKHdlaXJkISkiLAogICAgICAgIlxuIjsKCiAgICAgIGlmKCAgICAgIGRlZmluZWQgJDMgYW5kIGV4aXN0cyAkV2luTGFtZUVudGl0aWVze2hleCgkMyl9ICkgewogICAgICAgICMgaXQncyBhIHdpbmxhbWUgZW50LCBpbiBoZXgKICAgICAgICBERUJVRyA+IDYgYW5kIHByaW50ICIgQ29ycmVjdGluZyB0aGF0IHRvICYjJFdpbkxhbWVFbnRpdGllc3toZXgoJDMpfTtcbiI7CiAgICAgICAgcHVzaCBAb3V0LCBcIiYjJFdpbkxhbWVFbnRpdGllc3toZXgoJDMpfTsiIDsKICAgICAgfSBlbHNpZiggZGVmaW5lZCAkMiBhbmQgZXhpc3RzICRXaW5MYW1lRW50aXRpZXN7MCArICQyfSApIHsKICAgICAgICAjIGl0J3MgYSB3aW5sYW1lIGVudCwgaW4gZGVjaW1hbAogICAgICAgIERFQlVHID4gNiBhbmQgcHJpbnQgIiBDb3JyZWN0aW5nIHRoYXQgdG8gJiMkV2luTGFtZUVudGl0aWVzezAgKyAkMn07XG4iOwogICAgICAgIHB1c2ggQG91dCwgXCImIyRXaW5MYW1lRW50aXRpZXN7MCArICQyfTsiICA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgIyBpdCdzIGEgbm9ybWFsIGVudGl0eQogICAgICAgIERFQlVHID4gNiBhbmQgcHJpbnQgIiBQYXNzaW5nIGl0IHRocnUgYXMgXCIkMTtcIlxuIjsKICAgICAgICBwdXNoIEBvdXQsIFwiJDE7IjsKICAgICAgfQogICAgICAKCiAgICB9IGVsc2lmICggc0BeJihbQS1aYS16XVtBLVphLXowLTldezAsMTB9KVxiKDs/KUBAcykgewoKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogTmFtZWQgZW50aXR5IHskMX1cbiI7CiAgICAgIGlmKGV4aXN0cyAkRW50aXRpZXN7JDF9KSB7CiAgICAgICAgcHVzaCBAb3V0LCBcICRFbnRpdGllc3skMX07CiAgICAgIH0gZWxzaWYoZXhpc3RzICRFbnRpdGllc3sgdWNmaXJzdChsYygkMSkpIH0pIHsKICAgICAgICBERUJVRyA+IDYgYW5kIHByaW50ICI6OjogVHJlYXRpbmcgYXMgaWYgaXQgd2VyZSAmIiwKICAgICAgICAgIHVjZmlyc3QobGMoJDEpKSwgIjtcbiI7CiAgICAgICAgcHVzaCBAb3V0LCBcICRFbnRpdGllc3sgdWNmaXJzdChsYygkMSkpIH07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgREVCVUcgPiA2IGFuZCBwcmludCAiOjo6IFVucmVzb2x2YWJsZSEgIFRyZWF0aW5nIGFzIHBsYWludGV4dFxuIjsKICAgICAgICBwdXNoIEBvdXQsICImJDEiIC4gKCQyIHx8ICcnKTsKICAgICAgfQoKCiAgICAjIFRoaW5ncyB3ZSBqdXN0IGlnbm9yZToKICAgIH0gZWxzaWYoIHNAXig8IVxzKi0tLio/LS1ccyo+KUBAcyApIHsgICMgIk5ldHNjYXBlIiBjb21tZW50cwogICAgICBERUJVRyA+IDUgYW5kIHByaW50ICI6OiBTaW1wbGUgY29tbWVudCB7JDF9XG4iOwogICAgfSBlbHNpZiggc0BeKDxbIT9dW14+XSo+KUBAcyApIHsgIyBkb2N0eXBlLCBQSSwgb3IgYSB3ZWlyZCBjb21tZW50CiAgICAgIERFQlVHID4gNSBhbmQgcHJpbnQgIjo6IERpcmVjdGl2ZS9QSSB7JDF9XG4iOwogICAgfSBlbHNpZiggc0BePC8/KFthLXpBLVpdW2EtekEtWjAtOVwuXDpcX1wtXXswLDcyfSlccyovPz5AQCApIHsKICAgICAgIyBFbmQtdGFnLCBvciBhIHNpbXBsZSBzdGFydC10YWcKICAgICAgcHVzaCBAb3V0LCAnICcgaWYgJElzQmxvY2tNYXJrdXB7bGMgJDF9OwogICAgICBERUJVRyA+IDUgYW5kIHByaW50ICI6OiBTaW1wbGUgdGFnIHskMX0iLAogICAgICAgICRJc0Jsb2NrTWFya3Vwe2xjICQxfSA/ICIgK2JyZWFreSI6ICgpLCAiXG4iOwoKICAgIH0gZWxzaWYgKCAgICAjIGNvbXBsZXggc3RhcnQtdGFnCiAgICAgIHNACiAgICAgICBeCiAgICAgICAoCiAgICAgICAgPAogICAgICAgIChbYS16QS1aXVthLXpBLVowLTlcLlw6XF9cLV17MCw3Mn0pICAjIHRoZSBHLkkuCiAgICAgICAgKD86CiAgICAgICAgICBccysKICAgICAgICAgIFthLXpBLVpdW2EtekEtWjAtOVwuXDpcX1wtXXswLDcyfQogICAgICAgICAgKD86ICAjIEF0dHJpYnV0ZXMgY2FuIGJlIHZhbHVlbGVzcyEKICAgICAgICAgICAgXHMqCiAgICAgICAgICAgID0KICAgICAgICAgICAgXHMqCiAgICAgICAgICAgICg/OiAgICAgICAgICAgICAjIEF0dHJpYnV0ZSB2YWx1ZS4uLgogICAgICAgICAgICAgICg/OgogICAgICAgICAgICAgICAgIlteIl0qIiAgICAgICAjICJmb28gYmFyIgogICAgICAgICAgICAgICl8KD86CiAgICAgICAgICAgICAgICAnW14nXSonICAgICAgICMgJ2ZvbyBiYXInCiAgICAgICAgICAgICAgKXwoPzoKICAgICAgICAgICAgICAgIFtePD5cblxyXHQgXXswLDkwfSAjIGZvb2JhcmJhegogICAgICAgICAgICAgICAgICAjIDkwIGlzIG15IHNhbmUgbGVuZ3RoLWxpbWl0IG9uIHVucXVvdGVkIGF0dHJ2YWx1ZXMKICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICAgICk/CiAgICAgICAgKSogICAjIGFueSBudWJtZXIgb2YgYXR0cmlicwogICAgICAgIFxzKiAgIyBvcHRpb25hbCBlbmRpbmcgd2hpdGVzcGFjZQogICAgICAgIC8/ICAgIyBvcHRpb25hbCBlbXB0aW5lc3MgZmxhZwogICAgICAgID4KICAgICAgICkKICAgICAgIEBAeAogICAgKSB7CiAgICAgIHB1c2ggQG91dCwgJyAnIGlmICRJc0Jsb2NrTWFya3Vwe2xjICQyfTsKICAgICAgREVCVUcgPiA1IGFuZCBwcmludCAiOjogQ29tcGxleCBzdGFydC10YWcgeyQyfSIsCiAgICAgICAgICAkSXNCbG9ja01hcmt1cHtsYyAkMn0gPyAiICticmVha3kiOiAoKSwgIlxuIjsKICAgICAgCiAgICAjIEdldHMgY2FsbGVkIG9ubHkgb24gYWJlcnJhbnQgaW5wdXQsIEkgdGhpbms6CiAgICB9IGVsc2lmKCBzQF4oLilAQHMgKSB7CiAgICAgIERFQlVHID4gNSBhbmQgcHJpbnQgIjo6IExhc3QtcmVzb3J0IHNpbmdsZSBjaGFyYWN0ZXIgeyQxfVxuIjsKICAgICAgcHVzaCBAb3V0LCAkMTsKICAgIAogICAgfSBlbHNlIHsKICAgICAgZGllICJJTVBPU1NJQkxFIHskX31cbiAhISEgIjsgIyBzYW5pdHktY2hlY2sKICAgIH0KICB9CiAgCiAgZm9yZWFjaCBteSAkeCAoQG91dCkgewogICAgaWYoIHJlZiAkeCApIHsKICAgICAgJHggPSAkJHg7CiAgICB9IGVsc2UgeyAgIyBkbyBuZWNlc3NhcnkgZXNjYXBpbmcKICAgICAgJHggPX4gdHIvXG5cclxmXHQgLyAvczsgIyBzbWFzaCB3aGl0ZXNwYWNlCiAgICAgICR4ID0gJHNlbGYtPnhtbGVzYygkeCkgdW5sZXNzICR4ID1+IG0vXlthLXpBLVowLTlfJyIsXC4gXSokL3MKICAgICAgICMgRG9kZ2UgY2FsbGluZyBvbiB0aGUgbW9zdCBjb21tb24gY2FzZSwgaS5lLiwgdGV4dAogICAgICAgIyAgdGhhdCByZWFsbHkgZG9lc24ndCBuZWVkIGFueSBleGN1c2UgYXQgYWxsLgogICAgfQogIH0KCiAgcmV0dXJuIGpvaW4gJycsIEBvdXQ7Cn0KCiMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKJE1JTUVfVHlwZSA9ICdhcHBsaWNhdGlvbi9yc3MreG1sJzsKCiVXaW5MYW1lRW50aXRpZXMgPSAoCiBkbyB7OwogICBteSAkYyA9IDB4ODA7CiAgIG1hcCB7OyAkYysrID0+IChoZXgoJF8pIHx8IDB4MDA3ZSkgfQogICBxdygKMjBhYyAwMDAwIDIwMWEgMDE5MiAyMDFlIDIwMjYgMjAyMCAyMDIxIDAyYzYgMjAzMCAwMTYwIDIwMzkgMDE1MiAwMCAwMTdkIDAwMDAKMDAwMCAyMDE4IDIwMTkgMjAxYyAyMDFkIDIwMjIgMjAxMyAyMDE0IDAyZGMgMjEyMiAwMTYxIDIwM2EgMDE1MyAwMCAwMTdlIDAxNzgKKSMgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICB8Cn0pOwoKX2luaXRfY29tbW9uX2VudHMoKTsKCnN1YiBfaW5pdF9jb21tb25fZW50cyB7CiAgJUNvbW1vbkVudHMgPSAoCiAgICAnJicgPT4gJyZhbXA7JywKICAgICc8JyA9PiAnJmx0OycsCiAgICAnPicgPT4gJyZndDsnLAogICAgJyInID0+ICcmcXVvdDsnLAogICAgKCBtYXAgezsgY2hyKCRfKSA9PiAiICIgfSAwIC4uIDMxICksCiAgICAoIG1hcCB7OyBjaHIoJF8pID0+ICImIyRXaW5MYW1lRW50aXRpZXN7JF99OyIgfSBrZXlzICVXaW5MYW1lRW50aXRpZXMgKSwKICApOwogIHJldHVybjsKfQoKJUVudGl0aWVzID0gKAogIyBIVE1MIGVudGl0aWVzIGdvdHRlbiBmcm9tIHRoZSBIVE1MIERURHMKIAogJ0FhY3V0ZScgPT4gJyYjeGMxOycsICAgICdhYWN1dGUnID0+ICcmI3hlMTsnLCAgICdBY2lyYycgPT4gJyYjeGMyOycsCiAnYWNpcmMnID0+ICcmI3hlMjsnLCAgICAgJ2FjdXRlJyA9PiAnJiN4YjQ7JywgICAgJ0FFbGlnJyA9PiAnJiN4YzY7JywKICdhZWxpZycgPT4gJyYjeGU2OycsICAgICAnQWdyYXZlJyA9PiAnJiN4YzA7JywgICAnYWdyYXZlJyA9PiAnJiN4ZTA7JywKICdhbGVmc3ltJyA9PiAnJiN4MjEzNTsnLCAnQWxwaGEnID0+ICcmI3gzOTE7JywgICAnYWxwaGEnID0+ICcmI3gzYjE7JywKICdhbXAnID0+ICcmI3gyNjsnLCAgICAgICAnYW5kJyA9PiAnJiN4MjIyNzsnLCAgICAnYW5nJyA9PiAnJiN4MjIyMDsnLAogJ2Fwb3MnID0+ICcmI3gyNzsnLCAgICAgICdBcmluZycgPT4gJyYjeGM1OycsICAgICdhcmluZycgPT4gJyYjeGU1OycsCiAnYXN5bXAnID0+ICcmI3gyMjQ4OycsICAgJ0F0aWxkZScgPT4gJyYjeGMzOycsICAgJ2F0aWxkZScgPT4gJyYjeGUzOycsCiAnQXVtbCcgPT4gJyYjeGM0OycsICAgICAgJ2F1bWwnID0+ICcmI3hlNDsnLCAgICAgJ2JkcXVvJyA9PiAnJiN4MjAxZTsnLAogJ0JldGEnID0+ICcmI3gzOTI7JywgICAgICdiZXRhJyA9PiAnJiN4M2IyOycsICAgICdicnZiYXInID0+ICcmI3hhNjsnLAogJ2J1bGwnID0+ICcmI3gyMDIyOycsICAgICdjYXAnID0+ICcmI3gyMjI5OycsICAgICdDY2VkaWwnID0+ICcmI3hjNzsnLAogJ2NjZWRpbCcgPT4gJyYjeGU3OycsICAgICdjZWRpbCcgPT4gJyYjeGI4OycsICAgICdjZW50JyA9PiAnJiN4YTI7JywKICdDaGknID0+ICcmI3gzYTc7JywgICAgICAnY2hpJyA9PiAnJiN4M2M3OycsICAgICAnY2lyYycgPT4gJyYjeDJjNjsnLAogJ2NsdWJzJyA9PiAnJiN4MjY2MzsnLCAgICdjb25nJyA9PiAnJiN4MjI0NTsnLCAgICdjb3B5JyA9PiAnJiN4YTk7JywKICdjcmFycicgPT4gJyYjeDIxYjU7JywgICAnY3VwJyA9PiAnJiN4MjIyYTsnLCAgICAnY3VycmVuJyA9PiAnJiN4YTQ7JywKICdkYWdnZXInID0+ICcmI3gyMDIwOycsICAnRGFnZ2VyJyA9PiAnJiN4MjAyMTsnLCAnZGFycicgPT4gJyYjeDIxOTM7JywKICdkQXJyJyA9PiAnJiN4MjFkMzsnLCAgICAnZGVnJyA9PiAnJiN4YjA7JywgICAgICAnRGVsdGEnID0+ICcmI3gzOTQ7JywKICdkZWx0YScgPT4gJyYjeDNiNDsnLCAgICAnZGlhbXMnID0+ICcmI3gyNjY2OycsICAnZGl2aWRlJyA9PiAnJiN4Zjc7JywKICdFYWN1dGUnID0+ICcmI3hjOTsnLCAgICAnZWFjdXRlJyA9PiAnJiN4ZTk7JywgICAnRWNpcmMnID0+ICcmI3hjYTsnLAogJ2VjaXJjJyA9PiAnJiN4ZWE7JywgICAgICdFZ3JhdmUnID0+ICcmI3hjODsnLCAgICdlZ3JhdmUnID0+ICcmI3hlODsnLAogJ2VtcHR5JyA9PiAnJiN4MjIwNTsnLCAgICdlbXNwJyA9PiAnJiN4MjAwMzsnLCAgICdlbnNwJyA9PiAnJiN4MjAwMjsnLAogJ0Vwc2lsb24nID0+ICcmI3gzOTU7JywgICdlcHNpbG9uJyA9PiAnJiN4M2I1OycsICdlcXVpdicgPT4gJyYjeDIyNjE7JywKICdFdGEnID0+ICcmI3gzOTc7JywgICAgICAnZXRhJyA9PiAnJiN4M2I3OycsICAgICAnRVRIJyA9PiAnJiN4ZDA7JywKICdldGgnID0+ICcmI3hmMDsnLCAgICAgICAnRXVtbCcgPT4gJyYjeGNiOycsICAgICAnZXVtbCcgPT4gJyYjeGViOycsCiAnZXVybycgPT4gJyYjeDIwYWM7JywgICAgJ2V4aXN0JyA9PiAnJiN4MjIwMzsnLCAgJ2Zub2YnID0+ICcmI3gxOTI7JywKICdmb3JhbGwnID0+ICcmI3gyMjAwOycsICAnZnJhYzEyJyA9PiAnJiN4YmQ7JywgICAnZnJhYzE0JyA9PiAnJiN4YmM7JywKICdmcmFjMzQnID0+ICcmI3hiZTsnLCAgICAnZnJhc2wnID0+ICcmI3gyMDQ0OycsICAnR2FtbWEnID0+ICcmI3gzOTM7JywKICdnYW1tYScgPT4gJyYjeDNiMzsnLCAgICAnZ2UnID0+ICcmI3gyMjY1OycsICAgICAnZ3QnID0+ICcmI3gzZTsnLAogJ2hhcnInID0+ICcmI3gyMTk0OycsICAgICdoQXJyJyA9PiAnJiN4MjFkNDsnLCAgICdoZWFydHMnID0+ICcmI3gyNjY1OycsCiAnaGVsbGlwJyA9PiAnJiN4MjAyNjsnLCAgJ0lhY3V0ZScgPT4gJyYjeGNkOycsICAgJ2lhY3V0ZScgPT4gJyYjeGVkOycsCiAnSWNpcmMnID0+ICcmI3hjZTsnLCAgICAgJ2ljaXJjJyA9PiAnJiN4ZWU7JywgICAgJ2lleGNsJyA9PiAnJiN4YTE7JywKICdJZ3JhdmUnID0+ICcmI3hjYzsnLCAgICAnaWdyYXZlJyA9PiAnJiN4ZWM7JywgICAnaW1hZ2UnID0+ICcmI3gyMTExOycsCiAnaW5maW4nID0+ICcmI3gyMjFlOycsICAgJ2ludCcgPT4gJyYjeDIyMmI7JywgICAgJ0lvdGEnID0+ICcmI3gzOTk7JywKICdpb3RhJyA9PiAnJiN4M2I5OycsICAgICAnaXF1ZXN0JyA9PiAnJiN4YmY7JywgICAnaXNpbicgPT4gJyYjeDIyMDg7JywKICdJdW1sJyA9PiAnJiN4Y2Y7JywgICAgICAnaXVtbCcgPT4gJyYjeGVmOycsICAgICAnS2FwcGEnID0+ICcmI3gzOWE7JywKICdrYXBwYScgPT4gJyYjeDNiYTsnLCAgICAnTGFtYmRhJyA9PiAnJiN4MzliOycsICAnbGFtYmRhJyA9PiAnJiN4M2JiOycsCiAnbGFuZycgPT4gJyYjeDIzMjk7JywgICAgJ2xhcXVvJyA9PiAnJiN4YWI7JywgICAgJ2xhcnInID0+ICcmI3gyMTkwOycsCiAnbEFycicgPT4gJyYjeDIxZDA7JywgICAgJ2xjZWlsJyA9PiAnJiN4MjMwODsnLCAgJ2xkcXVvJyA9PiAnJiN4MjAxYzsnLAogJ2xlJyA9PiAnJiN4MjI2NDsnLCAgICAgICdsZmxvb3InID0+ICcmI3gyMzBhOycsICdsb3dhc3QnID0+ICcmI3gyMjE3OycsCiAnbG96JyA9PiAnJiN4MjVjYTsnLCAgICAgJ2xybScgPT4gJyYjeDIwMGU7JywgICAgJ2xzYXF1bycgPT4gJyYjeDIwMzk7JywKICdsc3F1bycgPT4gJyYjeDIwMTg7JywgICAnbHQnID0+ICcmI3gzYzsnLCAgICAgICAnbWFjcicgPT4gJyYjeGFmOycsCiAnbWRhc2gnID0+ICcmI3gyMDE0OycsICAgJ21pY3JvJyA9PiAnJiN4YjU7JywgICAgJ21pZGRvdCcgPT4gJyYjeGI3OycsCiAnbWludXMnID0+ICcmI3gyMjEyOycsICAgJ011JyA9PiAnJiN4MzljOycsICAgICAgJ211JyA9PiAnJiN4M2JjOycsCiAnbmFibGEnID0+ICcmI3gyMjA3OycsICAgJ25ic3AnID0+ICcmI3hhMDsnLCAgICAgJ25kYXNoJyA9PiAnJiN4MjAxMzsnLAogJ25lJyA9PiAnJiN4MjI2MDsnLCAgICAgICduaScgPT4gJyYjeDIyMGI7JywgICAgICdub3QnID0+ICcmI3hhYzsnLAogJ25vdGluJyA9PiAnJiN4MjIwOTsnLCAgICduc3ViJyA9PiAnJiN4MjI4NDsnLCAgICdOdGlsZGUnID0+ICcmI3hkMTsnLAogJ250aWxkZScgPT4gJyYjeGYxOycsICAgICdOdScgPT4gJyYjeDM5ZDsnLCAgICAgICdudScgPT4gJyYjeDNiZDsnLAogJ09hY3V0ZScgPT4gJyYjeGQzOycsICAgICdvYWN1dGUnID0+ICcmI3hmMzsnLCAgICdPY2lyYycgPT4gJyYjeGQ0OycsCiAnb2NpcmMnID0+ICcmI3hmNDsnLCAgICAgJ09FbGlnJyA9PiAnJiN4MTUyOycsICAgJ29lbGlnJyA9PiAnJiN4MTUzOycsCiAnT2dyYXZlJyA9PiAnJiN4ZDI7JywgICAgJ29ncmF2ZScgPT4gJyYjeGYyOycsICAgJ29saW5lJyA9PiAnJiN4MjAzZTsnLAogJ09tZWdhJyA9PiAnJiN4M2E5OycsICAgICdvbWVnYScgPT4gJyYjeDNjOTsnLCAgICdPbWljcm9uJyA9PiAnJiN4MzlmOycsCiAnb21pY3JvbicgPT4gJyYjeDNiZjsnLCAgJ29wbHVzJyA9PiAnJiN4MjI5NTsnLCAgJ29yJyA9PiAnJiN4MjIyODsnLAogJ29yZGYnID0+ICcmI3hhYTsnLCAgICAgICdvcmRtJyA9PiAnJiN4YmE7JywgICAgICdPc2xhc2gnID0+ICcmI3hkODsnLAogJ29zbGFzaCcgPT4gJyYjeGY4OycsICAgICdPdGlsZGUnID0+ICcmI3hkNTsnLCAgICdvdGlsZGUnID0+ICcmI3hmNTsnLAogJ290aW1lcycgPT4gJyYjeDIyOTc7JywgICdPdW1sJyA9PiAnJiN4ZDY7JywgICAgICdvdW1sJyA9PiAnJiN4ZjY7JywKICdwYXJhJyA9PiAnJiN4YjY7JywgICAgICAncGFydCcgPT4gJyYjeDIyMDI7JywgICAncGVybWlsJyA9PiAnJiN4MjAzMDsnLAogJ3BlcnAnID0+ICcmI3gyMmE1OycsICAgICdQaGknID0+ICcmI3gzYTY7JywgICAgICdwaGknID0+ICcmI3gzYzY7JywKICdQaScgPT4gJyYjeDNhMDsnLCAgICAgICAncGknID0+ICcmI3gzYzA7JywgICAgICAncGl2JyA9PiAnJiN4M2Q2OycsCiAncGx1c21uJyA9PiAnJiN4YjE7JywgICAgJ3BvdW5kJyA9PiAnJiN4YTM7JywgICAgJ3ByaW1lJyA9PiAnJiN4MjAzMjsnLAogJ1ByaW1lJyA9PiAnJiN4MjAzMzsnLCAgICdwcm9kJyA9PiAnJiN4MjIwZjsnLCAgICdwcm9wJyA9PiAnJiN4MjIxZDsnLAogJ1BzaScgPT4gJyYjeDNhODsnLCAgICAgICdwc2knID0+ICcmI3gzYzg7JywgICAgICdxdW90JyA9PiAnJiN4MjI7JywKICdyYWRpYycgPT4gJyYjeDIyMWE7JywgICAncmFuZycgPT4gJyYjeDIzMmE7JywgICAncmFxdW8nID0+ICcmI3hiYjsnLAogJ3JhcnInID0+ICcmI3gyMTkyOycsICAgICdyQXJyJyA9PiAnJiN4MjFkMjsnLCAgICdyY2VpbCcgPT4gJyYjeDIzMDk7JywKICdyZHF1bycgPT4gJyYjeDIwMWQ7JywgICAncmVhbCcgPT4gJyYjeDIxMWM7JywgICAncmVnJyA9PiAnJiN4YWU7JywKICdyZmxvb3InID0+ICcmI3gyMzBiOycsICAnUmhvJyA9PiAnJiN4M2ExOycsICAgICAncmhvJyA9PiAnJiN4M2MxOycsCiAncmxtJyA9PiAnJiN4MjAwZjsnLCAgICAgJ3JzYXF1bycgPT4gJyYjeDIwM2E7JywgJ3JzcXVvJyA9PiAnJiN4MjAxOTsnLAogJ3NicXVvJyA9PiAnJiN4MjAxYTsnLCAgICdTY2Fyb24nID0+ICcmI3gxNjA7JywgICdzY2Fyb24nID0+ICcmI3gxNjE7JywKICdzZG90JyA9PiAnJiN4MjJjNTsnLCAgICAnc2VjdCcgPT4gJyYjeGE3OycsICAgICAnc2h5JyA9PiAnJiN4YWQ7JywKICdTaWdtYScgPT4gJyYjeDNhMzsnLCAgICAnc2lnbWEnID0+ICcmI3gzYzM7JywgICAnc2lnbWFmJyA9PiAnJiN4M2MyOycsCiAnc2ltJyA9PiAnJiN4MjIzYzsnLCAgICAgJ3NwYWRlcycgPT4gJyYjeDI2NjA7JywgJ3N1YicgPT4gJyYjeDIyODI7JywKICdzdWJlJyA9PiAnJiN4MjI4NjsnLCAgICAnc3VtJyA9PiAnJiN4MjIxMTsnLCAgICAnc3VwJyA9PiAnJiN4MjI4MzsnLAogJ3N1cDEnID0+ICcmI3hiOTsnLCAgICAgICdzdXAyJyA9PiAnJiN4YjI7JywgICAgICdzdXAzJyA9PiAnJiN4YjM7JywKICdzdXBlJyA9PiAnJiN4MjI4NzsnLCAgICAnc3psaWcnID0+ICcmI3hkZjsnLCAgICAnVGF1JyA9PiAnJiN4M2E0OycsCiAndGF1JyA9PiAnJiN4M2M0OycsICAgICAgJ3RoZXJlNCcgPT4gJyYjeDIyMzQ7JywgJ1RoZXRhJyA9PiAnJiN4Mzk4OycsCiAndGhldGEnID0+ICcmI3gzYjg7JywgICAgJ3RoZXRhc3ltJyA9PiAnJiN4M2QxOycsJ3RoaW5zcCcgPT4gJyYjeDIwMDk7JywKICdUSE9STicgPT4gJyYjeGRlOycsICAgICAndGhvcm4nID0+ICcmI3hmZTsnLCAgICAndGlsZGUnID0+ICcmI3gyZGM7JywKICd0aW1lcycgPT4gJyYjeGQ3OycsICAgICAndHJhZGUnID0+ICcmI3gyMTIyOycsICAnVWFjdXRlJyA9PiAnJiN4ZGE7JywKICd1YWN1dGUnID0+ICcmI3hmYTsnLCAgICAndWFycicgPT4gJyYjeDIxOTE7JywgICAndUFycicgPT4gJyYjeDIxZDE7JywKICdVY2lyYycgPT4gJyYjeGRiOycsICAgICAndWNpcmMnID0+ICcmI3hmYjsnLCAgICAnVWdyYXZlJyA9PiAnJiN4ZDk7JywKICd1Z3JhdmUnID0+ICcmI3hmOTsnLCAgICAndW1sJyA9PiAnJiN4YTg7JywgICAgICAndXBzaWgnID0+ICcmI3gzZDI7JywKICdVcHNpbG9uJyA9PiAnJiN4M2E1OycsICAndXBzaWxvbicgPT4gJyYjeDNjNTsnLCAnVXVtbCcgPT4gJyYjeGRjOycsCiAndXVtbCcgPT4gJyYjeGZjOycsICAgICAgJ3dlaWVycCcgPT4gJyYjeDIxMTg7JywgJ1hpJyA9PiAnJiN4MzllOycsCiAneGknID0+ICcmI3gzYmU7JywgICAgICAgJ1lhY3V0ZScgPT4gJyYjeGRkOycsICAgJ3lhY3V0ZScgPT4gJyYjeGZkOycsCiAneWVuJyA9PiAnJiN4YTU7JywgICAgICAgJ3l1bWwnID0+ICcmI3hmZjsnLCAgICAgJ1l1bWwnID0+ICcmI3gxNzg7JywKICdaZXRhJyA9PiAnJiN4Mzk2OycsICAgICAnemV0YScgPT4gJyYjeDNiNjsnLCAgICAnendqJyA9PiAnJiN4MjAwZDsnLAogJ3p3bmonID0+ICcmI3gyMDBjOycsCik7Cgpmb3JlYWNoIG15ICR0YWduYW1lICggcXd7CiBicgogYWRkcmVzcyBhcHBsZXQgYXJlYSBiYXNlIGJnc291bmQgYmxvY2txdW90ZSBib2R5IGJ1dHRvbiBjYXB0aW9uIGNlbnRlciBjb2wKIGNvbGdyb3VwIGRkIGRlbCBkaXIgZGl2IGRsIGR0IGZpZWxkc2V0IGZvcm0gZnJhbWUgZnJhbWVzZXQgaDEgaDIgaDMgaDQgaDUKIGg2IGhlYWQgaHIgaHRtbCBpZnJhbWUgaWxheWVyIGlucHV0IGlucyBpc2luZGV4IGxhYmVsIGxheWVyIGxlZ2VuZCBsaSBsaW5rCiBsaXN0aW5nIG1hcCBtZW51IG1ldGEgbXVsdGljb2wgbm9mcmFtZXMgbm9sYXllciBub3NjcmlwdCBvYmplY3Qgb2wKIG9wdGdyb3VwIG9wdGlvbiBwIHBhcmFtIHBsYWludGV4dCBwcmUgc2NyaXB0IHNlbGVjdCBzdHlsZSB0YWJsZSB0Ym9keSB0ZAogdGV4dGFyZWEgdGZvb3QgdGggdGhlYWQgdGl0bGUgdHIgdWwgeG1wCn0pIHsgJElzQmxvY2tNYXJrdXB7JHRhZ25hbWV9ID0gMSB1bmxlc3MgZXhpc3RzICRJc0Jsb2NrTWFya3VweyR0YWduYW1lfSB9CgojLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIyBOb3cgdGhlIGZ1bmN0aW9uIGdlbmVyYXRvcnM6CkBFWFBPUlQgPSAoICdnZXRfdXJsJyApOwoKJEVYUE9SVF9UQUdTeydmdW5jdGlvbnMnfSA9IFxARVhQT1JUOyAgIyBqdXN0IGZvciBteSBvd24gYmFja3dhcmQgY29tcGF0Cgpmb3JlYWNoIG15ICRtZXRob2QgKAogIGRvIHsKICAgIG5vIHN0cmljdCAncmVmcyc7CiAgICBteSAldG9faGlkZTsKICAgIEB0b19oaWRle0BIaWRpZXN9ID0gKCk7CiAgICBzb3J0CiAgICAgIGdyZXAgIWV4aXN0cyAkdG9faGlkZXskX30gJiYgIW0vXnJzc18vcwogICAgICAgICYmIG0vXlthLXpdW19BLVphLXowLTldKyQvcyAmJiBkZWZpbmVkICZ7IlhNTDo6UlNTOjpTaW1wbGVHZW46OiRfIn0sCiAgICAgICAga2V5cyAlWE1MOjpSU1M6OlNpbXBsZUdlbjo6CiAgfQopIHsKICBteSAkZnVuY3Rpb24gPSAicnNzXyRtZXRob2QiOwogIERFQlVHID4gMjAgYW5kIHByaW50ICIkbWV0aG9kID0+ICRmdW5jdGlvblxuIjsKICBwdXNoIEBFWFBPUlQsICRmdW5jdGlvbjsKICBubyBzdHJpY3QgJ3JlZnMnOwogIHVubGVzcyggZGVmaW5lZCAmeyRmdW5jdGlvbn0gKSB7CiAgICBERUJVRyA+IDIwIGFuZCBwcmludCAiIERlZmluaW5nICRmdW5jdGlvbiA9PiAkZnVuY3Rpb25cbiI7CiAgICAqeyRmdW5jdGlvbn0gPSBzdWIgewogICAgICB1c2Ugc3RyaWN0ICdyZWZzJzsKICAgICAgdW5zaGlmdCBAXywgKCRSU1Nfb2JqIHx8PSBYTUw6OlJTUzo6U2ltcGxlR2VuOjotPm5ldyk7CiAgICAgIGdvdG8gJnsKICAgICAgICAkX1swXS0+Y2FuKCRtZXRob2QpCiAgICAgICAgfHwgZGllICJXaGVyZSdzICRtZXRob2QgZm9yICRfWzBdPyEiCiAgICAgICAgICAjIGluc2FuZSBlcnJvciwgc2hvdWxkIG5ldmVyIGhhcHBlbiwgdW5sZXNzIHNvbWVib2R5CiAgICAgICAgICAjIGdvZXMgdW5kZWZpbmluZyBleGlzdGluZyBtZXRob2RzIQogICAgICB9OwogICAgfTsKICB9Cn0KCnN1YiByc3NfbmV3IHsgJFJTU19vYmogPSBYTUw6OlJTUzo6U2ltcGxlR2VuLT5uZXcoQF8pIH0KREVCVUcgPiAyMCBhbmQgcHJpbnQgIkRvbmUgY29tcGlsaW5nICIsIF9fUEFDS0FHRV9fLCAiLlxuIjsKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoxOwpfX0VORF9fCgo9YmFjawoKPWhlYWQxIFJTUyBWRVJTSU9OCgpSU1MgZmVlZHMgZW1pdHRlZCBieSB0aGlzIG1vZHVsZSBhcmUgYmFzaWNhbGx5IGFjY29yZGluZyB0byB2MC45MiBSU1MsCndpdGggYSB2ZXJ5IGZldyBleHRlbnNpb25zIGZyb20gdjIuMCBSU1MuICBUaGV5IGFyZSBub3QgUkRGIGZpbGVzLgoKPWhlYWQxIFNFRSBBTFNPCgpMPFhNTDo6UlNTPgoKTDxodHRwOi8vbXkubmV0c2NhcGUuY29tL3B1Ymxpc2gvZm9ybWF0cy9yc3MtMC45MS5kdGQ+CgpMPGh0dHA6Ly9ibG9ncy5sYXcuaGFydmFyZC5lZHUvdGVjaC9yc3M+CgpMPGh0dHA6Ly9kaXJlY3RvcnkuZ29vZ2xlLmNvbS9Ub3AvUmVmZXJlbmNlL0xpYnJhcmllcy9MaWJyYXJ5X2FuZF9JbmZvcm1hdGlvbl9TY2llbmNlL1RlY2huaWNhbF9TZXJ2aWNlcy9DYXRhbG9ndWluZy9NZXRhZGF0YS9SREYvQXBwbGljYXRpb25zL1JTUy9TcGVjaWZpY2F0aW9ucy8+CgpMPGh0dHA6Ly9mZWVkdmFsaWRhdG9yLm9yZy8+CgpZb3UgbWlnaHQgYWxzbyBsaWtlIG15IGJvb2sgSTxQZXJsIGFuZCBMV1A+LCB3aGljaCBkaXNjdXNzZXMgdGhlIG1hbnkKc2NyZWVuLXNjcmFwaW5nIHRlY2huaXF1ZXMgdGhhdCB5b3Ugd291bGQgdXNlIGZvciBleHRyYWN0aW5nIGRhdGEgZnJvbQpIVE1MIHRvIG1ha2UgaW50byBSU1MgZmVlZHM6Cgo9b3ZlcgoKPWl0ZW0gTDxodHRwOi8vd3d3Lm9yZWlsbHkuY29tL2NhdGFsb2cvcGVybGx3cC8+Cgo9aXRlbSBMPGh0dHA6Ly93d3cuYW1hem9uLmNvbS9leGVjL29iaWRvcy9BU0lOLzA1OTYwMDE3ODkvPgoKPWl0ZW0gTDxodHRwOi8vd3d3LmFtYXpvbi5jby51ay9leGVjL29iaWRvcy9BU0lOLzA1OTYwMDE3ODkvdD4KCj1pdGVtIEw8aHR0cDovL2ludGVyZ2xhY2lhbC5jb20vZC9zY3JhcGVycz4gLS0gZXhhbXBsZXMgb2YgUGVybApwcm9ncmFtcyB0aGF0IHByb2R1Y2UgUlNTJ3MgKHdoaWNoIGFyZSB2aXNpYmxlIGF0Ckw8aHR0cDovL2ludGVyZ2xhY2lhbC5jb20vcnNzLz4gKQoKPWJhY2sKCgoKPWhlYWQxIENPUFlSSUdIVCBBTkQgRElTQ0xBSU1FUlMKCkNvcHlyaWdodCAoYykgMjAwMyw0IFNlYW4gTS4gQnVya2UuICBBbGwgcmlnaHRzIHJlc2VydmVkLgoKVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuCgpUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CndpdGhvdXQgYW55IHdhcnJhbnR5OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKbWVyY2hhbnRhYmlsaXR5IG9yIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgoKUG9ydGlvbnMgb2YgdGhlIGRhdGEgdGFibGVzIGluIHRoaXMgbW9kdWxlIGFyZSBkZXJpdmVkIGZyb20gdGhlCmVudGl0eSBkZWNsYXJhdGlvbnMgaW4gdGhlIFczQyBYSFRNTCBzcGVjaWZpY2F0aW9uLgoKQ3VycmVudGx5IChKYW51YXJ5IDIwMDQpLCB0aGF0J3MgdGhlc2UgdGhyZWU6CgogICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbC1sYXQxLmVudAogICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbC1zcGVjaWFsLmVudAogICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbC1zeW1ib2wuZW50CgpQb3J0aW9ucyBvZiB0aGUgY29kZSBpbiB0aGlzIG1vZHVsZSB3ZXJlIGFkYXB0ZWQgZnJvbSBwYXJ0cyBvZgpHaXNsZSBBYXMncyBMPExXUDo6U2ltcGxlPiBhbmQgdGhlIG9sZCAodjIueCkgdmVyc2lvbiBvZiBoaXMKTDxIVE1MOjpQYXJzZXI+LgoKPWhlYWQxIEFVVEhPUgoKU2VhbiBNLiBCdXJrZSBDPHNidXJrZUBjcGFuLm9yZz4KCj1jdXQKCiogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKiAqICogKgoKT24gQmFiYmFnZSdzIERpc2Vhc2U6CgpDaGFybGVzIEJhYmJhZ2UsIGFzIChuZWNlc3NhcmlseSkgdGhlIGZpcnN0IHBlcnNvbiB0byB3b3JrIHdpdGggbWFjaGluZXMKdGhhdCBjYW4gYXR0YWNrIHByb2JsZW1zIGF0IGFyYml0cmFyeSBsZXZlbHMgb2YgYWJzdHJhY3Rpb24sIGZlbGwgaW50byBhCnRyYXAgZmFtaWxpYXIgdG8gdG9vbHNtaXRocyBzaW5jZSwgYXMgZGVzY3JpYmVkIGhlcmUgYnkgdGhlIEVuZ2xpc2gKZXRoaWNpc3QsIExvcmQgTW91bHRvbjoKCiJPbmUgb2YgdGhlIHNhZCBtZW1vcmllcyBvZiBteSBsaWZlIGlzIGEgdmlzaXQgdG8gdGhlIGNlbGVicmF0ZWQKbWF0aGVtYXRpY2lhbiBhbmQgaW52ZW50b3IsIE1yIEJhYmJhZ2UuIEhlIHdhcyBmYXIgYWR2YW5jZWQgaW4gYWdlLCBidXQKaGlzIG1pbmQgd2FzIHN0aWxsIGFzIHZpZ29yb3VzIGFzIGV2ZXIuIEhlIHRvb2sgbWUgdGhyb3VnaCBoaXMKd29yay1yb29tcy4gSW4gdGhlIGZpcnN0IHJvb20gSSBzYXcgcGFydHMgb2YgdGhlIG9yaWdpbmFsIENhbGN1bGF0aW5nCk1hY2hpbmUsIHdoaWNoIGhhZCBiZWVuIHNob3duIGluIGFuIGluY29tcGxldGUgc3RhdGUgbWFueSB5ZWFycyBiZWZvcmUKYW5kIGhhZCBldmVuIGJlZW4gcHV0IHRvIHNvbWUgdXNlLiBJIGFza2VkIGhpbSBhYm91dCBpdHMgcHJlc2VudCBmb3JtLgonSSBoYXZlIG5vdCBmaW5pc2hlZCBpdCBiZWNhdXNlIGluIHdvcmtpbmcgYXQgaXQgSSBjYW1lIG9uIHRoZSBpZGVhIG9mCm15IEFuYWx5dGljYWwgTWFjaGluZSwgd2hpY2ggd291bGQgZG8gYWxsIHRoYXQgaXQgd2FzIGNhcGFibGUgb2YgZG9pbmcKYW5kIG11Y2ggbW9yZS4gSW5kZWVkLCB0aGUgaWRlYSB3YXMgc28gbXVjaCBzaW1wbGVyIHRoYXQgaXQgd291bGQgaGF2ZQp0YWtlbiBtb3JlIHdvcmsgdG8gY29tcGxldGUgdGhlIENhbGN1bGF0aW5nIE1hY2hpbmUgdGhhbiB0byBkZXNpZ24gYW5kCmNvbnN0cnVjdCB0aGUgb3RoZXIgaW4gaXRzIGVudGlyZXR5LCBzbyBJIHR1cm5lZCBteSBhdHRlbnRpb24gdG8gdGhlCkFuYWx5dGljYWwgTWFjaGluZS4nIgoKIkFmdGVyIGEgZmV3IG1pbnV0ZXMnIHRhbGssIHdlIHdlbnQgaW50byB0aGUgbmV4dCB3b3JrLXJvb20sIHdoZXJlIGhlCnNob3dlZCBhbmQgZXhwbGFpbmVkIHRvIG1lIHRoZSB3b3JraW5nIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgQW5hbHl0aWNhbApNYWNoaW5lLiBJIGFza2VkIGlmIEkgY291bGQgc2VlIGl0LiAnSSBoYXZlIG5ldmVyIGNvbXBsZXRlZCBpdCwnIGhlCnNhaWQsICdiZWNhdXNlIEkgaGl0IHVwb24gYW4gaWRlYSBvZiBkb2luZyB0aGUgc2FtZSB0aGluZyBieSBhIGRpZmZlcmVudAphbmQgZmFyIG1vcmUgZWZmZWN0aXZlIG1ldGhvZCwgYW5kIHRoaXMgcmVuZGVyZWQgaXQgdXNlbGVzcyB0byBwcm9jZWVkCm9uIHRoZSBvbGQgbGluZXMuJyBUaGVuIHdlIHdlbnQgaW50byB0aGUgdGhpcmQgcm9vbS4gVGhlcmUgbGF5IHNjYXR0ZXJlZApiaXRzIG9mIG1lY2hhbmlzbSwgYnV0IEkgc2F3IG5vIHRyYWNlIG9mIGFueSB3b3JraW5nIG1hY2hpbmUuIFZlcnkKY2F1dGlvdXNseSBJIGFwcHJvYWNoZWQgdGhlIHN1YmplY3QsIGFuZCByZWNlaXZlZCB0aGUgZHJlYWRlZCBhbnN3ZXIsCidJdCBpcyBub3QgY29uc3RydWN0ZWQgeWV0LCBidXQgSSBhbSB3b3JraW5nIG9uIGl0LCBhbmQgaXQgd2lsbCB0YWtlCmxlc3MgdGltZSB0byBjb25zdHJ1Y3QgaXQgYWx0b2dldGhlciB0aGFuIGl0IHdvdWxkIGhhdmUgdG9rZW4gdG8KY29tcGxldGUgdGhlIEFuYWx5dGljYWwgTWFjaGluZSBmcm9tIHRoZSBzdGFnZSBpbiB3aGljaCBJIGxlZnQgaXQuJyBJCnRvb2sgbGVhdmUgb2YgdGhlIG9sZCBtYW4gd2l0aCBhIGhlYXZ5IGhlYXJ0LiIKCiJXaGVuIGhlIGRpZWQgYSBmZXcgeWVhcnMgbGF0ZXIsIG5vdCBvbmx5IGhhZCBoZSBjb25zdHJ1Y3RlZCBubyBtYWNoaW5lLApidXQgdGhlIHZlcmRpY3Qgb2YgYSBqdXJ5IG9mIGtpbmQgYW5kIHN5bXBhdGhldGljIHNjaWVudGlmaWMgbWVuIHdobwp3ZXJlIGRlcHV0ZWQgdG8gcHJvbm91bmNlIHVwb24gd2hhdCBoZSBoYWQgbGVmdCBiZWhpbmQgaGltLCBlaXRoZXIgaW4KcGFwZXJzIG9yIGluIG1lY2hhbmlzbSwgd2FzIHRoYXQgZXZlcnl0aGluZyB3YXMgdG9vIGluY29tcGxldGUgb2YgYmUKY2FwYWJsZSBvZiBiZWluZyBwdXQgdG8gYW55IHVzZWZ1bCBwdXJwb3NlLiIKCltMb3JkIE1vdWx0b24sICJUaGUgaW52ZW50aW9uIG9mIGFsZ29yaXRobXMsIGl0cyBnZW5lc2lzLCBhbmQgZ3Jvd3RoIiwKaW4gRy4gQy4gS25vdHQsIGVkLiwgIk5hcGllciB0ZXJjZW50ZW5hcnkgbWVtb3JpYWwgdm9sdW1lIiAoTG9uZG9uLAoxOTE1KSwgcC4gMS0yNDsgcXVvdGVkIGluIENoYXJsZXMgQmFiYmFnZSAiUGFzc2FnZSBmcm9tIHRoZSBMaWZlIG9mIGEKUGhpbG9zb3BoZXIiLCBNYXJ0aW4gQ2FtcGJlbGwtS2VsbHksIGVkLiAoUnV0Z2VycyBVLiBQcmVzcyBhbmQgSUVFRQpQcmVzcywgMTk5NCksIHAuIDM0XS4KCiAtKi0KCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbgopOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdCAtIEdlbmVyaWNJbnRlcmZhY2UgRkFRIFB1YmxpY0NhdGVnb3J5TGlzdCBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBQdWJsaWNDYXRlZ29yeUxpc3QgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IEZBUSBDYXRlZ29yaWVzLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2Ugb2YgYW4gZXJyb3IKICAgICAgICBEYXRhICAgICAgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzdWx0IGRhdGEgcGF5bG9hZCBhZnRlciBPcGVyYXRpb24KICAgICAgICAgICAgQ2F0ZWdvcnkgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTmFtZT4gJ01pc2MnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCA9PiAyLAogICAgICAgICAgICAgICAgICAgIE5hbWU+ICdPbmVNb3JlQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBTZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIuCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5HZXRQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkQ2F0ZWdvcnlUcmVlKSApIHsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IGNhdGVnb3J5IGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNDYXRlZ29yeUxpc3Q6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNDYXRlZ29yeUxpc3QuTm90Q2F0ZWdvcnlEYXRhJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNDYXRlZ29yeUxpc3Q6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICk7CgogICAgfQoKICAgIG15IEBQdWJsaWNDYXRlZ29yeUxpc3Q7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQoIGtleXMgJXskQ2F0ZWdvcnlUcmVlfSApICkgewogICAgICAgIG15ICVDYXRlZ29yeSA9ICgKICAgICAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgICAgICBOYW1lID0+ICRDYXRlZ29yeVRyZWUtPnskS2V5fSwKICAgICAgICApOwogICAgICAgIHB1c2ggQFB1YmxpY0NhdGVnb3J5TGlzdCwgeyVDYXRlZ29yeX07CiAgICB9CgogICAgIyBQcmVwYXJlIHJldHVybiBkYXRhLgogICAgbXkgJFJldHVybkRhdGEgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4ge30sCiAgICB9OwogICAgaWYgKCBzY2FsYXIgQFB1YmxpY0NhdGVnb3J5TGlzdCA+IDEgKSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0NhdGVnb3J5fSA9IFxAUHVibGljQ2F0ZWdvcnlMaXN0OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0NhdGVnb3J5fSA9ICRQdWJsaWNDYXRlZ29yeUxpc3RbMF07CiAgICB9CgogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6Okxhbmd1YWdlTGlzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbgopOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6Okxhbmd1YWdlTGlzdCAtIEdlbmVyaWNJbnRlcmZhY2UgRkFRIExhbmd1YWdlTGlzdCBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBMYW5ndWFnZUxpc3QgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50IEZBUSBMYW5ndWFnZXMuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBMYW5ndWFnZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBOYW1lPiAnZW4nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCA9PiAyLAogICAgICAgICAgICAgICAgICAgIE5hbWU+ICdPbmVNb3JlTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBTZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIuCiAgICBteSAlTGFuZ3VhZ2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCBcJUxhbmd1YWdlcyApICkgewoKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgbGFuZ3VhZ2UgZGF0YScKICAgICAgICAgICAgLiAnIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6Okxhbmd1YWdlTGlzdDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1RpY2tldExpc3QuTm90TGFuZ3VhZ2VEYXRhJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJUaWNrZXRMaXN0OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICApOwogICAgfQoKICAgIG15IEBMYW5ndWFnZUxpc3Q7CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlTGFuZ3VhZ2VzICkgewogICAgICAgIG15ICVMYW5ndWFnZSA9ICgKICAgICAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgICAgICBOYW1lID0+ICRMYW5ndWFnZXN7JEtleX0sCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBMYW5ndWFnZUxpc3QsIHslTGFuZ3VhZ2V9OwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICBMYW5ndWFnZSA9PiBcQExhbmd1YWdlTGlzdCwKICAgICAgICB9LAogICAgfTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbgopOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaCAtIEdlbmVyaWNJbnRlcmZhY2UgRkFRIFB1YmxpY0ZBUVNlYXJjaCBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBQdWJsaWNGQVFTZWFyY2ggT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBwdWJsaWMgRkFRIGVudHJpZXMuCgogICAgbXkgQElEcyA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKCiAgICAgICAgICAgIE51bWJlciAgICA9PiAnKjEzNConLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgIFRpdGxlICAgICA9PiAnKnNvbWUgdGl0bGUqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICAgICAjIGlzIHNlYXJjaGluZyBpbiBOdW1iZXIsIFRpdGxlLCBLZXl3b3JkIGFuZCBGaWVsZDEtNgogICAgICAgICAgICBXaGF0ICAgICAgPT4gJypzb21lIHRleHQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgS2V5d29yZCAgID0+ICcqd2Vic2VydmVyKicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gWyA0LCA1LCA2IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyA3LCA4LCA5IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRkFRSUQnLCAnVGl0bGUnIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICAgICAjIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIE9yZGVyQnk6CiAgICAgICAgICAgICMgVGhlIE9yZGVyQnlEaXJlY3Rpb24gY2FuIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBPcmRlckJ5IGF0dHJpYnV0ZS4KICAgICAgICAgICAgIyBUaGUgcGFpcmluZyBpcyBtYWRlIGJ5IHRoZSBhcnJheSBpbmRleGVzLgoKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiAnRG93bicsICMgKERvd24gfCBVcCkgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgICMgZGVmYXVsdDogJ0Rvd24nCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEluIGNhc2Ugb2YgYW4gZXJyb3IKICAgICAgICBEYXRhICAgICAgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzdWx0IGRhdGEgcGF5bG9hZCBhZnRlciBPcGVyYXRpb24KICAgICAgICAgICAgSUQgPT4gWwogICAgICAgICAgICAgICAgMzIsCiAgICAgICAgICAgICAgICAxMywKICAgICAgICAgICAgICAgIDEyLAogICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgIDYsCiAgICAgICAgICAgICAgICA1LAogICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBTZXQgU2VhcmNoTGltaXQgb24gMCBiZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IGFsbCBlbnRyaWVzLgogICAgbXkgJFNlYXJjaExpbWl0ID0gMDsKCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFTZWFyY2giKTsKCiAgICBteSAkU29ydEJ5ID0gJFBhcmFte0RhdGF9LT57T3JkZXJCeX0KICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKCiAgICAjIFRoZSBTb3J0QnkgcGFyYW0gY291bGQgYmUgYW4gQVJSQVkgYW4gU0NBTEFSIG9yIGFuIGVtcHR5IHZhbHVlLgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCRTb3J0QnkpICYmICRTb3J0QnkgbmUgJycgKSB7CiAgICAgICAgJFNvcnRCeSA9IFskU29ydEJ5XTsKICAgIH0KCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbXtEYXRhfS0+e09yZGVyQnlEaXJlY3Rpb259CiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgIG15ICRDYXRlZ29yeUlEczsKCiAgICAjIFRoZSBDYXRlZ29yeUlEIHBhcmFtIGNvdWxkIGJlIGFuIEFSUkFZIGFuIFNDQUxBUiBvciBhbiBlbXB0eSB2YWx1ZS4KICAgICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSA9ICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSB8fCAnJzsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9ICkgJiYgJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IG5lICcnICkgewogICAgICAgICRDYXRlZ29yeUlEcyA9IFsgJFBhcmFte0RhdGF9LT57Q2F0ZWdvcnlJRHN9IF07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEYXRhfS0+e0NhdGVnb3J5SURzfSBuZSAnJyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRHMgPSAkUGFyYW17RGF0YX0tPntDYXRlZ29yeUlEc307CiAgICB9CgogICAgbXkgJExhbmd1YWdlSURzOwoKICAgICMgVGhlIExhbmd1YWdlSUQgcGFyYW0gY291bGQgYmUgYW4gQVJSQVkgYW4gU0NBTEFSIG9yIGFuIGVtcHR5IHZhbHVlLgogICAgJFBhcmFte0RhdGF9LT57TGFuZ3VhZ2VJRHN9ID0gJFBhcmFte0RhdGF9LT57TGFuZ3VhZ2VJRHN9IHx8ICcnOwogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gKSAmJiAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gbmUgJycgKSB7CiAgICAgICAgJExhbmd1YWdlSURzID0gWyAkUGFyYW17RGF0YX0tPntMYW5ndWFnZUlEc30gXTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0RhdGF9LT57TGFuZ3VhZ2VJRHN9IG5lICcnICkgewogICAgICAgICRMYW5ndWFnZUlEcyA9ICRQYXJhbXtEYXRhfS0+e0xhbmd1YWdlSURzfTsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgU2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyLgogICAgbXkgJFVzZXJJRCA9IDE7CgogICAgIyBTZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MuCiAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICk7CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6OlB1YmxpYzo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIFBlcmZvcm0gRkFRIHNlYXJjaC4KICAgIG15IEBWaWV3YWJsZUl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgTnVtYmVyICA9PiAkUGFyYW17RGF0YX0tPntOdW1iZXJ9ICB8fCAnJywKICAgICAgICBUaXRsZSAgID0+ICRQYXJhbXtEYXRhfS0+e1RpdGxlfSAgIHx8ICcnLAogICAgICAgIFdoYXQgICAgPT4gJFBhcmFte0RhdGF9LT57V2hhdH0gICAgfHwgJycsCiAgICAgICAgS2V5d29yZCA9PiAkUGFyYW17RGF0YX0tPntLZXl3b3JkfSB8fCAnJywKICAgICAgICBMYW5ndWFnZUlEcyAgICAgID0+ICRMYW5ndWFnZUlEcywKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+ICRDYXRlZ29yeUlEcywKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRTb3J0QnksCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJE9yZGVyQnldLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgKTsKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggXEBWaWV3YWJsZUl0ZW1JRHMgKSApIHsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IEZBUSBkYXRhJwogICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOjpSdW4oKSc7CgogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlB1YmxpY0ZBUVNlYXJjaDogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKCiAgICB9CgogICAgIyBQcmVwYXJlIHJldHVybiBkYXRhLgogICAgbXkgJFJldHVybkRhdGEgPSB7CiAgICAgICAgRGF0YSAgICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9OwoKICAgICMgU2V0IEZBUSBlbnRyeSBkYXRhLgogICAgaWYgKCBzY2FsYXIgQFZpZXdhYmxlSXRlbUlEcyA+IDEgKSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0lEfSA9IFxAVmlld2FibGVJdGVtSURzOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFJldHVybkRhdGEtPntEYXRhfS0+e0lEfSA9ICRWaWV3YWJsZUl0ZW1JRHNbMF07CiAgICB9CgogICAgcmV0dXJuICRSZXR1cm5EYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUUdldDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbgopOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUUdldCAtIEdlbmVyaWNJbnRlcmZhY2UgRkFRIFB1YmxpY0ZBUUdldCBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBQdWJsaWNGQVFHZXQgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIGEgUHVibGljIEZBUSBlbnRyeS4KCiAgICBteSAkUmVzdWx0ID0gJE9wZXJhdGlvbk9iamVjdC0+UnVuKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBJdGVtSUQgPSAnMzIsMzMnLAogICAgICAgICAgICBHZXRBdHRhY2htZW50Q29udGVudHMgPSAxLCAgICAgICAgICAgICAgICAgICAgIyAwfDEsIGRlZmF1bHRzIHRvIDEKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lICAgICA9PiAnQ2F0ZWdvcnlBOjpDYXRlZ29yeUInLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5U2hvcnROYW1lID0+ICdDYXRlZ29yeUInLAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2UgICAgICAgICAgPT4gJ2VuJywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICA9PiAnQXJ0aWNsZSBUaXRsZScsCiAgICAgICAgICAgICAgICAgICAgRmllbGQxICAgICAgICAgICAgPT4gJ1RoZSBTeW1wdG9tcycsCiAgICAgICAgICAgICAgICAgICAgRmllbGQyICAgICAgICAgICAgPT4gJ1RoZSBQcm9ibGVtJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDMgICAgICAgICAgICA9PiAnVGhlIFNvbHV0aW9uJywKICAgICAgICAgICAgICAgICAgICBGaWVsZDQgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgICAgICAgICAgICAgRmllbGQ1ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIEZpZWxkNiAgICAgICAgICAgID0+ICdDb21tZW50cycsCiAgICAgICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICAgICAgICA9PiAnS2V5V29yZDEgS2V5V29yZDInLAogICAgICAgICAgICAgICAgICAgIFZvdGVzICAgICAgICAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBudW1iZXIgb2Ygdm90ZXMKICAgICAgICAgICAgICAgICAgICBWb3RlUmVzdWx0ICAgICAgICA9PiAnMC4wMCcsICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgYmV0d2VlbiAwLjAwIGFuZCAxMDAuMDAKICAgICAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICAgICAgID0+ICdpbnRlcm5hbCAoYWdlbnQpJywgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ3B1YmxpYyAoYWxsKScKICAgICAgICAgICAgICAgICAgICBTdGF0ZVR5cGVJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFN0YXRlVHlwZU5hbWUgICAgID0+ICdpbnRlcm5hbCcsICAgICAgICAgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwnIG9yICdwdWJsaWMnCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDaGFuZ2VkICAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZEJ5ICAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZWQgICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAnMTI5NDI4NjAzMC0zMS4xNjk3Mjk3MTA0NzMyJywgICMgRkFRIEFydGljbGUgbmFtZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzeXN0ZW10aW1lICsgJy0nICsgcmFuZG9tIG51bWJlcgogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTQwMjg2JywgICAgICAgICAgICAgICAgIyBmaWxlIHNpemUgaW4gYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdFcnJvci5qcGcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJy4uLicsICAgICAgICAgICAgICAgICAgICMgYmFzZTY0IGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElubGluZSAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpZnkgaWYgaXMgYW4gaW5saW5lIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVJRCAgICAgID0+IDM0ICAgICAgICAgICAgICAgICAgICAgICAjIEZpbGVJRCBmb3IgcmVsYXRpb24gd2l0aCByaWNoIHRleHQgY29udGVudAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTQwMjg2JywgICAgICAgICAgICAgICAgIyBmaWxlIHNpemUgaW4gYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdQZW5jaWwuanBnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcuLi4nLCAgICAgICAgICAgICAgICAgICAjIGJhc2U2NCBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmUgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWZ5IGlmIGlzIGFuIGlubGluZSBhdHRhY2htZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgICAgICA9PiAzNSAgICAgICAgICAgICAgICAgICAgICAgIyBGaWxlSUQgZm9yIHJlbGF0aW9uIHdpdGggcmljaCB0ZXh0IGNvbnRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgICAgICA9PiAzMywKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgICAgICA9PiAzMywKICAgICAgICAgICAgICAgICAgICBGQVFJRCAgICAgICAgICAgICA9PiAzMywKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICA9PiAxMDAwMzMsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5TmFtZSAgICAgPT4gJ0NhdGVnb3J5RDo6Q2F0ZWdvcnlFJywKICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeVNob3J0TmFtZSA9PiAnQ2F0ZWdvcnlFJywKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgICAgID0+ICdlbicsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgPT4gJ0FydGljbGUgVGl0bGUnLAogICAgICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgICAgICAgID0+ICdUaGUgU3ltcHRvbXMnLAogICAgICAgICAgICAgICAgICAgIEZpZWxkMiAgICAgICAgICAgID0+ICdUaGUgUHJvYmxlbScsCiAgICAgICAgICAgICAgICAgICAgRmllbGQzICAgICAgICAgICAgPT4gJ1RoZSBTb2x1dGlvbicsCiAgICAgICAgICAgICAgICAgICAgRmllbGQ0ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIEZpZWxkNSAgICAgICAgICAgID0+IHVuZGVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3QgYWN0aXZlIGJ5IGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICBGaWVsZDYgICAgICAgICAgICA9PiAnQ29tbWVudHMnLAogICAgICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwCiAgICAgICAgICAgICAgICAgICAgS2V5d29yZHMgICAgICAgICAgPT4gJ0tleVdvcmQxIEtleVdvcmQyJywKICAgICAgICAgICAgICAgICAgICBWb3RlcyAgICAgICAgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbnVtYmVyIG9mIHZvdGVzCiAgICAgICAgICAgICAgICAgICAgVm90ZVJlc3VsdCAgICAgICAgPT4gJzAuMDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbnVtYmVyIGJldHdlZW4gMC4wMCBhbmQgMTAwLjAwCiAgICAgICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgICAgICA9PiAnaW50ZXJuYWwgKGFnZW50KScsICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsIChjdXN0b21lciknIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMgKGFsbCknCiAgICAgICAgICAgICAgICAgICAgU3RhdGVUeXBlSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTdGF0ZVR5cGVOYW1lICAgICA9PiAnaW50ZXJuYWwnLCAgICAgICAgICAgICAgICAgICAgICMgb3IgJ2V4dGVybmFsJyBvciAncHVibGljJwogICAgICAgICAgICAgICAgICAgIENyZWF0ZWRCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZCAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgICAgICAgICAgICAgQ2hhbmdlZEJ5ICAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZWQgICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAnMTI5NDI4NjAzMC0zMS4xNjk3Mjk3MTA0NzMyJywgICMgRkFRIEFydGljbGUgbmFtZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzeXN0ZW10aW1lICsgJy0nICsgcmFuZG9tIG51bWJlcgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0RhdGF9LT57SXRlbUlEfSApIHsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUHVibGljRkFRR2V0OiBHb3Qgbm8gSXRlbUlEISIsCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggIWRlZmluZWQoICRQYXJhbXtEYXRhfS0+e0dldEF0dGFjaG1lbnRDb250ZW50c30gKSApIHsKICAgICAgICAkUGFyYW17RGF0YX0tPntHZXRBdHRhY2htZW50Q29udGVudHN9ID0gMTsKICAgIH0KCiAgICBteSAkRXJyb3JNZXNzYWdlID0gJyc7CgogICAgbXkgJFJldHVybkRhdGEgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfTsKCiAgICBteSBASXRlbUlEcyA9IHNwbGl0KCAvLC8sICRQYXJhbXtEYXRhfS0+e0l0ZW1JRH0gKTsKICAgIG15IEBJdGVtOwoKICAgICMgU2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyLgogICAgbXkgJFVzZXJJRCA9IDE7CgogICAgbXkgJEZBUU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IHB1YmxpYyBzdGF0ZSB0eXBlcy4KICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICApOwoKICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewoKICAgICAgICBteSAlRkFRRW50cnkgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoIFwlRkFRRW50cnkgKSApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBGQVEgZGF0YScKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0ZBUUdldC5Ob3RWYWxpZEZBUUlEJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUHVibGljRkFRR2V0OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgcGVybWlzc2lvbnMuCiAgICAgICAgbXkgJEFwcHJvdmFsU3VjY2VzcyA9IDE7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICAgICAkQXBwcm92YWxTdWNjZXNzID0gJEZBUUVudHJ5e0FwcHJvdmVkfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhJEFwcHJvdmFsU3VjY2VzcyB8fCAhJEludGVyZmFjZVN0YXRlcy0+eyAkRkFRRW50cnl7U3RhdGVUeXBlSUR9IH0gKSB7CgogICAgICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKSc7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiUHVibGljRkFRR2V0OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15IEBJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBTaG93SW5saW5lID0+IDEsICAgICAgICAgIyAgICggMHwxLCBkZWZhdWx0IDEpCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBteSAlRmlsZTsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggXEBJbmRleCApICkgewoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzOwogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBJbmRleCkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0RhdGF9LT57R2V0QXR0YWNobWVudENvbnRlbnRzfSApIHsKICAgICAgICAgICAgICAgICAgICAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIENvbnZlcnQgY29udGVudCB0byBiYXNlNjQuCiAgICAgICAgICAgICAgICAgICAgJEZpbGV7Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkRmlsZXtDb250ZW50fSApOwogICAgICAgICAgICAgICAgICAgICRGaWxle0lubGluZX0gID0gJEF0dGFjaG1lbnQtPntJbmxpbmV9OwogICAgICAgICAgICAgICAgICAgICRGaWxle0ZpbGVJRH0gID0gJEF0dGFjaG1lbnQtPntGaWxlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJUZpbGUgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRBdHRhY2htZW50LT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBJbmxpbmUgICAgICA9PiAkQXR0YWNobWVudC0+e0lubGluZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVJRCAgICAgID0+ICRBdHRhY2htZW50LT57RmlsZUlEfQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgeyVGaWxlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTZXQgRkFRIGVudHJ5IGRhdGEuCiAgICAgICAgICAgICRGQVFFbnRyeXtBdHRhY2htZW50fSA9IFxAQXR0YWNobWVudHM7CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJdGVtLCBcJUZBUUVudHJ5OwogICAgfQoKICAgIGlmICggIXNjYWxhciBASXRlbSApIHsKICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgRkFRIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFHZXQ6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdQdWJsaWNGQVFHZXQuTm9GQVFEYXRhJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJQdWJsaWNGQVFHZXQ6ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICk7CgogICAgfQoKICAgICRSZXR1cm5EYXRhLT57RGF0YX0tPntGQVFJdGVtfSA9IFxASXRlbTsKCiAgICByZXR1cm4gJFJldHVybkRhdGE7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdHb2RrZW5kdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbmRlcmthdGVnb3JpIGFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1ZpbCBibGl2ZSB2aXN0IHNvbSBrb21tZW50YXIgaSBFeHBsb3JlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3JpayBhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3Jpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnT3ByZXR0ZWxzZXN0aWQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTaWRzdCDDpm5kcmV0IGFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1N0ZW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdUaWRzYmVncsOmbnNuaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVEgTnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVGFrIGZvciBkaW4gc3RlbW1lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0R1IGhhciBhbGxlcmVkZSBzdGVtdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdJbmdlbiByYXRlIHZhbGd0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdOeWVzdGUgYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnU2lkc3Qgw6ZuZHJlZGUgYXJ0aWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBhcnRpa2xlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2Vrc3Rlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnb2ZmZW50bGlnJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdla3N0ZXJuIChrdW5kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybiAoYWdlbnQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ29mZmVudGxpZyAoYWxsZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdGQVEtQXJ0aWtlbCBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1NjaGzDvHNzZWx3w7ZydGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnRWluZSBLYXRlZ29yaWUgaXN0IGVyZm9yZGVybGljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdGcmVpZ2FiZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdGQVEtS2F0ZWdvcmllbnZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0ZBUS1LYXRlZ29yaWUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdGQVEtS2F0ZWdvcmllIGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnS2F0ZWdvcmllIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnS2F0ZWdvcmllIGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbnRlcmthdGVnb3JpZSB2b24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdXw6RobGVuIFNpZSBtaW5kZXN0ZW5zIGVpbmUgQmVyZWNodGlndW5nc2dydXBwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0FnZW50ZW4tR3J1cHBlbiwgZGllIGJlcmVjaHRpZ3Qgc2luZCwgYXVmIEZBUS1BcnRpa2VsIGluIGRpZXNlciBLYXRlZ29yaWUgenV6dWdyZWlmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdXaXJkIGltIEV4cGxvcmVyIGFscyBLb21tZW50YXIgYW5nZXplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBLYXRlZ29yaWUgd2lya2xpY2ggbMO2c2NoZW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnU2llIGvDtm5uZW4gZGllc2UgS2F0ZWdvcmllIG5pY2h0IGzDtnNjaGVuLiBTaWUgd2lyZCBpbiBtaW5kZXN0ZW5zIGVpbmVtIEZBUS1BcnRpa2VsIHZlcndlbmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdEaWVzZSBLYXRlZ29yaWUgd2lyZCBpbiBkZW4gZm9sZ2VuZGVuIEZBUS1BcnRpa2VsbiB2ZXJ3ZW5kZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRGllc2UgS2F0ZWdvcmllIGlzdCBlaW5lIFVudGVya2F0ZWdvcmllIGbDvHIgZm9sZ2VuZGUgS2F0ZWdvcmllbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdXb2xsZW4gU2llIGRpZXNlbiBGQVEtQXJ0aWtlbCB3aXJrbGljaCBsw7ZzY2hlbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnU2NobmVsbHN1Y2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdXaWxkY2FyZHMgc2luZCBlcmxhdWJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdFcndlaXRlcnRlIFN1Y2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdVbnRlcmthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnRkFRLUFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdLZWluZSBVbnRlcmthdGVnb3JpZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfDhG5kZXJ1bmdzdmVybGF1ZiB2b24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnw4RuZGVydW5nc3ZlcmxhdWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0Vyc3RlbGx0IGFtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ0tlaW5lIEZBUS1Kb3VybmFsZGF0ZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUS1TcHJhY2hlbnZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJ0ZBUS1TcHJhY2hlIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnRkFRLVNwcmFjaGUgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdWZXJ3ZW5kZW4gU2llIGRpZXNlIEZ1bmt0aW9uLCB3ZW5uIFNpZSBtaXQgbWVocmVyZW4gU3ByYWNoZW4gYXJiZWl0ZW4gd29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdTcHJhY2hlIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1NwcmFjaGUgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBTcHJhY2hlIHdpcmtsaWNoIGzDtnNjaGVuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdTaWUga8O2bm5lbiBkaWVzZSBTcHJhY2hlIG5pY2h0IGzDtnNjaGVuLiBTaWUgd2lyZCBpbiBtaW5kZXN0ZW5zIGVpbmVtIEZBUS1BcnRpa2VsIHZlcndlbmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdEaWVzZSBTcHJhY2hlIHdpcmQgaW4gZGVuIGZvbGdlbmRlbiBGQVEtQXJ0aWtlbG4gdmVyd2VuZGV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnS29udGV4dC1FaW5zdGVsbHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0ZBUS1BcnRpa2VsIHBybyBTZWl0ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdLZWluZSBGQVEtRGF0ZW4gZ2VmdW5kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICd2b24gNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdTY2hsw7xzc2Vsd29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnQWJzdGltbXVuZyAoWnVtIEJlaXNwaWVsOiA9MTAgb2RlciA+NjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ0FudGVpbCAoWnVtIEJlaXNwaWVsOiA9MjUlIG9kZXIgPjc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdHZW5laG1pZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGV0enRlIMOEbmRlcnVuZyB2b246JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRXJzdGVsbHplaXQgZGVzIEZBUS1BcnRpa2VsIChkYXZvci9kYW5hY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0Vyc3RlbGx6ZWl0IGRlcyBGQVEtQXJ0aWtlbCAoendpc2NoZW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnTGV0enRlIMOEbmRlcnVuZyBkZXMgRkFRLUFydGlrZWwgKGRhdm9yL2RhbmFjaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnTGV0enRlIMOEbmRlcnVuZyBkZXMgRkFRLUFydGlrZWwgKHp3aXNjaGVuKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEtVm9sbHRleHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdGQVEgU3VjaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdQcm9maWxhdXN3YWhsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdBYnN0aW1tZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ0tlaW5lIEVpbnN0ZWxsdW5nIGbDvHIgQWJzdGltbXVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ3NwZXppZmlzY2hlIEFic3RpbW11bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnWnVtIEJlaXNwaWVsOiA9MTAgb2RlciA+NjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ0FudGVpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnS2VpbmUgRWluc3RlbGx1bmdlbiBmw7xyIEFudGVpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnYmVzdGltbXRlciBBbnRlaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdadW0gQmVpc3BpZWw6ID0yNSUgb2RlciA+NzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnRXJzdGVsbHplaXQgZGVzIEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnTGV0enRlIMOEbmRlcnVuZyBkZXMgRkFRLUFydGlrZWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFRLUluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ0Jld2VydHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ0Jld2VydHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0tlaW5lIEJld2VydHVuZ2VuIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnS2VpbmUgQmV3ZXJ0dW5nZW4gZ2VmdW5kZW4hIFNlaWVuIFNpZSBkZXIgZXJzdGUgZGVyIGRpZXNlbiBGQVEtQXJ0aWtlbCBiZXdlcnRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0FuaGFuZyBoZXJ1bnRlcmxhZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnVW0gZGllIExpbmtzIGltIGZvbGdlbmRlbiBCZWl0cmFnIHp1IMO2ZmZuZW4sIGthbm4gZXMgbm90d2VuZGlnIHNlaW4gU3RyZyBvZGVyIFNoaWZ0IHp1IGRyw7xja2VuLCB3w6RocmVuZCBhdWYgZGVuIExpbmsgZ2VrbGlja3Qgd2lyZCAoYWJow6RuZ2lnIHZvbSB2ZXJ3ZW5kZXRlbiBCcm93c2VyIHVuZCBCZXRyaWVic3N5c3RlbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnV2llIGhpbGZyZWljaCB3YXIgZGllc2VyIEFydGlrZWw/IEJpdHRlIGdlYmVuIFNpZSBJaHJlIEJld2VydHVuZyBhYiB1bmQgaGVsZmVuIFNpZSBtaXQgZGllIFF1YWxpdMOkdCBkZXIgRkFRLURhdGVuYmFuayB6dSB2ZXJiZXNzZXJuLiBWaWVsZW4gRGFuayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduaWNodCBoaWxmcmVpY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnc2VociBoaWxmcmVpY2gnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0ZBUS1UaXRlbCBhbHMgQXJ0aWtlbGJldHJlZmYgaGluenVmw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnRkFRLVRleHQgZWluZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ1ZvbGxzdMOkbmRpZ2UgRkFRIGVpbmbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdGQVEtTGluayBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0ZBUS1UZXh0ICYgTGluayBlaW5mw7xnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ1ZvbGxzdMOkbmRpZ2UgRkFRICYgTGluayBlaW5mw7xnZW4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdLZWluZSBGQVEtQXJ0aWtlbCBnZWZ1bmRlbi4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdEaWVzZSBBcnRpa2VsIGvDtm5udGVuIGhpbGZyZWljaCBzZWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdMZWlkZXIgd3VyZGVuIGtlaW5lIHBhc3NlbmRlbiBBcnRpa2VsIGdlZnVuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnTmFjaCBkZW0gRWludGlwcGVuIGVpbmVzIEJldHJlZmZzIG9kZXIgVGV4dGVzIHdlcmRlbiBoaWVyIHBhc3NlbmRlIEFydGlrZWwgYW5nZXplaWd0Lic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnVm9sbHRleHQtU3VjaGUgaW4gRkFRLUFydGlrZWxuICh6LiBCLiAiSm9obipuIiBvciAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1dhaGxlaW5zY2hyw6Rua3VuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdOdXIgRkFRLUFydGlrZWwgbWl0IEFic3RpbW11bmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ0FudGVpbHNiZXNjaHLDpG5rdW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnTnVyIEZBUS1BcnRpa2VsIG1pdCBlaW5lbSBBbnRlaWwgdm9uLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnWmVpdGJlc2NocsOkbmt1bmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnTnVyIEZBUS1BcnRpa2VsIGVyc3RlbGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ051ciBUaWNrZXRzLCBkaWUgZXJzdGVsbHQgd3VyZGVuIHp3aXNjaGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1N1Y2hwcm9maWwgYWxzIFZvcmxhZ2U/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnQXJ0aWtlbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1N1Y2hlIG5hY2ggQXJ0aWtlbG4gbWl0IFNjaGzDvHNzZWx3w7ZydGVybic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICfDlmZmZW50bGljaCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnWnVyw7xjayB6dW0gRkFRLUV4cGxvcmVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdTaWUgYmVuw7Z0aWdlbiBMZXNlLSB1bmQgU2NocmVpYnJlY2h0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ0tlaW5lIEthdGVnb3JpZW4gZ2VmdW5kZW4sIGluIGRlbmVuIGRlciBCZW51dHplciBMZXNlLS9TY2hyZWlicmVjaHRlIGJlc2l0enQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJ1N0YW5kYXJkc3ByYWNoZSB3dXJkZSBuaWNodCBnZWZ1bmRlbi4gTmV1ZSBTdGFuZGFyZHNwcmFjaGUga29ubnRlIG5pY2h0IGVyc3RlbGx0IHdlcmRlbi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdCZW7DtnRpZ2UgS2F0ZWdvcmllLUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdFaW5lIEthdGVnb3JpZSBiZW7DtnRpZ3QgZWluZW4gTmFtZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdEaWVzZSBLYXRlZ29yaWUgZXhpc3RpZXJ0IGJlcmVpdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGllc2UgS2F0ZWdvcmllIGV4aXN0aWVydCBiZXJlaXRzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJ0VzIHd1cmRlIGtlaW5lIEthdGVnb3JpZS1JRCB2ZXJnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnS2F0ZWdvcmllICVzIGtvbm50ZSBuaWNodCBnZWzDtnNjaHQgd2VyZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdGQVEtS2F0ZWdvcmllIGFrdHVhbGlzaWVydCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUS1LYXRlZ29yaWUgaGluenVnZWbDvGd0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUgbMO2c2NoZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnRXMgd3VyZGUga2VpbmUgRWludHJhZy1JRCB2ZXJnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICdTaWUgYmVzaXR6ZW4ga2VpbmUgQmVyZWNodGlndW5nIGbDvHIgZGllc2UgS2F0ZWdvcmllISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICdGQVEgQXJ0aWtlbCAlcyBrb25udGUgbmljaHQgZ2Vsw7ZzY2h0IHdlcmRlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnRGllIEthdGVnb3JpZS1JRCAlcyBpc3QgdW5nw7xsdGlnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnS2FubiBIaXN0b3J5IG5pY2h0IGFuemVpZ2VuLCBrZWluZSBFaW50cmFnLUlEIMO8YmVybWl0dGVsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdGQVEgSGlzdG9yaWUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEgSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICdLb25maWd1cmF0aW9uc29wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyB3aXJkIGJlbsO2dGlndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICdLb25maWd1cmF0aW9uc29wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBtdXNzIGVpbmUgSEFTSCBSZWZlcmVueiBzZWluISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ0tlaW5lIEtvbmZpZ3VyYXRpb25zb3B0aW9uIGbDvHIgZGllIEFuc2ljaHQgIiVzIiBnZWZ1bmRlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgTGFuZ3VhZ2VJRCDDvGJlcm1pdHRlbHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0RlciBOYW1lIGlzdCBlcmZvcmRlcmxpY2ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGllc2UgU3ByYWNoZSBleGlzdGllcnQgYmVyZWl0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnU3ByYWNoZSAlcyBrb25udGUgbmljaHQgZ2Vsw7ZzY2h0IHdlcmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnRkFRLVNwcmFjaGUgYWt0dWFsaXNpZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFRLVNwcmFjaGUgaGluenVnZWbDvGd0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdTcHJhY2hlIEzDtnNjaGVuICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdFcmdlYm5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ0xldHp0ZSBBa3R1YWxpc2llcnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdGQVEgRHluYW1pc2NoZSBGZWxkZXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJ0tlaW4oZSkgJXMgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICdMYW5ndWFnZU9iamVjdCBrYW5uIG5pY2h0IGdlbGFkZW4gd2VyZGVuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdLZWluIEVyZ2VibmlzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRLU51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICdMZXR6dGUgw4RuZGVydW5nIHZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUS1BcnRpa2VsIEVyc3RlbGx6ZWl0ICh2b3IvbmFjaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRLUFydGlrZWwgRXJzdGVsbHplaXQgKHp3aXNjaGVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUS1BcnRpa2VsIMOEbmRlcnVuZ3N6ZWl0ICh2b3IvbmFjaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRLUFydGlrZWwgw4RuZGVydW5nc3plaXQgKHp3aXNjaGVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdpc3QgZ2xlaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ0dyw7bDn2VyIGFscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnaXN0IGdyw7bDn2VyL2dsZWljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICdLbGVpbmVyIGFscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnS2xlaW5lci9nbGVpY2gnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnQmVuw7Z0aWdlIERhdGVpLUlEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1ZpZWxlbiBEYW5rIGbDvHIgSWhyZSBCZXdlcnR1bmchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnU2llIGhhYmVuIGJlcmVpdHMgYWJnZXN0aW1tdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdLZWluZSBCZXdlcnR1bmcgYXVzZ2V3w6RobHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ0Fic3RpbW11bmdzZnVua3Rpb24gaXN0IG5pY2h0IGFrdGl2aWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICdEaWUgQWJzdGltbXVuZ3NyYXRlIGlzdCBuaWNodCBkZWZpbmllcnQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ZBUS1BcnRpa2VsLUF1c2RydWNrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnRXJzdGVsbHQgendpc2NoZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnSXRlbUlEIGJlbsO2dGlndCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0ZBUS1BcnRpa2VsIChuZXUgZXJzdGVsbHRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFRLUFydGlrZWwgKGFrdHVhbGlzaWVydGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0ZBUS1BcnRpa2VsIChUb3AgMTApJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnS2VpbiBUeXAgaXN0IGRlZmluaWVydCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnVHlwIG11c3MgZW50d2VkZXIgTGFzdENyZWF0ZSBvZGVyIExhc3RDaGFuZ2Ugb2RlciBUb3AxMCBzZWluISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ1JTUyBEYXRlaSBrYW5uIG5pY2h0IGVyc3RlbGx0IHdlcmRlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUSBWb2xsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIEt1bmRlICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBLdW5kZW4gKEZBUSBWb2xsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gw5ZmZmVudGxpY2ggKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSDDlmZmZW50bGljaCAoRkFRIFZvbGx0ZXh0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICdCZXdlcnR1bmcgYmVuw7Z0aWd0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnRGllc2VyIEFydGlrZWwgaXN0IGxlZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1p1bGV0enQgZXJzdGVsbHRlIEZBUS1BcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0ZSBGQVEtQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIEZBUS1BcnRpa2VsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ0luaGFsdHN0eXAnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICfDtmZmZW50bGljaCc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnRWluIEZpbHRlciB6dXIgYXV0b21hdGlzY2hlbiBHZW5lcmllcnVuZyB2b24gRkFRLUxpbmtzLCB3ZW5uIGVpbiBIaW53ZWlzIGF1ZiBlaW5lbiBGQVEtQXJ0aWtlbCBpZGVudGlmaXppZXJ0IHdpcmQuIERhcyBFbGVtZW50IEltYWdlIGVybGF1YnQgendlaSBFaW5nYWJlZm9ybWVuOiBFcnN0ZW5zIGRlciBOYW1lIGVpbmVzIEljb25zICh6LiBCLiBmYXEucG5nKS4gSW4gZGllc2VtIEZhbGwgd2lyZCBhdWYgZGFzIEdyYWZpay1WZXJ6ZWljaG5pcyBkZXMgT1RSUyB6dWdlZ3JpZmZlbi4gQWxzIHp3ZWl0ZSBNw7ZnbGljaGtlaXQga2FubiBtYW4gYWJlciBhdWNoIGRlbiBkaXJla3RlbiBMaW5rIHp1ciBHcmFmaWsgYW5nZWJlbiAoei4gQi4gaHR0cDovL290cnMub3JnL2ZhcS5wbmcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdGQVEtQXJ0aWtlbCBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUy1GYXJiZSBmw7xyIGRhcyBCZXdlcnR1bmdzLUVyZ2VibmlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnQ2FjaGV6ZWl0IGbDvHIgRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaWVudmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJ0thdGVnb3JpZW4tVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnS3VuZGVuLUZBUSBEcnVja2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJ0t1bmRlbi1GQVEtYmV6b2dlbmUgQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICdLdW5kZW4tRkFRLWJlem9nZW5lIEFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ0t1bmRlbiBGQVEgRGV0YWlsYW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICdLdW5kZW4tRkFRIFN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ0t1bmRlbi1GQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0RlemltYWxzdGVsbGVuIGRlcyBFcmdlYm5pc3NlcyBkZXIgQXJ0aWtlbGJld2VydHVuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ1Jvb3QtS2F0ZWdvcmllLU5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdTdGFuZGFyZC1TcHJhY2hlIGbDvHIgRkFRLUFydGlrZWwgaW0gRWluemVsLVNwcmFjaC1Nb2R1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnU3RhbmRhcmRtw6TDn2lnIG1heGltYWwgYW5nZXplaWd0ZSBaZWljaGVuIGluIGRlbiBUaXRlbG4gZGVyIEZBUS1BcnRpa2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdTdGFuZGFyZC1Qcmlvcml0w6R0IHZvbiBUaWNrZXRzIGbDvHIgZGllIEZyZWlnYWJlIHZvbiBGQVEtQXJ0aWtlbG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdTdGFuZGFyZCBTdGF0dXMgZWluZXMgRkFRLUVpbnRyYWdzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhbmRhcmQtU3RhdHVzIHZvbiBUaWNrZXRzIGbDvHIgZGllIEZyZWlnYWJlIHZvbiBGQVEtQXJ0aWtlbG4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1N0YW5kYXJkIFRpY2tldHR5cCBmw7xyIGRpZSBHZW5laG1pZ3VuZyB2b24gRkFRLUFydGlrZWxuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdTdGFuZGFyZHdlcnQgZGVzIEFjdGlvbi1QYXJhbWV0ZXJzIGbDvHIgZGVuIMO2ZmZlbnRsaWNoZW4gRkFRLUJlcmVpY2guIERlciBBY3Rpb24tUGFyYW1ldGVyIHdpcmQgdm9uIGRlbiBTa3JpcHRlbiBkZXMgU3lzdGVtcyBiZW51dHp0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pZXJlbiBTaWUgQWN0aW9ucywgaW4gZGVuZW4gaW0gVmVya27DvHBmdGUtT2JqZWt0ZS1XaWRnZXQgZWluIEVpbnN0ZWxsdW5nZW4tS25vcGYgdmVyZsO8Z2JhciBzZWluIHNvbGwgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gQml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGbDvHIgZGllc2UgQWN0aW9ucyBkaWUgZm9sZ2VuZGVuIEpTLSB1bmQgQ1NTLURhdGVpZW4gcmVnaXN0cmllcnQgc2VpbiBtw7xzc2VuOiAgQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgdW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdEZWZpbmllcnQgb2IgZGVyIEZBUS1UaXRlbCBtaXQgZGVtIEFydGlrZWxiZXRyZWZmIHZlcmtldHRldCB3ZXJkZW4gc29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgU3BhbHRlbiBpbSBXaWRnZXQgIlZlcmtuw7xwZnRlIEZBUXMiIGFuZ2V6ZWlndCB3ZXJkZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gSGlud2VpczogRsO8ciBTdGFuZGFyZHNwYWx0ZW4gc2luZCBudXIgRkFRLUF0dHJpYnV0ZSB1bmQgZHluYW1pc2NoZSBGZWxkZXIgKER5bmFtaWNGaWVsZF9OYW1lWCkgZXJsYXVidC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGVpbiDDnGJlcnNpY2h0cy1Nb2R1bCB1bSBkaWUgU21hbGwtQW5zaWNodCBpbSBGQVEtSm91cm5hbCBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmllcnQgZWluIMOcYmVyc2ljaHRzLU1vZHVsIHVtIGRpZSBTbWFsbC1BbnNpY2h0IGVpbmVyIEZBUS1MaXN0ZSBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLVN1Y2hlIGltIEt1bmRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLVN1Y2hlIGltIFB1YmxpYy1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1GQVEtQXR0cmlidXQgZsO8ciBkaWUgU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVyIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtRkFRLUF0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlciBpbSBLdW5kZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLUZBUS1BdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXIgaW0gUHVibGljLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVzIEZBUS1FeHBsb3JlciBpbSBBZ2VudGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlcyBGQVEtRXhwbG9yZXIgaW0gS3VuZGVuLUludGVyZmFjZS4gQXVmOiDDhGx0ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4gQWI6IE5ldWVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXMgRkFRLUV4cGxvcmVycyBpbSBQdWJsaWMtSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZC1Tb3J0aWVydW5nIGRlciBGQVEtU3VjaGUgaW0gQWdlbnRlbi1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkLVNvcnRpZXJ1bmcgZGVyIEZBUS1TdWNoZSBpbSBLdW5kZW4tSW50ZXJmYWNlLiBBdWY6IMOEbHRlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLiBBYjogTmV1ZXN0ZXIgRkFRLUFydGlrZWwgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmQtU29ydGllcnVuZyBkZXIgRkFRLVN1Y2hlIGltIFB1YmxpYy1JbnRlcmZhY2UuIEF1Zjogw4RsdGVzdGVyIEZBUS1BcnRpa2VsIG9iZW4uIEFiOiBOZXVlc3RlciBGQVEtQXJ0aWtlbCBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmRhdHRyaWJ1dGUgZsO8ciBkaWUgU3VjaGUgaW4gZGVuIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4gaW0gSMOkdWZpZy1nZXN0ZWxsdGUtRnJhZ2VuIFN1Y2hkaWFsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgSW5mb3JtYXRpb25lbiwgd2VsY2hlIGluIGVpbiBGQVEtYmFzaWVyZW5kZXMgVGlja2V0IGVpbmdlZ2ViZW4gd2VyZGVuLiAiS29tcGxldHRlIEZBUSIgYmVpbmhhbHRldCBkZW4gVGV4dCwgQW5ow6RuZ2UgdW5kIElubGluZS1CaWxkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgUGFyYW1ldGVyIGbDvHIgZGFzIMOcYmVyc2ljaHRzc2VpdGVuLUJhY2tlbmQuICJMaW1pdCIgZGVmaW5pZXJ0IGRpZSBBbnphaGwgZGVyIEVpbnRyw6RnZSwgZGllIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3Qgd2VyZGVuLiAiR3JvdXAiIHdpcmQgdmVyd2VuZGV0LCB1bSBkZW4gWnVncmlmZiBhdWYgZGFzIFBsdWdpbiB6dSBiZWdyZW56ZW4gKGJzcHcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBzdGV1ZXJ0LCBvYiBkYXMgUGx1Z2luIHN0YW5kYXJkbcOkw59pZyBha3RpdmllcnQgaXN0IG9kZXIgb2IgZGVyIFVzZXIgZXMgbWFudWVsbCBha3RpdmllcmVuIG11c3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGltIEZBUS1FeHBsb3Jlci4gRGllc2UgT3B0aW9uIGhhdCBrZWluZSBBdXN3aXJrdW5nIGF1ZiBkaWUgUG9zaXRpb24gZGVyIFNwYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gaW0gRkFRLUpvdXJuYWwuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gaW4gZGVyIEZBUS1TdWNoZS4gRGllc2UgT3B0aW9uIGhhdCBrZWluZSBBdXN3aXJrdW5nIGF1ZiBkaWUgUG9zaXRpb24gZGVyIFNwYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5pZXJ0IHdvIGRlciBMaW5rIGF1cyBcJ0ZBUSBlaW5mw7xnZW5cJyBhbmdlemVpZ3Qgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pdGlvbiBkZXIgZnJlaWVuIFRleHRmZWxkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0RpZXNlIEZBUSBsw7ZzY2hlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGltIEZBUSBFcnN0ZWxsLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW5iZXJlaWNocy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5nZXplaWd0ZSBEeW5hbWlzY2hlIEZlbGRlciBpbSBGQVEgQmVhcmJlaXR1bmdzLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW5iZXJlaWNocy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgRHluYW1pc2NoZSBGZWxkZXIgaW4gZGVyIEZBUSDDnGJlcnNpY2h0IGRlcyBLdW5kZW5iZXJlaWNocy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGluIGRlciBGQVEgw5xiZXJzaWNodCBkZXMgw7ZmZmVudGxpY2hlbiBCZXJlaWNocy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgRHluYW1pc2NoZSBGZWxkZXIgaW0gRkFRIERydWNrLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW5iZXJlaWNocy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGltIEZBUSBEcnVjay1CaWxkc2NoaXJtIGRlcyBLdW5kZW5iZXJlaWNocy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5nZXplaWd0ZSBEeW5hbWlzY2hlIEZlbGRlciBpbSBGQVEgRHJ1Y2stQmlsZHNjaGlybSBkZXMgw7ZmZmVudGxpY2hlbiBCZXJlaWNocy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5nZXplaWd0ZSBEeW5hbWlzY2hlIEZlbGRlciBpbSBGQVEgU3VjaC1CaWxkc2NoaXJtIGRlcyBBZ2VudGVuYmVyZWljaHMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgRHluYW1pc2NoZSBGZWxkZXIgaW0gRkFRIFN1Y2gtQmlsZHNjaGlybSBkZXMgS3VuZGVuYmVyZWljaHMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGltIEZBUSBTdWNoLUJpbGRzY2hpcm0gZGVzIMO2ZmZlbnRsaWNoZW4gQmVyZWljaHMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgZHluYW1pc2NoZSBGZWxkZXIgaW4gZGVyIEtsZWluYW5zaWNodCB2b24gRkFRLUFydGlrZWxuIGltIEFnZW50ZW5iZXJlaWNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlemVpZ3RlIER5bmFtaXNjaGUgRmVsZGVyIGltIEZBUSBab29tLUJpbGRzY2hpcm0gZGVzIEFnZW50ZW5iZXJlaWNocy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2V6ZWlndGUgRHluYW1pc2NoZSBGZWxkZXIgaW0gRkFRIFpvb20tQmlsZHNjaGlybSBkZXMgS3VuZGVuYmVyZWljaHMuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW5nZXplaWd0ZSBEeW5hbWlzY2hlIEZlbGRlciBpbSBGQVEgWm9vbS1CaWxkc2NoaXJtIGRlcyDDtmZmZW50bGljaGVuIEJlcmVpY2hzLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0ZBUSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdNdWx0aXBsZSBTcHJhY2hlbiBpbSBGQVEtTW9kdWwgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnQWt0aXZpZXJlbiBTaWUgZGllIHp1Z2Vow7ZyaWdlIEFydGlrZWxmdW5rdGlvbiBmw7xyIGRhcyBLdW5kZW4tRnJvbnRlbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQmV3ZXJ0dW5ncy1NZWNoYW5pc211cyBpbSBGQVEtTW9kdWwgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdBbnNpY2h0IG5hY2ggS2F0ZWdvcmllbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCBSZXNwb25kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCBSZXNwb25kZXIgZsO8ciBSaWNodGV4dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdGQVEtQmVyZWljaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICdGQVEtQmVyZWljaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdGQVEgTMO2c2NoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ0ZBUSBCZWFyYmVpdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICdGQVEgSGlzdG9yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEtSm91cm5hbCBBbnplaWdlLUxpbWl0IGbDvHIgZGllIFNtYWxsLUFuc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVEtw5xiZXJzaWNodCAia2xlaW5lcyIgTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ZBUSBEcnVja2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnU3VjaC1CYWNrZW5kLVJvdXRlciBmw7xyIGRpZSBGQVEtU3VjaGUgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0ZlbGQ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0ZlbGQ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnVm9sbHN0w6RuZGlnZXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBwZSBmw7xyIGRpZSBGcmVpZ2FiZSB2b24gRkFRLUFydGlrZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnRkFRLUhpc3RvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbnRlcm5lIEZBUS1GZWxkZXIgaW4gZWluZW0gRkFRLWJhc2llcnRlblRpY2tldCB2ZXJ3ZW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnRGVuIE5hbWVuIGplZGVzIEZBUS1GZWxkZXMgZWluZW0gRkFRLWJhc2llcnRlbiBUaWNrZXQgdmVyd2VuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ09iZXJmbMOkY2hlIGF1ZiBkZXIgZGllIFNjaG5lbGxzdWNoZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1NwcmFjaGVudmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJ1NwcmFjaGVudmVyd2FsdHVuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICdMaW1pdCBmw7xyIGRpZSBTdWNoZSBiZWltIEVyc3RlbGxlbiBkZXIgU2NobMO8c3NlbHdvcnQtRkFRLUFydGlrZWwtTGlzdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0RpZXNlIEZBUSBtaXQgZWluZW0gYW5kZXJlbiBPYmpla3QgdmVya27DvHBmZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICdMaXN0ZSBkZXIgUXVldWUtTmFtZW4gZsO8ciB3ZWxjaGUgZGllIHp1Z2Vow7ZyaWdlbiBBcnRpa2VsLUZlYXR1cmUgYWt0aXZpZXJ0IHd1cmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGUgZGVyIFN0YXR1c3R5cGVuLCBkaWUgaW4gZGVyIEFnZW50ZW5vYmVyZmzDpGNoZSBnZW51dHp0IHdlcmRlbiBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0ZSBkZXIgU3RhdHVzdHlwZW4sIGRpZSBpbiBkZXIgS3VuZGVub2JlcmZsw6RjaGUgZ2VudXR6dCB3ZXJkZW4ga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RlIGRlciBTdGF0dXN0eXBlbiwgZGllIGluIGRlciDDtmZmZW50bGljaGVuIE9iZXJmbMOkY2hlIGdlbnV0enQgd2VyZGVuIGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdMYWRlLU1vZHVscmVnaXN0cmllcnVuZyBmw7xyIGRhcyDDtmZmZW50bGljaGUgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVybCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1FeHBsb3JlciBpbSBLdW5kZW4tSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1FeHBsb3JlciBpbSBQdWJsaWMtSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUpvdXJuYWwgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW4gZGVyIEZBUS1TdWNoZSBpbSBBZ2VudGVuLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCB2b24gRkFRLUFydGlrZWxuIGRpZSBpbiBkZXIgRkFRLVN1Y2hlIGltIEt1bmRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGluIGRlciBGQVEtU3VjaGUgaW0gUHVibGljLUludGVyZmFjZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltYWxlIEdyw7bDn2Ugdm9uIFRpdGVsbiBpbiBIw6R1ZmlnLWdlc3RlbGx0ZW4tRnJhZ2VuLUJlaXRyw6RnZW4gd2VsY2hlIGltIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbi1FeHBsb3JlciBkZXIgQWdlbnRlbsO8YmVyc2ljaHQgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBHcsO2w59lIHZvbiBUaXRlbG4gaW4gSMOkdWZpZy1nZXN0ZWxsdGVuLUZyYWdlbi1CZWl0csOkZ2VuIHdlbGNoZSBpbSBIw6R1ZmlnLWdlc3RlbGx0ZS1GcmFnZW4tRXhwbG9yZXIgZGVyIEt1bmRlbsO8YmVyc2ljaHQgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgR3LDtsOfZSB2b24gVGl0ZWxuIGluIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4tQmVpdHLDpGdlbiB3ZWxjaGUgaW0gSMOkdWZpZy1nZXN0ZWxsdGUtRnJhZ2VuLUV4cGxvcmVyIGRlciDDtmZmZW50bGljaGVuIMOcYmVyc2ljaHQgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgR3LDtsOfZSB2b24gVGl0ZWxuIGluIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4tQmVpdHLDpGdlbiB3ZWxjaGUgaW4gZGVyIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbi1TdWNoZSBkZXIgQWdlbnRlbsO8YmVyc2ljaHQgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgR3LDtsOfZSB2b24gVGl0ZWxuIGluIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4tQmVpdHLDpGdlbiB3ZWxjaGUgaW4gZGVyIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbi1TdWNoZSBkZXIgS3VuZGVuw7xiZXJzaWNodCBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgR3LDtsOfZSB2b24gVGl0ZWxuIGluIEjDpHVmaWctZ2VzdGVsbHRlbi1GcmFnZW4tQmVpdHLDpGdlbiB3ZWxjaGUgaW4gZGVyIEjDpHVmaWctZ2VzdGVsbHRlLUZyYWdlbi1TdWNoZSBkZXIgw7ZmZmVudGxpY2hlbiDDnGJlcnNpY2h0IGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBHcsO2w59lIHZvbiBUaXRlbG4gaW4gSMOkdWZpZy1nZXN0ZWxsdGVuLUZyYWdlbi1CZWl0csOkZ2VuIHdlbGNoZSBpbiBGQVEtQmVyaWNodGVuIGluIGRlciBBZ2VudGVuw7xiZXJzaWNodCBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHp1bSBFcnpldWdlbiBkZXMgSFRNTCBPcGVuU2VhcmNoLVByb2ZpbHMgZsO8ciBkaWUga3VyemUgRkFRLVN1Y2hlIGltIEt1bmRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHp1bSBHZW5lcmllcmVuIGRlcyBIVE1MICJPcGVuU2VhcmNoIiBQcm9maWxzIHp1ciBGQVEtU3VjaGUgaW4gZGVyIMO2ZmZlbnRsaWNoZW4gT2JlcmZsw6RjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJ01vZHVsIHp1bSBHZW5lcmllcmVuIGRlcyBIVE1MICJPcGVuU2VhcmNoIi1Qcm9maWxzIHp1ciBGQVEtU3VjaGUgw7xiZXIgZGFzIEJyb3dzZXItU3VjaGZlbGQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICdOZXVlciBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTmV1ZSBGQVEtQXJ0aWtlbCBiZW7DtnRpZ2VuIGVpbmUgRnJlaWdhYmUgdm9yIGRlciBWZXLDtmZmZW50bGljaHVuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW1hbGUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gZGllIGltIEZBUS1FeHBsb3JlciBpbSBLdW5kZW4tSW50ZXJmYWNlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgdm9uIEZBUS1BcnRpa2VsbiBkaWUgaW0gRkFRLUV4cGxvcmVyIGluIGRlciDDtmZmZW50bGljaGVuIE9iZXJmbMOkY2hlIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHp0IGluIFN1Y2hlcmdlYm5pc3NlbiBkaWUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gcHJvIFNlaXRlIGluIGRlciBLdW5kZW5vYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHp0IGluIFN1Y2hlcmdlYm5pc3NlbiBkaWUgQW56YWhsIHZvbiBGQVEtQXJ0aWtlbG4gcHJvIFNlaXRlIGluIGRlciDDtmZmZW50bGljaGVuIE9iZXJmbMOkY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0FuemFobCBkZXIgenUgYW56ZWlnZW5kZW4gQXJ0aWtlbCBpbiBsZXR6dGVuIMOEbmRlcnVuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0FuemFobCBkZXIgYW56dXplaWdlbmRlbiBBcnRpa2VsIGluIHp1bGV0enQgZXJzdGVsbHRlIEFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQW56YWhsIGRlciBhbnp1emVpZ2VuZGVuIEFydGlrZWwgaW0gVG9wIDEwIEZlYXR1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICdBdXNnYWJlZmlsdGVyIHp1bSBIaW56dWbDvGdlbiB2b24gSmF2YVNjcmlwdCB6dXIgS3VuZGVuLVRpY2tldC1BbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdBdXNnYWJlLUxpbWl0IGRlciB6dWdlaMO2cmlnZW4gRkFRLUFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4gKGluIGRlbmVuIEZBUS1BcnRpa2VsIGFuZ2V6ZWlndCB3ZXJkZW4pIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQgZGVzIEZBUS1Kb3VybmFscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4gKGluIGRlbmVuIEZBUS1BcnRpa2VsIGFuZ2V6ZWlndCB3ZXJkZW4pIGbDvHIgZGllIFNtYWxsLUFuc2ljaHQgZGVzIEZBUS1PdmVyaWV3cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdGQVEgZHJ1Y2tlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ8OWZmZlbnRsaWNoZXMgRkFRIERydWNrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICfDlmZmZW50bGljaGUgRkFRIERldGFpbGFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ8OWZmZlbnRsaWNoZXMgRkFRIFN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICfDlmZmZW50bGljaGVzIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUXVldWUgZsO8ciBkaWUgRnJlaWdhYmUgdm9uIEZBUS1BcnRpa2Vsbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdHZXdpY2h0dW5nIGbDvHIgZGllIEJld2VydHVuZy4gRGVyIEtleSBtdXNzIGluIFByb3plbnQgYW5nZWdlYmVuIHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0ZBUSBkdXJjaHN1Y2hlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJ0ZBUSBkdXJjaHN1Y2hlbiAiS2xlaW4iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ0ZBUSBkdXJjaHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0F1c3dhaGwsIHdpZSB2aWVsZSBGQVEtQXJ0aWtlbCBpbiBkZXIgSm91cm5hbC3DnGJlcnNpY2h0ICJLbGVpbiIgc3RhbmRhcmRtw6TDn2lnIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ0F1c3dhaGwsIHdpZSB2aWVsZSBGQVEtQXJ0aWtlbCBpbiBkZXIgw5xiZXJzaWNodCAiS2xlaW4iIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnU2V0enQgZGllIG1heGltYWxlIEjDtmhlIChpbiBQaXhlbG4pIHZvbiBJbmxpbmUtSFRNTC1GZWxkZXIgaW4gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1NldHp0IGRpZSBtYXhpbWFsZSBIw7ZoZSAoaW4gUGl4ZWxuKSB2b24gSW5saW5lLUhUTUwtRmVsZGVyIGluIEN1c3RvbWVyRkFRWm9vbSAodW5kIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdTZXR6dCBkaWUgbWF4aW1hbGUgSMO2aGUgKGluIFBpeGVsbikgdm9uIElubGluZS1IVE1MLUZlbGRlciBpbiBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnU2V0enQgZGllIG1heGltYWxlIEjDtmhlIChpbiBQaXhlbG4pIHZvbiBJbmxpbmUtSFRNTC1GZWxkZXIgaW4gQ3VzdG9tZXJGQVFab29tICh1bmQgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnWmVpZ3QgZGllIFNjaGFsdGZsw6RjaGUgIkZBUS1MaW5rIGVpbmbDvGdlbiIgaW4gQWdlbnRGQVFab29tU21hbGwgZsO8ciDDtmZmZW50bGljaGUgRkFRLUFydGlrZWwgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBTY2hhbHRmbMOkY2hlICJGQVEtVGV4dCAmIExpbmsgZWluZsO8Z2VuIC8gS29tcGxldHRlIEZBUSAmIExpbmsgZWluZsO8Z2VuIiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmw7xyIMO2ZmZlbnRsaWNoZSBGQVEtQXJ0aWtlbCBhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBTY2hhbHRmbMOkY2hlICJGQVEtVGV4dCBlaW5mw7xnZW4gLyBLb21wbGV0dGUgRkFRIGVpbmbDvGdlbiIgaW4gQWdlbnRGQVFab29tU21hbGwgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ0hUTUwgRGFyc3RlbGx1bmcgZGVyIEZBUS1BcnRpa2VsIGVpbnNjaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdGQVEgUGZhZCBhbnplaWdlbiBqYS9uZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWdlIHVuZ8O8bHRpZ2UgRWludHLDpGdlIGltIEZBUS1FeHBsb3Jlci1FcmdlYm5pcyBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ0FydGlrZWwgYXVzIFN1YmthdGVnb3JpZW4gYW56ZWlnZW4gamEvbmVpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgTGFzdENoYW5nZSBGZWF0dXJlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0ludGVyZmFjZXMgaW4gZGVuZW4gZGFzIExhc3RDcmVhdGUgRmVhdHVyZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnWmVpZ3QgZGllIFN0ZXJuZSBmw7xyIGRpZSBBcnRpa2VsIG1pdCBlaW5lciBCZXdlcnR1bmcgZ2xlaWNoIG9kZXIgZ3LDtsOfZXIgd2llIGRlciBkZWZpbmllcnRlIFdlcnQgYW4gKFNldHplbiBTaWUgZGVuIFdlcnQgYXVmIFwnMFwnIHp1bSBEZWFrdGl2aWVyZW4gZGVyIEF1c2dhYmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgVG9wIDEwIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW50ZXJmYWNlcyBpbiBkZW5lbiBkYXMgVm90aW5nIEZlYXR1cmUgYW5nZXplaWd0IHdlcmRlbiBzb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW4gZGVyIE1lbnUtTGVpc3RlIGluIGRlciBab29tLUFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIGRlciBlcyBlcm3DtmdsaWNodCBlaW5lbiBGQVEtQXJ0aWtlbCBtaXQgYW5kZXJlbiBPYmpla3RlbiB6dSB2ZXJrbsO8cGZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgbMO2c2NoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgdW0gZGllIEhpc3RvcmllIGVpbmVzIEZBUS1BcnRpa2VscyBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbiBkZXIgTWVudS1MZWlzdGUgaW4gZGVyIFpvb20tQW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGVpbmVuIEZBUS1BcnRpa2VsIHp1IGJlYXJiZWl0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgenVyIHZvcmhlcmlnZW4gU2VpdGUgenVyw7xjayB6dSBnZWhlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGluIGRlciBNZW51LUxlaXN0ZSBpbiBkZXIgWm9vbS1BbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZWluZW4gRkFRLUFydGlrZWwgenUgZHJ1Y2tlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdMw7ZzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTeW1wdG9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ051ciBUZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ1N0YW5kYXJkLVNwcmFjaGUgZsO8ciBwYXNzZW5kZSBGQVEtQXJ0aWtlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRGVyIElkZW50aWZpa2F0b3IgZsO8ciBlaW5lbiBGQVEtQXJ0aWtlbCwgei4gQi4gRkFRIywgS0IjLCBNeUZBUSMuIERlciBTdGFuZGFyZHdlcnQgaXN0IEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ05vcm1hbFwnIG1pdCBhbmRlcmVuIFwnRkFRXCctT2JqZWt0ZW4gdmVybGlua3Qgd2VyZGVuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0LCBkYXNzIGVpbiBcJ0ZBUVwnLU9iamVrdGUgbWl0IGRlbSBMaW5rdHlwIFwnUGFyZW50Q2hpbGRcJyBtaXQgYW5kZXJlbiBcJ0ZBUVwnLU9iamVrdGVuIHZlcmxpbmt0IHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdEZWZpbmllcnQsIGRhc3MgZWluIFwnRkFRXCctT2JqZWt0ZSBtaXQgZGVtIExpbmt0eXAgXCdOb3JtYWxcJyBtaXQgYW5kZXJlbiBcJ1RpY2tldFwnLU9iamVrdGVuIHZlcmxpbmt0IHdlcmRlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgZGFzcyBlaW4gXCdGQVFcJy1PYmpla3RlIG1pdCBkZW0gTGlua3R5cCBcJ1BhcmVudENoaWxkXCcgbWl0IGFuZGVyZW4gXCdUaWNrZXRcJy1PYmpla3RlbiB2ZXJsaW5rdCB3ZXJkZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JvZHkgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0JldHJlZmYgZGVzIFRpY2tldHMgenVyIEZyZWlnYWJlIGVpbmVzIEZBUS1BcnRpa2Vscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ1dlcmt6ZXVnbGVpc3RlbmVpbnRyYWcgZsO8ciBkZW4gU2NobmVsbHp1Z3JpZmYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm4gKEt1bmRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChBZ2VudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnw7ZmZmVudGxpY2ggKEFsbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ8O2ZmZlbnRsaWNoICjDtmZmZW50bGljaCknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0dCX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGQgRkFRIEFydGljbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdLZXl3b3Jkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXBwcm92YWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0FkZCBGQVEgQ2F0ZWdvcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdFZGl0IEZBUSBDYXRlZ29yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBZGQgY2F0ZWdvcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnQWRkIENhdGVnb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZGl0IENhdGVnb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcnkgb2YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEgRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUXVpY2sgU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0FkdmFuY2VkIFNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdGQVEgQXJ0aWNsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdObyBzdWJjYXRlZ29yaWVzIGZvdW5kLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yeSBvZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3J5IENvbnRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnQWRkIEZBUSBMYW5ndWFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXQgRkFRIExhbmd1YWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQWRkIGxhbmd1YWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0FkZCBMYW5ndWFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdCBMYW5ndWFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdDb250ZXh0IFNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdObyBGQVEgZGF0YSBmb3VuZC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ291dCBvZiA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ0tleXdvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1ZvdGUgKGUuZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdSYXRlIChlLmcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0FwcHJvdmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0xhc3QgY2hhbmdlZCBieSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVFGdWxsdGV4dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBTZWFyY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdQcm9maWxlIFNlbGVjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVm90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnTm8gdm90ZSBzZXR0aW5ncyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1NwZWNpZmljIHZvdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ2UuZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdSYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdObyByYXRlIHNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdTcGVjaWZpYyByYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnZS5nLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFRIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1JhdGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1ZvdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ05vIHZvdGVzIGZvdW5kISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRG93bmxvYWQgQXR0YWNobWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgeW91ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ25vdCBoZWxwZnVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3ZlcnkgaGVscGZ1bCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJ0IEZBUSBUZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0luc2VydCBGdWxsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcnQgRkFRIExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc2VydCBGQVEgVGV4dCAmIExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0luc2VydCBGdWxsIEZBUSAmIExpbmsnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdObyBGQVEgYXJ0aWNsZXMgZm91bmQuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1ZvdGUgcmVzdHJpY3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmF0ZSByZXN0cmljdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnVGltZSByZXN0cmljdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ0FydGljbGUgTnVtYmVyPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1B1YmxpYyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnQmFjayB0byBGQVEgRXhwbG9yZXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJ1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUSBjYXRlZ29yeSB1cGRhdGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFRIGNhdGVnb3J5IGFkZGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdEZWxldGUgQ2F0ZWdvcnknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICdUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0ZBUSBIaXN0b3J5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRkFRIEpvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0ZBUSBsYW5ndWFnZSB1cGRhdGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFRIGxhbmd1YWdlIGFkZGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdEZWxldGUgTGFuZ3VhZ2UgJSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnUmVzdWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnTGFzdCB1cGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnRkFRIER5bmFtaWMgRmllbGRzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdObyAlcyBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05vIFJlc3VsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnTGFzdCBDaGFuZ2VkIGJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUaGFua3MgZm9yIHlvdXIgdm90ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ05vIHJhdGUgc2VsZWN0ZWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVEgQXJ0aWNsZSBQcmludCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUUZ1bGx0ZXh0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gQ3VzdG9tZXIgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gUHVibGljICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdUaGlzIGFydGljbGUgaXMgZW1wdHkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBGQVEgYXJ0aWNsZXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmxpYyc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09LJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdBZGQgRkFRIGFydGljbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDU1MgY29sb3VyIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ0NhY2hlIFRpbWUgdG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0NhdGVnb3J5IE1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ0N1c3RvbWVyIEZBUSBQcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ0N1c3RvbWVyIEZBUSBab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ0N1c3RvbWVyIEZBUSBzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICdDdXN0b21lciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGlsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZWQgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdEZWxldGUgdGhpcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXQgdGhpcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCBSZXNwb25kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnRkFRIEFyZWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnRkFRIEFyZWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnRkFRIERlbGV0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRkFRIEVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICdGQVEgUHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0ZpZWxkNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdGaWVsZDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGdWxsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3Rvcnkgb2YgdGhpcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGFuIEZBUSBiYXNlZCBUaWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGFuIEZBUSBiYXNlZCBUaWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0xhbmd1YWdlIE1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGNpaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIGh0ZXkgZ2V0IHB1Ymxpc2hlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdQcmludCB0aGlzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ1B1YmxpYyBGQVEgUHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdQdWJsaWMgRkFRIFpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ1B1YmxpYyBGQVEgc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ1B1YmxpYyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdTZWFyY2ggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdTaG93IEZBUSBwYXRoIHllcy9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdTb2x1dGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU3ltcHRvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdUZXh0IE9ubHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5hbCAoY3VzdG9tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5hbCAoYWdlbnQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3B1YmxpYyAoYWxsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdwdWJsaWMgKHB1YmxpYyknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBw7FhZGlyIGFydMOtY3VsbyBhIGxhcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnUGFsYWJyYXMgY2xhdmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnU2UgcmVxdWllcmUgdW5hIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXByb2JhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gbGFzIGNhdGVnb3LDrWFzIGRlIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0FncmVnYXIgY2F0ZWdvcsOtYSBhIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdFZGl0YXIgY2F0ZWdvcsOtYSBkZSBsYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0HDsWFkaXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBw7FhZGlyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VkaXRhciBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcsOtYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1BvciBmYXZvciwgc2VsZWNjaW9uZSBhbCBtZW5vcyB1biBncnVwbyBkZSBwZXJtaXNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cG9zIGRlIGFnZW50ZXMgcXVlIHB1ZWRlbiBhY2NlZGVyIGEgbG9zIGFydMOtY3Vsb3MgZGUgZXN0YSBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZSBtb3N0cmFyw6EgY29tbyBjb21lbnRhcmlvIGVuIGVsIGV4cGxvcmFkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICfCv1JlYWxtZW50ZSBkZXNlYSBlbGltaW5hciBlc3RhIGNhdGVnb3LDrWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTm8gcHVlZGUgYm9ycmFyIGVzdGEgY2F0ZWdvcsOtYS4gRXN0w6Egc2llbmRvIHVzYWRhIHBvciBhbCBtZW5vcyB1biBhcnTDrWN1bG8gRkFRIHkvbyBlcyBwYWRyZSBkZSBhbCBtZW5vcyBvdHJhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXN0w6Egc2llbmRvIHVzYWRhIHBvciBsb3Mgc2lndWllbnRlcyBhcnTDrWN1bG9zIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3LDrWEgZXMgcGFkcmUgZGUgbGFzIHNpZ3VpZW50ZXMgc3ViY2F0ZWdvcsOtYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0ZSBhcnTDrWN1bG8gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmFkb3IgZGUgbGFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgcsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnRXN0YSBwZXJtaXRpZG8gbG9zIGNvbW9kaW5lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIGF2YW56YWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnTDrWN1bG9zIGRlIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBzdWJjYXRlZ29yw61hcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0hpc3RvcmlhbCBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW5pZG8gZGVsIGhpc3RvcmlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRmVjaGEgZGUgQ3JlYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGVuIGVsIERpYXJpbyBkZSBsYXMgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBJZGlvbWFzIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnQcOxYWRpciBsZW5ndWFqZSBQcmVndW50YXMgRnJlY3VlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXRhciBsZW5ndWFqZSBQcmVndW50YXMgRnJlY3VlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdVdGlsaXphIGVzdGEgZnVuY2nDs24gc2kgZGVzZWFzIHRyYWJhamFyIGNvbiB2YXJpb3MgaWRpb21hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQcOxYWRpciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnQcOxYWRpciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkaXRhciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ8K/UmVhbG1lbnRlIGRlc2VhIGVsaW1pbmFyIGVzdGUgaWRpb21hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdObyBwdWVkZSBib3JyYXIgZXN0ZSBpZGlvbWEuIMKhRXN0w6Egc2llbmRvIHVzYWRvIHBvciBhbCBtZW5vcyB1biBhcnTDrWN1bG8gZGUgbGFzIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdFc3RlIGlkaW9tYSBlc3RhIHNpZW5kbyB1c2FkbyBwb3IgbG9zIHNpZ3VpZW50ZXMgQXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBanVzdGVzIGRlIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydMOtY3Vsb3MgRkFRIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGRlIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnUGFsYWJyYSBjbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90YSAoZWptLiBJZ3VhbCBhIDEwIG8gbWF5b3IgYSA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnUHVudMO6YSAoRWptLiBJZ3VhbCBhIDI1JSBvIG1heW9yIGEgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0Fwcm9iYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1VsdGltbyBjYW1iaW8gcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnVGllbXBvIGRlIENyZWFjacOzbiBkZSBBcnTDrWN1bG9zIEZBUSAoYW50ZXMgLyBkZXNwdcOpcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnVGllbXBvIGRlIENyZWFjacOzbiBkZWwgQXJ0aWN1bG8gRkFRIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdUaWVtcG8gZGUgQWN0dWFsaXphY2nDs24gZGVsIEFydGljdWxvIEZBUSAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBBY3R1YWxpemFjacOzbiBkZWwgQXJ0aWN1bG8gRkFRIChlbnRyZSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnVGV4dG8gY29tcGxldG8gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1NlbGVjY2nDs24gZGUgcGVyZmlsICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnU2luIGFqdXN0ZXMgZGUgVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1ZvdG9zIGVzcGVjw61maWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdFai4gSWd1YWwgYSAxMCBvIG1heW9yIGEgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ1B1bnR1YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdTaW4gYWp1c3RlcyBkZSBwdW50dWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnUHVudHVhY2nDs24gZXNwZWPDrWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdlam06IElndWFsIGEgMjUlIG8gbWF5b3IgcXVlIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGVsIEFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdUaWVtcG8gZGUgQWN0dWFsaXphY2nDs24gZGVsIEFydMOtY3VsbyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRlIGxhcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnUHVudHVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfCoU5vIHNlIGVuY29udHLDsyBuaW5nw7puIHZvdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdObyBzZSBlbmNvbnRyw7MgbmluZ8O6biB2b3RvLiBTZWEgZWwgcHJpbWVybyBlbiB2YWxvcmFyIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRGVzY2FyZ2FyIEFyY2hpdm8gYWRqdW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ1BhcmEgYWJyaXIgbGlua3MgZW4gbG9zIHNpZ3VpZW50ZXMgYmxvcXVlcyBkZSBkZXNjcmlwY2nDs24sIHBvZHJpYSBuZWNlc2l0YXIgcHJlc2lvbmFyIGxhIHRlY2xhcyBDdHJsLCBDbWQgbyBTaGlmdCBtaWVudHJhcyBwcmVzaW9uYSBlbCBsaW5rIChkZXBlbmRlIGRlbCBicm93c2VyIHkgZWwgU08pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnwr9RdcOpIHRhbiDDunRpbCBmdWUgZXN0ZSBhcnTDrWN1bG8/IFBvciBmYXZvciBkw6lub3Mgc3UgY2FsaWZpY2FjacOzbiB5IGF5dWRlIGEgbWVqb3JhciBsYSBiYXNlIGRlIGRhdG9zIGRlIGxhcyBGQVEuIMKhR3JhY2lhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdwb2NvIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ211eSDDunRpbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnQWdyZWdhciB0aXR1bG8gZGUgRkFRIGEgYXN1bnRvIGRlbCBhcnTDrWN1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJ0YXIgVGV4dG8gZGUgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0luc2VydGFyIEZBUSBjb21wbGV0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5zZXJ0YXIgRW5sYWNlIGEgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcnRhciB0ZXh0byB5IGVubGFjZSBhIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJ0YXIgRkFRIGNvbXBsZXRhcyB5IGVubGFjZSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGFydMOtY3Vsb3MgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnRXN0byBwb2Ryw61hIHNlciDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTm8gc2UgZW5jb250cmF0b24gcmVjdXJzb3Mgw7p0aWxlcyBwYXJhIGVsIHRlbWEgeSBlbCB0ZXh0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ0VzY3JpYmEgdW4gdGVtYSBvIHRleHRvIHBhcmEgb2J0ZW5lciB1bmEgbGlzdGEgZGUgcmVjdXJzb3Mgw7p0aWxlcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0LDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0byBlbiBhcnTDrWN1bG9zIEZBUSAoZWo6ICJKb2huKm4iIG8gIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljY2lvbmVzIGRlIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ1PDs2xvIGxvcyBhcnTDrWN1bG9zIEZBUSBjb24gdm90b3MuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljY2lvbmVzIGRlIHB1bnR1YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ1PDs2xvIGxvcyBhcnTDrWN1bG9zIEZBUSBjb24gY2FsaWZpY2FjacOzbi4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgdGllbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdTw7NsbyBBcnTDrWN1bG9zIEZBUSBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ1PDs2xvIEFydMOtY3Vsb3MgRkFRIGNyZWFkb3MgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnwr9QZXJmaWwgZGUgQsO6c3F1ZWRhIGNvbW8gUGxhbnRpbGxhPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgQXJ0w61jdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQnVzY2FyIGFydMOtY3Vsb3MgY29uIGxhIHBhbGFicmEgY2xhdmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1ZvbHZlciBhIGV4cGxvcmFkb3IgZGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfCoU5lY2VzaXRhcyBlbCBwZXJtaXNvIHJ3ICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ8KhTm8gc2UgZW5jb250cmFyb24gY2F0ZWdvcsOtYXMgZG9uZGUgZWwgdXN1YXJpbyB0ZW5nYSBwZXJtaXNvcyBkZSBsZWN0dXJhIC8gZXNjcml0dXJhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdObyBzZSBoYSBlbmNvbnRyYWRvIG5pbmfDum4gaWRpb21hIHByZWRldGVybWluYWRvIHkgbm8gc2UgcHVlZGUgY3JlYXIgdW5vIG51ZXZvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ8KhU2UgbmVjZXNpdGEgbGEgQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnwqFMYXMgY2F0ZWdvcsOtYXMgZGViZW4gdGVuZXIgdW4gbm9tYnJlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ8KhRXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gbmluZ8O6bmEgQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnwqFObyBzZSBwdWRvIGVsaW1pbmFyIGxhIGNhdGVnb3LDrWEgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ8KhQ2F0ZWdvcsOtYSBkZSBsYXMgRkFRIGFjdHVhbGl6YWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnwqFDYXRlZ29yw61hIGRlIGxhcyBGQVEgYcOxYWRpZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0JvcnJhciBjYXRlZ29yw61hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBuaW5nw7puICBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnwqFObyB0aWVuZSBwZXJtaXNvIHBhcmEgZXN0YSBjYXRlZ29yw61hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICfCoU5vIHNlIHB1ZG8gZWxpbWluYXIgZWwgYXJ0w61jdWxvIGRlIGxhcyBGQVEgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0xhIENhdGVnb3J5SUQgJXMgbm8gZXMgdmFsaWRhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgeWEgcXVlIG5vIHNlIGhhIHByb3BvcmNpb25hZG8gbmluZ8O6biBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnSGlzdG9yaWFsIGRlIGxhcyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdEaWFyaW8gZGUgbGFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICdOZWNlc2l0YSB1bmEgb3BjacOzbiBkZSBjb25maWd1cmFjacOzbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICfCoUxhIG9wY2nDs24gZGUgY29uZmlndXJhY2nDs24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVjZXNpdGEgIHNlciB1biByZWZlcmVuY2lhIEhBU0ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnwqFObyBzZSBoYSBlbmNvbnRyYWRvIG5pbmd1bmEgb3Bjw7NuIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgbGEgdmlzdGEgIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIExhbmd1YWplSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ8KhU2UgcmVxdWllcmUgZWwgbm9tYnJlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ8KhRXN0ZSBpZGlvbWEgeWEgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICfCoU5vIHNlIHB1ZG8gZWxpbWluYXIgZWwgaWRpb21hICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfCoUlkaW9tYSBkZSBsYXMgRkFRIGFjdHVhbGl6YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnwqFJZGlvbWEgZGUgbGFzIEZBUSBhw7FhZGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnQm9ycmFyIElkaW9tYSAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnUmVzdWx0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnVWx0aW1hIGFjdHVhbGl6YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NhbXBvcyBEaW7DoW1pY29zIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBpbmRpY2EgZWwgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ8KhTm8gc2UgcHVlZGUgY2FyZ2FyIExhbmd1YWplT2JqZWN0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfCoVNpbiByZXN1bHRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnVWx0aW1vIGNhbWJpbyBwb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdBcnRpY3VsbyBkZSBsYXMgRkFRIGNyZWFkbyAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0FydGljdWxvIGRlIGxhcyBGQVEgY3JlYWRvIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdBcnRpY3VsbyBkZSBsYXMgRkFRIG1vZGlmaWNhZG8gKGFudGVzL2Rlc3B1w6lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdBcnRpY3VsbyBkZSBsYXMgRkFRIG1vZGlmaWNhZG8gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdJZ3VhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdNYXlvciBxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ01heW9yIHF1ZSBpZ3VhbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ01lbm9yIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTWVub3IgcXVlIGlndWFsZXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnwqFOZWNlc2l0YSBGaWxlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ8KhR3JhY2lhcyBwb3Igc3Ugdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfCoVVzdGVkIHlhIGhhIHZvdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfCoU5vIHNlIGhhIHNlbGVjY2lvbmFkbyBuaW5ndW5hIHB1bnR1YWNpw7NuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICfCoUVsIG1lY2FuaXNtbyBkZSB2b3RhY2nDs24gbm8gZXN0w6EgaGFiaWxpdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICfCoUxhIHRhc2EgZGUgdm90YWNpw7NuIG5vIGVzdMOhIGRlZmluaWRhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdJbXByaW1pciBlbCBhcnTDrWN1bG8gZGUgbGFzIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ0NyZWFkbyBlbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfCoU5lY2VzaXRhIEl0ZW1JRCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydMOtY3Vsb3MgZGUgbGFzIEZBUSAgKG51ZXZvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydMOtY3Vsb3MgZGUgbGFzIEZBUSAgKG1vZGlmaWNhZG9zIHJlY2llbnRlbWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydMOtY3Vsb3MgZGUgbGFzIEZBUSAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2luYWRvIGVsIHRpcG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ8KhRWwgdGlwbyBkZWJlIHNlciBMYXN0Q3JlYXRlIG8gTGFzdENoYW5nZSBvIFRvcDEwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ8KhTm8gc2UgcHVlZGUgY3JlYXIgYXJjaGl2byBSU1MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChUZXh0byBjb21wbGV0byBGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBDbGllbnRlICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBDbGllbnRlIChUZXh0byBjb21wbGV0byBGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIFB1YmxpY28gKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBQdWJsaWNvIChUZXh0byBjb21wbGV0byBGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ8KhTmVjZXNpdGEgdGFzYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ8KhRXN0ZSBhcnTDrWN1bG8gZXN0YSB2YWPDrW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ8OabHRpbW9zIGFydMOtY3Vsb3MgZGUgbGFzIEZBUSBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ8OabHRpbW9zIGFydMOtY3Vsb3MgZGUgbGFzIEZBUSBtb2RpZmljYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGRlIGxvcyBhcnTDrWN1bG9zIGRlIGxhcyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwbyBkZSBjb250ZW5pZG8nOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnQWNlcHRhcic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ0ZpbHRybyBwYXJhIGVsIEhUTUwgcmVzdWx0YW50ZSBwYXJhIGHDsWFkaXIgZW5sYWNlcyBhIHVuYSBjYWRlbmEgZGV0ZXJtaW5hZGEuIEVsIGVsZW1lbnRvIEltYWdlbiBjb250ZW1wbGEgZG9zIHRpcG9zIGRlIHJlZ2lzdHJvcy4gRWwgcHJpbWVybyBlcyBlbCBub21icmUgZGUgdW5hIGltYWdlbiAocG9yIGVqZW1wbG8gZmFxLnBuZykuIEVuIGVzdGUgY2FzbyBzZSB1dGlsaXphcsOhIGxhIHJ1dGEgZGUgaW3DoWdlbmVzIGRlIE9UUlMuIExhIHNlZ3VuZGEgcG9zaWJpbGlkYWQgZXMgaW5zZXJ0YXIgZWwgZW5sYWNlIGEgbGEgaW1hZ2VuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnQcOxYWRpciBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ29sb3IgQ1NTIHBhcmEgZWwgcmVzdWx0YWRvIGRlIGxhIHZvdGFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ1RpZW1wbyBkZSB2aWRhIGRlIGxhIGNhY2jDqSBwYXJhIGxvcyBlbGVtZW50b3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgbGFzIENhdGVnb3LDrWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnR2VzdGnDs24gZGUgY2F0ZWdvcsOtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ0ltcHJpbWlyIEZBUSBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICdBcnTDrWN1bG9zIHJlbGFjaW9uYWRvcyBjb24gbGFzIHByZWd1bnRhcyBmcmVjdWVudGVzIGRlbCBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJ0FydMOtY3Vsb3MgcmVsYWNpb25hZG9zIGNvbiBsYXMgcHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ1Zpc3RhIGRldGFsbGFkYSBkZSBsYXMgRkFRIGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ0J1c2NhciBGQVEgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICdGQVEgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ07Dum1lcm8gZGUgZGVjaW1hbGVzIHBhcmEgZWwgcmVzdWx0YWRvIGRlIGxhIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnTm9tYnJlIHByZWRldGVybWluYWRvIGRlIGxhIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdJZGlvbWEgcG9yIG9taXNpw7NuIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIG1vZG8gaWRpb21hIMO6bmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gcG9yIGRlZmVjdG8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaW9yaWRhZCBwb3Igb21pc2nDs24gZGUgbG9zIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcG9yIG9taXNpw7NuIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRXN0YWRvIHBvciBvbWlzacOzbiBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVGlwbyBwb3IgZGVmZWN0byBkZSB0aWNrZXRzIHBhcmEgYXByb2JhY2nDs24gZGUgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdWYWxvciBwb3Igb21pc2nDs24gcGFyYSBlbCBwYXLDoW1ldHJvICJBY3Rpb24iIHBhcmEgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEVsIHBhcsOhbWV0cm8gIkFjdGlvbiIgc2UgdXNhIGVuIGxvcyAic2NyaXB0cyIgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmlyIGFjY2lvbmVzIGRvbmRlIGVzdMOhIGRpc3BvbmlibGUgdW4gYm90w7NuIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBlc3RhcyBhY2Npb25lcyBkZWJlbiBoYWJlciByZWdpc3RyYWRvIGxvcyBzaWd1aWVudGVzIGFyY2hpdm9zIEpTIHkgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB5IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdEZXRlcm1pbmEgc2kgZWwgdMOtdHVsbyBkZSBGQVEgZGViZSBzZXIgY29uY2F0ZW5hZG8gYWwgYXN1bnRvIGRlbCBhcnTDrWN1bG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBjdWFsZXMgY29sdW1uYXMgc2Vyw6FuIG1vc3RyYWRhcyBlbiBlbCAid2lkZ2V0IiBkZSBGQVEgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RhOiBTb2xhbWVudGUgYXRyaWJ1dG9zIGRlIEZBUSB5IGNhbXBvcyBkaW7DoW1pY29zIChEeW5hbWljRmllbGRfTm9tYnJlWCkgc29uIHBlcm1pdGlkb3MgcGFyYSBjb2x1bW5hcyBwb3Igb21pc2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIERpYXJpbyBkZSBsYXMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB2aXN0YSBwcmV2aWEgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIHVuIGxpc3RhZG8gZGUgRkFRcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gdW5hIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RFZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBGQVEgcXVlIHNlIHVzYXLDoSBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsYXMgRkFRIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogTG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3MgbcOhcyByZWNpZW50ZXMgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyBtw6FzIHJlY2llbnRlcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBjbGllbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIMO6bHRpbW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIEZBUSBhIG1vc3RyYXIgcG9yIG9taXNpw7NuIHBhcmEgbGEgcGFudGFsbGEgZGUgYnVzcXVlZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdEZWZpbmUgbGEgaW5mb3JtYWNpw7NuIGEgc2VyIGluc2VydGFkYSBlbiB1biB0aWNrZXQgYmFzYWRvIGVuIHVuYSBGQVEuICJGQVEgQ29tcGxldGEiIGluY2x1eWUgdGV4dG8sIGFyY2hpdm9zIGFkanVudG9zIGUgaW3DoWdlbmVzIGVuIGxpbmVhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBhcmFtZXRyb3MgcGFyYSBlbCBiYWNrZW5kIGRlbCBwYW5lbCBwcmluY2lwYWwuICJMaW1pdGUiIGVzIGVsIG7Dum1lcm8gZGUgZW50cmFkYSBtb3N0cmFkYXMgcG9yIGRlZmVjdG8uICJHcnVwbyIgZXMgdXNhZG8gcGFyYSByZXN0cmluZ2lyIGVsIGFjY2VzbyBhbCBwbHVnaW4gKEVqLiBHcnVwbzogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmZWN0byIgZGV0ZXJtaW5hIHNpIGVsIHBsdWdpbiBlcyBoYWJpbGl0YWRvIHBvciBkZWZlY3RvIG8gc2kgZWwgdXN1YXJpbyBuZWNlc2l0YSBoYWJpbGl0YXJsbyBtYW51YWxtZW50ZS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgRXhwbG9yYWRvciBkZSBGQVEuIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG9zIGVuIGxhIHBvc2ljacOzbiBkZSBsYXMgY29sdW1uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCBEaWFyaW8gZGUgbGFzIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gbGEgYsO6c3F1ZWRhIGRlIEZBUS4gRXN0YSBvcGNpw7NuIG5vIHRpZW5lIGVmZWN0b3MgZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdEZWZpbmUgZG9uZGUgc2Vyw6EgbW9zdHJhZG8gZWwgbGluayBcJ0luc2VydGFyIEZBUVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICdEZWZpbmljacOzbiBkZWwgY2FtcG8gwqt0ZXh0byBsaWJyZcK7IHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdCb3JyYXIgZXN0ZSBhcnTDrWN1bG8gZGUgbGFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBhw7FhZGlyIFByZWd1bnRhcyBGcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGHDsWFkaXIgUHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIHJlc3VtZW4gZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgcmVzdW1lbiBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBpbXByZXNpw7NuIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBpbXByZXNpw7NuIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGltcHJlc2nDs24gZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSByZXN1bWVuIGRlIGZvcm1hdG8gcmVkdWNpZG8gZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGV0YWxsZSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZXRhbGxlIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgZGV0YWxsZSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBtw7psdGlwbGVzIGlkaW9tYXMgZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgY2FyYWN0ZXLDrXN0aWNhIGFydMOtY3VsbyByZWxhY2lvbmFkbyBwYXJhIGxhIHBhbnRhbGxhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnSGFiaWxpdGFyIGVsIG1lY2FuaXNtbyBkZSB2b3RhY2nDs24gZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3JhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJ1Jlc3BvbmRlZG9yIEFKQVggZGUgIFByZWd1bnRhcyBmcmVjdWVudGVzICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ1Jlc3BvbmRlZG9yIEFKQVggcGFyYSBSaWNodGV4dCBkZSBQcmVndW50YXMgZnJlY3VlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ8OBcmVhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICfDgXJlYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnQm9ycmFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnRWRpdGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnSGlzdG9yaWFsIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIGVsIERpYXJpbyBkZSBsYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgwqtwZXF1ZcOxYcK7IGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRW5jYW1pbmFkb3IgcGFyYSBsYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0NhbXBvNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdDYW1wbzUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVEgY29tcGxldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBvIHBhcmEgbGEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnSGlzdG9yaWEgZGUgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBlbiBsb3MgdGlja2V0cyBiYXNhZG9zIGVuIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGVsIG5vbWJyZSBkZSBjYWRhIGNhbXBvIGVuIGxvcyB0aWNrZXRzIGJhc2Fkb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgZG9uZGUgZGViZXLDoSBzZXIgbW9zdHJhZGEgbGEgYsO6c3F1ZWRhIHLDoXBpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdEaWFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIElkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICdHZXN0acOzbiBkZWwgbGVuZ3VhamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnTMOtbWl0ZSBsYSBiw7pzcXVlZGEgcGFyYSBjcmVhciBsYSBsaXN0YSBkZSBwYWxhYnJhcyBjbGF2ZSBkZSBsYSBsaXN0YSBhcnTDrWN1bG8gZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0VubGF6YXIgb3RybyBvYmplY3RvIGEgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnTGlzdGEgZGUgbm9tYnJlcyBkZSBjb2xhcyBwYXJhIGxvcyBxdWUgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlIGFydMOtY3VsbyByZWxhY2lvbmFkbyBlc3TDoSBoYWJpbGl0YWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkZSB0aXBvcyBkZSBlc3RhZG8gcXVlIHB1ZWRlbiBzZXIgdXNhZG9zIGVuIGxhIGludGVyZmFjZSBkZSBhZ2VudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkZSB0aXBvcyBkZSBlc3RhZG8gcXVlIHB1ZWRlbiBzZXIgdXNhZG9zIGVuIGxhIGludGVyZmFjZSBkZSBjbGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGRlIHRpcG9zIGRlIGVzdGFkbyBxdWUgcHVlZGVuIHNlciB1c2Fkb3MgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gY2FyZ2Fkb3IgcGFyYSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxvcyByZXN1bHRhZG9zIGRlbCBleHBsb3JhZG9yIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIGRlIGxhcyAgRkFRIGEgbW9zdHJhciBlbiBlbCBEaWFyaW8gZGUgbGFzIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBjb21vIHJlc3VsdGFkbyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGUgYWdlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIGRlIGNsaWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgYnVzY2Fkb3IgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZSBhZ2VudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgYnVzY2Fkb3IgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBkZSBjbGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZSBsb3MgdMOtdHVsb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBidXNjYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlIGxvcyB0w610dWxvcyBlbiB1biBhcnTDrWN1bG8gRkFRIHF1ZSBzZXJhIG1vc3RyYWRvIGVuIGVsIERpYXJpbyBkZSBsYXMgRkFRLCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBnZW5lcmFyIGVsIHBlcmZpbCBkZSBIVE1MIE9wZW5TZWFyY2ggcGFyYSBsYSBiw7pzcXVlZGEgZGUgcHJlZ3VudGFzIGZyZWN1ZW50ZXMgZW4gbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlIGxvcyB0w610dWxvcyBlbiB1biBhcnTDrWN1bG8gRkFRIGEgc2VyIG1vc3RyYWRvIGVuIGVsIGpvdXJuYWwgZGUgRkFRIGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgUGVyZmlsIGh0bWwgZGUgT3BlblNlYXJjaCBwYXJhIGLDunNxdWVkYSBkZSBwcmVndW50YXMgZnJlY3VlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJ051ZXZvIGFydMOtY3VsbyBkZSBQcmVndW50YXMgZnJlY3VlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTG9zIG51ZXZvcyBhcnTDrWN1bG9zIEZBUSByZXF1aWVyZW4gYXByb2JhY2nDs24gYW50ZXMgZGUgcHVibGljYXJzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gY2FkYSBww6FnaW5hIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBjYWRhIHDDoWdpbmEgZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY2FtYmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY3JlYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gZWwgVG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnRmlsdHJvIGRlIHNhbGlkYSBwYXJhIGFncmVnYXIgSmF2YS1zY3JpcHQgIGEgbGEgcGFudGFsbGEgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdMw61taXRlIGRlIHNhbGlkYSBwYXJhIGFydMOtY3Vsb3MgZGUgcHJlZ3VudGFzIGZyZWN1ZW50ZXMgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlIGxhcyBww6FnaW5hcyAoZW4gbGFzIHF1ZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIEZBUSkgZGUgbGEgdmlzdGEgZ2VuZXJhbCBwZXF1ZcOxYSBkZWwgRGlhcmlvIGRlIGxhcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZSBsYXMgcMOhZ2luYXMgKGVuIGxhcyBxdWUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBGQVEpIGRlIGxhIHZpc3RhIGdlbmVyYWwgZGUgRkFRIHBlcXVlw7FhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ0ltcHJpbWlyIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRIHB1YmxpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnVmlzdGEgZGV0YWxsYWRhIGRlIGxhcyBGQVEgUHVibGljYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ0J1c2NhciBGQVEgUHVibGljYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnRkFRIFB1YmxpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGaWxhIHBhcmEgbGEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1BvbmRlcmFjacOzbiBwYXJhIGxhIHZvdGFjacOzbi4gTGEgY2xhdmUgZGViZSBleHByZXNhcnNlIGVuIHBvcmNlbnRhamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdCw7pzcXVlZGEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnQsO6c3F1ZWRhIHBlcXVlw7FhIGRlIFByZWd1bnRhcyBmcmVjdWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ0LDunNxdWVkYSBkZSBQcmVndW50YXMgZnJlY3VlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgY3XDoW50b3MgZWxlbWVudG9zIHNlIGRlYmVuIG1vc3RyYXIgZW4gbGEgRGVzY3JpcGNpw7NuIGdlbmVyYWwgZGUgbGEgcmV2aXN0YSAiUGVxdWXDsW8iIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgY3XDoW50b3MgZWxlbWVudG9zIHNlIGRlYmVuIG1vc3RyYXIgZW4gZWwgcmVzdW1lbiAiUGVxdWXDsW8iIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBwcmVkZXRlcm1pbmFkYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEFnZW50RkFRWm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIHByZWRldGVybWluYWRhIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQ3VzdG9tZXJGQVFab29tICh5IFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBtw6F4aW1hIChlbiBww614ZWxlcykgZGUgbG9zIGNhbXBvcyBIVE1MIMKraW5saW5lwrsgZGUgQWdlbnRGQVFab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgbcOheGltYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEN1c3RvbWVyRkFRWm9vbSAoeSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMOzbiDCq0luc2VydGFyIGVubGFjZSBhIEZBUcK7IGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciB0ZXh0byB5IGVubGFjZSBhIEZBUcK7IC8gwqtJbnNlcnRhciBGQVEgY29tcGxldG8geSBlbmxhY2XCuyBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIEFydMOtY3Vsb3MgRkFRIHDDumJsaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90w7NuIMKrSW5zZXJ0YXIgdGV4dG8gRkFRwrsgLyDCq0luc2VydGFyIEZBUSBjb21wbGV0b8K7IGVuIEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfCv01vc3RyYXIgY29udGVuaWRvIEhUTUwgZW4gbG9zIGFydMOtY3Vsb3MgRkFRPy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnwr9Nb3N0cmFyIGxhIHJ1dGEgZGUgbGEgRkFRPyBzw60vbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhciBlbGVtZW50b3Mgbm8gdsOhbGlkb3MgZW4gZWwgcmVzdWx0YWRvIGRlbCBFeHBsb3JhZG9yIGRlIGxhcyBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ8K/TW9zdHJhciBsb3MgZWxlbWVudG9zIGRlIGxhcyBzdWJjYXRlZ29yw61hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBhY3R1YWxpemFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICdNb3N0cmFyIGxhcyBlc3RyZWxsYXMgcGFyYSBsb3MgYXJ0w61jdWxvcyBjb24gdW5hIGNhbGlmaWNhY2nDs24gaWd1YWwgbyBzdXBlcmlvciBhbCB2YWxvciBkZWZpbmlkbyAoYWp1c3RlIGVsIHZhbG9yIFwnMFwnIHBhcmEgZGVzYWN0aXZhciBsYSBzYWxpZGEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3MgYXJ0w61jdWxvcyBUb3AgMTAgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsYSB2b3RhY2nDs24gZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIGVubGF6YXIgYSB1biBhcnTDrWN1bG8gRkFRIGNvbiBvdHJvIG9iamV0byBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBlc2EgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgYm9ycmFyIHVuIGFydMOtY3VsbyBGQVEgZW4gbGEgdmlzdGEgYW1wbGlhZGEgZGUgZXNhIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBhbXBsaWFkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBhbXBsaWFkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSByZXRyb2NlZGVyIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBzdSB2aXN0YSBhbXBsaWFkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHVjacOzbiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1PDrW50b21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ1NvbG8gdGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnTG9zIGxlbmd1YWplcyBwb3IgZGUgZGVmZWN0byBkZSBsb3MgYXJ0w61jdWxvcyByZWxhY2lvbmFkb3MgZGUgUHJlZ3VudGFzIGZyZWN1ZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgcGFyYSB1bmEgRkFRLCBwb3IgZWplbXBsbyBGQVEjLCBLQiMsIE1pRkFRIy4gRWwgdmFsb3IgcHJlZGV0ZXJtaW5hZG8gZXMgRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtGQVHCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrTm9ybWFswrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtGQVHCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrUGFyZW50Q2hpbGTCuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtUaWNrZXTCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrTm9ybWFswrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtUaWNrZXTCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrUGFyZW50Q2hpbGTCuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0N1ZXJwbyBkZWwgdGlja2V0IHBhcmEgYXByb2JhY2nDs24gZGUgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdBc3VudG8gZGVsIHRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnQXJ0w61jdWxvIGRlIGxhIGJhcnJhIGRlIGhlcnJhbWllbnRhcyBwYXJhIHVuIGFjY2VzbyBkaXJlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZXh0ZXJubyAoY2xpZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKGFnZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAncMO6YmxpY28gKHRvZG9zKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdww7pibGljbyAocMO6YmxpY28pJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBw7FhZGlyIGFydMOtY3VsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnUGFsYWJyYXMgQ2xhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdTZSByZXF1aWVyZSB1bmEgY2F0ZWdvcsOtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvYmFjacOzbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBjYXRlZ29yw61hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0HDsWFkaXIgQ2F0ZWdvcsOtYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdFZGl0YXIgQ2F0ZWdvcsOtYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQcOxYWRpciBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0HDsWFkaXIgY2F0ZWdvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdGFyIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTdWJjYXRlZ29yw61hIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnUG9yIGZhdm9yLCBzZWxlY2Npb25lIGFsIG1lbm9zIHVuIGdydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVwb3MgZGUgYWdlbnRlcyBxdWUgcHVlZGVuIGFjY2VkZXIgYSBsb3MgYXJ0w61jdWxvcyBkZSBlc3RhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NlIG1vc3RyYXLDoSBjb21vIGNvbWVudGFyaW8gZW4gZWwgZXhwbG9yYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ8K/U2VndXJvIHF1ZSBkZXNlYSBib3JyYXIgZXN0YSBjYXRlZ29yw61hPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ05vIHB1ZWRlIGJvcnJhciBlc3RhIGNhdGVnb3LDrWEuIEVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgYWwgbWVub3MgdW4gYXJ0w61jdWxvIEZBUSB5L28gZXMgcGFkcmUgZGUgYWwgbWVub3Mgb3RyYSBjYXRlZ29yw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRXN0YSBjYXRlZ29yw61hIGVzdMOhIHNpZW5kbyB1c2FkYSBwb3IgbG9zIHNpZ3VpZW50ZXMgYXJ0w61jdWxvcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnRXN0YSBjYXRlZ29yw61hIGVzIHBhZHJlIGRlIGxhcyBzaWd1aWVudGVzIHN1YmNhdGVnb3LDrWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ8K/U2VndXJvIHF1ZSBkZXNlYSBib3JyYXIgZXN0ZSBhcnTDrWN1bG8gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmFkb3IgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBSw6FwaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdTZSBwZXJtaXRlbiBjb21vZGluZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBBdmFuemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViY2F0ZWdvcsOtYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0w61jdWxvcyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBzdWJjYXRlZ29yw61hcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0hpc3RvcmlhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbmlkbyBkZWwgSGlzdG9yaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdGZWNoYSBkZSBjcmVhY2nDs24gJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGVuIGxhIEJpdMOhY29yYSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGnDs24gZGUgSWRpb21hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJ0HDsWFkaXIgSWRpb21hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXRvciBJZGlvbWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSBlc3RhIGZ1bmNpb25hbGlkYWQgc2kgZGVzZWEgdHJhYmFqYXIgY29uIG11bHRpcGxlcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBw7FhZGlyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdGFyIElkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnwr9TZWd1cm8gcXVlIGRlc2VhIGJvcnJhciBlc3RlIGlkaW9tYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTm8gcHVlZGUgYm9ycmFyIGVzdGUgaWRpb21hLiBFc3TDoSBzaWVuZG8gdXNhZG8gcG9yIGFsIG1lbm9zIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdFc3RlIGlkaW9tYSBlc3RhIHNpZW5kbyB1c2FkbyBwb3IgbG9zIHNpZ3VpZW50ZXMgQXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBanVzdGVzIGRlIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydMOtY3Vsb3MgRkFRIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGVuY29udHJhcm9uIGRhdG9zIGRlIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnUGFsYWJyYSBjbGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90byAoZS5nLiBJZ3VhbCBhIDEwIG8gTWF5b3JRdWUgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ1ZhbG9yYWNpw7NuIChlLmcuIElndWFsIGEgMjUlIG8gTWF5b3JRdWUgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ0Fwcm9iYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ8OabHRpbW8gY2FtYmlvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGVsIEFydMOtY3VsbyBGQVEgKGFudGVzL2Rlc3B1w6lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdUaWVtcG8gZGUgQ3JlYWNpw7NuIGRlbCBBcnTDrWN1bG8gRkFRIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdUaWVtcG8gZGUgTW9kaWZpY2FjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBNb2RpZmljYWNpw7NuIGRlbCBBcnTDrWN1bG8gRkFRIChlbnRyZSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnVGV4dG8gY29tcGxldG8gRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1NlbGVjY2nDs24gZGUgcGVyZmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdWb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdTaW4gY29uZmlndXJhY2nDs24gZGUgdm90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnVm90b3MgZXNwZWPDs2lmaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdlLmcuIElndWFsIGEgMTAgbyBNYXlvclF1ZSA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnVmFsb3JhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ1NpbiBjb25maWd1cmFjacOzbiBkZSB2YWxvcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnVmFsb3JhY2nDs24gZXNwZWPDrWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdlLmcuIElndWFsIGEgMjUlIG8gTWF5b3IgUXVlIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1RpZW1wbyBkZSBjcmVhY2nDs24gZGVsIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdUaWVtcG8gZGUgbW9kaWZpY2FjacOzbiBkZWwgYXJ0w61jdWxvIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1B1bnR1YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnwqFObyBzZSBlbmNvbnRyw7MgbmluZ8O6biB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTm8gc2UgZW5jb250csOzIG5pbmfDum4gdm90by4gU2VhIGVsIHByaW1lcm8gZW4gdmFsb3JhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0Rlc2NhcmdhciBBZGp1bnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnUGFyYSBhYnJpciBsb3MgZW5sYWNlcyBkZSBsYXMgc2lndWllbnRlcyBkZXNjcmlwY2lvbmVzLCBwdWVkZSBuZWNlc2l0YXIgcHJlc2lvbmFyIGxhIHRlY2xhIEN0cmwsIENtZCBvIFNoaWZ0IG1pZW50cmFzIGhhY2UgY2xpYyBlbiBlbCBlbmxhY2UgKGRlcGVuZGllbmRvIGRlbCBuYXZlZ2Fkb3IgeSBTTyBxdWUgZXN0w6kgdXRpbGl6YW5kbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfCv0PDs21vIGRlIMO6dGlsIGZ1ZSBlc3RlIGFydMOtY3Vsbz8gUG9yIGZhdm9yLCBkw6lub3Mgc3UgcHVudHVhY2nDs24geSBheXVkZSBhIG1lam9yYXIgbGEgYmFzZSBkZSBkYXRvcyBkZSBGQVEuIEdyYWNpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAncG9jbyDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdtdXkgw7p0aWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0FncmVnYXIgZWwgdMOtdHVsbyBkZWwgRkFRIGFsIGFzdW50byBkZWwgYXJ0w61jdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc2VydGFyIFRleHRvIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdJbnNlcnRhciBGQVEgQ29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5zZXJ0YXIgRW5sYWNlIGEgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcnRhciB0ZXh0byB5IEVubGFjZSBhIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJ0YXIgRkFRIENvbXBsZXRvICYgRW5sYWNlJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnTm8gc2UgZW5jb250cmFyb24gYXJ0w61jdWxvcyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdFc3RvIHBvZHLDrWEgc2VyIMO6dGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdObyBzZSBlbmNvbnRyYXJvbiByZWN1cnNvcyDDunRpbGVzIHBhcmEgZWwgYXN1bnRvIHkgdGV4dG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdFc2NyaWJhIHVuIGFzdW50byBvIHRleHRvIHBhcmEgb2J0ZW5lciB1bmEgbGlzdGEgZGUgcmVjdXJzb3Mgw7p0aWxlcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0LDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0byBlbiBhcnTDrWN1bG9zIEZBUSAoZWo6ICJKb2huKm4iIG8gIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmljY2lvbmVzIGRlIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnw5puaWNhbWVudGUgYXJ0w61jdWxvcyBGQVEgY29uIHZvdG9zLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpY2Npb25lcyBkZSB2YWxvcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdTb2xvIGFydMOtY3Vsb3MgRkFRIGNvbiB2YWxvcmFjacOzbi4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgdGllbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICfDum5pY2FtZW50ZSBhcnTDrWN1bG9zIEZBUSBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ8OabmljYW1lbnRlIGFydMOtY3Vsb3MgRkFRIGNyZWFkb3MgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnwr9QZXJmaWwgZGUgYsO6c3F1ZWRhIGNvbW8gcGxhbnRpbGxhPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgQXJ0w61jdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQnVzY2FyIGFydMOtY3Vsb3MgY29uIGxhIHBhbGFicmEgY2xhdmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUMO6YmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1JlZ3Jlc2FyIGFsIEV4cGxvcmFkb3IgZGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdSZXF1aXJlIHBlcm1pc28gcnchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICdObyBzZSBlbmNvbnRyYXJvbiBjYXRlZ29yw61hcyBkb25kZSBlbCB1c3VhcmlvIHRlbmdhIHBlcm1pc29zIGRlIGxlY3R1cmEvZXNjcml0dXJhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdObyBzZSBlbmNvbnRyw7MgZWwgaWRpb21hIHBvciBvbWlzacOzbiB5IG5vIHNlIHB1ZWRlIGNyZWFyIHVubyBudWV2by4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdTZSBuZWNlc2l0YSBDYXRlZ29yeUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfCoUxhcyBjYXRlZ29yw61hcyBkZWJlIHRlbmVyIG5vbWJyZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0VzdGEgY2F0ZWdvcsOtYSB5YSBleGlzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfDiXN0YSBjYXRlZ29yw61hIHlhIGV4aXN0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBkYWRvIENhdGVnb3J5SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ05vIGZ1ZSBwb3NpYmxlIGJvcnJhciBsYSBjYXRlZ29yw61hICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdBY3R1YWxpemFkYSBjYXRlZ29yw61hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnQcOxYWRpZGEgY2F0ZWdvcsOtYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQm9ycmFyIGNhdGVnb3LDrWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnVXN0ZWQgbm8gdGllbmUgcGVybWlzb3MgcGFyYSBlc3RhIGNhdGVnb3LDrWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ05vIGZ1ZSBwb3NpYmxlIGVsaW1pbmFyIGVsIGFydMOtY3VsbyBGQVEgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0VsIENhdGVnb3J5SUQgJXMgZXMgaW52w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIHlhIHF1ZSBubyBzZSBoYSBkYWRvIHVuIEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdIaXN0b3JpYWwgZGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnQml0w6Fjb3JhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICdTZSByZXF1aWVyZSBsYSBvcGNpw7NuIGRlIGNvbmZpZ3VyYWNpw7NuIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ8KhTGEgb3BjacOzbiBkZSBjb25maWd1cmFjacOzbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWNlc2l0YSBzZXIgdW5hIHJlZmVyZW5jaWEgYSB1biBIQVNIISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ8KhTm8gc2UgZW5jb250csOzIGxhIG9wY2nDs24gZGUgY29uZmlndXJhY2nDs24gcGFyYSBsYSB2aXN0YSAiMSVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyB1biBMYW5ndWFnZUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdFbCBub21icmUgZXMgaW1wcmVzY2luZGlibGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXN0ZSBpZGlvbWEgeWEgZXhpc3RlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdObyBzZSBoYSBwb2RpZG8gZWxpbWluYXIgZWwgaWRpb21hICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdBY3R1YWxpemFkbyBpZGlvbWEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnQcOxYWRpZG8gaWRpb21hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdCb3JyYXIgSWRpb21hICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICfDmmx0aW1hIEFjdHVhbGl6YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NhbXBvcyBEaW7DoW1pY29zIHBhcmEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBkYWRvICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICdObyBwdWVkZSBjYXJnYXJzZSBlbCBMYW5ndWFnZU9iamVjdCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnU2luIFJlc3VsdGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnw5psdGltbyBDYW1iaW8gcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnVGllbXBvIGRlIENyZWFjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBDcmVhY2nDs24gZGVsIEFydMOtY3VsbyBGQVEgKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1RpZW1wbyBkZSBBY3R1YWxpemFjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSAoYW50ZXMvZGVzcHXDqXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1RpZW1wbyBkZSBBY3R1YWxpemFjacOzbiBkZWwgQXJ0w61jdWxvIEZBUSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ0lndWFsIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnTWF5b3IgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICdNYXlvciBvIGlndWFsIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICdNZW5vciBxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ01lbm9yIG8gaWd1YWwgcXVlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ1NlIG5lY2VzaXRhIEZpbGVJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnwqFHcmFjaWFzIHBvciBzdSB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ8KhVXN0ZWQgeWEgaGEgdm90YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ8KhTm8gc2UgaGEgc2VsZWNjaW9uYWRvIG5pbmd1bmEgcHVudHVhY2nDs24hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ0VsIG1lY2FuaXNtbyBkZSB2b3RhY2nDs24gbm8gZXN0w6EgaGFiaWxpdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICdMYSBwcm9wb3JjacOzbiBkZSB2b3RhY2nDs24gbm8gZXN0w6EgZGVmaW5pZGEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0ltcHJpbWlyIGVsIGFydMOtY3VsbyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICdDcmVhZG8gZW5ydHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJ1NlIG5lY2VzaXRhIEl0ZW1JRCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydMOtY3Vsb3MgRkFRIChudWV2b3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnTDrWN1bG9zIEZBUSAobW9kaWZpY2Fkb3MgcmVjaWVudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0w61jdWxvcyBGQVEgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBkYWRvIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnRWwgVGlwbyBkZWJlIHNlciBMYXN0Q3JlYXRlIExhc3RDaGFuZ2UgbyBUb3AxMCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ05vIHNlIHB1ZWRlIGNyZWFyIGVsIGFyY2hpdm8gUlNTJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJzElcyAoRkFRVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIENsaWVudGUgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcxJXMgLSBDbGllbnRlIChGQVFUZXh0b0NvbXBsZXRvKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSBQw7pibGljbyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcxJXMgLSBQw7pibGljbyAoRkFRVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnwqFSZXF1aWVyZSB2YWxvcmFjacOzbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ0VzdGUgYXJ0w61jdWxvIGVzdGEgdmFjacOzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfDmmx0aW1vcyBhcnTDrWN1bG9zIEZBUSBjcmVhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ8OabHRpbW9zIGFydMOtY3Vsb3MgRkFRIG1vZGlmaWNhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgZGUgYXJ0w61jdWxvcyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwbyBkZSBDb250ZW5pZG8nOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnQWNlcHRhcic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ0ZpbHRybyBwYXJhIGVsIEhUTUwgcmVzdWx0YW50ZSBwYXJhIGHDsWFkaXIgZW5sYWNlcyBhIHVuYSBjYWRlbmEgZGV0ZXJtaW5hZGEuIEVsIGVsZW1lbnRvIEltYWdlbiBjb250ZW1wbGEgZG9zIHRpcG9zIGRlIHJlZ2lzdHJvcy4gRWwgcHJpbWVybyBlcyBlbCBub21icmUgZGUgdW5hIGltYWdlbiAocG9yIGVqZW1wbG8gZmFxLnBuZykuIEVuIGVzdGUgY2FzbyBzZSB1dGlsaXphcsOhIGxhIHJ1dGEgZGUgaW3DoWdlbmVzIGRlIE9UUlMuIExhIHNlZ3VuZGEgcG9zaWJpbGlkYWQgZXMgaW5zZXJ0YXIgZWwgZW5sYWNlIGEgbGEgaW1hZ2VuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnQcOxYWRpciBhcnTDrWN1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NvbG9yIENTUyBwYXJhIGVsIHJlc3VsdGFkbyBkZSBsYSB2b3RhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUaWVtcG8gZGUgdmlkYSBkZSBsYSBjYWNow6kgcGFyYSBsb3MgZWxlbWVudG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGxhcyBDYXRlZ29yw61hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJ0dlc3Rpw7NuIGRlIENhdGVnb3LDrWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnSW1wcmltaXIgRkFRIGRlbCBDbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJ0FydMOtY3Vsb3MgRkFRIFJlbGFjaW9uYWRvcyBQYXJhIExvcyBDbGllbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICdBcnTDrWN1bG9zIEZBUSBSZWxhY2lvbmFkb3MgUGFyYSBMb3MgQ2xpZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ0RldGFsbGUgRkFRIGRlbCBDbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ0LDunNxdWVkYSBGQVEgZGVsIENsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICdGQVEgZGVsIENsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ07Dum1lcm8gZGUgZGVjaW1hbGVzIHBhcmEgZWwgcmVzdWx0YWRvIGRlIGxhIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnTm9tYnJlIHByZWRldGVybWluYWRvIGRlIGxhIGNhdGVnb3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0lkaW9tYSBwb3Igb21pc2nDs24gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gbW9kbyBpZGlvbWEgw7puaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ03DoXhpbW8gdGFtYcOxbyBwb3IgZGVmZWN0byBhIG1vc3RyYXIgZGUgbG9zIHTDrXR1bG9zIGVuIHVuIGFydMOtY3VsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ1ByaW9yaWRhZCBwb3Igb21pc2nDs24gZGUgbG9zIHRpY2tldHMgcGFyYSBhcHJvYmFjacOzbiBkZSBsb3MgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcG9yIG9taXNpw7NuIHBhcmEgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRXN0YWRvIHBvciBvbWlzacOzbiBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVGlwbyBwb3IgZGVmZWN0byBkZSBsb3MgdGlja2V0cyBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnVmFsb3IgcG9yIG9taXNpw7NuIHBhcmEgZWwgcGFyw6FtZXRybyAiQWN0aW9uIiBwYXJhIGxhIGludGVyZmF6IHDDumJsaWNhLiBFbCBwYXLDoW1ldHJvICJBY3Rpb24iIHNlIHVzYSBlbiBsb3MgInNjcmlwdHMiIGRlbCBzaXN0ZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBBY2Npb25lcyBkb25kZSBlbCBib3TDs24gZGUgY29uZmlndXJhY2lvbmVzIGVzdGEgZGlzcG9uaWJsZSBlbiBlbCAid2lkZ2V0IiBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUG9yIGZhdm9yIG5vdGUgcXVlIGRpY2hhcyBBY2Npb25lcyBkZWJlbiB0ZW5lciByZWdpc3RyYWRvcyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdEZWZpbmUgc2kgZWwgdMOtdHVsbyBkZWwgRkFRIGRlYmUgZXN0YXIgY29uY2F0ZW5hZG8gYWwgYXN1bnRvIGRlbCBhcnTDrWN1bG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBjdWFsZXMgY29sdW1uYXMgc2Vyw6FuIG1vc3RyYWRhcyBlbiBlbCAid2lkZ2V0IiBkZSBGQVEgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RhOiBTb2xhbWVudGUgYXRyaWJ1dG9zIGRlIEZBUSB5IGNhbXBvcyBkaW7DoW1pY29zIChEeW5hbWljRmllbGRfTm9tYnJlWCkgc29uIHBlcm1pdGlkb3MgcGFyYSBjb2x1bW5hcyBwb3Igb21pc2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIGxhIGJpdMOhY29yYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgdmlzdGEgcHJldmlhIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSB1biBsaXN0YWRvIGRlIEZBUXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIHBvciBvbWlzacOzbiBwYXJhIG9yZGVuYXIgbG9zIGFydMOtY3Vsb3MgRkFRIGVuIHVuYSBiw7pzcXVlZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBwb3Igb21pc2nDs24gcGFyYSBvcmRlbmFyIGxvcyBhcnTDrWN1bG9zIEZBUSBlbiB1bmEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsb3MgYXJ0w61jdWxvcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdERWZpbmUgZWwgYXRyaWJ1dG8gcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgRkFRIHF1ZSBzZSB1c2Fyw6EgcG9yIG9taXNpw7NuIHBhcmEgb3JkZW5hciBsYXMgRkFRIGVuIGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbGFzIEZBUSBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IExvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gbG9zIHJlc3VsdGFkb3MgZGVsIGV4cGxvcmFkb3IgZGUgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLiBBcnJpYmE6IGxvcyBtw6FzIGFudGlndW9zIGVuIGxhIHBhcnRlIHN1cGVyaW9yLiBBYmFqbzogbG9zIG3DoXMgcmVjaWVudGVzIGVuIGxhIHBhcnRlIHN1cGVyaW9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcG9yIG9taXNpw7NuIGRlIGxhcyBGQVEgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3MgbcOhcyByZWNpZW50ZXMgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHBvciBvbWlzacOzbiBkZSBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmFjZSBkZWwgY2xpZW50ZS4gQXJyaWJhOiBsb3MgbcOhcyBhbnRpZ3VvcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4gQWJham86IGxvcyDDumx0aW1vcyBlbiBsYSBwYXJ0ZSBzdXBlcmlvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwb3Igb21pc2nDs24gZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFycmliYTogbG9zIG3DoXMgYW50aWd1b3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuIEFiYWpvOiBsb3Mgw7psdGltb3MgZW4gbGEgcGFydGUgc3VwZXJpb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGLDunNxdWVkYSBkZSBGQVEgbW9zdHJhZG8gcG9yIGRlZmVjdG8gZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGluZm9ybWFjacOzbiBhIGluc2VydGFyIGVuIHVuIEZBUSBiYXNhZG8gZW4gdW4gdGlja2V0LiAiRkFRIGNvbXBsZXRvIiBpbmNsdXllIHRleHRvLCBhZGp1bnRvcyBlIGltw6FnZW5lcyBpbmNydXN0YWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwYXLDoW1ldHJvcyBwYXJhIGVsIGJhY2tlbmQgZGVsIHBhbmVsIHByaW5jaXBhbC4gIkxpbWl0IiBkZWZpbmUgZWwgbsO6bWVybyBkZSBlbnRyYWRhcyBtb3N0cmFkYXMgcG9yIGRlZmVjdG8uICJHcm91cCIgc2UgdXNhIHBhcmEgcmVzdHJpbmdpciBlbCBhY2Nlc28gYWwgcGx1Z2luIChwb3IgZWplbXBsbywgR3J1cG86IGFkbWluO2dydXBvMTtncnVwbzI7KS4gIkRlZmF1bHQiIGluZGljYSBzaSBlbCBwbHVnaW4gZXN0w6EgaGFiaWxpdGFkbyBwb3IgZGVmZWN0byBvIHNpIGVsIHVzdWFyaW8gbmVjZXNpdGEgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgRXhwbG9yYWRvciBkZSBGQVEuIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG9zIGVuIGxhIHBvc2ljacOzbiBkZSBsYXMgY29sdW1uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBsYSBiaXTDoWNvcmEgZGUgRkFRLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvcyBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBxdWUgc2UgbW9zdHJhcsOhbiBlbiBsYSBiw7pzcXVlZGEgZGUgRkFRLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvcyBlbiBsYSBwb3NpY2nDs24gZGUgbGFzIGNvbHVtbmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ0RlZmluaXIgZG9uZGUgc2Vyw6EgbW9zdHJhZG8gZWwgZW5sYWNlIFwnSW5zZXJ0YXIgRkFRXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pY2nDs24gZGVsIGNhbXBvIMKrdGV4dG8gbGlicmXCuyBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnQm9ycmFyIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBhw7FhZGlyIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgdmlzdGEgZ2VuZXJhbCBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSB2aXN0YSBnZW5lcmFsIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgdmlzdGEgZ2VuZXJhbCBkZSBGQVEgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgaW1wcmVzacOzbiBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBpbXByZXNpw7NuIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgaW1wcmVzacOzbiBkZSBGQVEgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIHZpc3RhIGdlbmVyYWwgZGUgRkFRIGVuIGZvcm1hdG8gcGVxdWXDsW8gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGRldGFsbGUgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBkZXRhbGxlIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBkZXRhbGxlIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0hhYmlsaXRhciBtw7psdGlwbGVzIGlkaW9tYXMgZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnSGFiaWxpdGFyIGxhIGZ1bmNpb25hbGlkYWQgZGUgYXJ0w61jdWxvcyByZWxhY2lvbmFkb3MgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnSGFiaWxpdGFyIGVsIG1lY2FuaXNtbyBkZSB2b3RhY2nDs24gZW4gZWwgbcOzZHVsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFeHBsb3JhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJ1Jlc3BvbmRlZG9yIEFKQVggZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ1Jlc3BvbmRlZG9yIEFKQVggZGUgRkFRIHBhcmEgdGV4dG8gZW5yaXF1ZWNpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnQXJlYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnw4FyZWEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJ0JvcnJhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ0VkaXRhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJ0hpc3RvcmlhbCBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMw61taXRlIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCDCq3BlcXVlw7FhwrsgZGUgbGEgQml0w6Fjb3JhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgcGFyYSBsYSB2aXN0YSBnZW5lcmFsIMKrcGVxdWXDsWHCuyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ltcHJpbWlyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0VuY2FtaW5hZG9yIHBhcmEgbGEgYsO6c3F1ZWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdDYW1wbzQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnQ2FtcG81JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnRkFRIENvbXBsZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBvIHBhcmEgbGEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnSGlzdG9yaWEgZGUgZXN0ZSBhcnTDrWN1bG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBlbiBsb3MgdGlja2V0cyBiYXNhZG9zIGVuIHVuIGFydMOtY3VsbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGVsIG5vbWJyZSBkZSBjYWRhIGNhbXBvIGVuIGxvcyB0aWNrZXRzIGJhc2Fkb3MgZW4gdW4gYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0ludGVyZmFjZXMgZG9uZGUgc2UgZGViZSBtb3N0cmFyIGxhIGLDunNxdWVkYSByw6FwaWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnQml0w6Fjb3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBJZGlvbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnR2VzdGnDs24gZGUgSWRpb21hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICdMw61taXRlIGRlIGxhIGLDunNxdWVkYSBwYXJhIGNvbnN0cnVpciBlbCBsaXN0YWRvIGRlIHBhbGFicmFzIGNsYXZlIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdFbmxhemFyIG90cm8gb2JqZWN0byBhIGVzdGUgYXJ0w61jdWxvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ0xpc3RhIGRlIG5vbWJyZXMgZGUgZmlsYXMgcGFyYSBsYXMgY3VhbGVzIGxhIGZ1bmNpb25hbGlkYWQgZGUgYXJ0w61jdWxvcyByZWxhY2lvbmFkb3MgZXN0w6EgaGFiaWxpdGFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgbG9zIHRpcG9zIGRlIGVzdGFkb3MgcXVlIHB1ZWRlbiBzZXIgdXNhZG9zIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGxvcyB0aXBvcyBkZSBlc3RhZG9zIHF1ZSBwdWVkZW4gc2VyIHVzYWRvcyBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGxvcyB0aXBvcyBkZSBlc3RhZG9zIHF1ZSBwdWVkZW4gc2VyIHVzYWRvcyBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gIkxvYWRlciIgZW4gbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gbG9zIHJlc3VsdGFkb3MgZGVsIGV4cGxvcmFkb3IgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gbG9zIHJlc3VsdGFkb3MgZGVsIGV4cGxvcmFkb3IgRkFRIGRlIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgZXhwbG9yYWRvciBGQVEgZGUgbGEgaW50ZXJmYXogcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGVuIGxhIGJpdMOhY29yYSBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGNvbW8gcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgYXJ0w61jdWxvcyBGQVEgYSBtb3N0cmFyIGNvbW8gcmVzdWx0YWRvIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgY29tbyByZXN1bHRhZG8gZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgRXhwbG9yYWRvciBkZSBGQVFzIHF1ZSBzZSBtdWVzdHJhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlbCB0w610dWxvIGVuIHVuIGFydMOtY3VsbyAgRkFRIGEgc2VyIG1vc3RyYWRvIGVuIGVsIEV4cGxvcmFkb3IgZGUgRkFRcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlbCB0w610dWxvIGVuIHVuIGFydMOtY3VsbyAgRkFRIGEgc2VyIG1vc3RyYWRvIGVuIGVsIEV4cGxvcmFkb3IgZGUgRkFRcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSBpbnRlcmZheiBhbCBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlbCB0w610dWxvIGVuIHVuIGFydMOtY3VsbyAgRkFRIGEgc2VyIG1vc3RyYWRvIGVuIGVsIEJ1c2NhZG9yIGRlIEZBUXMgcXVlIHNlIG11ZXN0cmEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYcOxbyBtw6F4aW1vIGRlbCB0w610dWxvIGVuIHVuIGFydMOtY3VsbyAgRkFRIGEgc2VyIG1vc3RyYWRvIGVuIGVsIEJ1c2NhZG9yIGRlIEZBUXMgcXVlIHNlIG11ZXN0cmEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hw7FvIG3DoXhpbW8gZGVsIHTDrXR1bG8gZW4gdW4gYXJ0w61jdWxvICBGQVEgYSBzZXIgbW9zdHJhZG8gZW4gZWwgQnVzY2Fkb3IgZGUgRkFRcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSBpbnRlcmZheiBhbCBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWHDsW8gbcOheGltbyBkZWwgdMOtdHVsbyBlbiB1biBhcnTDrWN1bG8gIEZBUSBhIHNlciBtb3N0cmFkbyBlbiBlbCBEaWFyaW8gZGUgTmF2ZWdhY2nDs24gZGUgRkFRcyBxdWUgc2UgbXVlc3RyYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBnZW5lcmFyIGVsIHBlcmZpbCBodG1sICJPcGVuU2VhcmNoIiBwYXJhIGxhIGLDunNxdWVkYSByw6FwaWRhIGRlIEZBUSBlbiBsYSBpbnRlcmZhY2UgZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBnZW5lcmFyIGVsIHBlcmZpbCBIVE1MIE9wZW5TZWFyY2ggcGFyYSBsYSBiw7pzcXVlZGEgY29ydGEgZGUgbGFzIEZBUSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZWwgcGVyZmlsIGh0bWwgIk9wZW5TZWFyY2giIHBhcmEgbGEgYsO6c3F1ZWRhIHLDoXBpZGEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnTnVldm8gQXJ0w61jdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTG9zIG51ZXZvcyBhcnTDrWN1bG9zIEZBUSByZXF1aWVyZW4gYXByb2JhY2nDs24gYW50ZXMgZGUgcHVibGljYXJzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gZWwgZXhwbG9yYWRvciBkZSBGQVEgZGUgbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBlbCBleHBsb3JhZG9yIGRlIEZBUSBkZSBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnTDrWN1bG9zIEZBUSBhIG1vc3RyYXIgZW4gY2FkYSBww6FnaW5hIGRlIGxvcyByZXN1bHRhZG9zIGRlIHVuYSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydMOtY3Vsb3MgRkFRIGEgbW9zdHJhciBlbiBjYWRhIHDDoWdpbmEgZGUgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY2FtYmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gw7psdGltb3MgY3JlYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBhIG1vc3RyYXIgZW4gZWwgVG9wIDEwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnRmlsdHJvIGRlIHNhbGlkYSBwYXJhIGFncmVnYXIgSmF2YS1TY3JpcHQgYSBsYSBwYW50YWxsYSBDdXN0b21lclRpY2tldE1lc3NhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ0zDrW1pdGUgZGUgZGVzcGxvbWUgZGUgYXJ0w61jdWxvcyBGQVEgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlIGxhcyBww6FnaW5hcyAoZW4gbGFzIHF1ZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIEZBUSkgZGUgbGEgdmlzdGEgZ2VuZXJhbCBwZXF1ZcOxYSBkZSBsYSBiaXTDoWNvcmEgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGUgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgRkFRKSBkZSBsYSB2aXN0YSBnZW5lcmFsIGRlIEZBUSBwZXF1ZcOxYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1pciBlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ0ltcHJpbWlyIEZBUSBQw7pibGljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnRGV0YWxsZSBGQVEgUMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnQsO6c3F1ZWRhIEZBUSBQw7pibGljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ0ZBUSBQw7pibGljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGaWxhIHBhcmEgbGEgYXByb2JhY2nDs24gZGUgbG9zIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1BvbmRlcmFjacOzbiBwYXJhIGxhIHZvdGFjacOzbi4gTGEgY2xhdmUgZGViZSBleHByZXNhcnNlIGVuIHBvcmNlbnRhamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdCw7pzcXVlZGEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnQsO6c3F1ZWRhIHBlcXVlw7FhIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ0LDunNxdWVkYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdTZWxlY2Npb25hciBjdcOhbnRvcyBlbGVtZW50b3MgZGViZXLDoW4gc2VyIG1vc3RyYWRvcyBlbiBsYSB2aXN0YSBsYSB2aXN0YSBnZW5lcmFsIGRlbCBkaWFyaW8gInBlcXVlw7FvIiBwb3Igb21pc2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnU2VsZWNjaW9uYXIgY3XDoW50b3MgZWxlbWVudG9zIGRlYmVyw6FuIHNlciBtb3N0cmFkb3MgZW4gbGEgdmlzdGEgbGEgdmlzdGEgZ2VuZXJhbCAicGVxdWXDsWEiIHBvciBvbWlzacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgcHJlZGV0ZXJtaW5hZGEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBBZ2VudEZBUVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdFc3RhYmxlY2VyIGxhIGFsdHVyYSBwcmVkZXRlcm1pbmFkYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEN1c3RvbWVyRkFRWm9vbSAoeSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnRXN0YWJsZWNlciBsYSBhbHR1cmEgbcOheGltYSAoZW4gcMOteGVsZXMpIGRlIGxvcyBjYW1wb3MgSFRNTCDCq2lubGluZcK7IGRlIEFnZW50RkFRWm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZXIgbGEgYWx0dXJhIG3DoXhpbWEgKGVuIHDDrXhlbGVzKSBkZSBsb3MgY2FtcG9zIEhUTUwgwqtpbmxpbmXCuyBkZSBDdXN0b21lckZBUVpvb20gKHkgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDs24gwqtJbnNlcnRhciBlbmxhY2UgYSBGQVHCuyBlbiBBZ2VudEZBUVpvb21TbWFsbCBwYXJhIGxvcyBhcnTDrWN1bG9zIEZBUSBww7pibGljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYXIgYm90b25lcyAiSW5zZXJ0YXIgVGV4dG8geSBFbmxhY2UgZGUgbGEgRkFRIiAvICJJbnNlcnRhciBGQVEgQ29tcGxldGEgeSBFbmxhY2UiIGVuIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgbGFzIGVudHJhZGFzIHDDumJsaWNhcyBkZSBsYXMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnTW9zdHJhciBlbCBib3TDs24gIkluc2VydGFyIFRleHRvIGRlIGxhIEZBUSIgLyAiSW50ZXJ0YXIgRkFRIENvbXBsZXRhIiBlbiBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnwr9Nb3N0cmFyIGNvbnRlbmlkbyBIVE1MIGVuIGxvcyBhcnTDrWN1bG9zIEZBUT8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ8K/TW9zdHJhciBsYSBydXRhIGRlIGxhIEZBUT8gc8OtL25vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYXIgZW50cmFkYXMgaW52w6FsaWRhcyBlbiBsb3MgcmVzdWx0YWRvcyBkZWwgRXhwbG9yYWRvciBkZSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ8K/TW9zdHJhciBsb3MgZWxlbWVudG9zIGRlIGxhcyBzdWJjYXRlZ29yw61hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBhY3R1YWxpemFkb3MgZW4gbGFzIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBsb3Mgw7psdGltb3MgYXJ0w61jdWxvcyBjcmVhZG9zIGVuIGxhcyBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICdNdWVzdHJhIGxhcyBlc3RyZWxsYXMgcGFyYSBsb3MgYXJ0w61jdWxvcyBjb24gdW5hIGNhbGlmaWNhY2nDs24gaWd1YWwgbyBzdXBlcmlvciBhbCB2YWxvciBkZWZpbmlkbyAoYWp1c3RlIGVsIHZhbG9yIFwnMFwnIHBhcmEgZGVzYWN0aXZhcikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGxvcyBhcnTDrWN1bG9zIFRvcCAxMCBlbiBsYXMgaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGxhIHZvdGFjacOzbiBlbiBsYXMgaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgZW5sYXphciBhIHVuIGFydMOtY3VsbyBGQVEgY29uIG90cm8gb2JqZXRvIGVuIHN1IHZpc3RhIGFtcGxpYWRhIGRlIGVzYSBGQVEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSBib3JyYXIgdW4gYXJ0w61jdWxvIEZBUSBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBlc2EgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBhcnTDrWN1bG8gRkFRIGVuIHN1IHZpc3RhIGFtcGxpYWRhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGVkaXRhciB1biBhcnTDrWN1bG8gRkFRIGVuIHN1IHZpc3RhIGFtcGxpYWRhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHJldHJvY2VkZXIgZW4gbGEgdmlzdGEgYW1wbGlhZGEgZGUgRkFRIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBpbXByaW1pciB1biBhcnTDrWN1bG8gRkFRIGVuIHN1IHZpc3RhIGFtcGxpYWRhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnU29sdWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTw61udG9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdTb2xvIFRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ0lkaW9tYXMgcG9yIGRlZmVjdG8gcGFyYSBsb3MgYXJ0w61jdWxvcyBGQVEgcmVsYWNpb25hZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdFbCBpZGVudGlmaWNhZG9yIHBhcmEgdW5hIEZBUSwgcG9yIGVqZW1wbG8gRkFRIywgS0IjLCBNaUZBUSMuIEZBUSMgZXMgbGEgb3BjacOzbiBwb3Igb21pc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtGQVHCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrTm9ybWFswrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtGQVHCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrUGFyZW50Q2hpbGTCuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtUaWNrZXTCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrTm9ybWFswrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXN0ZSBhanVzdGUgZGVmaW5lIHF1ZSB1biBvYmpldG8gwqtGQVHCuyBwdWVkZSBlbmxhemFyc2UgY29uIG90cm9zIG9iamV0b3MgwqtUaWNrZXTCuyB1dGlsaXphbmRvIGVsIHRpcG8gZGUgZW5sYWNlIMKrUGFyZW50Q2hpbGTCuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0N1ZXJwbyBkZWwgdGlja2V0IHBhcmEgYXByb2JhY2nDs24gZGUgYXJ0w61jdWxvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdBc3VudG8gZGVsIHRpY2tldCBwYXJhIGFwcm9iYWNpw7NuIGRlIGFydMOtY3Vsb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnRWxlbWVudG8gZGUgbGEgYmFycmEgZGUgaGVycmFtaWVudGFzIHBhcmEgdW4gYXRham8gKHNob3J0Y3V0KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybm8gKGNsaWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5vIChhZ2VudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3DDumJsaWNvICh0b2RvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAncMO6YmxpY28gKHDDumJsaWNvKSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZhX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfYqtin24zbjNivJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9iy24zYsSDZhdis2YXZiNi52YfigIzbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfYr9ixIEV4cGxvcmVyINio2Ycg2LXZiNix2Kog24zaqSDZhdiq2YYg2KrZiNi224zYrduMINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2K7ZiNin2YfZhtivINi02K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ9iz2YjYp9io2YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn2YXYrdiq2YjYp9uMINiz2KfYqNmC2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9iy2YXYp9mGINin24zYrNin2K8gJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAn2KrZhti424zZhdin2Kog2YXZgdin2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfYotiu2LHbjNmGINiq2LrbjNuM2LEg2KjZhyDZiNiz24zZhNmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9ii2LHYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAn2K/YsduM2KfZgdiqINm+24zZiNiz2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn2YXYrdiv2YjYr9uM2KrigIzZh9in24wg2LLZhdin2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICfZhtiq24zYrNmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ9in2LIg2LHYp9uMINi02YXYpyDYs9m+2KfYs9qv2LLYp9ix24zZhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfYtNmF2Kcg2YLYqNmE2Kcg2LHYp9uMINiv2KfYr9mH4oCM2KfbjNivISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9in2YXYqtuM2KfYsiDYsdinINin2YbYqtiu2KfYqCDZhtqp2LHYr9mH4oCM2KfbjNivISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn2KfYrtio2KfYsSBGQVEgKNis2K/bjNiv2Kcg2KfbjNis2KfYryDYtNiv2YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICfYp9iu2KjYp9ixIEZBUSAo2KzYr9uM2K/YpyDYqti624zbjNixINuM2KfZgdiq2YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ9in2K7YqNin2LEgRkFRICjbsduwINiq2KfbjCDYqNix2KrYsSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ9ii2K7YsduM2YYg2KfZgtmE2KfZhSDYp9uM2KzYp9ivINi02K/Zhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfYotiu2LHbjNmGINin2YLZhNin2YUg2KrYudix24zZgSDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ9io2KfZhNin2KrYsduM2YYg27HbsCDZgtmE2YUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAn2KrYp9uM24zYryc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZpX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdMaXPDpMOkIFVLSyBhcnRpa2tlbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdIYWt1c2FuYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWEgb24gcGFrb2xsaW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdIeXbDpGtzeW50w6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnVUtLIGthdGVnb3Jpb2lkZW4gaGFsbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdMaXPDpMOkIGthdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdMaXPDpMOkIGthdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnTXVva2thYSBrYXRlZ29yaWFhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnQWxha2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnVmFsaXRzZSBhaW5ha2luIHlrc2kgb2lrZXVzcnlobcOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnR0aXJ5aG3DpHQsIGpvaWxsYSBvbiBww6TDpHN5IGFydGlra2VsZWloaW4gdMOkc3PDpCBrYXRlZ29yaWFzc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ07DpHl0ZXTDpMOkbiBrb21tZW50dGluYSBTZWxhaW1lc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnSGFsdWF0a28gdmFybWFzdGkgcG9pc3RhYSB0w6Rtw6RuIGthdGVnb3JpYW4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnRXQgdm9pIHBvaXN0YWEgdMOkdMOkIGthdGVnb3JpYWEhIFNlIHNpc8OkbHTDpMOkIGpva28gYXJ0aWtrZWxlaXRhIHRhaSBzZSBvbiB0b2lzZW4ga2F0ZWdvcmlhbiBpc8OkbnTDpGthdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdTZXVyYWF2YXQgYXJ0aWtrZWxpdCBrdXVsdXZhdCB0w6Row6RuIGthdGVnb3JpYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ07DpG3DpCBrYXRlZ29yaWF0IG92YXQgdMOkbcOkbiBrYXRlZ29yaWFuIGFsYWthdGVnb3Jpb2l0YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdIYWx1YXRrbyB2YXJtYXN0aSBwb2lzdGFhIHTDpG3DpG4gYXJ0aWtrZWxpbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnVUtLJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdTZWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUGlrYWhha3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdNb25pcHVvbGluZW4gaGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnQWxha2F0ZWdvcmlhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpa2tlbGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnRWkgYWxha2F0ZWdvcmlvaXRhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yaWE6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1RhcGFodHVtYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0x1b250aWFpa2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1VLSyBraWVsdGVuIGhhbGxpbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0xpc8Okw6Qga2llbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnTGlzw6TDpCBraWVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnTXVva2thYSBraWVsdMOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdIYWx1YXRrbyB2YXJtYXN0aSBwb2lzdGFhIHTDpG3DpG4ga2llbGVuPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdFdCB2b2kgcG9pc3RhYSB0w6R0w6Qga2llbHTDpC4gQWluYWtpbiB5a3NpIGFydGlra2VsaSBrw6R5dHTDpMOkIHTDpHTDpCBraWVsdMOkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ1NldXJhYXZhdCBhcnRpa2tlbGl0IGvDpHl0dMOkdsOkdCB0w6R0w6Qga2llbHTDpCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpa2tlbGVpdGEgcGVyIHNpdnUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnWWh0w6TDpG4gYXJ0aWtrZWxpYSBlaSBsw7Z5dHlueXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJy8gNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdIYWt1c2FuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdVS0sgaGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ1VLSyB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnQXJ2b3N0ZWx1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ8OEw6RuZXN0eWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnRWkgw6TDpG5pw6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdFaSBhbm5ldHR1amEgw6TDpG5pw6QhIMOEw6RuZXN0w6QgdMOkdMOkIGFydGlra2VsaWEgZW5zaW1tw6Rpc2Vuw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdMYXRhYSBsaWl0ZXRpZWRvc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnS3VpbmthIGh5w7ZkeWxsaW5lbiB0w6Rtw6QgYXJ0aWtrZWxpIG9saT8gQXJ2b3N0ZWxlIGFydGlra2VsaSwgam90dGEgdm9pbW1lIGtlaGl0dMOkw6QgVUtLLXRpZXRva2FudGFhbW1lLiBLaWl0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnaHnDtmR5dMO2bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdoecO2ZHlsbGluZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdMaXPDpMOkIFVLSyB0ZWtzdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0xpc8Okw6QgVUtLIGxpbmtraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnTGlzw6TDpCBVS0sgdGVrc3RpIGphIGxpbmtraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnWWh0w6TDpG4gYXJ0aWtrZWxpYSBlaSBsw7Z5dHlueXQuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnSGFlIGFydGlra2VsZWlzdGEgKGVzaW0uICJNYXR0aSoiIHRhaSAiTWVpaypuZW4iKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ0Fpa2FyYWpvaXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdFdHNpIGFydGlra2VsZWphIGhha3VzYW5hbGxhJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ0p1bGtpbmVuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdLYXRlZ29yaWFsbGEgdHVsZWUgb2xsYSBuaW1pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnVMOkbcOkIGthdGVnb3JpYSBvbiBqbyBvbGVtYXNzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnS2F0ZWdvcmlhIHDDpGl2aXRldHR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnS2F0ZWdvcmlhIGxpc8OkdHR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdQb2lzdGEga2F0ZWdvcmlhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdVS0sgYWlrYWrDpHJqZXN0eXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmltaSBvbiBwYWtvbGxpbmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ1TDpG3DpCBraWVsaSBvbiBqbyBvbGVtYXNzYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0tpZWxpIHDDpGl2aXRldHR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnS2llbGkgbGlzw6R0dHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnUG9pc3RhIGtpZWxpICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdWYXN0YXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ1VLSyBudW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdLaWl0b3MgYXJ2b3N0ZWx1c3Rhc2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnT2xldCBqbyBhcnZvc3RlbGx1dCB0w6Rtw6RuIGFydGlra2VsaW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnRWkgdmFsaXR0dWEgYXJ2aW90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnVHVsb3N0YSBhcnRpa2tlbGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpa2tlbGkgKHV1ZGV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnQXJ0aWtrZWxpIChww6Rpdml0ZXR0eSDDpHNrZXR0w6RpbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWtrZWxpdCAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVmlpbWVrc2kganVsa2Fpc3R1dCBhcnRpa2tlbGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ1ZpaW1la3NpIHDDpGl2aXRldHl0IGFydGlra2VsaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCBhcnRpa2tlbGl0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnc2lzw6RpbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAndWxrb2luZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnanVsa2luZW4nOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnS2F0ZWdvcmlhaGFsbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ1NlbGFpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdBaWthasOkcmplc3R5cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnS2llbHRlbiBoYWxsaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnVHVsb3N0YSBhcnRpa2tlbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdSYXRrYWlzdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ3Vsa29pbmVuIChhc2lha2thYXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdzaXPDpGluZW4gKGFnZW50aXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ2p1bGtpbmVuIChrYWlra2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBam91dGVyIHVuIGFydGljbGUgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdNb3RzLWNsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnVW5lIGNhdMOpZ29yaWUgZXN0IHJlcXVpc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAnQXV0b3Jpc2F0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gZGVzIGNhdMOpZ29yaWVzIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAnQWpvdXRlciB1bmUgY2F0w6lnb3JpZSBkYW5zIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ8OJZGl0ZXIgdW5lIGNhdMOpZ29yaWUgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWpvdXRlciB1bmUgY2F0w6lnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBam91dGVyIHVuZSBjYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfDiWRpdGVyIHVuZSBjYXTDqWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU291cy1jYXTDqWdvcmllIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnTWVyY2kgZGUgc8OpbGVjdGlvbm5lciBhdSBtb2lucyB1biBncm91cGUgZGUgcGVybWlzc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dyb3VwZXMgZFwnYWdlbnRzIHBvdXZhbnQgYWNjw6lkZXIgYXV4IGFydGljbGVzIGRlIGNldHRlIGNhdMOpZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdTZXJhIGFmZmljaMOpIGNvbW1lIHVuIGNvbW1lbnRhaXJlIGRhbnMgbFwnZXhwbG9yYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdWb3VsZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgY2V0dGUgY2F0w6lnb3JpZSA/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnVm91cyBuZSBwb3V2ZXogcGFzIHN1cHByaW1lciBjZXR0ZSBjYXTDqWdvcmllLiBFbGxlIGVzdCB1dGlsaXPDqWUgZGFucyBhdSBtb2lucyB1biBhcnRpY2xlIGRlIEZBUSBldC9vdSBlc3QgcGFyZW50ZSBkXCdhdSBtb2lucyB1bmUgYXV0cmUgY2F0w6lnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdDZXR0ZSBjYXTDqWdvcmllIGVzdCB1dGlsaXPDqWUgZGFucyBsZXMgYXJ0aWNsZXMgZGUgRkFRIHN1aXZhbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXN0IHBhcmVudGUgZGVzIHNvdXMtY2F0w6lnb3JpZXMgc3VpdmFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZXQgYXJ0aWNsZSBkZSBsYSBGQVEgPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmF0ZXVyIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgcmFwaWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdMZXMgbcOpdGFjYXJhY3TDqHJlcyBzb250IGF1dG9yaXPDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBhdmFuY8OpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU291cy1jYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdBcnRpY2xlcyBkZSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdQYXMgZGUgc291cy1jYXTDqWdvcmllcyB0cm91dsOpZXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3JpcXVlIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbnUgZGUgbFwnaGlzdG9yaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRGF0ZSBkZSBjcsOpYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnUGFzIGRlIGpvdXJuYWwgZGUgZG9ubsOpZXMgdHJvdXbDqSBkYW5zIGxhIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgbGFuZ3VlcyBkZSBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJ0Fqb3V0ZXIgdW5lIGxhbmd1ZSBkYW5zIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ8OJZGl0ZXIgdW5lIGxhbmd1ZSBkYW5zIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdVdGlsaXNleiBjZXR0ZSBmb25jdGlvbm5hbGl0w6kgYWZpbiBkZSB0cmF2YWlsbGVyIGF2ZWMgcGx1c2lldXJzIGxhbmd1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0Fqb3V0ZXIgdW5lIGxhbmd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBam91dGVyIHVuZSBsYW5ndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ8OJZGl0ZXIgbGEgbGFuZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdWb3VsZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgY2V0dGUgbGFuZ3VlID8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnVm91cyBuZSBwb3V2ZXogcGFzIHN1cHByaW1lciBjZXR0ZSBsYW5ndWUuIEVsbGUgZXN0IHV0aWxpc8OpZSBkYW5zIGF1IG1vaW5zIHVuIGFydGljbGUgZGUgbGEgRkFRICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdDZXR0ZSBsYW5ndWUgZXN0IHV0aWxpc8OpZSBkYW5zIGxlcyBhcnRpY2xlcyBkZSBsYSBGQVEgc3VpdmFudHMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdQYXJhbcOodHJlcyBkdSBjb250ZXh0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdOb21icmUgZFwnYXJ0aWNsZXMgcGFyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnUGFzIGRlIGRvbm7DqWVzIHRyb3V2w6llcyBkYW5zIGxhIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3N1ciA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ01vdC1jbMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdWb3RlIChwYXIgZXhlbXBsZSDDqWdhbCDDoCAxMCBvdSBzdXDDqXJpZXVyIMOgIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdUYXV4IChwYXIgZXhlbXBsZSDDqWdhbCDDoCAyNSUgb3Ugc3Vww6lyaWV1ciDDoCA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnQXBwcm91dsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0Rlcm5pw6hyZXMgbW9kaWZpY2F0aW9ucyBwYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdEYXRlIGRlIGNyw6lhdGlvbiBkZSBsXCdhcnRpY2xlIGRlIGxhIEZBUSAoYXZhbnQvYXByw6hzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdEYXRlIGRlIGNyw6lhdGlvbiBkZSBsXCdhcnRpY2xlIGRlIGxhIEZBUSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRGF0ZSBkZSBtb2RpZmljYXRpb24gZGUgbFwnYXJ0aWNsZSBkZSBsYSBGQVEgKGF2YW50L2FwcsOocyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRGF0ZSBkZSBtb2RpZmljYXRpb24gZGUgbFwnYXJ0aWNsZSBkZSBsYSBGQVEgKGVudHJlKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdUZXh0ZSBpbnTDqWdyYWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdTw6lsZWN0aW9uIGR1IHByb2ZpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVm90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnUGFzIGRlIHBhcmFtw6h0cmVzIGRlIHZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RlIHNww6ljaWZpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ3BhciBleGVtcGxlIMOpZ2FsIMOgIDEwIG91IHN1cMOpcmlldXIgw6AgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ1RhdXgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ1BhcyBkZSByw6lnbGFnZSBkdSB0YXV4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdUYXV4IHNww6ljaWZpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAncGFyIGV4ZW1wbGUgw6lnYWwgw6AgMjUlIG91IHN1cMOpcmlldXIgw6AgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnSGV1cmUgZGUgY3LDqWF0aW9uIGRlIGxcJ2FydGljbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdEYXRlIGRlIG1vZGlmaWNhdGlvbiBkZSBsXCdhcnRpY2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdOb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnVm90ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnQXVjdW5zIHZvdGVzIHRyb3V2w6lzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0F1Y3VucyB2b3RlcyAhIFNveWV6IGxlIHByZW1pZXIgw6Agbm90ZXIgY2V0IGFydGljbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdUw6lsw6ljaGFyZ2VyIHVuIGZpY2hpZXIgam9pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdQb3VyIG91dnJpciBsZXMgbGllbnMgZGFucyBsZXMgYmxvY3MgZGUgZGVzY3JpcHRpb24gc3VpdmFudGVzLCB2b3VzIHBvdXJyaWV6IGF2b2lyIGJlc29pbiBkXCdhcHB1eWVyIHN1ciBDdHJsIG91IENtZCBvdSBNYWogdG91dCBlbiBjbGlxdWFudCBzdXIgbGUgbGllbiAoZW4gZm9uY3Rpb24gZGUgdm90cmUgbmF2aWdhdGV1ciBldCBPUykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnQ2V0IGFydGljbGUgw6l0YWl0LWlsIHV0aWxlID8gTWVyY2kgZGUgZG9ubmVyIHVuZSBub3RlIGV0IGRlIHBhcnRpY2lwZXIgw6AgbFwnYW3DqWxpb3JhdGlvbiBkZSBsYSBiYXNlIGRlIGRvbm7DqWVzLiBNZXJjaSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAncGV1IHV0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3Ryw6hzIHV0aWxlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICdBam91dGVyIHVuIHRpdHJlIGF1IHN1amV0IGRlIGxcJ2FydGljbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zw6lyZXIgbGUgdGV4dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zw6lyZXIgdG91dCBsXCdhcnRpY2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc8OpcmVyIGxlIGxpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc8OpcmVyIGxlIHRleHRlIGV0IGxpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0luc8OpcmVyIGxlIGxcJ2FydGljbGUgZXQgbGUgbGllbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ1BhcyBkXCdhcnRpY2xlcyB0cm91dsOpcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdDZWxhIHBvdXJyYWl0IMOqdHJlIHV0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICdQYXMgZGUgcmVzc291cmNlcyB1dGlsZXMgdHJvdXbDqWVzIHBvdXIgY2V0dGUgcmVjaGVyY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnVGFwZXogdW4gc3VqZXQgb3UgdW4gbW90IHBvdXIgb2J0ZW5pciB1bmUgbGlzdGUgZGUgcmVzc291cmNlcyB1dGlsZXMuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdSZWNoZXJjaGVyIHVuIHRleHRlIGludMOpZ3JhbGUgZGFucyBsZXMgYXJ0aWNsZXMgKHBhciBleGVtcGxlICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpY3Rpb25zIGRlIHZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ1VuaXF1ZW1lbnQgbGVzIGFydGljbGVzIGF2ZWMgZGVzIHZvdGVzLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpY3Rpb25zIGRlIG5vdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnVW5pcXVlbWVudCBsZXMgYXJ0aWNsZXMgIGF2ZWMgdW5lIG5vdGUgZGUgLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpY3Rpb25zIGRlIHRlbXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdVbmlxdWVtZW50IGxlcyBub3V2ZWF1eCBhcnRpY2xlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdVbmlxdWVtZW50IGxlcyBhcnRpY2xlcyBjcsOpw6lzIGVudHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ01vZMOobGUgZGUgcmVjaGVyY2hlIGVuIG1vZMOobGUgPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ051bcOpcm8gZFwnYXJ0aWNsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1JlY2hlcmNoZXIgZGVzIGFydGljbGVzIGF2ZWMgbW90LWNsw6knOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUHVibGlxdWUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1JldmVuaXIgw6AgbFwnZXhwbG9yYXRldXIgZGUgbGEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdMZXMgcGVybWlzc2lvbnMgZFwnw6ljcml0dXJlIHNvbnQgcmVxdWlzZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnQXVjdW5lcyBjYXTDqWdvcmllcyB0cm91dsOpZXMgZGFucyBsZXNxdWVsbGVzIHZvdXMgYXZleiBsZSBkcm9pdCBkXCfDqWNyaXR1cmUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdBdWN1bmVzIGxhbmd1ZXMgcGFyIGTDqWZhdXQgdHJvdXbDqWVzIGV0IGltcG9zc2libGUgZFwnZW4gY3LDqWVyIHVuZSBub3V2ZWxsZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdCZXNvaW4gZGUgbFwnSUQgZGUgbGEgY2F0w6lnb3JpZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ1VuZSBjYXTDqWdvcmllIGRldnJhaXQgYXZvaXIgdW4gbm9tICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0NldHRlIGNhdMOpZ29yaWUgZXhpc3RlIGTDqWrDoCAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnQ2V0dGUgY2F0w6lnb3JpZSBleGlzdGUgZMOpasOgICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkZSBjYXTDqWdvcmllIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnSW1wb3NzaWJsZSBkZSBzdXBwcmltZXIgbGEgY2F0w6lnb3JpZSAlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0NhdMOpZ29yaWUgbWlzZSDDoCBqb3VyICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0NhdMOpZ29yaWUgYWpvdXTDqWUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdTdXBwcmltZXIgbGEgY2F0w6lnb3JpZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkXCfDqWzDqW1lbnQgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ1ZvdXMgblwnYXZleiBwYXMgbGEgcGVybWlzc2lvbiBwb3VyIGNldHRlIGNhdMOpZ29yaWUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICdJbXBvc3NpYmxlIGRlIHN1cHByaW1lciBsXCdhcnRpY2xlICVzICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnTFwnSUQgZGUgY2F0w6lnb3JpZSAlcyBlc3QgaW52YWxpZGUgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBwdWlzcXVcJ2F1Y3VuIElEIGRcJ8OpbMOpbWVudCBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnSGlzdG9yaXF1ZSBkZSBsYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdKb3VybmFsIGRlIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICdDb25maWd1cmF0aW9uIGR1IG1vZHVsZSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuw6ljZXNzYWlyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIGR1IG1vZHVsZSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBkb2l0IMOqdHJlIHVuZSByw6lmw6lyZW5jZSAiaGFzaCIgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ0F1Y3VuZXMgY29uZmlndXJhdGlvbnMgdHJvdXbDqWVzIHBvdXIgbGEgdnVlICIlcyIgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkZSBsYW5nYWdlIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTGUgbm9tIGVzdCByZXF1aXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0NldHRlIGxhbmd1ZSBleGlzdGUgZMOpasOgICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnSW1wb3NzaWJsZSBkZSBzdXBwcmltZXIgbGEgbGFuZ3VlICVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnTGFuZ3VlIG1pc2Ugw6Agam91ciAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdMYW5ndWUgYWpvdXTDqWUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdTdXBwcmltZXIgbGEgbGFuZ3VlICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSw6lzdWx0YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdEZXJuacOocmUgbWlzZSDDoCBqb3VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NoYW1wcyBkeW5hbWlxdWVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdBdWN1biAlcyBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ0ltcG9zc2libGUgZGUgY2hhcmdlciAiTGFuZ3VhZ2VPYmplY3QiICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnQXVjdW5zIHLDqXN1bHRhdHMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTnVtw6lybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICdEZXJuacOocmVzIG1vZGlmaWNhdGlvbnMgcGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRGF0ZSBkZSBjcsOpYXRpb24gZGUgbFwnw6lsw6ltZW50IChhdmFudC9hcHLDqHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0RhdGUgZGUgY3LDqWF0aW9uIGRlIGxcJ8OpbMOpbWVudCAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRGF0ZSBkZSBtb2RpZmljYXRpb24gZGUgbFwnw6lsw6ltZW50IChhdmFudC9hcHLDqHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0RhdGUgZGUgbW9kaWZpY2F0aW9uIGRlIGxcJ8OpbMOpbWVudCAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ8OJZ2FsIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ1BsdXMgZ3JhbmQgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICdQbHVzIGdyYW5kIG91IMOpZ2FsIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ1BsdXMgcGV0aXQgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICdQbHVzIHBldGl0IG91IMOpZ2FsIMOgJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ0xcJ0lEIGR1IGZpY2hpZXIgZXN0IG7DqWNlc3NhaXJlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnTWVyY2kgcG91ciB2b3RyZSB2b3RlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdWb3VzIGF2ZXogZMOpasOgIHZvdMOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdBdWN1bmUgbm90ZSBzw6lsZWN0aW9ubsOpZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ0xlIG3DqWNhbmlzbWUgZGUgdm90ZSBuXCdlc3QgcGFzIGFjdGl2w6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJ0xlIHRhdXggZGUgdm90ZSBuXCdhIHBhcyDDqXTDqSBkw6lmaW5pICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltZXIgY2V0IGFydGljbGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICdDcsOpw6kgZW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnTFwnSUQgZGUgbFwnw6lsw6ltZW50IGVzdCBuw6ljZXNzYWlyZSAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdEZXJuaWVycyBhcnRpY2xlcyBjcsOpw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdEZXJuaWVycyBhcnRpY2xlcyBtb2RpZmnDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnVG9wIDEwIGRlcyBhcnRpY2xlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIHR5cGUgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICdMZSB0eXBlIGRvaXQgw6p0cmUgc29pdCAiRGVybmllcnMgYXJ0aWNsZXMgY3LDqcOpcyIsIHNvaXQgIkRlcm5pZXJzIGFydGljbGVzIG1vZGlmacOpcyIsIHNvaXQgIlRvcCAxMCBkZXMgYXJ0aWNsZXMiICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdJbXBvc3NpYmxlIGRlIGNyw6llciB1biBmaWNoaWVyIFJTUyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzICh0ZXh0ZSBpbnTDqWdyYWwpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBDbGllbnQgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIENsaWVudCAodGV4dGUgaW50w6lncmFsKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSBQdWJsaXF1ZSAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIFB1YmxpcXVlICh0ZXh0ZSBpbnTDqWdyYWwpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ05vdGUgbsOpY2Vzc2FpcmUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnQ2V0IGFydGljbGUgZXN0IHZpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdEZXJuaWVycyBhcnRpY2xlcyBjcsOpw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0Rlcm5pZXJzIGFydGljbGVzIG1vZGlmacOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGRlcyBhcnRpY2xlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICdUeXBlIGRlIGNvbnRlbnUnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3B1YmxpcXVlJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnQWpvdXRlciB1biBhcnRpY2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ291bGV1ciBDU1MgcG91ciBsZSByw6lzdWx0YXQgZHUgdm90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnRHVyw6llIGRlIHZhbGlkaXTDqSBkdSBjYWNoZSBwb3VyIGxlcyDDqWzDqW1lbnRzIGRlIGxhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gZGVzIGNhdMOpZ29yaWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnR2VzdGlvbiBkZXMgY2F0w6lnb3JpZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICdJbXByZXNzaW9uIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICdBcnRpY2xlcyBsacOpcyBhdSBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnQXJ0aWNsZXMgbGnDqXMgYXUgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICdab29tIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICdSZWNoZXJjaGUgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnQ2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ1Bvc2l0aW9ubmVtZW50IGTDqWNpbWFsIGR1IHLDqXN1bHRhdCBkZXMgdm90ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb20gZGUgY2F0w6lnb3JpZSBwYXIgZMOpZmF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0xhbmd1ZSBwYXIgZMOpZmF1dCBwb3VyIGxlcyBhcnRpY2xlcyBlbiBtb2RlIGxhbmdhZ2UgdW5pcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdUYWlsbGUgbWF4aW11bSBwYXIgZMOpZmF1dCBkZXMgdGl0cmVzIGRhbnMgdW4gYXJ0aWNsZSDDoCBtb250cmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdQcmlvcml0w6kgcGFyIGTDqWZhdXQgZGVzIHRpY2tldHMgcG91ciBsXCdhcHByb2JhdGlvbiBkXCdhcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ8OJdGF0IHBhciBkw6lmYXV0IGRcJ3VuZSBlbnRyw6llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnw4l0YXQgcGFyIGTDqWZhdXQgZGVzIHRpY2tldHMgcG91ciBsXCdhcHByb2JhdGlvbiBkXCdhcnRpY2xlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVHlwZSBwYXIgZMOpZmF1dCBkZXMgdGlja2V0cyBwb3VyIGxcJ2FwcHJvYmF0aW9uIGRcJ2FydGljbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1N1cHByaW1lciBjZXR0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ01vZGlmaWVyIGNldHRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWN0aXZlciBsZSBtb2R1bGUgImxhbmdhZ2VzIG11bHRpcGxlcyIgZGUgbGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdBY3RpdmVyIGxlIG1vZHVsZSBkZSBtw6ljYW5pc21lIGRlIHZvdGUgZGUgbGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0V4cGxvcmF0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ1pvbmUgZGUgbGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ1pvbmUgZGUgbGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJ1N1cHByaW1lciBsYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ8OJZGl0ZXIgbGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICdIaXN0b3JpcXVlIGRlIGxhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnSW1wcmVzc2lvbiBkZSBsYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlxdWUgZGUgY2V0dGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gZGVzIGxhbmd1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICdHZXN0aW9uIGRlcyBsYW5ndWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdMaWVyIHVuIGF1dHJlIG9iamV0IMOgIGNldCDDqWzDqW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICdOb3V2ZWwgYXJ0aWNsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTGVzIG5vdXZlYXV4IGFydGljbGVzIGRvaXZlbnQgw6p0cmUgYXBwcm91dsOpcyBhdmFudCBkXCfDqnRyZSBwdWJsacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1lciBjZXR0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICdJbXByZXNzaW9uIGRlIGxhIEZBUSBwdWJsaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ1Z1ZSBkw6l0YWlsbMOpZSBkZSBsYSBGQVEgcHVibGlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ1JlY2hlcmNoZSBkYW5zIGxhIEZBUSBwdWJsaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICdGQVEgUHVibGlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUmVjaGVyY2hlciBkYW5zIGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ1JlY2hlcmNoZXIgZGFucyBsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ0FmZmljaGVyIGxcJ2FydGljbGUgZW4gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnQWZmaWNoZXIgbGUgY2hlbWluIG91aS9ub24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdBZmZpY2hlciBsZXMgw6lsw6ltZW50cyBkZXMgc291cy1jYXTDqWdvcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnU29sdXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1N5bXB0w7RtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdUZXh0ZSB1bmlxdWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ8OJbMOpbWVudCBiYXJyZSDDoCBvdXRpbHMgcG91ciByYWNjb3VyY2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5lIChjbGllbnQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5lIChvcMOpcmF0ZXVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdwdWJsaXF1ZSAodG91cyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAncHVibGlxdWUgKHB1YmxpYyknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdHeUlLIGJlamVneXrDqXMgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnS3VsY3NzemF2YWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdFZ3kga2F0ZWfDs3JpYSBrw7Z0ZWxlesWRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0rDs3bDoWhhZ3nDoXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnR3lJSyBrYXRlZ8Ozcmlha2V6ZWzDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0d5SUsga2F0ZWfDs3JpYSBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICdHeUlLIGthdGVnw7NyaWEgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdLYXRlZ8OzcmlhIGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnQWxrYXRlZ8OzcmnDoWphIGVubmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnVsOhbGFzc3pvbiBsZWdhbMOhYmIgZWd5IGpvZ29zdWx0c8OhZyBjc29wb3J0b3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICfDnGd5aW50w6l6xZFjc29wb3J0b2ssIGFtZWx5ZWsgaG96esOhZsOpcm5layBhIGJlamVneXrDqXNla2hleiBlYmJlbiBhIGthdGVnw7NyacOhYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnQSBiw7ZuZ8Opc3rFkWJlbiBtZWdqZWd5esOpc2vDqW50IGZvZyBtZWdqZWxlbm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSBrYXRlZ8OzcmnDoXQ/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTmVtIHTDtnLDtmxoZXRpIGV6dCBhIGthdGVnw7NyacOhdC4gTGVnYWzDoWJiIGVneSBHeUlLIGJlamVneXrDqXNiZW4gaGFzem7DoWxqw6FrIMOpcy92YWd5IGxlZ2Fsw6FiYiBlZ3kgbcOhc2lrIGthdGVnw7NyaWEgc3rDvGzFkWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRXp0IGEga2F0ZWfDs3Jpw6F0IGEga8O2dmV0a2V6xZEgR3lJSyBiZWplZ3l6w6lzZWtuw6lsIGhhc3puw6FsasOhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFeiBhIGthdGVnw7NyaWEgYSBrw7Z2ZXRrZXrFkSBhbGthdGVnw7NyacOhayBzesO8bMWRamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSBHeUlLIGJlamVneXrDqXN0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdHeUlLJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdHeUlLIGLDtm5nw6lzesWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ0d5b3JzIGtlcmVzw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdIZWx5ZXR0ZXPDrXTFkSBrYXJha3RlcmVrIGVuZ2Vkw6lseWV6ZXR0ZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1NwZWNpw6FsaXMga2VyZXPDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ0Fsa2F0ZWfDs3Jpw6FrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0d5SUsgYmVqZWd5esOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnTmVtIHRhbMOhbGhhdMOzayBhbGthdGVnw7NyacOhay4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0VsxZF6bcOpbnllayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdFbMWRem3DqW55dGFydGFsb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0zDqXRyZWhvesOhcyBpZGVqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsaGF0w7NrIEd5SUsgbmFwbMOzIGFkYXRvay4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR3lJSyBueWVsdmtlemVsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICdHeUlLIG55ZWx2IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0d5SUsgbnllbHYgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdBa2tvciBoYXN6bsOhbGphIGV6dCBhIHN6b2xnw6FsdGF0w6FzdCwgaGEgdMO2YmIgbnllbHZ2ZWwgc3plcmV0bmUgZG9sZ296bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ055ZWx2IGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdOeWVsdiBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ055ZWx2IHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1ZhbMOzYmFuIHTDtnLDtmxuaSBzemVyZXRuw6kgZXp0IGEgbnllbHZldD8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTmVtIHTDtnLDtmxoZXRpIGV6dCBhIG55ZWx2ZXQuIExlZ2Fsw6FiYiBlZ3kgR3lJSyBiZWplZ3l6w6lzYmVuIGhhc3puw6FsasOhayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICdFenQgYSBueWVsdmV0IGEga8O2dmV0a2V6xZEgR3lJSyBiZWplZ3l6w6lzZWtuw6lsIGhhc3puw6FsasOhayc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0vDtnJueWV6ZXQgYmXDoWxsw610w6Fzb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnR3lJSyBiZWplZ3l6w6lzZWsgb2xkYWxhbmvDqW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ05lbSB0YWzDoWxoYXTDs2sgR3lJSyBhZGF0b2suJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdheiA1LWLFkWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnS3VsY3NzesOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdTemF2YXrDoXMgKHDDqWxkw6F1bCBFZ3llbmzFkSAxMCB2YWd5IE5hZ3lvYmIgbWludCA2MCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnw4lydMOpa2Vsw6lzIChww6lsZMOhdWwgRWd5ZW5sxZEgMjUlIHZhZ3kgTmFneW9iYiBtaW50IDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdKw7N2w6FoYWd5b3R0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXRvdHRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnR3lJSyBiZWplZ3l6w6lzIGzDqXRyZWhvesOhc2kgaWRlamUgKGVsxZF0dC91dMOhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnR3lJSyBiZWplZ3l6w6lzIGzDqXRyZWhvesOhc2kgaWRlamUgKGvDtnrDtnR0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0d5SUsgYmVqZWd5esOpcyBtw7Nkb3PDrXTDoXNpIGlkZWplIChlbMWRdHQvdXTDoW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0d5SUsgYmVqZWd5esOpcyBtw7Nkb3PDrXTDoXNpIGlkZWplIChrw7Z6w7Z0dCknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnR3lJSyBzemFiYWQtc3phdmFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnR3lJSyBrZXJlc8Opcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1Byb2ZpbCBraXbDoWxhc3p0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdTemF2YXrDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ05pbmNzZW5layBzemF2YXrDoXNpIGJlw6FsbMOtdMOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnQWRvdHQgc3phdmF6YXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdww6lsZMOhdWwgRWd5ZW5sxZEgMTAgdmFneSBOYWd5b2JiIG1pbnQgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ8OJcnTDqWtlbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnTmluY3NlbmVrIMOpcnTDqWtlbMOpc2kgYmXDoWxsw610w6Fzb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ0Fkb3R0IMOpcnTDqWtlbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ3DDqWxkw6F1bCBFZ3llbmzFkSAyNSUgdmFneSBOYWd5b2JiIG1pbnQgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnR3lJSyBiZWplZ3l6w6lzIGzDqXRyZWhvesOhc2kgaWRlamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdHeUlLIGJlamVneXrDqXMgbcOzZG9zw610w6FzaSBpZGVqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdHeUlLIGluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnw4lydMOpa2Vsw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3phdmF6YXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdOZW0gdGFsw6FsaGF0w7NrIHN6YXZhemF0b2shJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdOZW0gdGFsw6FsaGF0w7NrIHN6YXZhemF0b2shIExlZ3llbiBheiBlbHPFkSwgYWtpIMOpcnTDqWtlbGkgZXp0IGEgR3lJSyBiZWplZ3l6w6lzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ01lbGzDqWtsZXQgbGV0w7ZsdMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdBIGvDtnZldGtlesWRIGxlw61yw6FzaSBibG9ra29rYmFuIGzDqXbFkSBoaXZhdGtvesOhc29rIG1lZ255aXTDoXPDoWhveiBsZWhldHPDqWdlcywgaG9neSBsZSBrZWxsIG55b21uaWEgYSBDdHJsIHZhZ3kgQ21kIHZhZ3kgU2hpZnQgYmlsbGVudHnFsXQsIG1pa8O2emJlbiBhIGhpdmF0a296w6FzcmEga2F0dGludCAoYSBiw7ZuZ8Opc3rFkWrDqXTFkWwgw6lzIG9wZXLDoWNpw7NzIHJlbmRzemVyw6l0xZFsIGbDvGdnxZFlbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnTWVubnlpcmUgdm9sdCBoYXN6bm9zIGV6IGEgYmVqZWd5esOpcz8gS8OpcmrDvGsga8O8bGRqZSBlbCBuZWvDvG5rIGF6IMOpcnTDqWtlbMOpc8OpdCBhIEd5SUsgYWRhdGLDoXppcyB0w7Zrw6lsZXRlc8OtdMOpc8OpaGV6LiBLw7ZzesO2bmrDvGshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmVtIGhhc3pub3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnbmFneW9uIGhhc3pub3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0d5SUsgY8OtbSBob3p6w6FhZMOhc2EgYSBiZWplZ3l6w6lzIHTDoXJnecOhaG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0d5SUsgc3rDtnZlZyBiZXN6w7pyw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdUZWxqZXMgR3lJSyBiZXN6w7pyw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdHeUlLIGhpdmF0a296w6FzIGJlc3rDunLDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdHeUlLIHN6w7Z2ZWcgw6lzIGhpdmF0a296w6FzIGJlc3rDunLDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdUZWxqZXMgR3lJSyDDqXMgaGl2YXRrb3rDoXMgYmVzesO6csOhc2EnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsaGF0w7NrIEd5SUsgYmVqZWd5esOpc2VrLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJ0V6IGhhc3pub3MgbGVoZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ05lbSB0YWzDoWxoYXTDs2sgaGFzem5vcyBlcsWRZm9ycsOhc29rIGEgdMOhcmd5aG96IMOpcyBhIHN6w7Z2ZWdoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICfDjXJqb24gYmUgZWd5IHTDoXJneWF0IHZhZ3kgc3rDtnZlZ2V0IGEgaGFzem5vcyBlcsWRZm9ycsOhc29rIGxpc3TDoWrDoW5hayBsZWvDqXLDqXPDqWhlei4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1N6YWJhZC1zemF2YXMga2VyZXPDqXMgYSBHeUlLIGJlamVneXrDqXNla2JlbiAocMOpbGTDoXVsIOKAnkoqbm9z4oCdIHZhZ3kg4oCeS292KuKAnSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdTemF2YXrDoXNpIGtvcmzDoXRvesOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdDc2FrIGEgc3phdmF6YXRva2thbCByZW5kZWxrZXrFkSBHeUlLIGJlamVneXrDqXNla+KApic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ8OJcnTDqWtlbMOpcyBrb3Jsw6F0b3rDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdDc2FrIGF6IMOpcnTDqWtlbMOpc3NlbCByZW5kZWxrZXrFkSBHeUlLIGJlamVneXrDqXNla+KApic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ0lkxZEgbWVna8O2dMOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdDc2FrIGF6IGVra29yIGzDqXRyZWhvem90dCBHeUlLIGJlamVneXrDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdDc2FrIGF6IGUga8O2esO2dHQgbMOpdHJlaG96b3R0IEd5SUsgYmVqZWd5esOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ0tlcmVzw6lzaSBwcm9maWwgc2FibG9ua8OpbnQ/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnQmVqZWd5esOpc3N6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQmVqZWd5esOpc2VrIGtlcmVzw6lzZSBrdWxjc3N6YXZha2thbCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdOeWlsdsOhbm9zJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdWaXNzemEgYSBHeUlLIGLDtm5nw6lzesWRaMO2eic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnw41yw6FzLCBvbHZhc8OhcyBqb2dvc3VsdHPDoWdyYSB2YW4gc3rDvGtzw6lnZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ05lbSB0YWzDoWxoYXTDs2sgb2x5YW4ga2F0ZWfDs3Jpw6FrLCBhaG9sIGEgZmVsaGFzem7DoWzDs25hayDDrXLDoXNpL29sdmFzw6FzaSBqb2dvc3VsdHPDoWdhaSB2YW5uYWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJ05lbSB0YWzDoWxoYXTDsyBhbGFww6lydGVsbWV6ZXR0IG55ZWx2LCDDqXMgbmVtIGxlaGV0IMO6amF0IGzDqXRyZWhvem5pLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ0thdGVnw7NyaWEtYXpvbm9zw610w7Mgc3rDvGtzw6lnZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VneSBrYXRlZ8OzcmnDoW5hayByZW5kZWxrZXpuaWUga2VsbCBuw6l2dmVsISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRXogYSBrYXRlZ8OzcmlhIG3DoXIgbMOpdGV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdFeiBhIGthdGVnw7NyaWEgbcOhciBsw6l0ZXppayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBrYXRlZ8OzcmlhLWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ05lbSBzaWtlcsO8bHQgYSh6KSAlcyBrYXRlZ8OzcmlhIHTDtnJsw6lzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnR3lJSyBrYXRlZ8OzcmlhIGZyaXNzw610dmUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdHeUlLIGthdGVnw7NyaWEgaG96esOhYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSB0w7ZybMOpc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3MgZWxlbWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnYSBlaGhleiBhIGthdGVnw7NyacOhaG96ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICdOZW0gc2lrZXLDvGx0IGEoeikgJXMgR3lJSyBiZWplZ3l6w6lzIHTDtnJsw6lzZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQSh6KSAlcyBrYXRlZ8OzcmlhLWF6b25vc8OtdMOzIMOpcnbDqW55dGVsZW4uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYXogZWzFkXptw6lueWVrZXQsIG1pdmVsIG5pbmNzIGVsZW1hem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0d5SUsgZWzFkXptw6lueWVrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnR3lJSyBuYXBsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnQSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBrb25maWd1csOhY2nDs3MgYmXDoWxsw610w6FzIHN6w7xrc8OpZ2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ0EgRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcga29uZmlndXLDoWNpw7NzIGJlw6FsbMOtdMOhc25hayBraXZvbmF0LWhpdmF0a296w6FzbmFrIGtlbGwgbGVubmllISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ05lbSB0YWzDoWxoYXTDsyBrb25maWd1csOhY2nDs3MgYmXDoWxsw610w6FzIGEoeikg4oCeJXPigJ0gbsOpemV0aGV6ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBueWVsdmF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0EgbsOpdiBrw7Z0ZWxlesWRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0V6IGEgbnllbHYgbcOhciBsw6l0ZXppayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnTmVtIHNpa2Vyw7xsdCBhKHopICVzIG55ZWx2IHTDtnJsw6lzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnR3lJSyBueWVsdiBmcmlzc8OtdHZlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnR3lJSyBueWVsdiBob3p6w6FhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICclcyBueWVsdiB0w7ZybMOpc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ0VyZWRtw6lueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ1V0b2xzw7MgZnJpc3PDrXTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnR3lJSyBkaW5hbWlrdXMgbWV6xZFrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdOaW5jcyAlcyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICdOZW0gbGVoZXQgYmV0w7ZsdGVuaSBhIG55ZWx2b2JqZWt0dW1vdCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmluY3MgdGFsw6FsYXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdHeUlLIHN6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXRvdHRhOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0d5SUsgZWxlbSBsw6l0cmVob3rDoXNpIGlkZWplIChlbMWRdHQvdXTDoW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0d5SUsgZWxlbSBsw6l0cmVob3rDoXNpIGlkZWplIChrw7Z6w7Z0dCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdHeUlLIGVsZW0gbcOzZG9zw610w6FzaSBpZGVqZSAoZWzFkXR0L3V0w6FuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdHeUlLIGVsZW0gbcOzZG9zw610w6FzaSBpZGVqZSAoa8O2esO2dHQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ0VneWVubMWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ05hZ3lvYmIgbWludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnTmFneW9iYiBtaW50IHZhZ3kgZWd5ZW5sxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnS2lzZWJiIG1pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ0tpc2ViYiBtaW50IHZhZ3kgZWd5ZW5sxZEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnRsOhamxhem9ub3PDrXTDsyBzesO8a3PDqWdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnS8O2c3rDtm5qw7xrIGEgc3phdmF6YXTDoXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnTcOhciBzemF2YXpvdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnTmluY3Mgw6lydMOpa2Vsw6lzIGtpdsOhbGFzenR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnQSBzemF2YXrDoXNpIG1lY2hhbml6bXVzIG5pbmNzIGVuZ2Vkw6lseWV6dmUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnQSBzemF2YXrDoXPDqXJ0w6lrZWzDqXMgbmluY3MgbWVnaGF0w6Fyb3p2YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnR3lJSyBiZWplZ3l6w6lzIG55b210YXTDoXNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnTMOpdHJlaG96dmEgZXplayBrw7Z6w7Z0dCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICdFbGVtYXpvbm9zw610w7Mgc3rDvGtzw6lnZXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdHeUlLIGJlamVneXrDqXNlayAow7pqb25uYW4gbMOpdHJlaG96dmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdHeUlLIGJlamVneXrDqXNlayAobGVndXTDs2JiIG3Ds2Rvc8OtdHZhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdHeUlLIGJlamVneXrDqXNlayAobGVnam9iYiAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICdOaW5jcyB0w61wdXMgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnQSB0w61wdXMgY3NhayBMYXN0Q3JlYXRlLCBMYXN0Q2hhbmdlIHZhZ3kgVG9wMTAgbGVoZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnTmVtIGxlaGV0IGzDqXRyZWhvem5pIFJTUy1mw6FqbHQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChHeUlLIHN6YWJhZC1zemF2YXMpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSDDvGd5ZsOpbCAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gw7xneWbDqWwgKEd5SUsgc3phYmFkLXN6YXZhcyknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gbnlpbHbDoW5vcyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIG55aWx2w6Fub3MgKEd5SUsgc3phYmFkLXN6YXZhcyknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnw4lydMOpa2Vsw6lzIHN6w7xrc8OpZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnRXogYSBiZWplZ3l6w6lzIMO8cmVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMZWd1dMOzYmIgbMOpdHJlaG96b3R0IEd5SUsgYmVqZWd5esOpc2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0xlZ3V0w7NiYiBmcmlzc8OtdGV0dCBHeUlLIGJlamVneXrDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnTGVnam9iYiAxMCBHeUlLIGJlamVneXrDqXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGFydGFsb210w61wdXMnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2JlbHPFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2vDvGxzxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnbnlpbHbDoW5vcyc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09LJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnRWd5IHN6xbFyxZEgYSBIVE1MIGtpbWVuZXRoZXosIGhvZ3kgaGl2YXRrb3rDoXNva2F0IGFkam9uIGVneSBtZWdoYXTDoXJvem90dCBzesO2dmVnIG3DtmfDqS4gQXogSW1hZ2UgZWxlbSBrw6l0ZsOpbGUgYmVtZW5ldGV0IGZvZ2FkLiBBeiBlbHPFkSBhIGvDqXAgbmV2ZSAocMOpbGTDoXVsIGZhcS5wbmcpLiBFYmJlbiBheiBlc2V0YmVuIGF6IE9UUlMga8OpcGVrIMO6dHZvbmFsYSBsZXN6IGZlbGhhc3puw6FsdmEuIEEgbcOhc29kaWsgbGVoZXTFkXPDqWcgYSBrw6lwcmUgbXV0YXTDsyBoaXZhdGtvesOhcyBiZXN6w7pyw6FzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnR3lJSyBiZWplZ3l6w6lzIGhvenrDoWFkw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUyBzesOtbiBhIHN6YXZhesOhcyBlcmVkbcOpbnnDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ0d5b3Jzw610w7N0w6FyIGlkxZEgYSBHeUlLIGVsZW1layBlbGhhZ3nDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnw7NyaWFrZXplbMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJ0thdGVnw7NyaWFrZXplbMOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ8OcZ3lmw6lsIEd5SUsgbnlvbXRhdMOhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICfDnGd5ZsOpbCBHeUlLIGthcGNzb2zDs2TDsyBiZWplZ3l6w6lzZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnw5xneWbDqWwgR3lJSyBrYXBjc29sw7Nkw7MgYmVqZWd5esOpc2VrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICfDnGd5ZsOpbCBHeUlLIG5hZ3nDrXTDoXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnw5xneWbDqWwgR3lJSyBrZXJlc8Opcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ8OcZ3lmw6lsIEd5SUsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0Egc3phdmF6w6FzaSBlcmVkbcOpbnkgdGl6ZWRlc2plZ3llaW5layBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdBbGFww6lydGVsbWV6ZXR0IGthdGVnw7NyaWFuw6l2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnQSBHeUlLIGJlamVneXrDqXNlayBhbGFww6lydGVsbWV6ZXR0IG55ZWx2ZSBlZ3lueWVsdsWxIG3Ds2RiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ0VneSBHeUlLIGJlamVneXrDqXNiZW4gbWVnamVsZW7DrXRlbmTFkSBjw61tZWsgYWxhcMOpcnRlbG1lemV0dCBsZWduYWd5b2JiIG3DqXJldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0EgamVneWVrIGFsYXDDqXJ0ZWxtZXpldHQgcHJpb3JpdMOhc2EgYSBHeUlLIGJlamVneXrDqXNlayBqw7N2w6FoYWd5w6Fzw6Fuw6FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnQSBHeUlLIGJlamVneXrDqXMgYWxhcMOpcnRlbG1lemV0dCDDoWxsYXBvdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdBIGplZ3llayBhbGFww6lydGVsbWV6ZXR0IMOhbGxhcG90YSBhIEd5SUsgYmVqZWd5esOpc2VrIGrDs3bDoWhhZ3nDoXPDoW7DoWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0EgamVneWVrIGFsYXDDqXJ0ZWxtZXpldHQgdMOtcHVzYSBhIEd5SUsgYmVqZWd5esOpc2VrIGrDs3bDoWhhZ3nDoXPDoW7DoWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdBIG3FsXZlbGV0IHBhcmFtw6l0ZXIgYWxhcMOpcnRlbG1lemV0dCDDqXJ0w6lrZSBhIG55aWx2w6Fub3MgZWzFkXTDqXRwcm9ncmFtbsOhbC4gQSBtxbF2ZWxldCBwYXJhbcOpdGVydCBhIHJlbmRzemVyIHBhcmFuY3Nmw6FqbGphaWJhbiBoYXN6bsOhbGrDoWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdNxbF2ZWxldGVrIG1lZ2hhdMOhcm96w6FzYSwgYWhvbCBlZ3kgYmXDoWxsw610w6Fzb2sgZ29tYiDDqXJoZXTFkSBlbCBhIGthcGNzb2x0IG9iamVrdHVtb2sgZmVsw7xsZXRpIGVsZW1lbiAoTGlua09iamVjdDo6Vmlld01vZGUgPSDigJ7DtnNzemV0ZXR04oCdKS4gTmUgZmVsZWRqZSwgaG9neSBlemVrbmVrIGEgbcWxdmVsZXRla25layByZW5kZWxrZXpuacO8ayBrZWxsIGEga8O2dmV0a2V6xZEgSlMgw6lzIENTUyBmw6FqbG9rIHJlZ2lzenRyw6Fsw6Fzw6F2YWw6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIMOpcyBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBhIEd5SUsgY8OtbcOpdCDDtnNzemUga2VsbC1lIGbFsXpuaSBhIGJlamVneXrDqXMgdMOhcmd5w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJ0FubmFrIG1lZ2hhdMOhcm96w6FzYSwgaG9neSBtZWx5IG9zemxvcG9rIGxlZ3llbmVrIGzDoXRoYXTDs2sgYSBrYXBjc29sdCBHeUlLLW9rIGZlbMO8bGV0aSBlbGVtZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0g4oCew7Zzc3pldGV0dOKAnSkuIE1lZ2plZ3l6w6lzOiBjc2FrIEd5SUsgYXR0cmliw7p0dW1vayDDqXMgZGluYW1pa3VzIG1lesWRayAoRHluYW1pY0ZpZWxkX07DqXZYKSBlbmdlZMOpbHllemV0dGVrIGEgRGVmYXVsdENvbHVtbnMgw6lydMOpa2VpbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRWd5IMOhdHRla2ludMWRIG1vZHVsdCBoYXTDoXJveiBtZWcgZWd5IEd5SUsgbmFwbMOzIGtpcyBuw6l6ZXTDqW5layBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdFZ3kgw6F0dGVraW50xZEgbW9kdWx0IGhhdMOhcm96IG1lZyBlZ3kgR3lJSyBsaXN0YSBraXMgbsOpemV0w6luZWsgbWVnamVsZW7DrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBHeUlLIGF0dHJpYsO6dHVtb3QgYSBHeUlLIHJlbmRlesOpc2hleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsga2VyZXPDqXPDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBHeUlLIGF0dHJpYsO6dHVtb3QgYSBHeUlLIHJlbmRlesOpc2hleiBheiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsga2VyZXPDqXPDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBhdHRyaWLDunR1bW90IGEgR3lJSyByZW5kZXrDqXNoZXogYSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsga2VyZXPDqXPDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBhdHRyaWLDunR1bW90IGEgR3lJSyByZW5kZXrDqXNoZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBHeUlLIGF0dHJpYsO6dHVtb3QgYSBHeUlLIHJlbmRlesOpc2hleiBheiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBHeUlLIGF0dHJpYsO6dHVtb3QgYSBHeUlLIHJlbmRlesOpc2hleiBhIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkWrDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBzb3JyZW5kZXQgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRasOpbmVrIGVyZWRtw6luecOpYmVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVnw7pqYWJiIGZlbMO8bHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBHeUlLIHNvcnJlbmRldCBheiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6luZWsgZXJlZG3DqW55w6liZW4uIEZlbDogbGVncsOpZ2ViYmkgZmVsw7xscmUuIExlOiBsZWfDumphYmIgZmVsw7xscmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBHeUlLIHNvcnJlbmRldCBhIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkWrDqW5layBlcmVkbcOpbnnDqWJlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ8O6amFiYiBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBlZ3kga2VyZXPDqXNpIGVyZWRtw6lueSBhbGFww6lydGVsbWV6ZXR0IEd5SUsgc29ycmVuZGrDqXQgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLiBGZWw6IGxlZ3LDqWdlYmJpIGZlbMO8bHJlLiBMZTogbGVnw7pqYWJiIGZlbMO8bHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGVneSBrZXJlc8Opc2kgZXJlZG3DqW55IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBzb3JyZW5kasOpdCBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uIEZlbDogbGVncsOpZ2ViYmkgZmVsw7xscmUuIExlOiBsZWfDumphYmIgZmVsw7xscmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGVneSBrZXJlc8Opc2kgZXJlZG3DqW55IGFsYXDDqXJ0ZWxtZXpldHQgR3lJSyBzb3JyZW5kasOpdCBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4gRmVsOiBsZWdyw6lnZWJiaSBmZWzDvGxyZS4gTGU6IGxlZ8O6amFiYiBmZWzDvGxyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHRlbiBtZWdqZWxlbsOtdGV0dCBHeUlLIGtlcmVzw6lzaSBhdHRyaWLDunR1bW90IGEgR3lJSyBrZXJlc8OpcyBrw6lwZXJuecWRbsOpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBlZ3kgR3lJSy1hbGFww7ogamVneWJlIGJlc3rDunJhbmTDsyBpbmZvcm3DoWNpw7NrYXQuIEEg4oCeVGVsamVzIEd5SUvigJ0gc3rDtnZlZ2V0LCBtZWxsw6lrbGV0ZWtldCDDqXMgYmXDoWd5YXpvdHQga8OpcGVrZXQgdGFydGFsbWF6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgdmV6w6lybMWRcHVsdCBow6F0dMOpcnByb2dyYW0gcGFyYW3DqXRlcmVpdC4gQSDigJ5MaW1pdOKAnSBoYXTDoXJvenphIG1lZyBheiBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgYmVqZWd5esOpc2VrIHN6w6Ftw6F0LiBBIOKAnkdyb3Vw4oCdIGhhc3puw6FsaGF0w7MgYSBob3p6w6Fmw6lyw6lzIGtvcmzDoXRvesOhc8OhaG96IGEgYsWRdsOtdG3DqW55cmUgKHDDqWxkw6F1bCBHcm91cDogYWRtaW47Y3NvcG9ydDE7Y3NvcG9ydDI7KS4gQSDigJ5EZWZhdWx04oCdIGplbHppLCBob2d5IGEgYsWRdsOtdG3DqW55IGFsYXDDqXJ0ZWxtZXpldHRlbiBlbmdlZMOpbHllenZlIHZhbiwgdmFneSBob2d5IGEgZmVsaGFzem7DoWzDs25hayBrw6l6emVsIGtlbGwgZW5nZWTDqWx5ZXpuaWUgYXp0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgbWVnamVsZW7DrXRldHQgb3N6bG9wb2thdCBhIEd5SUsgYsO2bmfDqXN6xZFiZW4uIEVubmVrIGEgYmXDoWxsw610w6FzbmFrIG5pbmNzIGhhdMOhc2EgYXogb3N6bG9wIGhlbHl6ZXTDqXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBtZWdqZWxlbsOtdGV0dCBvc3psb3Bva2F0IGEgR3lJSyBuYXBsw7NiYW4uIEVubmVrIGEgYmXDoWxsw610w6FzbmFrIG5pbmNzIGhhdMOhc2EgYXogb3N6bG9wIGhlbHl6ZXTDqXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIG1lZ2plbGVuw610ZXR0IG9zemxvcG9rYXQgYSBHeUlLIGtlcmVzxZFiZW4uIEVubmVrIGEgYmXDoWxsw610w6FzbmFrIG5pbmNzIGhhdMOhc2EgYXogb3N6bG9wIGhlbHl6ZXTDqXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ01lZ2hhdMOhcm96emEsIGhvZ3kgYSDigJ5HeUlLIGJlc3rDunLDoXNh4oCdIGhpdmF0a296w6FzIGhvbCBsZWd5ZW4gbWVnamVsZW7DrXR2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnQSBHeUlLIGVsZW0gc3phYmFkIHN6w7Z2ZWdlcyBtZXrFkWrDqW5layBtZWdoYXTDoXJvesOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0EgR3lJSyB0w7ZybMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsgaG96esOhYWTDoXNhIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBzemVya2VzenTDqXNlIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsgw6F0dGVraW50xZEga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyDDoXR0ZWtpbnTFkSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIG55b210YXTDoXNhIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsgbnlvbXRhdMOhc2Ega8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyBueW9tdGF0w6FzYSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBrZXJlc8Opc2Uga8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsga2VyZXPDqXNlIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgbnlpbHbDoW5vcyBmZWzDvGxldCBHeUlLIGtlcmVzw6lzZSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBraXMgZm9ybcOhdHVtIMOhdHRla2ludMWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBuYWd5w610w6FzYSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsgbmFnecOtdMOhc2Ega8OpcGVybnnFkWrDqW4gbWVnamVsZW7DrXRldHQgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgbnlpbHbDoW5vcyBmZWzDvGxldCBHeUlLIG5hZ3nDrXTDoXNhIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuw610ZXR0IGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdBIEd5SUsgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnVMO2YmIgbnllbHYgZW5nZWTDqWx5ZXrDqXNlIGEgR3lJSyBtb2R1bGJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnQSBrYXBjc29sw7Nkw7MgYmVqZWd5esOpc2VrIGZ1bmtjacOzIGVuZ2Vkw6lseWV6w6lzZSBheiDDvGd5ZsOpbCBlbMWRdMOpdHByb2dyYW1ob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnU3phdmF6w6FzaSBtZWNoYW5pem11cyBlbmdlZMOpbHllesOpc2UgYSBHeUlLIG1vZHVsYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0LDtm5nw6lzesWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJ0d5SUsgQUpBWCB2w6FsYXN6YWTDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ0d5SUsgQUpBWCB2w6FsYXN6YWTDsyBhIFJpY2h0ZXh0aGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ0d5SUsgdGVyw7xsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnR3lJSyB0ZXLDvGxldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdHeUlLIHTDtnJsw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdHeUlLIHN6ZXJrZXN6dMOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnR3lJSyBlbMWRem3DqW55ZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdHeUlLIG5hcGzDsyDDoXR0ZWtpbnTFkSDigJ5raXPigJ0ga29ybMOhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0d5SUsgw6F0dGVraW50xZEg4oCea2lz4oCdIGtvcmzDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0d5SUsgbnlvbXRhdMOhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgR3lJSyBrZXJlc8Opc2kgaMOhdHTDqXJwcm9ncmFtIMO6dHbDoWxhc3p0w7NqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnNC4gbWV6xZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnNS4gbWV6xZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdUZWxqZXMgR3lJSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdDc29wb3J0IGEgR3lJSyBiZWplZ3l6w6lzZWsgasOzdsOhaGFnecOhc2hvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0EgR3lJSyBlbMWRem3DqW55ZWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0JlbHPFkSBtZXrFkWsgZmVsdsOpdGVsZSBlZ3kgR3lJSy1hbGFww7ogamVneWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ01pbmRlbiBtZXrFkSBuZXbDqW5layBmZWx2w6l0ZWxlIGVneSBHeUlLLWFsYXDDuiBqZWd5YmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ0F6b2sgYSBmZWzDvGxldGVrLCBhaG9sIGEgZ3lvcnMga2VyZXPDqXNuZWsgbWVnIGtlbGwgamVsZW5uaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdOYXBsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ055ZWx2a2V6ZWzDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICdOeWVsdmtlemVsw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ0Ega2VyZXPDqXMga29ybMOhdG96w6FzYSBhIGt1bGNzc3rDsyBHeUlLIGJlamVneXrDqXNsaXN0YSDDtnNzemXDoWxsw610w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ03DoXNpayBvYmpla3R1bSBob3p6w6FrYXBjc29sw6FzYSBlaGhleiBhIEd5SUsgZWxlbWhleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ0F6b24gdsOhcsOzbGlzdGFuZXZlayBsaXN0w6FqYSwgYW1lbHlla27DqWwgYSBrYXBjc29sw7Nkw7MgYmVqZWd5esOpcyBmdW5rY2nDsyBlbmdlZMOpbHllenZlIHZhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnw4FsbGFwb3R0w61wdXNvayBsaXN0w6FqYSwgYW1lbHllayBoYXN6bsOhbGhhdMOzayBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OBbGxhcG90dMOtcHVzb2sgbGlzdMOhamEsIGFtZWx5ZWsgaGFzem7DoWxoYXTDs2sgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnw4FsbGFwb3R0w61wdXNvayBsaXN0w6FqYSwgYW1lbHllayBoYXN6bsOhbGhhdMOzayBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ0JldMO2bHTFkW1vZHVsIHJlZ2lzenRyw6FjacOzIGEgbnlpbHbDoW5vcyBmZWzDvGxldGhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBHeUlLIGLDtm5nw6lzesWRIGVyZWRtw6luecOpYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgbGVnbmFneW9iYiBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmw6lsZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkSBlcmVkbcOpbnnDqWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2VrIGxlZ25hZ3lvYmIgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBueWlsdsOhbm9zIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZEgZXJlZG3DqW55w6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBsZWduYWd5b2JiIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBsw6l2xZEgR3lJSyBuYXBsw7NiYW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBsZWduYWd5b2JiIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXMgZXJlZG3DqW55w6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBsZWduYWd5b2JiIHN6w6FtYSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGtlcmVzw6lzIGVyZWRtw6luecOpYmVuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgbGVnbmFneW9iYiBzesOhbWEgYXogw7xneWbDqWxmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kga2VyZXPDqXMgZXJlZG3DqW55w6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBsZWduYWd5b2JiIHN6w6FtYSBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIEd5SUsgYsO2bmfDqXN6xZFiZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgR3lJSyBiw7ZuZ8Opc3rFkWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2JlbiBsw6l2xZEgY8OtbWVrIGxlZ25hZ3lvYmIgbcOpcmV0ZSBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgR3lJSyBiw7ZuZ8Opc3rFkWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2JlbiBsw6l2xZEgY8OtbWVrIGxlZ25hZ3lvYmIgbcOpcmV0ZSBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBHeUlLIGtlcmVzxZFiZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIEd5SUsga2VyZXPFkWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2JlbiBsw6l2xZEgY8OtbWVrIGxlZ25hZ3lvYmIgbcOpcmV0ZSBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIEd5SUsga2VyZXPFkWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2JlbiBsw6l2xZEgY8OtbWVrIGxlZ25hZ3lvYmIgbcOpcmV0ZSBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0EgR3lJSyBuYXBsw7NiYW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNiZW4gbMOpdsWRIGPDrW1layBsZWduYWd5b2JiIG3DqXJldGUgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBtb2R1bCBhIEhUTUwgT3BlblNlYXJjaCBwcm9maWwgZWzFkcOhbGzDrXTDoXPDoWhveiBhIHLDtnZpZCBHeUlLIGtlcmVzw6lzbsOpbCBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBtb2R1bCBhIEhUTUwgT3BlblNlYXJjaCBwcm9maWwgZWzFkcOhbGzDrXTDoXPDoWhveiBhIHLDtnZpZCBHeUlLIGtlcmVzw6lzaGV6IGEgbnlpbHbDoW5vcyBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICdFZ3kgbW9kdWwgYSBneW9ycyBHeUlLIGtlcmVzw6lzIEhUTUwgT3BlblNlYXJjaCBwcm9maWxqw6FuYWsgZWzFkcOhbGzDrXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJ8OaaiBHeUlLIGJlamVneXrDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0F6IMO6aiBHeUlLIGJlamVneXrDqXNlayBqw7N2w6FoYWd5w6FzYSBzesO8a3PDqWdlcyBhIGvDtnp6w6l0w6l0ZWzDvGsgZWzFkXR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6liZW4gbWVnamVsZW7DrXRlbmTFkSBHeUlLIGJlamVneXrDqXNlayBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIG55aWx2w6Fub3MgZmVsw7xsZXQgR3lJSyBiw7ZuZ8Opc3rFkWrDqWJlbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2VrIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGtlcmVzw6lzaSBlcmVkbcOpbnkgbWluZGVuIG9sZGFsw6FuIG1lZ2plbGVuw610ZW5kxZEgR3lJSyBiZWplZ3l6w6lzZWsgc3rDoW1hIGF6IMO8Z3lmw6lsZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBrZXJlc8Opc2kgZXJlZG3DqW55IG1pbmRlbiBvbGRhbMOhbiBtZWdqZWxlbsOtdGVuZMWRIEd5SUsgYmVqZWd5esOpc2VrIHN6w6FtYSBhIG55aWx2w6Fub3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdBIG1lZ2plbGVuw610ZXR0IGVsZW1layBzesOhbWEgYSBsZWd1dMOzYmIgbcOzZG9zw610b3R0YWtiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnQSBtZWdqZWxlbsOtdGV0dCBlbGVtZWsgc3rDoW1hIGEgbGVndXTDs2JiIGzDqXRyZWhvem90dGFrYmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ0EgbWVnamVsZW7DrXRldHQgZWxlbWVrIHN6w6FtYSBhIGxlZ2pvYmIgMTAgc3pvbGfDoWx0YXTDoXNiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICdLaW1lbmV0c3rFsXLFkSBKYXZhU2NyaXB0IGhvenrDoWFkw6Fzw6Fob3ogYXogw7xneWbDqWxqZWd5IMO8emVuZXQga8OpcGVybnnFkWjDtnouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ0tpbWVuZXRrb3Jsw6F0IGEga2FwY3NvbMOzZMOzIEd5SUsgYmVqZWd5esOpc2VraGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYSBraXMgR3lJSyBuYXBsw7Mgw6F0dGVraW50xZEgb2xkYWxhaWhveiAoYW1lbHlla2JlbiBhIEd5SUsgZWxlbWVrIG1lZ2plbGVubmVrKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGtpcyBHeUlLIMOhdHRla2ludMWRIG9sZGFsYWlob3ogKGFtZWx5ZWtiZW4gYSBHeUlLIGVsZW1layBtZWdqZWxlbm5laykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnQSBHeUlLIG55b210YXTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnTnlpbHbDoW5vcyBHeUlLIG55b210YXTDoXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdOeWlsdsOhbm9zIEd5SUsgbmFnecOtdMOhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnTnlpbHbDoW5vcyBHeUlLIGtlcmVzw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ055aWx2w6Fub3MgR3lJSy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVsOhcsOzbGlzdGEgYSBHeUlLIGJlamVneXrDqXNlayBqw7N2w6FoYWd5w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnw4lydMOpa2Vsw6lzZWsgYSBzemF2YXrDoXNob3ouIEEga3VsY3NuYWsgc3rDoXphbMOpa2JhbiBrZWxsIGxlbm5pZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0d5SUsga2VyZXPDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnS2lzIEd5SUsga2VyZXPDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ0d5SUsga2VyZXPDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnQW5uYWsga2l2w6FsYXN6dMOhc2EsIGhvZ3kgYWxhcMOpcnRlbG1lemV0dGVuIGjDoW55IGVsZW0gamVsZW5qZW4gbWVnIGEg4oCea2lz4oCdIG5hcGzDsyDDoXR0ZWtpbnTFkWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdBbm5hayBraXbDoWxhc3p0w6FzYSwgaG9neSBhbGFww6lydGVsbWV6ZXR0ZW4gaMOhbnkgZWxlbSBqZWxlbmplbiBtZWcgYSDigJ5raXPigJ0gw6F0dGVraW50xZFiZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0EgYmXDoWd5YXpvdHQgSFRNTCBtZXrFkWsgYWxhcMOpcnRlbG1lemV0dCBtYWdhc3PDoWfDoW5hayBiZcOhbGzDrXTDoXNhIChrw6lwcG9udGJhbikgYXogw7xneWludMOpesWRaSBHeUlLLW5hZ3nDrXTDoXMgbsOpemV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQSBiZcOhZ3lhem90dCBIVE1MIG1lesWRayBhbGFww6lydGVsbWV6ZXR0IG1hZ2Fzc8OhZ8OhbmFrIGJlw6FsbMOtdMOhc2EgKGvDqXBwb250YmFuKSBheiDDvGd5ZsOpbCBHeUlLLW5hZ3nDrXTDoXMgKMOpcyBueWlsdsOhbm9zIEd5SUstbmFnecOtdMOhcykgbsOpemV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0EgYmXDoWd5YXpvdHQgSFRNTCBtZXrFkWsgbGVnbmFneW9iYiBtYWdhc3PDoWfDoW5hayBiZcOhbGzDrXTDoXNhIChrw6lwcG9udGJhbikgYXogw7xneWludMOpesWRaSBHeUlLLW5hZ3nDrXTDoXMgbsOpemV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQSBiZcOhZ3lhem90dCBIVE1MIG1lesWRayBsZWduYWd5b2JiIG1hZ2Fzc8OhZ8OhbmFrIGJlw6FsbMOtdMOhc2EgKGvDqXBwb250YmFuKSBheiDDvGd5ZsOpbCBHeUlLLW5hZ3nDrXTDoXMgKMOpcyBueWlsdsOhbm9zIEd5SUstbmFnecOtdMOhcykgbsOpemV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnQSDigJ5HeUlLIGhpdmF0a296w6FzIGJlc3rDunLDoXNh4oCdIGdvbWIgbWVnamVsZW7DrXTDqXNlIGF6IMO8Z3lpbnTDqXrFkWkgR3lJSy1uYWd5w610w6FzIGtpcyBuw6l6ZXTDqWJlbiBhIG55aWx2w6Fub3MgR3lJSyBiZWplZ3l6w6lzZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdBIOKAnkd5SUsgc3rDtnZlZyDDqXMgaGl2YXRrb3rDoXMgYmVzesO6csOhc2HigJ0gLyDigJ5UZWxqZXMgR3lJSyDDqXMgaGl2YXRrb3rDoXMgYmVzesO6csOhc2HigJ0gZ29tYiBtZWdqZWxlbsOtdMOpc2UgYXogw7xneWludMOpesWRaSBHeUlLLW5hZ3nDrXTDoXMga2lzIG7DqXpldMOpYmVuIGEgbnlpbHbDoW5vcyBHeUlLIGJlamVneXrDqXNla27DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdBIOKAnkd5SUsgc3rDtnZlZyBiZXN6w7pyw6FzYeKAnSAvIOKAnlRlbGplcyBHeUlLIGJlc3rDunLDoXNh4oCdIGdvbWIgbWVnamVsZW7DrXTDqXNlIGF6IMO8Z3lpbnTDqXrFkWkgR3lJSy1uYWd5w610w6FzIGtpcyBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnR3lJSyBiZWplZ3l6w6lzIG1lZ2plbGVuw610w6lzZSBIVE1MIGZvcm3DoXrDoXNzYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ0d5SUsgw7p0dm9uYWwgbWVnamVsZW7DrXTDqXNlIGlnZW4vbmVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OJcnbDqW55dGVsZW4gZWxlbWVrIG1lZ2plbGVuw610w6lzZSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsgYsO2bmfDqXN6xZFqw6luZWsgZXJlZG3DqW55w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdBbGthdGVnw7NyacOhayBlbGVtZWluZWsgbWVnamVsZW7DrXTDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdBeiB1dG9sasOhcmEgbcOzZG9zw610b3R0IGVsZW1layBtZWdqZWxlbsOtdMOpc2UgYSBtZWdoYXTDoXJvem90dCBmZWzDvGxldGVrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdBeiB1dG9sasOhcmEgbMOpdHJlaG96b3R0IGVsZW1layBtZWdqZWxlbsOtdMOpc2UgYSBtZWdoYXTDoXJvem90dCBmZWzDvGxldGVrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnQ3NpbGxhZ29rIG1lZ2plbGVuw610w6lzZSBhIG1lZ2hhdMOhcm96b3R0IMOpcnTDqWtrZWwgZWd5ZW5sxZEgdmFneSBhbm7DoWwgam9iYiDDqXJ0w6lrZWzDqXNzZWwgcmVuZGVsa2V6xZEgYmVqZWd5esOpc2VrbsOpbCAow6FsbMOtdHNhIGF6IMOpcnTDqWtldCDigJ4w4oCdLXJhIGEga2ltZW5ldCBraWthcGNzb2zDoXPDoWhveikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdBIGxlZ2pvYmIgMTAgZWxlbSBtZWdqZWxlbsOtdMOpc2UgYSBtZWdoYXTDoXJvem90dCBmZWzDvGxldGVrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdTemF2YXrDoXMgbWVnamVsZW7DrXTDqXNlIGEgbWVnaGF0w6Fyb3pvdHQgZmVsw7xsZXRla2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4sIGFtZWx5IGxlaGV0xZF2w6kgdGVzemkgZWd5IEd5SUsgaG96esOha2FwY3NvbMOhc8OhdCBlZ3kgbcOhc2lrIG9iamVrdHVtaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRuZWsgYXogaWx5ZW4gR3lJSyBuYWd5w610w6FzaSBuw6l6ZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiwgYW1lbHkgbGVoZXTFkXbDqSB0ZXN6aSBlZ3kgR3lJSyB0w7ZybMOpc8OpdCBhbm5hayBuYWd5w610w6FzaSBuw6l6ZXTDqW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IEd5SUsgZWzFkXptw6lueWVpbmVrIGVsw6lyw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBHeUlLIHN6ZXJrZXN6dMOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IEd5SUsgbmFnecOtdMOhc2kgbsOpemV0w6liZSB2YWzDsyB2aXNzemF0w6lyw6lzaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IEd5SUsgbnlvbXRhdMOhc8OhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ01lZ29sZMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnSmVsZW5zw6lnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ0NzYWsgc3rDtnZlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdBeiBhbGFww6lydGVsbWV6ZXR0IG55ZWx2ZWsgYSBrYXBjc29sw7Nkw7MgR3lJSyBiZWplZ3l6w6lzZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdFZ3kgR3lJSyBhem9ub3PDrXTDs2phLCBww6lsZMOhdWwgRkFRIywgVEIjLCBHeUlLIy4gQXogYWxhcMOpcnRlbG1lemV0dDogRkFRIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXogYSBiZcOhbGzDrXTDoXMgaGF0w6Fyb3p6YSBtZWcsIGhvZ3kgZWd5IOKAnkd5SUvigJ0gb2JqZWt0dW0gw7Zzc3pla8O2dGhldMWRLWUgbcOhcyDigJ5HeUlL4oCdIG9iamVrdHVtb2trYWwgYSDigJ5Ob3Jtw6Fs4oCdIGhpdmF0a296w6FzdMOtcHVzIGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFeiBhIGJlw6FsbMOtdMOhcyBoYXTDoXJvenphIG1lZywgaG9neSBlZ3kg4oCeR3lJS+KAnSBvYmpla3R1bSDDtnNzemVrw7Z0aGV0xZEtZSBtw6FzIOKAnkd5SUvigJ0gb2JqZWt0dW1va2thbCBhIOKAnlN6w7xsxZEtZ3llcm1la+KAnSBoaXZhdGtvesOhc3TDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0V6IGEgYmXDoWxsw610w6FzIGhhdMOhcm96emEgbWVnLCBob2d5IGVneSDigJ5HeUlL4oCdIG9iamVrdHVtIMO2c3N6ZWvDtnRoZXTFkS1lIG3DoXMg4oCeSmVneeKAnSBvYmpla3R1bW9ra2FsIGEg4oCeTm9ybcOhbOKAnSBoaXZhdGtvesOhc3TDrXB1cyBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXogYSBiZcOhbGzDrXTDoXMgaGF0w6Fyb3p6YSBtZWcsIGhvZ3kgZWd5IOKAnkd5SUvigJ0gb2JqZWt0dW0gw7Zzc3pla8O2dGhldMWRLWUgbcOhcyDigJ5KZWd54oCdIG9iamVrdHVtb2trYWwgYSDigJ5TesO8bMWRLWd5ZXJtZWvigJ0gaGl2YXRrb3rDoXN0w61wdXMgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnSmVneSB0w7ZyenNlIGVneSBHeUlLIGJlamVneXrDqXMgasOzdsOhaGFnecOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnSmVneSB0w6FyZ3lhIGVneSBHeUlLIGJlamVneXrDqXMgasOzdsOhaGFnecOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnRXN6a8O2enTDoXJlbGVtIGVneSBneW9yc2JpbGxlbnR5xbFow7Z6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAna8O8bHPFkSAow7xneWbDqWwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdiZWxzxZEgKMO8Z3lpbnTDqXrFkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnbnlpbHbDoW5vcyAow7Zzc3plcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnbnlpbHbDoW5vcyAobnlpbHbDoW5vcyknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdUYW1iYWggQXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdLYXRha3VuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdTZWJ1YWgga2F0ZWdvcmkgZGlidXR1aGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdQZXJzZXR1anVhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gS2F0ZWdvcmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnVGFtYmFoIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ1RhbWJhaCBLYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnRWRpdCBLYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1Yi1rYXRlZ29yaSBkYXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnU2lsYWhrYW4gcGlsaWggc2V0aWRha255YSBzYXR1IGl6aW4gZ3J1cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cCBBZ2VuIHlhbmcgZGFwYXQgbWVuZ2Frc2VzIGFydGlrZWwgZGFsYW0ga2F0ZWdvcmkgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdBa2FuIGRpdGFtcGlsa2FuIHNlYmFnYWkga29tZW50YXIgZGkgRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0FuZGEgeWFraW4gYWthbiBtZW5naGFwdXMga2F0ZWdvcmkgaW5pPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0FuZGEgdGlkYWsgZGFwYXQgbWVuZ2hhcHVzIGthdGVnb3JpIGluaS4gS2F0ZWdvcmkgaW5pIGRpcGFrYWkgcGFkYSBzZXRpZGFrbnlhIHNhdHUgYXJ0aWtlbCBGQVEgZGFuL2F0YXUgbWVydXBha2FuIHBhcmVudCBkYXJpIHNhbGFoIHNhdHUga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdLYXRlZ29yaSBpbmkgZGlndW5ha2FuIGRhbGFtIGFydGlrZWwgRkFRIGJlcmlrdXQgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0thdGVnb3JpIGluaSBtZXJ1cGFrYW4gcGFyZW50IGRhcmkgc3Via2F0ZWdvcmkgYmVyaWt1dCBpbmknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnQW5kYSB5YWtpbiBha2FuIG1lbmdoYXB1cyBhcnRpa2VsIEZBUSBpbmk/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRWtzcGxvcmVyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdQZW5jYXJpYW4gQ2VwYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0thcmFrdGVyIGJlYmFzIGRpcGVya2VuYW5rYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnUGVuY2FyaWFuIExlYmloIExhbmp1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3Via2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnQXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdTdWJrYXRlZ29yaSB0aWRhayBkaXRlbXVrYW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ1Jpd2F5YXQgZGFyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc2kgc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQnVhdFdha3R1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ0RhdGEgSnVybmFsIEZBUSB0aWRhayBkaXRlbXVrYW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ01hbmFqZW1lbiBCYWhhc2EgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ1RhbWJhaCBiYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnVGFtYmFoIEJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRWRpdCBCYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0FuZGEgeWFraW4gYWthbiBtZW5naGFwdXMgYmFoYXNhIGluaT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnQW5kYSB0aWRhayBkYXBhdCBtZW5naGFwdXMgYmFoYXNhIGluaS4gQmFoYXNhIGluaSBkaWd1bmFrYW4gcGFkYSBzYWxhaCBzYXR1IGFydGlrZWwgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0JhaGFzYSBpbmkgZGlndW5ha2FuIHBhZGEgQXJ0aWtlbC1hcnRpa2VsIEZBUSBiZXJpa3V0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnUGVuZ2F0dXJhbiBLb250ZWtzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlrZWwgRkFRIHBlciBoYWxhbWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ1RpZGFrIGRpdGVtdWthbiBkYXRhIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RhcmkgNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdLYXRhIGt1bmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICdQaWxpaCAoY29udG9oOiBTYW1hIERlbmdhbiAxMCBhdGF1IExlYmloIEJlc2FyIGRhcmkgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ1BlcmluZ2thdCAoY29udG9oOiBTYW1hIGRlbmdhbiAyNSUgYXRhdSBMZWJpaCBCZXNhciBkYXJpIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdEaXNldHVqdWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVGVyYWtoaXIgZGlydWJhaCBvbGVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnV2FrdHUgUGVtYnVhdGFuIEFydGlrZWwgRkFRIChzZWJlbHVtL3NldGVsYWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1dha3R1IFBlbWJ1YXRhbiBBcnRpa2VsIEZBUSAoYW50YXJhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1dha3R1IFBlcnViYWhhbiBBcnRpa2VsIEZBUSAoc2ViZWx1bS9zZXRlbGFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdXYWt0dSBQZXJ1YmFoYW4gQXJ0aWtlbCBGQVEgKGFudGFyYSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRVGVrc2xlbmdrYXAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdQZW5jYXJpYW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnUGVtaWxpaGFuIFByb2ZpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnUGlsaWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ1RpZGFrIGFkYSBwZW5nYXR1cmFuIHBlbWlsaWhhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1BlbWlsaWhhbiBraHVzdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnY29udG9oOiBTYW1hIERlbmdhbiAxMCBhdGF1IExlYmloIEJlc2FyIGRhcmkgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ1BlcmluZ2thdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnVGlkYWsgYWRhIHBlbmdhdHVyYW4gcGVyaW5na2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdQZXJpbmdrYXQga2h1c3VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnY29udG9oOiBTYW1hIGRlbmdhbiAyNSUgYXRhdSBMZWJpaCBCZXNhciBkYXJpIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1dha3R1IFBlbWJ1YXRhbiBBcnRpa2VsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ1dha3R1IFBlcnViYWhhbiBBcnRpa2VsIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2kgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1BlcmluZ2thdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1BlbWlsaWhhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdUdGRhayBkaXRlbXVrYW4gcGVtaWxpaGFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnQmVsdW0gYWRhIFBlbWlsaWhhbiEgSmFkaWxhaCB5YW5nIHBlcnRhbWEgbWVsYWt1a2FuIHBlbWVyaW5na2F0YW4gYXJ0aWtlbCBGQVEgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnVW5kdWggTGFtcGlyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdVbnR1ayBtZW1idWthIHRhdXRhbiBwYWRhIGJhZ2lhbiBkZXNrcmlwc2kgYmVyaWt1dCwgQW5kYSBoYXJ1cyBtZW5la2FuIHRvbWJvbCBDdHJsIGF0YXUgQ21zIGF0YXUgU2hpZnQgc2FtYmlsIG1lbmVrYW4gdGF1dGFubnlhICh0ZXJnYW50dW5nIHBhZGEgU2lzdGVtIE9wZXJhc2kgZGFuIFBlcmFtYmFuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ1NlYmVyYXBhIGJlc2FyIGFydGlrZWwgaW5pIG1lbWJhbnR1PyBNb2hvbiBiZXJpa2FuIHBlcmluZ2thdCBBbmRhIGRhbiBpa3V0IG1lbWJhbnR1IERhdGFiYXNlIEZBUS4gVGVyaW1hIGthc2loISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ3RpZGFrIG1lbWJhbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3NhbmdhdCBtZW1iYW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnVGFtYmFoa2FuIGp1ZHVsIEZBUSBwYWRhIHN1YmplayBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ01hc3Vra2FuIFRla3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ01hc3Vra2FuIFNlbHVydWggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ01hc3Vra2FuIFRhdXRhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ01hc3VrYW4gVGVrcyBkYW4gVGF1dGFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnTWFzdWtrYW4gU2VsdXJ1aCBMaW5rIGRhbiBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdUaWRhayBkaXRlbXVrYW4gYXJ0aWtlbCBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdQZW5jYXJpYW4gVGVrc3BlbnVoIHBhZGEgQXJ0aWtlbCBGQVEgKGNvbnRvaDogIkpvaG4qbiIgYXRhdSAiV2lsbCIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnQmF0YXNhbiBQZW1pbGloYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIHlhbmcgdGVsYWggZGlwaWxpaC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ0JhdGFzYW4gUGVyaW5na2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0hhbnlhIEFydGlrZWwgeWFuZyBtZW1pbGlraSBwZXJpbmdrYXQuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdQZW1iYXRhc2FuIHdha3R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICdIYW55YSBhcnRpa2VsIEZBUSB5YW5nIGRpYnVhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdIYW55YSBhcnRpa2VsIEZBUSB5YW5nIGRpYnVhdCBwYWRhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdQZW5jYXJpYW4tUHJvZmlsIHNlYmFnYWkgVGVtcGxhdGU/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTm9tb3IgQXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ0NhcmkgYXJ0aWtlbCBkZW5nYW4ga2F0YSBrdW5jaSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdVbXVtJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdLZW1iYWxpIGtlIEVrc3Bsb3JlciBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdTZWJ1YWgga2F0ZWdvcmkgaGFydXMgbWVtaWxpa2kgbmFtYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0thdGVnb3JpIGluaSBzdWRhaCBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpIEZBUSBkaXVwZGF0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0thdGVnb3JpIEZBUSBkaXRhbWJhaGthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnSGFwdXMgS2F0ZWdvcmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0p1cm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmFtYSBkaWJ1dHVoa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0JhaGFzYSBpbmkgc3VkYWggYWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnQmFoYXNhIEZBUSBkaXBlcmJhcnVpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnQmFoYXNhIEZBUSBkaXRhbWJhaGthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnSGFwdXMgQmFoYXNhICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdIYXNpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ1BlcmJhcnVhbiB0ZXJha2hpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdCaWRhbmcgZGluYW1pcyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSAlcyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdUaWRhayBhZGEgaGFzaWwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOb21vciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUZXJpbWEga2FzaWggYXRhcyBwaWxpaGFubnlhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0FuZGEgc3VkYWggcGVybmFoIG1lbWlsaWghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnVGlkYWsgYWRhIHBlcmluZ2thdCB5YW5nIGRpcGlsaWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ0NldGFrIEFydGlrZWwgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWtlbCBGQVEgKHRlcmJhcnUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpa2VsIEZBUSAodGVyYWtoaXIgZGlydWJhaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWtlbCBGQVEgKDEwIHRlcmF0YXMpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ0FydGlrZWwgaW5pIGtvc29uZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnQXJ0aWtlbCBGQVEgdGVyYWtoaXIgZGlidWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0FydGlrZWwgRkFRIHBhbGluZyBiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdBcnRpa2VsIEZBUSAxMCB0ZXJhdGFzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdla3N0ZXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAndW11bSc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnU2VidWFoIGZpbHRlciB1bnR1ayBvdXRwdXQgSFRNTCB1bnR1ayBtZW5hbWJhaGthbiB0YXV0YW4gdGVya2FpdCBzdHJpbmcgeWFuZyBkaXRlbnR1a2FuLiBEdWEgYnVhaCBtYXN1a2FuIGRpcGVya2VuYW5rYW4gdW50dWsgRWxlbWVuIEdhbWJhci4gUGVydGFtYSBuYW1hIGRhcmkgZ2FtYmFyIChjb250b2g6IGZhcS5wbmcpLiBQYWRhIGthc3VzIGluaSBwYXRoIGdhbWJhciBPVFJTIHlhbmcgZGlndW5ha2FuLiBLZW11bmdraW5hbiBrZWR1YSBhZGFsYWggbWVtYXN1a2thbiB0YXV0YW4ga2UgZGFsYW0gZ2FtYmFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdXYXJuYSBDU1MgdW50dWsgaGFzaWwgcGVtaWxpaGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnV2FrdHUgQ2FjaGUgVW50dWsgS2VsdWFyIGRhbGFtIGl0ZW0gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdNYW5hamVtZW4gS2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnUG9zaXNpIGRlc2ltYWwgcGFkYSBoYXNpbCBwZW1pbGloYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOYW1hIGthdGVnb3JpIGRlZmF1bHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdCYWhhc2EgZGVmYXVsdCB1bnR1ayBhcnRpa2VsIEZBUSBwYWRhIG1vZGUgc2F0dSBiYWhhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmF1bHQgdWt1cmFuIG1ha3NpbXVtIGp1ZHVsIGRhbGFtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaXRhbXBpbGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnRGVmYXVsdCBwcmlvdGl0YXMgZGFyaSB0aWtldCB1bnR1ayBwZXJzZXR1anVhbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ1N0YXR1cyBkZWZhdWx0IHVudHVrIGVudHJpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnU3RhdHVzIGRlZmF1bHQgdGlrZXQgdW50dWsgcGVyc2V0dWp1YW4gcGFkYSBhcnRpa2VsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdUaXBlIHRpa2V0IGRlZmF1bHQgdW50dWsgcGVyc2V0dWp1YW4gYXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ05pbGFpIGRlZmF1bHQgdW50dWsgcGFyYW1ldGVyIEFrc2kgdW50dWsgZnJvbnRlbmQgdW11bS4gUGFyYW1ldGVyIGFrc2kgZGlndW5ha2FuIHBhZGEgc2tyaXAgZGFyaSBTaXN0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdUZW50dWthbiBqaWthIGp1ZHVsIEZBUSBoYXJ1cyB0ZXJzYW1idW5nIGtlIHN1YmplayBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdUZW50dWthbiBzZWJ1YWggZ2FtYmFyYW4gbW9kdWwgdW50dWsgbWVuYW1waWxrYW4gdGFtcGlsYW4ga2VjaWwgZGFyaSBzZWJ1YWgganVybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdUZW50dWthbiBzZWJ1YWggZ2FtYmFyYW4gbW9kdWwgdW50dWsgbWVuYW1waWxrYW4gdGFtcGlsYW4ga2VjaWwgZGFyaSBzZWJ1YWggZGFmdGFyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGF0cmlidXQgZGVmYXVsdCBGQVEgdW50dWsgcGVueW9ydGlyYW4gRkFRIGRhbGFtIHBlbmNhcmlhbiBGQVEgZGFyaSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVudHVrYW4gYXRyaWJ1dCBzdGFuZGFyIEZBUSB1bnR1ayBwZW55b3J0aXJhbiBkYWxhbSBQZW5jYXJpYW4gRkFRIGRhcmkgYW50YXJtdWthIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGF0cmlidXQgc3RhbmRhciBGQVEgdW50dWsgcGVueW9ydGlyYW4gZGFsYW0gcGVuY2FyaWFuIEZBUSB1bnR1ayBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW50dWthbiBhdHJpYnV0IHN0YW5kYXIgRkFRIHVudHVrIHBlbnlvcnRpcmFuIEZBUSBkYWxhbSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW50dWthbiBhdHJpYnV0IHN0YW5kYXIgRkFRIHVudHVrIHBlbnlvcnRpcmFuIEZBUSBkYWxhbSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW50dWthbiBhdHJpYnV0IHN0YW5kYXIgRkFRIHVudHVrIHBlbnlvcnRpcmFuIEZBUSBkYWxhbSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdUZW50dWthbiB1cnV0YW4gc3RhbmRhciBGQVEgZGFsYW0gaGFzaWwgRWtzcGxvcmVyIEZBUSBwYWRhIGFudGFybXVrYSBhZ2VuLiBOYWlrOiBUZXJsYW1hIGRpIGF0YXMuIFR1cnVuOiBUZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnVGVudHVrYW4gdXJ1dGFuIHN0YW5kYXIgRkFRIGRhbGFtIGhhc2lsIEVrc3Bsb3JlciBGQVEgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLiBOYWlrOiBUZXJsYW1hIGRpIGF0YXMuIFR1cnVuOiBUZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHVydXRhbiBzdGFuZGFyIEZBUSBkYWxhbSBoYXNpbCBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHVtdW0uIE5haWs6IFRlcmxhbWEgZGkgYXRhcy4gVHVydW46IFRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnVGVudHVrYW4gdXJ1dGFuIHN0YW5kYXIgRkFRIGRhbGFtIGhhc2lsIHBlbmNhcmlhbiBwYWRhIGFudGFybXVrYSBhZ2VuLiBOYWlrOiBUZXJsYW1hIGRpIGF0YXMuIFR1cnVuOiBUZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHVydXRhbiBzdGFuZGFyIEZBUSBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLiBOYWlrOiBUZXJsYW1hIGRpIGF0YXMuIFR1cnVuOiBUZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdUZW50dWthbiB1cnV0YW4gc3RhbmRhciBGQVEgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIHBhZGEgYW50YXJtdWthIHVtdW0uIE5haWs6IFRlcmxhbWEgZGkgYXRhcy4gVHVydW46IFRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdUZW50dWthbiBhdHJpYnV0IHBlbmNhcmlhbiBGQVEgc3RhbmRhciB5YW5nIGRpdGFtcGlsa2FuIHVudHVrIGxheWFyIHBlbmNhcmlhbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnVGVudHVrYW4gaW5mb3JtYXNpIHlhbmcgYWthbiBkaSBtYXN1a2FuIGtlIGRhbGFtIHNlYnVhaCBUaWtldCBiZXJkYXNhciBGQVEuICJGQVEgbGVuZ2thcCIgYmVyaXNpIHRla3MsIGxhbXBpcmFuLCBkYW4gZ2FtYmFyIGRpIGJhcmlzYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHBhcmFtZXRlciB1bnR1ayBiYWNrZW5kIGRhc2Jvci4gIkxpbWl0IiBtZW5lbnR1a2FuIGp1bWxhaCBlbnRyaSB5YW5nIGRpIHRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdC4gIkdyb3VwIiBkaSBndW5ha2FuIHVudHVrIG1lbWJhdGFzaSBha3NlcyBrZSBwbHVnaW4gKG1pc2FsbnlhIEdydXA6IGFkbWluO2dydXAxO2dydXAyOykuICJEZWZhdWx0IiBtZW5naW5kaWthc2lrYW5qaWthIHBsdWdpbiBkaWFrdGlma2FuIHNlY2FyYSBkZWZhdWx0IGF0YXUgamlrYSBwZW5nZ3VuYSBwZXJsdSBtZW5nYWt0aWZrYW5ueWEgc2VjYXJhIG1hbnVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnVGVudHVrYW4ga29sb20geWFuZyBkaXRhbXBpbGthbiBkaSBFa3NwbG9yZXIgRkFRLiBQaWxpaGFuIGluaSB0aWRhayBtZW1wZW5nYXJ1aGkgcG9zaXNpIGtvbG9tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIGtvbG9tIHlhbmcgZGkgdGFtcGlsa2FuIGRpIGp1cm5hbCBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXBlbmdhcnVoaSBwb3Npc2kga29sb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdUZW50dWthbiBrb2xvbSB5YW5nIGRpIHRhbXBpbGthbiBkaWRhbGFtIHBlbmNhcmlhbiBGQVEuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXBlbmdhcnVoaSBwb3Npc2kga29sb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnVGVudHVrYW4gZGltYW5hIHRhdXRhbiBcJ01hc3Vra2FuIEZBUVwnIGFrYW4gZGl0YW1waWxrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXNpIGRhcmkgaXRlbSB0ZWtzIGZpZWxkIGJlYmFzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdIYXB1cyBGQVEgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICd1YmFoIEZBUSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdBa3RpZmthbiBtdWx0aWJhaGFzYSBwYWRhIG1vZHVsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWt0aWZrYW4gbWVrYW5pc21lIHZvdGluZyBwYWRhIG1vZHVsIEZBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnRWtzcGxvcmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnSnVybmFsIGdhbWJhcmFuIGJhdGFzICJrZWNpbCIgIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0dhbWJhcmFuIGJhdGFzICJLZWNpbCInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnUGVuY2FyaWFuIHBlbmVydXMgYmFja2VuZCBGQVEgcGFkYSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdGaWVsZDQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnRmllbGQ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXAgdW50dWsgcGVyc2V0dWp1YW4gYXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ1NlamFyYWggZGFyaSBGQVEgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdNYXN1a2FuIGJpZGFuZyBpbnRlcm5hbCBwYWRhIFRpa2V0IGJlcmRhc2FyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdNYXN1a2FuIG5hbWEgc2V0aWFwIGJpZGFuZyBwYWRhIFRpa2V0IGJlcmRhc2FyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdBbnRhcm11a2EgZGltYW5hIHBlbmNhcmlhbiBjZXBhdCBoYXJ1cyBkaSB0YW1waWxrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0p1cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnTWFuYWplbWVuIEJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdUYXV0a2FuIG9iamVrIGxhaW5ueWEga2UgaXRlbSBGQVEgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RhZnRhciBqZW5pcyBzdGF0dXMgeWFuZyBkYXBhdCBkaWd1bmFrYW4gcGFkYSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGFmdGFyIGplbmlzIHN0YXR1cyB5YW5nIGRhcGF0IGRpZ3VuYWthbiBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEYWZ0YXIgamVuaXMgc3RhdHVzIHlhbmcgZGFwYXQgZGlndW5ha2FuIHBhZGEgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGFydGlrZWwgRkFRIG1ha3NpbWFsIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBkYWxhbSBoYXNpbCBFa3NwbG9yZXIgRkFRIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgbWFrc2ltYWwgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGhhc2lsIEVrc3Bsb3JlciBGQVEgZGkgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSBtYWtzaW1hbCB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgZGFsYW0gaGFzaWwgRWtzcGxvcmVyIEZBUSBkaSBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSBtYWtzaW1hbCB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgZGFsYW0gaGFzaWwganVybmFsIEZBUSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgbWFrc2ltYWwgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGhhc2lsIHBlbmNhcmlhbiBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgbWFrc2ltYWwgeWFuZyBha2FuIGRpdGFtcGlsa2FuIGRpIGRhbGFtIGhhc2lsIGp1cm5hbCBGQVEgZGkgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGFydGlrZWwgRkFRIG1ha3NpbWFsIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBkYWxhbSBoYXNpbCBqdXJuYWwgRkFRIGRpIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VrdXJhbiBtYWtzaW1hbCBKdWR1bCBkaSBkYWxhbSBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGkgdGFtcGlsa2FuIGRpIGRhbGFtIEVrc3Bsb3JlciBGQVEgcGFkYSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVa3VyYW4gbWFrc2ltYWwgSnVkdWwgZGkgZGFsYW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBkYWxhbSBFa3NwbG9yZXIgRkFRIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVWt1cmFuIG1ha3NpbWFsIEp1ZHVsIGRpIGRhbGFtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gZGkgZGFsYW0gRWtzcGxvcmVyIEZBUSBwYWRhIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVa3VyYW4gbWFrc2ltYWwgSnVkdWwgZGkgZGFsYW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBkaSBkYWxhbSBQZW5jYXJpYW4gRkFRIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VrdXJhbiBtYWtzaW1hbCBKdWR1bCBkaSBkYWxhbSBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGkgdGFtcGlsa2FuIGRpIGRhbGFtIFBlbmNhcmlhbiBGQVEgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVWt1cmFuIG1ha3NpbWFsIEp1ZHVsIGRpIGRhbGFtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gZGkgZGFsYW0gUGVuY2FyaWFuIEZBUSBwYWRhIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVWt1cmFuIG1ha3NpbWFsIEp1ZHVsIGRpIGRhbGFtIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gZGkgZGFsYW0gSm91cm5hbCBGQVEgcGFkYSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgdW50dWsgbWVuZ2hhc2lsa2FuIHByb2ZpbCBIVE1MIFBlbmNhcmlhblRlcmJ1a2EgdW50dWsgUGVuY2FyaWFuIHBlbmRlayBGQVEgZGkgYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0FydGlrZWwgRkFRIGJhcnUgbWVtYnV0dWhrYW4gZXJzZXR1anVhbiBzZWJlbHVtIGRpcHVibGlrYXNpa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpdGFtcGlsa2FuIHBhZGEgRWtzcGxvcmVyIEZBUSBkaSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIGFydGlrZWwgRkFRIHlhbmcgYWthbiBkaSB0YW1waWxrYW4gZGkgRWtzcGxvcmVyIEZBUSBwYWRhIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpIHRhbXBpbGthbiBwYWRhIHNldGlhcCBoYWxhbWFuIGRhcmkgaGFzaWwgcGVuY2FyaWFuIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBhcnRpa2VsIEZBUSB5YW5nIGFrYW4gZGkgdGFtcGlsa2FuIHBhZGEgc2V0aWFwIGhhbGFtYW4gZGFyaSBoYXNpbCBwZW5jYXJpYW4gcGFkYSBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdKdW1sYWggaXRlbSB5YW5nIGRpdGFtcGlsa2FuIGRhbGFtIHBlcnViYWhhbiB0ZXJha2hpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdKdW1sYWggaXRlbSB5YW5nIGRpIHRhbXBpbGthbiBkYWxhbSBwZW1idWF0YW4gdGVyYWtoaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnSnVtbGFoIGl0ZW0geWFuZyBkaXRhbXBpbGthbiBkYWxhbSAxMCBmaXR1ciB0ZXJhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgaGFsYW1hbiAoZGltYW5hIGl0ZW0gRkFRIGRpIHRhbXBpbGthbikganVybmFsIGtlY2lsIGdhbWJhcmFuIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBoYWxhbWFuIChkaW1hbmEgaXRlbSBGQVEgZGkgdGFtcGlsa2FuKSBnYW1iYXJhbiBrZWNpbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnQ2V0YWsgRkFRIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnQW50cmlhbiB1bnR1ayBkaXNldHVqdWlueWEgYXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdQZXJpbmdrYXRrYW4gdW50dWsgbWVtaWxpaC4gIEt1bmNpIGhhcnVzIGRhbGFtIHBlcnNlbnRhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0NhcmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnVGVudHVrYW4gdGluZ2dpIGRlZmF1bHQgKGRhbGFtIHBpa3NlbCkgIHBhZGEgYmlkYW5nIHNlYmFyaXMgSFRNTCBwYWRhIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdUZW50dWthbiB0aW5nZ2kgZGVmYXVsdCAoZGFsYW0gcGlrc2VsKSAgcGFkYSBiaWRhbmcgc2ViYXJpcyBIVE1MIHBhZGEgQ3VzdG9tZXJGQVFab29tIChkYW4gUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHRpbmdnaSBtYWtzaW1hbCAoZGFsYW0gcGlrc2VsKSAgcGFkYSBiaWRhbmcgc2ViYXJpcyBIVE1MIHBhZGEgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHRpbmdnaSBtYWtzaW1hbCAoZGFsYW0gcGlrc2VsKSAgcGFkYSBiaWRhbmcgc2ViYXJpcyBIVE1MIHBhZGEgQ3VzdG9tZXJGQVFab29tIChkYW4gUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnVGFtcGlsa2FuIHRvbWJvbCAiTWFzdWthbiB0YXV0YW4gRkFRIiBwYWRhIEFnZW50RkFRWm9vbVNtYWxsIHVudHVrIGFydGlrZWwgRkFRIHVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnVGFtcGxpa2FuIHRvbWJvbCAiTWFzdWthbiB0ZWtzICYgdGF1dGFuIEZBUSIgLyAiTWFzdWthbiBGQVEgJiBUYXV0YW4gbGVuZ2thcCIgcGFkYSBBZ2VudEZBUVpvb21TbWFsbCB1bnR1ayBhcnRpa2VsIEZBUSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnVGFtcGlsa2FuIHRvbWJvbCAiTWFzdWthbiB0ZWtzIEZBUSIgLyAiTWFzdWthbiBGQVEgbGVuZ2thcCIgcGFkYSBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnVGFtcGlsa2FuIGFydGlrZWwgRkFRIGRlbmdhbiBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdUYW1waWxrYW4gSmFsdXIgRkFRIGl5YS90aWRhay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ1RhbXBpbGthbiBpdGVtIGRhcmkgc3Via2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1RhbXBpbGthbiBpdGVtIHRlcmFraGlyIHlhbmcgZGkgdWJhaCBwYWRhIGFudGFybXVrYSB5YW5nIGRpIHRlbnR1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVGFtcGlsa2FuIGl0ZW0gdGVyYWtoaXIgeWFuZyBkaSBjaXB0YWthbiBwYWRhIGFudGFybXVrYSB5YW5nIGRpIHRlbnR1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVGFtcGlsa2FuIDEwIGl0ZW0gdGVyYXRhcyBwYWRhIGFudGFybXVrYSB5YW5nIGRpIHRlbnR1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVGFtcGlsa2FuIHBlbWlsaWhhbiBwYWRhIGFudGFybXVrYSB5YW5nIGRpIHRlbnR1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gZGkgbWVudSB5YW5nIG1lbmdpemlua2FuIGh1YnVuZ2FuIEZBUSBkZW5nYW4gb2JqZWsgbGFpbiBkaSB0YW1waWxhbiB6b29tIHNlcGVydGkgRkFRIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtcGlsa2FuIHRhdXRhbiBwYWRhIG1lbnUgeWFuZyBtZW5naXppbmthbiBwZW5naGFwdXNhbiBGQVEgcGFkYSB0YW1waWxhbiB6b29tIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtcGlsa2FuIHRhdXRhbiBwYWRhIG1lbnUgdW50dWsgbWVuZ2Frc2VzIHNlamFyYWggRkFRIHBhZGEgdGFtcGlsYW4gem9vbW55YSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIG1lbmd1YmFoIEZBUSBwYWRhIHRhbXBpbGFuIHpvb21ueWEgZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1waWxrYW4gdGF1dGFuIHBhZGEgbWVudSB1bnR1ayBrZW1iYWxpIHBhZGEgRkFRIHBhZGEgdGFtcGlsYW4gem9vbSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1waWxrYW4gdGF1dGFuIHBhZGEgbWVudSB1bnR1ayBtZW5jZXRhayBGQVEgcGFkYSB0YW1waWxhbiB6b29tbnlhIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnR2VqYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnUGVuZ2lkZW50aWZpa2FzaSB1bnR1ayBGQVEsIE1pc2FsbnlhIEZBUSMsIEtCIywgTXlGQVEjLiBTdGFuZGFybnlhIGFkYWxhaCBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdQZW5nYXR1cmFuIGluaSBtZW5kZWZpbmlza2FuIGJhaHdhIG9iamVrIFwnRkFRXCcgZGFwYXQgZGkgaHVidW5na2FuIGRlbmdhbiBvYmplayBcJ0ZBUVwnIGxhaW4gZGVuZ2FuIG1lbmdndW5ha2FuIHR5cGUgdGF1dGFuIFwnTm9ybWFsXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnUGVuZ2F0dXJhbiBpbmkgbWVuZGVmaW5pc2thbiBiYWh3YSBvYmplayBcJ0ZBUVwnIGRhcGF0IGRpIGh1YnVuZ2thbiBkZW5nYW4gb2JqZWsgXCdGQVFcJyBsYWluIGRlbmdhbiBtZW5nZ3VuYWthbiB0eXBlIHRhdXRhbiBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1BlbmdhdHVyYW4gaW5pIG1lbmRlZmluaXNrYW4gYmFod2Egb2JqZWsgXCdGQVFcJyBkYXBhdCBkaSBodWJ1bmdrYW4gZGVuZ2FuIG9iamVrIFwnVGlrZXRcJyBsYWluIGRlbmdhbiBtZW5nZ3VuYWthbiB0eXBlIHRhdXRhbiBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1BlbmdhdHVyYW4gaW5pIG1lbmRlZmluaXNrYW4gYmFod2Egb2JqZWsgXCdGQVFcJyBkYXBhdCBkaSBodWJ1bmdrYW4gZGVuZ2FuIG9iamVrIFwnVGlja2V0XCcgbGFpbiBkZW5nYW4gbWVuZ2d1bmFrYW4gdHlwZSB0YXV0YW4gXCdQYXJlbnRDaGlsZFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnSXNpIHRpa2V0IHVudHVrIHBlcnNldHVqdWFuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnU3ViamVrIHRpa2V0IHVudHVrIHBlcnNldHVqdWFuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnSXRlbSB0b29sYmFyIHVudHVrIGphbGFuIHBpbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnZWtzdGVybmFsIChwZWxhbmdnYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5hbCAoYWdlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAndW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZ2dpdW5nZXJlIGFydGljb2xvIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1Bhcm9sZSBjaGlhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdVbmEgY2F0ZWdvcmlhIMOoIG9iYmxpZ2F0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0FwcHJvdmF6aW9uZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uaSBDYXRlZ29yaWUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICdBZ2dpdW5naSBjYXRlZ29yaWEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIENhdGVnb3J5J30gPSAnTW9kaWZpY2EgY2F0ZWdvcmlhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBZ2dpdW5naSBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnQWdnaXVuZ2kgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdNb2RpZmljYSBDYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTb3R0b2NhdGVnb3JpYSBkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1NlbGV6aW9uYXJlIGFsbWVubyB1biBncnVwcG8gZGkgcGVybWVzc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVwcG8gZGkgdGVjbmljaSB0aGUgcHXDsiBhY2NlZGVyZSBhZ2xpIGFyaXRjb2xpIGluIHF1ZXN0YSBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1NhcmFubm8gdmlzaWJpbGkgY29tZSBjb21tZW50aSBpbiBFeHBsb3Jlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1NpIGRlc2lkZXJhIHZlcmFtZW50ZSBlbGltaW5hcmUgcXVlc3RhIGNhdGVnb3JpYT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdOb24gw6ggcG9zc2liaWxlIGVsaW1pbmFyZSBxdWVzdGEgY2F0ZWdvcmlhLiBWaWVuZSB1dGlsaXp6YXRhIGluIGFsbWVubyB1biBhcnRpY29sbyBlL28gw6ggY29sbGVnYXRhIGFkIGFsbWVubyB1blwnYWx0cmEgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnUXVlc3RhIGNhdGVnb3JpYSDDqCB1dGlsaXp6YXRhIG5lbChpKSBzZWd1ZW50ZShpKSBhcnRpY29saSBkZWxsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnUXVlc3RhIGNhdGVnb3JpYSDDqCBjYXBvZ3J1cHBvIGRlbGxlIHNlZ3VlbnRpIHNvdHRvY2F0ZWdvcmllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1NpIGRlc2lkZXJhIHZlcmFtZW50ZSBlbGltaW5hcmUgcXVlc3RvIGFydGljb2xvIGRpIEZBUT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdFc3Bsb3JhdG9yZSBkaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUmljZXJjYSBWZWxvY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ1dpbGRjYXJkIHNvbm8gcGVybWVzc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1JpY2VyY2EgQXZhbnphdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1NvdHRvY2F0ZWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGljb2xpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ05lc3N1bmEgc290dG9jYXRlZ29yaWEgdHJvdmF0YS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ1N0b3JpY28gZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnQ29udGVudXRvIGRlbGxvIHN0b3JpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0lzdGFudGUgZGkgY3JlYXppb25lJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ05lc3N1biBkYXRvIHRyb3ZhdG8gbmVsIFJpZXBpbG9nbyBGQVEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb25lIExpbmd1YWdnaW8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICdBZ2dpdW5naSBsaW5ndWEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnTW9kaWZpY2EgbGluZ3VhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdVdGlsaXp6YXJlIHF1ZXN0YSBmdW56aW9uZSBzZSBzaSBkZXNpZGVyYSBsYXZvcmFyZSBjb24gcGnDuSBsaW5ndWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0FnZ2l1bmdpIGxpbmd1YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBZ2dpdW5naSBMaW5ndWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ01vZGlmaWNhIGRlbGxhIGxpbmd1YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnU2kgZGVzaWRlcmEgdmVyYW1lbnRlIGVsaW1pbmFyZSBxdWVzdGEgbGluZ3VhPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdOb24gw6ggcG9zc2liaWxlIGVsaW1pbmFyZSBxdWVzdGEgbGluZ3VhLiBFXCcgdXRpbGl6emF0YSBpbiBhbG1lbm8gdW4gYXJ0aWNvbG8gZGVsbGEgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ1F1ZXN0byBsaW5ndWFnZ2lvIMOoIHV0aWxpenphdG8gbmVsKGkpIHNlZ3VlbnRlKGkpIGFydGljb2xpIGRlbGxhIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0ltcG9zdGF6aW9uaSBkaSBjb250ZXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpY29saSBGQVEgcGVyIHBhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOZXNzdW4gZGF0byBkZWxsYSBGQVEgdHJvdmF0by4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3N1IDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnUGFyb2xhIGNoaWF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90byAoZXM6IFVndWFsZSAxMCBvIE1hZ2dpb3JlIGRpIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdQZXJjZW50dWFsZSAoZXM6IFVndWFsZSAyNSUgbyBNYWdnaW9yZSBkaSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnQXBwcm92YXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1VsdGltYSBtb2RpZmljYSBlZmZldHR1YXRhIGRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnSXN0YW50ZSBkaSBjcmVhemlvbmUgZGVsbFwnQXJ0aWNvbG8gRkFRIChwcmltYS9kb3BvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdJc3RhbnRlIGRpIGNyZWF6aW9uZSBkZWxsXCdBcnRpY29sbyBGQVEgKGZyYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdJc3RhbnRlIGRpIG1vZGlmaWNhIGRlbGxcJ0FydGljb2xvIEZBUSAocHJpbWEvZG9wbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnSXN0YW50ZSBkaSBtb2RpZmljYSBkZWxsXCdBcnRpY29sbyBGQVEgKGZyYSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRRnVsbFRleHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdDZXJjYSBuZWxsZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdTZWxlemlvbmEgUHJvZmlsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnTmVzc3VuYSBpbXBvc3RhemlvbmUgdm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1ZvdGkgc3BlY2lmaWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ2VzLiBVZ3VhbGUgYSAxMCBvIE1hZ2dpb3JlIGRpIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdQZXJjZW50dWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnTm9uIGNpIHNvbm8gaW1wb3N0YXppb25pIHN1bGxhIHBlcmNlbnR1YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdQZXJjZW50dWFsZSBzcGVjaWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdlcy4gVWd1YWxlIGEgMjUlIG8gTWFnZ2lvcmUgZGkgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnSXN0YW50ZSBkaSBDcmVhemlvbmUgZGVsbFwnQXJ0aWNvbG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnSXN0YW50ZSBkaSBtb2RpZmljYSBkZWxsXCdBcnRpY29sbyBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXppb25pIHN1bGxlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdWYWx1dGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1ZvdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnTmVzc3VuIHZvdG8gdHJvdmF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ05lc3N1biB2b3RvIHRyb3ZhdG8hIFB1b2kgZXNzZXJlIGlsIHByaW1vIGEgdm90YXJlIHF1ZXN0YSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdTY2FyaWNhIEFsbGVnYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnUGVyIGFwcmlyZSBpIGNvbGxlZ2FtZW50aSBuZWkgc2VndWVudGkgYmxvY2NoaSBkZXNjcml6aW9uZSwgcG90cmViYmUgZXNzZXJlIG5lY2Vzc2FyaW8gcHJlbWVyZSBDdHJsIG8gQ21kIG8gU2hpZnQgbWVudHJlIHNpIGNsaWNjYSBzdWwgY29sbGVnYW1lbnRvIChhIHNlY29uZGEgZGVsIGJyb3dzZXIgZSBkZWwgU2lzdGVtYSBPcGVyYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ1ZpIMOoIHN0YXRvIHV0aWxlIHF1ZXN0byBhcnRpY29sbz8gVmkgcHJlZ2hpYW1vIGRpIGRhcmUgdW4gdm90byBwZXIgY29udHJpYnVpcmUgYSBtaWdsaW9yYXJlIGlsIERhdGFiYXNlIGRlbGxlIEZBUS4gR3JhemllISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ25vbiDDqCBzdGF0byB1dGlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdtb2x0byB1dGlsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnQWdnaXVuZ2kgaWwgdGl0b2xvIGRlbGxhIEZBUSBuZWwgc29nZ2V0dG8gZGVsbFwnYXJ0aWNvbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJpc2NpIGlsIHRlc3RvIGRlbGxhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdJbnNlcmlzY2kgdW5hIEZBUSBjb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcmlzY2kgRkFRIExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc2VyaXJlIFRlc3RvIGUgbGluayBkZWxsYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0luc2VyaXJlIGxhIEZBUSBjb21wbGV0YSBlIGlsIExpbmsnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdOZXNzdW4gYXJ0aWNvbG8gRkFRIHRyb3ZhdG8uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnUXVlc3RvIHBvdHJlYmJlIGVzc2VyZSB1dGlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTm9uIHNvbm8gc3RhdGUgdHJvdmF0ZSByaXNvcnNlIHV0aWxpIHBlciBsXCdvZ2dldHRvIGUgaWwgdGVzdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdEaWdpdGEgdW4gb2dnZXR0byBvIHVuIHRlc3RvIHBlciBvdHRlbmVyZSB1biBlbGVuY28gZGkgcmlzb3JzZSB1dGlsaS4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1JpY2VyY2EgdGVzdHVhbGUgbmVnbGkgYXJ0aWNvbGkgRkFRIChhZCBlc2VtcGlvICJKb2huKm4iIG9yICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpemlvbmkgc3VsIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ1NvbG8gYXJ0aWNvbGkgZGkgRkFRIGNvbiB2b3RpLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpemlvbmkgc3VsbGUgcGVyY2VudHVhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAnU29sbyBhcnRpY29saSBkaSBGQVEgY29uIHBlcmNlbnR1YWxlLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpemlvbmkgZGkgdGVtcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ1NvbG8gYXJ0aWNvbGkgZGkgRkFRIGNyZWF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdTb2xvIGFydGljb2xpIGRpIEZBUSBjcmVhdGkgZnJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1Byb2ZpbG8gZGkgUmljZXJjYSBjb21lIE1vZGVsbG8/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTnVtZXJvIEFydGljb2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnQ2VyY2EgYXJ0aWNvbGkgY29uIHBhcm9sYSBjaGlhdmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnUHViYmxpY28nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ1Rvcm5hIGFsIG5hdmlnYXRvcmUgZGVsbGUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfDiCBuZWNlc3NhcmlhIGxcJ2F1dG9yaXp6YXppb25lIHJ3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnTmVzc3VuYSBjYXRlZ29yaWEgdHJvdmF0YSBpbiBjdWkgbFwndXRlbnRlIGRpc3BvbmUgZGVpIHBlcm1lc3NpIGRpIGxldHR1cmEvc2NyaXR0dXJhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdOZXNzdW5hIGxpbmd1YSBwcmVkZWZpbml0YSB0cm92YXRhIGUgaW1wb3NzaWJpbGUgY3JlYXJuZSB1bmEgbnVvdmEuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnSGFpIGJpc29nbm8gZGkgSURDYXRlZ29yaWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ1VuYSBjYXRlZ29yaWEgZGV2ZSBhdmVyZSB1biBub21lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnQ2F0ZWdvcmlhIGVzaXN0ZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ1F1ZXN0YSBjYXRlZ29yaWEgZXNpc3RlIGdpw6AhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTmVzc3VuIElEIGNhdGVnb3JpYSDDqCBkYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICdJbXBvc3NpYmlsZSBlbGltaW5hcmUgbGEgY2F0ZWdvcmlhICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yaWEgRkFRIGFnZ2lvcm5hdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdDYXRlZ29yaWEgRkFRIGFnZ2l1bnRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICdFbGltaW5hIGNhdGVnb3JpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZXNzdW4gSXRlbUlEIMOoIGRhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0Nyb25vbG9naWEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnUmVnaXN0cm8gZGVsbGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0lsIG5vbWUgw6ggb2JibGlnYXRvcmlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0xpbmd1YWdnaW8gZXNpc3RlbnRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnTGluZ3VhZ2dpbyBGQVEgYWdnaW9ybmF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ0xpbmd1YWdnaW8gRkFRIGFnZ2l1bnRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdFbGltaW5hIExpbmd1YSAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnUmlzdWx0YXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnVWx0aW1vIGFnZ2lvcm5hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnQ2FtcGkgZGluYW1pY2kgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lc3N1biByaXN1bHRhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOdW1lcm8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnR3JhemllIHBlciBpbCB0dW8gdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdIYWkgZ2nDoCB2b3RhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnTmVzc3VuYSB2YWx1dGF6aW9uZSBzZWxlemlvbmF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ1N0YW1wYSBhcnRpY29sbyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpY29saSBGQVEgKG51b3ZpIGNyZWF0aSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGljb2xpIEZBUSAocmVjZW50ZW1lbnRlIG1vZGlmaWNhdGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGljb2xpIEZBUSAoUHJpbWkgMTApJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ1F1ZXN0byBhcnRpY29sbyDDqCB2dW90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVWx0aW1pIGFydGljb2xpIEZBUSBjcmVhdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnVWx0aW1pIGFydGljb2xpIEZBUSBhZ2dpb3JuYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgYXJ0aWNvbGkgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ1RpcG8gZGkgY29udGVudXRvJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXN0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJibGljbyc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnVW4gZmlsdHJvIHBlciBsXCdvdXRwdXQgSFRNTCBwZXIgYWdnaXVuZ2VyZSBjb2xsZWdhbWVudGkgYWQgdW5hIHN0cmluZ2EgZGVmaW5pdGEuIExcJ2VsZW1lbnRvIEltbWFnaW5lIHBlcm1ldHRlIGR1ZSB0aXBpIGRpIGluZ3Jlc3NvLiBQcmltbyBpbCBub21lIGRpIHVuXCdpbW1hZ2luZSAoYWQgZXNlbXBpbyBmYXEucG5nKS4gSW4gcXVlc3RvIGNhc28gdmVycsOgIHV0aWxpenphdG8gaWwgcGVyY29yc28gZGVsbGUgaW1tYWdpbmkgZGkgT1RSUy4gTGEgc2Vjb25kYSBwb3NzaWJpbGl0w6Agw6ggcXVlbGxhIGRpIGluc2VyaXJlIGlsIGNvbGxlZ2FtZW50byBhbGxcJ2ltbWFnaW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDb2xvcmUgQ1NTIHBlciBpbCByaXN1bHRhdG8gZGVsIHZvdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUZW1wbyBkaSBkdXJhdGEgbmVsbGEgQ2FjaGUgZGVsbGUgdm9jaSBkaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb25lIENhdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdQb3NpemlvbmkgZGVjaW1hbGkgZGVsIHJpc3VsdGF0byBkZWwgdm90by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbWUgUHJlZGVmaW5pdG8gZGVsbGEgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnTGluZ3VhIHByZWRlZmluaXRhIHBlciBnbGkgYXJ0aWNvbGkgIEZBUSBwZXIgbGEgbW9kYWxpdMOgIHNpbmdvbGEgbGluZ3VhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdEZWZhdWx0IG51bWVybyBkaSBjYXR0ZXJpIGRlbCB0aXRvbG8gZGkgdW5hIEZBUSBkYSB2aXN1YWxpenphcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpdMOgIHByZWRlZmluaXRhIGRlaSB0aWNrZXQgcGVyIGxcJ2FwcHJvdmF6aW9uZSBkaSBhcnRpY29saSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdTdGF0byBkaSBkZWZhdWx0IHBlciBsYSB2b2NlIGRlbGxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1N0YXRvIFByZWRlZmluaXRvIGRlaSB0aWNrZXQgcGVyIGxcJ2FwcHJvdmF6aW9uZSBkaSBhcnRpY29saSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1RpcG8gcHJlZGVmaW5pdG8gZGVpIHRpY2tldCBwZXIgbFwnYXBwcm92YXppb25lIGRpIGFydGljb2xpIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ0lsIHZhbG9yZSBwcmVkZWZpbml0byBwZXIgaWwgcGFyYW1ldHJvIEF6aW9uZSBwZXIgaWwgZnJvbnRlbmQgcHViYmxpY28uIElsIHBhcmFtZXRybyBBemlvbmUgdmllbmUgdXRpbGl6emF0byBuZWdsaSBzY3JpcHQgZGVsIHNpc3RlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdEZWZpbmlzY2Ugc2UgaWwgdGl0b2xvIEZBUSBkb3ZyZWJiZSBlc3NlcmUgY29uY2F0ZW5hdG8gY29uIGxcJ29nZ2V0dG8gZGVsbFwnYXJ0aWNvbG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdEZWZpbmlzY2UgdW4gbW9kdWxvIHBhbm9yYW1pY2EgcGVyIG1vc3RyYXJlIHVuYSB2aXN0YSBhYmJyZXZpYXRhIGRpIHVuYSBsaXN0YSBkaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSB1biBtb2R1bG8gcGFub3JhbWljYSBwZXIgbW9zdHJhcmUgbGEgdmlzdGEgcGljY29sYSBkaSB1bmEgbGlzdGEgZGkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBGQVEgcHJlZGVmaW5pdG8gbmVsIHJpc3VsdGF0byBGQVEgRXhwbG9yZXIgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4gU3U6IG1lbm8gcmVjZW50ZSBzdWxsYSBwYXJ0ZSBzdXBlcmlvcmUuIEdpw7k6IHBpw7kgcmVjZW50ZSBpbiBjaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIEZBUSBwcmVkZWZpbml0byBuZWwgcmlzdWx0YXRvIEZBUSBFeHBsb3JlciBkZWxsXCdpbnRlcmZhY2NpYSBwdWJibGljYS4gU3U6IG1lbm8gcmVjZW50ZSBpbiBjaW1hLiBHacO5OiBwacO5IHJlY2VudGUgaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBGQVEgcHJlZGVmaW5pdG8gbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4gU3U6IG1lbm8gcmVjZW50ZSBpbiBjaW1hLiBHacO5OiBwacO5IHJlY2VudGUgaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ29yZGluZSBGQVEgcHJlZGVmaW5pdG8gbmVsIHJpc3VsdGF0byBkZWxsYSByaWNlcmNhIG5lbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuIFN1OiBtZW5vIHJlY2VudGUgaW4gY2ltYS4gR2nDuTogcGnDuSByZWNlbnRlIGluIGNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIEZBUSBwcmVkZWZpbml0byBuZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgbmVsbFwnaW50ZXJmYWNjaWEgcHViYmxpY2EuIFN1OiBtZW5vIHJlY2VudGUgaW4gY2ltYS4gR2nDuTogcGnDuSByZWNlbnRlIGluIGNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSB2aXNpYmlsaSBuZWxsYSByaWNlcmNhIEZBUS4gUXVlc3RhIG9wemlvbmUgbm9uIGhhIGVmZmV0dG8gbmVsbGEgcG9zaXppb25lIGRlbGxhIGNvbG9ubmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5pc2NlIGRvdmUgdmVycsOgIHZpc3VhbGl6emF0byBpbCBjb2xsZWdhbWVudG8gXCdJbnNlcmlzY2kgRkFRXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaXppb25lIGRlbCBjYW1wbyB0ZXN0byBsaWJlcm8gZGVsbGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ0VsaW1pbmEgcXVlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnTW9kaWZpY2EgcXVlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWJpbGl0YSBwacO5IGxpbmd1ZSBuZWwgbW9kdWxvIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWJpbGl0YSBtZWNjYW5pc21vIGRpIHZvdG8gbmVsIG1vZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnRXNwbG9yYXRvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0NhbXBvNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdDYW1wbzUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cHBvIHBlciBsXCdhcHByb3ZhemlvbmUgZGkgYXJ0aWNvbGkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnU3RvcmljbyBkaSBxdWVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2NlIGRvdmUgbGEgcmljZXJjYSByYXBpZGEgZG92cmViYmUgZXNzZXJlIHZpc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnUmVnaXN0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb25lIGRlbGxhIGxpbmd1YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdDb2xsZWdhIHVuXCdhbHRybyBvZ2dldHRvIGEgcXVlc3RvIG9nZ2V0dG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ0kgbnVvdmkgYXJ0aWNvbGkgRkFRIHJpY2hpZWRvbm8gYXBwcm92YXppb25lIHByaW1hIGRpIGVzc2VyZSBwdWJibGljYXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ051bWVybyBkaSBlbGVtZW50aSBtb3N0cmF0aSBuZWkgbW9kaWZpY2F0aSBkaSByZWNlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ051bWVybyBkaSBlbGVtZW50aSBtb3N0cmF0aSBuZWkgY3JlYXRpIGRpIHJlY2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTnVtZXJvIGRpIGVsZW1lbnRpIG1vc3RyYXRpIG5lbGxhIGZ1bnppb25hbGl0w6AgcHJpbmNpcGFsaSAxMC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdTdGFtcGEgcXVlc3RhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdDb2RhIHBlciBsXCdhcHByb3ZhemlvbmUgZGVnbGkgYXJ0aWNvbGkgZGVsbGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnQ2VyY2EgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdNb3N0cmEgYXJ0aWNvbG8gRkFRIGNvbiBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdNb3N0cmEgcGVyY29yc28gRkFRIHPDrC9uby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ01vc3RyYSBnbGkgZWxlbWVudGkgZGVsbGUgc290dG9jYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmEgaSBwcmluY2lwYWxpIDEwIG5lbGxlIGludGVyZmFjY2Ugc3BlY2lmaWNhdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmEgbGEgdm90YXppb25lIG5lbGxlIGludGVyZmFjY2Ugc3BlY2lmaWNhdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1NvbHV6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnU2ludG9tbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICdTb2xvIHRlc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdJZGVudGlmaWNhdG9yZSBwZXIgbGUgRkFRLCBlczogRkFRIywgS0IjLCBNeUZBUSMuIElsIHZhbG9yZSBwcmVkZWZpbml0byDDqCBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdDb3JwbyBkZWwgdGlja2V0IHBlciBsXCdhcHByb3ZhemlvbmUgZGVsbFwnYXJ0aWNvbG8gZGVsbGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnT2dnZXR0byBkZWwgdGlja2V0IHBlciBsXCdhcHByb3ZhemlvbmUgZGVsbFwnYXJ0aWNvbG8gZGVsbGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnRWxlbWVudG8gZGVsbGEgYmFycmEgZGVnbGkgc3RydW1lbnRpIHBlciB1bmEgc2NvcmNpYXRvaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdlc3Rlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYWdlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdwdWJibGljbyAodHV0dGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ3B1YmJsaWNvIChwdWJibGljbyknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdGQVHjga7mlrDopo/ov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICfjgq3jg7zjg6/jg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfjgqvjg4bjgrTjg6rjga/lv4XpoIjpoIXnm67jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfmib/oqo0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIOOCq+ODhuOCtOODqueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAnRkFRIOOCq+ODhuOCtOODquOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ0ZBUSDjgqvjg4bjgrTjg6rjgpLnt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ+OCq+ODhuOCtOODquOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAn44Kr44OG44K044Oq44KS57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAn6Kaq44Kr44OG44K044OqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAn44Gy44Go44Gk5Lul5LiK44Gu5qip6ZmQ44Gu44Kw44Or44O844OX44KS6YG45oqe44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICfjgZPjga7jgqvjg4bjgrTjg6rjgafpoIXnm67jgavjgqLjgq/jgrvjgrnjgafjgY3jgovmi4XlvZPogIXjgrDjg6vjg7zjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ+S4gOimp+OBp+OCs+ODoeODs+ODiOOBqOOBl+OBpuihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn44GT44Gu44Kr44OG44K044Oq44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn44GT44Gu44Kr44OG44K044Oq44KS5YmK6Zmk44GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CC5LiA44Gk5Lul5LiK44GuRkFR6KiY5LqL44Gn5L2/55So44GV44KM44Gm44GE44KL44GL44CB44G+44Gf44Gv5LuW44Gu44Kr44OG44K044Oq44Gu6Kaq44Kr44OG44K044Oq44Gr44Gq44Gj44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn44GT44Gu44Kr44OG44K044Oq44Gv5Lul5LiL44Gu6KiY5LqL44Gn5L2/55So44GV44KM44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBr+S7peS4i+OBruOCq+ODhuOCtOODquOBruimquOCq+ODhuOCtOODquOBp+OBmeOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICfjgZPjga7oqJjkuovjgpLliYrpmaTjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVHkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICfjg6/jgqTjg6vjg4njgqvjg7zjg4njgYzliKnnlKjlj6/og73jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAn6auY5qmf6IO95qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICfjgrXjg5bjgqvjg4bjgrTjg6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAnRkFR6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAn5a2Q44Kr44OG44K044Oq44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICflsaXmrbQ6ICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICflsaXmrbTlhoXlrrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+S9nOaIkOaXpeaZgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICfjgrjjg6Pjg7zjg4rjg6vjga7mg4XloLHjgYzjgYLjgorjgb7jgZvjgpPjgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnRkFRIOiogOiqnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnRkFRIOiogOiqnuOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0ZBUSDoqIDoqp7jgpLnt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAn5aSa6KiA6Kqe44Gn5L2c5qWt44KS44GX44Gf44GE5aC05ZCI44CB44GT44Gu6aCF55uu44KS6Kit5a6a44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ+iogOiqnuOCkui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfoqIDoqp7jgpLov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ+iogOiqnuOCkue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn44GT44Gu6KiA6Kqe44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+OBk+OBruiogOiqnuOCkuWJiumZpOOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAguS4gOOBpOS7peS4iuOBrkZBUeOBp+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+OBk+OBruiogOiqnuOBr+OAgeS7peS4i+OBrkZBUeOBp+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmeOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+ioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfjg5rjg7zjgrjmr47jga7oqJjkuovmlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAnRkFR44OH44O844K/44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICc144Gk5pif44Gu44GG44GhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ+OCreODvOODr+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn5oqV56WoICjkvosuIDEw44Gr562J44GX44GEIOOBguOCi+OBhOOBryA2MOOCiOOCiuWkp+OBjeOBhCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAn44Os44O844OIICjkvosuIDI1JeOBq+etieOBl+OBhCDjgYLjgovjgYTjga8gNzUl44KI44KK5aSn44GN44GEKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ+aJv+iqjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDntYLmm7TmlrDogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVHpoIXnm67kvZzmiJDml6XmmYIgKOS7peWJjS/ku6XlvowpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUemgheebruS9nOaIkOaXpeaZgiAo5pyf6ZaT5oyH5a6aKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUemgheebruWkieabtOaXpeaZgiAo5Lul5YmNL+S7peW+jCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFR6aCF55uu5aSJ5pu05pel5pmCICjmnJ/plpPmjIflrpopJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUeWFqOaWhyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUeaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ+ODl+ODreODleOCoeOCpOODq+mBuOaKnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAn5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICfmipXnpajjga7oqK3lrprjgYzjgYLjgorjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICfnibnlrprjga7mipXnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAn5L6LLiAxMCDjgavnrYnjgZfjgYQg44GC44KL44GE44GvIDYwIOOCiOOCiuWkp+OBjeOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAn44Os44O844OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICfjg6zjg7zjg4jjga7oqK3lrprjgYzjgYLjgorjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ+eJueWumuOBruODrOODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ+S+iy4gMjUl44Gr562J44GX44GEIOOBguOCi+OBhOOBryA3NSXku6XkuIonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdGQVHpoIXnm67kvZzmiJDml6XmmYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdGQVHpoIXnm67lpInmm7TmmYLplpMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFR5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ+ODrOODvOODhuOCo+ODs+OCsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ+aKleelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfmipXnpajjga/jgYLjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ+aKleelqOOBr+OBguOCiuOBvuOBm+OCk+OAguOBk+OBruiomOS6i+OBq+acgOWIneOBruipleS+oeOCkuaKleelqOOBl+OBvuOBl+OCh+OBhuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAn5re75LuY44OV44Kh44Kk44Or44KS44OA44Km44Oz44Ot44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnKOS4gOmDqOOBrk9T44Gr44GK44GE44Gm44GvKeS4i+iomOOBruODquODs+OCr+OCkuOCquODvOODl+ODs+OBmeOCi+OBn+OCgeOBq+OCr+ODquODg+OCr+aZguOBq+OAgUN0cmwg44GC44KL44GE44GvIENtZCDjgb7jgZ/jga8gU2hpZnTjgq3jg7zjgpLmirzkuIvjgZnjgovlv4XopoHjgYzjgovloLTlkIjjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfjgZPjga5GQVHpoIXnm67jga/jgYrlvbnjgavjgZ/jgaHjgb7jgZfjgZ/jgYs/IOOAgEZBUeODh+ODvOOCv+ODvOODmeODvOOCueOBruaUueWWhOOBq+W9ueeri+OBpuOBvuOBmeOBruOBp+OAgeODrOODvOODhuOCo+ODs+OCsOOBq+WNlOWKm+OBj+OBoOOBleOBhOOAguOCiOOCjeOBl+OBj+OBiumhmOOBhOOBl+OBvuOBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ+OBguOBvuOCiuW9ueOBq+eri+OBn+OBquOBi+OBo+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICfjgajjgabjgoLlvbnjgavnq4vjgaPjgZ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ+mgheebruOBruS4u+mhjOOBq0ZBUeOCv+OCpOODiOODq+OCkui/veWKoOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICfoqJjkuovjgpLmjL/lhaXjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnRkFR5YWo5paH44KS5oy/5YWl44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ+ODquODs+OCr+OCkuaMv+WFpeOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAn6KiY5LqL44Go44Oq44Oz44Kv44KS5oy/5YWl44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICdGQVHlhajmlofjgajjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgosnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfoqbLlvZPjgZnjgovoqJjkuovjga/jgYLjgorjgb7jgZvjgpPjgIInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICfjgZPjgaHjgonjga7mg4XloLHjgoLlvbnjgavjgZ/jgaTjgYvjgoLjgZfjgozjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ+S7tuWQjeOBqOacrOaWh+OBi+OCieacieWKueOBquaDheWgseOBr+imi+OBpOOBi+OCiuOBvuOBm+OCk+OBp+OBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAn5Lu25ZCN44GL5pys5paH44KS6KiY5YWl44GX44Gm44CB5pyJ5Yq544Gq5oOF5aCx44Gu44Oq44K544OI44KS5Y+W5b6XJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICdGQVHlhajmlofmpJzntKLvvIjkvovvvJoiSm9obipuIuOAgSJXaWxsKiLvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfmipXnpajopo/liLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ+aKleelqOOBleOCjOOBpuOBhOOCi0ZBUeOBruOBvy4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ+ODrOODvOODiOimj+WItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICfjg6zjg7zjg4jjgZXjgozjgabjgYTjgotGQVHjga7jgb8uLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICfmmYLplpPliLbpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ+S9nOaIkOOBleOCjOOBn0ZBUemgheebruOBruOBvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfmnJ/plpPlhoXjgavkvZzmiJDjgZXjgozjgZ9GQVHpoIXnm67jga7jgb8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnU2VhcmNoLVByb2ZpbGUt5qSc57Si44OX44Ot44OV44Kj44O844Or44CA44KS44OG44Oz44OX44Os44O844OI44Gr44GX44G+44GZ44GLPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJyBGQVEg6aCF55uu44OK44Oz44OQ44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAn6KiY5LqL44Gu44Kt44O844Ov44O844OJ5qSc57SiJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ+WFrOmWiyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnRkFR44Ko44Kv44K544OX44Ot44O844Op44O844Gr5oi744KLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfoqq3mm7jjgY0ocncp44Gu5qip6ZmQ44GM5b+F6KaB44Gn44GZ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICfjg6bjg7zjgrbjg7zjgYzjgIDoqq3jgoAv5pu444GPIOaoqemZkOOBruOBguOCi+OCq+ODhuOCtOODquODvOOBjOimi+OBpOOBi+OCiuOBvuOBm+OCk+OBp+OBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICfjg4fjg5Xjgqnjg6vjg4joqIDoqp7jgYzkuI3mmI7jga7jgZ/jgoHjgIHmlrDjgZfjgYTjgqvjg4bjgrTjg6rjga7kvZzmiJDjgYzjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICfjgqvjg4bjgrTjg6pJROOBruWFpeWKm+OBjOW/heimgeOBp+OBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICfjgIzlkI3liY3jgI3jga/lv4XpoIjpoIXnm67jgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBr+OBmeOBp+OBq+WtmOWcqOOBl+OBpuOBhOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ+OBk+OBruOCq+ODhuOCtOODquOBr+OBmeOBp+OBq+WtmOWcqOOBl+OBpuOBhOOBvuOBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJ+OCq+ODhuOCtOODqklEIOOBjOaMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICfjgqvjg4bjgrTjg6ogJXMg44Gu5YmK6Zmk44GM44Gn44GN44G+44Gb44KT44Gn44GX44Gf77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ+OCq+ODhuOCtOODquOBjOabtOaWsOOBleOCjOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAn5paw44GX44GE44Kr44OG44K044Oq44GM6L+95Yqg44GV44KM44G+44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ+OCq+ODhuOCtOODquOCkuWJiumZpCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICfjgqLjgqTjg4bjg6BJRCDjgYzmjIflrprjgZXjgozjgabjgYTjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICfjgYLjgarjgZ/jga/jgZPjga7jgqvjg4bjgrTjg6rjgbjjga7mqKnpmZDjgYzjgYLjgorjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnRkFRIOiomOS6iyAlcyDjgpLliYrpmaTjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/vvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQ2F0ZWdvcnlJRCAlc+OBruWApOOBjOS4jeato+OBp+OBmeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSXRlbUlEIOOBjOS4juOBiOOCieOCjOOBpuOBhOOBquOBhOOBn+OCgeOAgeWxpeattOOCkuihqOekuuOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0ZBUSDjg5Ljgrnjg4jjg6rjg7wnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEg44K444Oj44O844OK44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICciJXMi44KS6Zay6Kan44GZ44KL44Gf44KB44Gu6Kit5a6a5YCk44GM44GC44KK44G+44Gb44KT77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ+iogOiqnklE44GM5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ+OAjOWQjeWJjeOAjeOBr+W/hemgiOmgheebruOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ+OBk+OBruiogOiqnuOBr+ioreWumua4iOOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICfoqIDoqp4gJXMg44Gu5YmK6Zmk44GM44Gn44GN44G+44Gb44KT44Gn44GX44Gf77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ+iogOiqnuOBjOabtOaWsOOBleOCjOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn6KiA6Kqe44GM6L+95Yqg44GV44KM44G+44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ+iogOiqnuOCkuWJiumZpCAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAn57WQ5p6cJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn5pyA57WC5pu05paw5pelJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUSDjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyVzwqAg44GM5LiN6Laz44GX44Gm44GE44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ0xhbmd1YWdlT2JqZWN0ICjoqIDoqp7jgqrjg5bjgrjjgqfjgq/jg4gp44GM6Kqt44G/6L6844KB44G+44Gb44KTJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+e1kOaenOOBjOOBguOCiuOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFR44OK44Oz44OQ44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ+acgOe1guabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUemgheebruS9nOaIkOaXpeaZgiAo5Lul5YmNL+S7peW+jCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFR6aCF55uu5L2c5oiQ5pel5pmCICjmnJ/plpPmjIflrpopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFR6aCF55uu5aSJ5pu05pel5pmCICjku6XliY0v5Lul5b6MKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdGQVHpoIXnm67lpInmm7Tml6XmmYIgKOacn+mWk+aMh+WumiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAn562J44GX44GEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ+i2hSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAn5Lul5LiKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ+acqua6gCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAn5Lul5LiLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ+ODleOCoeOCpOODq0lE44GM5b+F6KaB44Gn44GZ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ+ipleS+oeOCkuOBhOOBn+OBoOOBjeOBguOCiuOBjOOBqOOBhuOBlOOBluOBhOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ+OBguOBquOBn+OBr+OBmeOBp+OBq+ipleS+oea4iOOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ+ipleS+oeOBjOmBuOaKnuOBleOCjOOBpuOBhOOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICfoqZXkvqHjga7mqZ/og73jgpLmnInlirnjgavjgarjgaPjgabjgYTjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAn6KiY5LqL5Y2w5Yi3JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAn44GT44Gu5pyf6ZaT5YaF44Gr5L2c5oiQ44GV44KM44GfJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJ+OCouOCpOODhuODoElE44Gu5YWl5Yqb44GM5b+F6KaB44Gn44GZ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfmlrDnnYDoqJjkuosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ+acgOi/keabtOaWsOOBleOCjOOBn+iomOS6iyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfkuIrkvY0xMOS7tuOBruiomOS6iyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ+OCv+OCpOODl+OBjOaMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdSU1Pjg5XjgqHjgqTjg6vjgYzkvZzmiJDjgafjgY3jgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUeWFqOaWhyknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIOmhp+WuouOBruOBvyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0g6aGn5a6i44Gu44G/IChGQVHlhajmlocpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIOWFrOmWiyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIOWFrOmWiyAoRkFR5YWo5paHKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICfoqZXkvqHjgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ+OBk+OBruiomOS6i+OBr+epuuOBp+OBmSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn5pyA5b6M44Gr5L2c5oiQ44GV44KM44GfRkFR6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOW+jOOBq+abtOaWsOOBleOCjOOBn0ZBUemgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIEZBUemgheebric7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICfjgrPjg7Pjg4bjg7Pjg4Tjgr/jgqTjg5cnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ+WGhemDqOWQkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ+WklumDqOWQkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICflhazplosnOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICfjga/jgYQnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICfjg5XjgqPjg6vjgr/lrprnvqnjgIAt5a6a576p44GV44KM44Gf5paH5a2X5YiX77yIc3RyaW5n77yJ44Gr44Oq44Oz44Kv44KS6L+95Yqg44GZ44KLaHRtbOOCouOCpuODiOODl+ODg+ODiC0gIOOCqOODrOODoeODs+ODiOODu+OCpOODoeODvOOCuOOBr+OAgTLnqK7poZ7jga7jgqTjg7Pjg5fjg4Pjg4jjgYzlj6/og73jgafjgZnjgIIx44Gk55uu44CB44Kk44Oh44O844K444Gu5ZCN5YmN44Gn44GZICjkvosuIGZhcS5wbmcp44CC44GT44Gu5aC05ZCI44CBT1RSU+OCpOODoeODvOOCuOODu+ODkeOCueOBjOS9v+eUqOOBleOCjOOBvuOBmeOAgjLjgaTnm67jgIHjgqTjg6Hjg7zjgrjjgavjg6rjg7Pjgq/jgpLmjL/lhaXjgZnjgovjgZPjgajjgYzlj6/og73mgKfjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnRkFRIOiomOS6i+OCkui/veWKoOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+ipleS+oeOBrue1kOaenOihqOekuuOCiOOBhuOBruOCq+ODqeODvO+8iOOCueOCv+OCpOODq+OCt+ODvOODiO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnRkFR6aCF55uu44GL44KJ6Zui6ISx44GZ44KL44G+44Gn44Gu44Kt44Oj44OD44K344Ol5pmC6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICfjgqvjg4bjgrTjg6rjg7znrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ+mhp+WuoueUqEZBUeOBruihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAn6aGn5a6i55SoRkFR44Gu6Kmz57Sw6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAn6aGn5a6i55SoRkFR44Gu5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICfpoaflrqLnlKhGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn5oqV56Wo44Gu57WQ5p6c44Gu5bCP5pWw54K55Lul5LiL44Gu5qGB5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICfml6Llrprjga7jgqvjg4bjgrTjg6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ+imj+WumuOBruiogOiqnu+8iOWNmOS4gOiogOiqnuODouODvOODieOBp+mBi+eUqOaZgu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICfjg4fjg5Xjgqnjg6vjg4jjgafooajnpLrjgZXjgozjgotGQVHpoIXnm67jgr/jgqTjg4jjg6vjga7jg4fjg5Xjgqnjg6vjg4jmnIDlpKflgKQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnRkFR44G444Gu5Y+W44KK6L6844G/44KS6KGM44GG44OB44Kx44OD44OI44Gu5YSq5YWI6aCG5L2N44Gu5pei5a6a5YCkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICfoqJjkuovjgqjjg7Pjg4jjg6rjg7zmmYLjga7opo/lrprjga7jgrnjg4bjg7zjgr/jgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZBUeOBuOOBruWPluOCiui+vOOBv+OCkuihjOOBhuODgeOCseODg+ODiOOBruWEquWFiOmghuS9jeOBruaXouWumuWApCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGQVHpoIXnm67mib/oqo3nlKjjg4fjg5Xjgqnjg6vjg4jjg4HjgrHjg4Pjg4jjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdoueUqOODkeODqeODoeODvOOCv+OBruODh+ODleOCqeODq+ODiOWApOOAguODkeODqeODoeODvOOCv++8iEFjdGlvbj1YWFhYWFjvvInjga/jgIHjgrnjgq/jg6rjg5fjg4jjgafkvb/nlKjjgZXjgozjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ+ODquODs+OCr+OCquODluOCuOOCp+OCr+ODiOOCpuOCo+OCuOOCp+ODg+ODiO+8iExpbmtPYmplY3QgOjogVmlld01vZGUgPSAiY29tcGxleCLvvInjgafoqK3lrprjg5zjgr/jg7PjgpLkvb/nlKjjgafjgY3jgovjgqLjgq/jgrfjg6fjg7PjgpLlrprnvqnjgZfjgb7jgZnjgIIg44GT44KM44KJ44Gu44Ki44Kv44K344On44Oz44Gv44CB5qyh44GuSlPjgYrjgojjgbNDU1Pjg5XjgqHjgqTjg6vjgpLnmbvpjLLjgZfjgabjgYTjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIJDb3JlLkFsbG9jYXRpb25MaXN0LmNzc+OAgUNvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanPjgIFDb3JlLlVJLlRhYmxlLlNvcnQuanPjgIFDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qc+OAgeWPiuOBs0NvcmUuQWdlbnQgLkxpbmtPYmplY3QuanMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdGQVHjgr/jgqTjg4jjg6vjgYzoqJjkuovjga7ku7blkI3jgavpgKPntZDjgZnjgovjgYvjganjgYbjgYvjgpLlrprnvqnjgZfjgb7jgZknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ+ewoeaYk+eJiEZBUeOCuOODo+ODvOODiuODq+ihqOekuueUqOODouOCuOODpeODvOODq+OBruamguimgeOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICfnsKHmmJPniYhGQVHkuIDopqfooajnpLrnlKjjg6Ljgrjjg6Xjg7zjg6vjga7mpoLopoHjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55S76Z2i44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K577yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i77yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz5pu/44GI44Gr5Yip55So44GZ44KL5bGe5oCn6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdou+8iEZBUeS4gOimp++8ieOBq+OBiuOBkeOCi+OAgUZBUeaknOe0oue1kOaenOS4puOBs+abv+OBiOOBq+WIqeeUqOOBmeOCi+WxnuaAp+mghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBruihqOekuumghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglVwOiDlj6TjgYTpoIYgLyBEb3duOiDmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfpoaflrqLnlKjnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjga7ooajnpLrpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE6aCGIC8gRG93bjog5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBq+OBiuOBkeOCi+OAgUZBUeS4gOimp+OBruihqOekuumghuOBruaXouWumuWApOOCkuWumue+qeOBl+OBvuOBmeOAglVwOiDlj6TjgYTpoIYgLyBEb3duOiDmlrDjgZfjgYTpoIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K577yIRkFR5LiA6Kan77yJ44Gr44GK44GR44KL44CBRkFR5qSc57Si57WQ5p6c5Lim44Gz6aCG44Gu5pei5a6a5YCk44KS5a6a576p44GX44G+44GZ44CCVXA6IOWPpOOBhOmghiAvIERvd246IOaWsOOBl+OBhOmghic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfpoaflrqLnlKjnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE6aCGIC8gRG93bjog5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflhazplovnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHmpJzntKLntZDmnpzkuKbjgbPpoIbjga7ml6LlrprlgKTjgpLlrprnvqnjgZfjgb7jgZnjgIJVcDog5Y+k44GE6aCGIC8gRG93bjog5paw44GX44GE6aCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRkFRIOaknOe0oueUu+mdouOBq+ihqOekuuOBleOCjOOCi0ZBUSDmpJzntKLlsZ7mgKfjga7jg4fjg5Xjgqnjg6vjg4jlgKTjgpLlrprnvqnjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnRkFR6KiY5LqL44GL44KJ44OB44Kx44OD44OI44G444Gu5oy/5YWl44GV44KM44KL5oOF5aCx44KS5a6a576p44GZ44KL44CC44CMRkFR44GZ44G544Gm44CN44Gr44Gv44OG44Kt44K544OI44O75re75LuY44O75Y+K44Gz44Kk44Oz44Op44Kk44Oz44Gu55S75YOP44GM5ZCr44G+44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ+ODgOODg+OCt+ODpeODnOODvOODieOBruODkOODg+OCr+OCqOODs+ODieODkeODqeODoeODvOOCv+OCkuWumue+qeOAguOAjExpbWl0IOODquODn+ODg+ODiOOAjeOBr+aomea6luOBp+ihqOekuuOBleOCjOOCi+OCqOODs+ODiOODquODvOOCkuWumue+qeOBl+OBvuOBmeOAguOAjEdyb3VwIOOCsOODq+ODvOODl+OAjeOBr+ODl+ODqeOCsOOCpOODs+OBuOOBruOCouOCr+OCu+OCueOCkuWItumZkOOBl+OBvuOBmeOAgijkvosuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyKeOAguOAjERlZmF1bHTjgIDjg4fjg5Xjgqnjg6vjg4jjgI3jga/jg5fjg6njgrDjgqTjg7PjgYzmqJnmupbjgafmnInlirnjgavjgarjgaPjgabjgYTjgovjgYvjgIHjg6bjg7zjgrbjg7zjgYzmiYvli5XjgafmnInlirnjgavjgZnjgovlv4XopoHjgYzjgYLjgovjgYvjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn5ouF5b2T6ICF55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gn44Gu6KGo56S66aCF55uu44Gu6Kit5a6a44CC44GT44Gu6Kit5a6a44Gr44KI44Gj44Gm6aCF55uu44Gu5Lim44Gz6aCG44KS5Yi25b6h44GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn6aGn5a6i55So55S76Z2i44Gr44GK44GR44KL44CBRkFR5LiA6Kan44Gn44Gu6KGo56S66aCF55uu44Gu6Kit5a6a44CC44GT44Gu6Kit5a6a44Gr44KI44Gj44Gm6aCF55uu44Gu5Lim44Gz6aCG44KS5Yi25b6h44GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICflhazplovnlLvpnaLjgavjgYrjgZHjgovjgIFGQVHkuIDopqfjgafjga7ooajnpLrpoIXnm67jga7oqK3lrprjgILjgZPjga7oqK3lrprjgavjgojjgaPjgabpoIXnm67jga7kuKbjgbPpoIbjgpLliLblvqHjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICdGQVHjg6rjg7Pjgq/jgYzjganjgZPjgavooajnpLrjgZXjgozjgovjgYvlrprnvqnjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRkFR44Gu44OV44Oq44O844OG44Kt44K544OI44OV44Kj44O844Or44OJ44Gu5a6a576p44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OCkuWJiumZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBriBGQVEg6L+95Yqg55S76Z2i44Gr6KGo56S644GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBriBGQVEg57eo6ZuG55S76Z2i44Gr6KGo56S644GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrkg44GuIEZBUSDkuIDopqfnlLvpnaLjgavooajnpLrjgZnjgosg44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44Kk44K5IOOBriBGQVEg5LiA6Kan55S76Z2i44Gr6KGo56S644GZ44KLIOODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GuIEZBUSDljbDliLfnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODvOODleOCp+OCpOOCuSDjga4gRkFRIOWNsOWIt+eUu+mdouOBq+ihqOekuuOBmeOCiyDjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrkg44GuIEZBUSDljbDliLfnlLvpnaLjgavooajnpLrjgZnjgosg44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544GuIEZBUSDmpJzntKLnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrkg44GuIEZBUSDmpJzntKLnlLvpnaLjgavooajnpLrjgZnjgosg44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+OCpOOCuSDjga4gRkFRIOaknOe0oueUu+mdouOBq+ihqOekuuOBmeOCiyDjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7jgrPjg7Pjg5Hjgq/jg4jjgapGQVHmpoLopoHnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR44K644O844Og55S76Z2i44Gr6KGo56S644GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUeOCuuODvOODoOeUu+mdouOBq+ihqOekuuOBmeOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR44K644O844Og55S76Z2i44Gr6KGo56S644GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfjgZPjga7oqJjkuovjgpLnt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ+WkmuiogOiqnuOCkuacieWKueOBq+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICfoqZXkvqHjga7mqZ/og73jgpLmnInlirnjgavjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyBGQVEg44Ko44Oq44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnRkFRIOOBruWJiumZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdGQVEg44Gu57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJ0ZBUSDmm7TmlrDlsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUeOCuOODo+ODvOODiuODq+S4gOimpyhTKeOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0ZBUeS4gOimpyhTKeOBruihqOekuuaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnRkFRIOOBruihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gr44GK44GR44KL44CBRkFR5qSc57Si44Gu44OQ44OD44Kv44Ko44Oz44OJ44Or44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0ZpZWxkNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdGaWVsZDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVHlhajmlocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFR44Gu6KiY5LqL44Gu5om/6KqN44Gu44Gf44KB44Gu44Kw44Or44O844OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICfjgZPjga7oqJjkuovjga7lsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0ZBUeeUseadpeOBruODgeOCseODg+ODiOOBq+WQq+OBvuOCjOOCi+WGhemDqOmgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0ZBUeeUseadpeOBruODgeOCseODg+ODiOOBq+WQq+OBvuOCjOOCi+WGhemDqOmgheebruOBmeOBueOBpuOBruWQjeensCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ+OCr+OCpOODg+OCr+aknOe0ouOBjOihqOekuuOBleOCjOOCi+eUu+mdoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn44K444Oj44O844OK44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfoqIDoqp7nrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICfoqIDoqp7nrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn44GT44GuRkFR6KiY5LqL44Gr5LuW44Kq44OW44K444Kn44Kv44OI44KS6Zai6YCj5LuY44GR44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+WIqeeUqOWPr+iDveOBquOCueODhuODvOODiOOCv+OCpOODl+ODquOCueODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLnlLvpnaLjgafliKnnlKjlj6/og73jgarjgrnjg4bjg7zjg4jjgr/jgqTjg5fjg6rjgrnjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBp+WIqeeUqOWPr+iDveOBquOCueODhuODvOODiOOCv+OCpOODl+ODquOCueODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUeS4gOimp+OBp+ihqOekuuOBmeOCi+iomOS6i+OBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLnlKjnlLvpnaLjga5GQVHkuIDopqfjgafooajnpLrjgZnjgovoqJjkuovjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WFrOmWi+eUu+mdouOBrkZBUeS4gOimp+OBp+ihqOekuuOBmeOCi+iomOS6i+OBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFR44K444Oj44O844OK44Or44Gn6KGo56S644GZ44KL6KiY5LqL44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5qSc57Si57WQ5p6c44Go44GX44Gm5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn6KGo56S644GV44KM44KLRkFR6aCF55uu44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5qSc57Si57WQ5p6c44Go44GX44Gm6aGn5a6i55S76Z2i44Gn6KGo56S644GV44KM44KLRkFR6aCF55uu44Gu5pyA5aSn5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aknOe0oue1kOaenOOBqOOBl+OBpuWFrOmWi+eUu+mdouOBp+ihqOekuuOBleOCjOOCi0ZBUemgheebruOBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUSBFeHBsb3JlcuOBp+ihqOekuuOBleOCjOOCi+S7tuWQjeOBrkZBUeiomOS6i+OBruacgOWkp+OCteOCpOOCuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUSBFeHBsb3JlciDjgavooajnpLrjgZXjgozjgovjgIxGQVHpoIXnm67jga7ku7blkI3jgI3jga7mnIDlpKflgKTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFRIEV4cGxvcmVyIOOBq+ihqOekuuOBleOCjOOCi+OAjEZBUemgheebruOBruS7tuWQjeOAjeOBruacgOWkp+WApOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVEg5qSc57Si44Gn6KGo56S644GV44KM44KL5Lu25ZCN44GuRkFR6KiY5LqL44Gu5pyA5aSn44K144Kk44K6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+mhp+WuouOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBrkZBUSDmpJzntKIg44Gr6KGo56S644GV44KM44KL44CMRkFR6aCF55uu44Gu5Lu25ZCN44CN44Gu5pyA5aSn5YCk44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga5GQVEg5qSc57SiIOOBq+ihqOekuuOBleOCjOOCi+OAjEZBUemgheebruOBruS7tuWQjeOAjeOBruacgOWkp+WApOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuRkFRIOOCuOODo+ODvOODiuODq+OBp+ihqOekuuOBleOCjOOCi+S7tuWQjeOBrkZBUeiomOS6i+OBruacgOWkp+OCteOCpOOCuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjgavjgYrjgYTjgabjgIHjgrfjg6fjg7zjg4jjg7vjg4HjgrHjg4Pjg4jmpJzntKLjga7jgZ/jgoHjga5odG1sIE9wZW5TZWFyY2jjg5fjg63jg5XjgqPjg7zjg6vjgpLnlJ/miJDjgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgafjgZknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICfmlrDopo8gRkFRIOmgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICfmlrDopo8gRkFRIOmgheebruOCkuWFrOmWi+OBmeOCi+OBq+OBr+S6i+WJjeOBq+aJv+iqjeOBleOCjOOCi+OBk+OBqOOBjOW/heimgeOBp+OBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLnlKjjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgafooajnpLrjgZXjgozjgosgRkFRIOmgheebruOBruaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5YWs6ZaL55So44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn6KGo56S644GV44KM44KLIEZBUSDpoIXnm67jga7mlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i55So44Kk44Oz44K/44O844OV44Kn44Kk44K5IOaknOe0oue1kOaenOihqOekuuOBruWQhOeUu+mdouOBp+ihqOekuuOBleOCjOOCiyBGQVEg6aCF55uu44Gu5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrkg44Gu5qSc57Si57WQ5p6c6KGo56S644Gu5ZCE55S76Z2i44Gn6KGo56S644GV44KM44KLIEZBUSDpoIXnm67jga7mlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfjgIzmnIDov5Hjga7lpInmm7TjgI3jgavkvZXku7bjgb7jgafooajnpLrjgZnjgovjgYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICfjgIzmnIDmlrDjga7mlrDopo/kvZzmiJDjgI3jgavkvZXku7bjgb7jgafooajnpLrjgZnjgovjgYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICfjgIzjg4jjg4Pjg5cxMOiomOS6i+OAjeOBq+S9leS7tuOBvuOBp+ihqOekuuOBmeOCi+OBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICfnsKHmmJPniYhGQVHjgrjjg6Pjg7zjg4rjg6vkuIDopqfjga7jg5rjg7zjgrjmjIflrprnlKjjga7jg5Hjg6njg6Hjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ+ewoeaYk+eJiEZBUeamguimgeOBruODmuODvOOCuOaMh+WumueUqOOBruODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ+OBk+OBruiomOS6i+OCkuWNsOWItyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ+WFrOmWi0ZBUeOBruihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAn5YWs6ZaLRkFR44Gu6Kmz57Sw44KS6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ+WFrOmWi0ZBUeOBruaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ+WFrOmWi0ZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfoqJjkuovmib/oqo3jgq3jg6Xjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICfoqZXkvqHnjofjgILjgq3jg7zjga/jgIHjg5Hjg7zjgrvjg7Pjg4jjgafmjIflrprjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ0ZBUeOCkuaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJ0ZBUeOBruaknOe0oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0FnZW50RkFRWm9vbeOBp+ihqOekuuOBleOCjOOCi+OCpOODs+ODqeOCpOODs0hUTUzjga7jg4fjg5Xjgqnjg6vjg4jpq5jjgZUo44OU44Kv44K744Or6KGo6KiYKeOCkuioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0N1c3RvbWVyRkFRWm9vbSAo5Y+K44GzIFB1YmxpY0ZBUVpvb20p44Gn6KGo56S644GV44KM44KL44Kk44Oz44Op44Kk44OzSFRNTOOBruODh+ODleOCqeODq+ODiOmrmOOBlSjjg5Tjgq/jgrvjg6vooajoqJgp44KS6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0FnZW50RkFRWm9vbeOBp+ihqOekuuOBleOCjOOCi+OCpOODs+ODqeOCpOODs0hUTUzjga7mnIDlpKfjga7pq5jjgZUo44OU44Kv44K744Or6KGo6KiYKeOCkuioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0N1c3RvbWVyRkFRWm9vbSAo5Y+K44GzIFB1YmxpY0ZBUVpvb20p44Gn6KGo56S644GV44KM44KL44Kk44Oz44Op44Kk44OzSFRNTOOBruacgOWkp+OBrumrmOOBlSjjg5Tjgq/jgrvjg6vooajoqJgp44KS6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnXCdBZ2VudEZBUVpvb21TbWFsbFwn44Gu6Kit5a6a44CC5YWs6ZaL55S76Z2i44Gr44GK44GE44Gm44CM44Oq44Oz44Kv44KS5oy/5YWl44GZ44KL44CN44Oc44K/44Oz44KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICflhazplovjgZXjgozjgZ9GQVHoqJjkuovjga5BZ2VudEZBUVpvb21TbWFsbOOBqyJGQVHjga7jg4bjgq3jgrnjg4jjgIHjgYrjgojjgbPjg6rjg7Pjgq/jgpLmjL/lhaUiIC8gIkZBUeOBruOBmeOBueOBpuOAgeOBiuOCiOOBs+ODquODs+OCr+OCkuaMv+WFpSIg44Oc44K/44Oz44KS6KGo56S644GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdBZ2VudEZBUVpvb21TbWFsbOOBqyJGQVHjga7jg4bjgq3jgrnjg4jjgpLmjL/lhaUiIC8gIkZBUeOBruOBmeOBueOBpuOCkuaMv+WFpSLjg5zjgr/jg7PjgpLooajnpLrjgZnjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAn6KiY5LqL44GnSFRNTOOCv+OCsOOCkuihqOekuuOBmeOCiy/ooajnpLrjgZfjgarjgYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAn6KiY5LqL44Gu44OR44K544KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAn44K144OW44Kr44OG44K044Oq44O844Gu44OI44OU44OD44Kv44KS6KGo56S644GZ44KLL+ihqOekuuOBl+OBquOBhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfmnIDmlrDjga7lpInmm7TjgpLooajnpLrjgZnjgovnlLvpnaLvvIjmi4XlvZPogIXnlKgv6aGn5a6i55SoL+WFrOmWi++8ieOCkuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn5pyA5paw44Gu5paw6KaP5L2c5oiQ44KS6KGo56S644GZ44KL55S76Z2i77yI5ouF5b2T6ICF55SoL+mhp+WuoueUqC/lhazplovvvInjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+ODiOODg+ODlzEw44KS6KGo56S644GZ44KL55S76Z2i77yI5ouF5b2T6ICF55SoL+mhp+WuoueUqC/lhazplovvvInjgpLlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+ipleS+oeOCkuihqOekuuOBmeOCi+eUu+mdou+8iOaLheW9k+iAheeUqC/poaflrqLnlKgv5YWs6ZaL77yJ44KS5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gq44Gp44Gu44K644O844Og44O744OT44Ol44O844Gn44CBRkFR44KS5LuW44Gu44Kq44OW44K444Kn44Kv44OI44Go44Oq44Oz44Kv44GV44Gb44KL44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844Og44OT44Ol44O844GnRkFR5YmK6Zmk44Gu44Oq44Oz44Kv44KS6KGo56S644GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844Og44OT44Ol44O844GnRkFR44Gu5bGl5q2044Gu44Oq44Oz44Kv44KS6KGo56S644GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7jgrrjg7zjg6Djg5Pjg6Xjg7zjgadGQVHnt6jpm4bjga7jg6rjg7Pjgq/jgpLooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp+OAjOaIu+OCi+OAjeOBruODquODs+OCr+OCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp0ZBUeOCkuWNsOWIt+ODquODs+OCr+OCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ+ino+axuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAn55eH54q2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ+ODhuOCreOCueODiOOBruOBvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnRkFR55So44Gu6K2Y5Yil5a2QIOS+iy4gRkFRIywgS0IjLCBNeUZBUSMuIOODh+ODleOCqeODq+ODiOOBp+OBryBGQVEjIOOBqOOBquOBo+OBpuOBhOOBvuOBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfigJhOb3JtYWzigJnjg6rjg7Pjgq/jg7vjgr/jgqTjg5fjgpLkvb/nlKjjgZfjgabjgIHigJhGQVHigJnjgqrjg5bjgrjjgqfjgq/jg4jjgYzku5bjga7igJhGQVHigJnjgqrjg5bjgrjjgqfjgq/jg4jjgajjg6rjg7Pjgq/jgZXjgozjgovjgojjgYbjgavjgIHlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfigJhQYXJlbnRDaGlsZOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfigJhOb3JtYWzigJnjg6rjg7Pjgq/jg7vjgr/jgqTjg5fjgpLkvb/nlKjjgZfjgabjgIHigJhGQVHigJnjgqrjg5bjgrjjgqfjgq/jg4jjgYzku5bjga7igJhUaWNrZXTigJnjgqrjg5bjgrjjgqfjgq/jg4jjgajjg6rjg7Pjgq/jgZXjgozjgovjgojjgYbjgavjgIHlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfigJhQYXJlbnRDaGlsZOKAmeODquODs+OCr+ODu+OCv+OCpOODl+OCkuS9v+eUqOOBl+OBpuOAgeKAmEZBUeKAmeOCquODluOCuOOCp+OCr+ODiOOBjOS7luOBruKAmFRpY2tldOKAmeOCquODluOCuOOCp+OCr+ODiOOBqOODquODs+OCr+OBleOCjOOCi+OCiOOBhuOBq+OAgeWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnRkFR5om/6KqN44OB44Kx44OD44OI55So44CA44OB44Kx44OD44OI5pys5paHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdGQVHmib/oqo3jg4HjgrHjg4Pjg4jnlKjjgIDjg4HjgrHjg4Pjg4jku7blkI0gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICfjgrfjg6fjg7zjg4jjgqvjg4Pjg4jjga7jgZ/jgoHjga7jg4Tjg7zjg6vjg5Djg7zjg7vjgqLjgqTjg4bjg6DjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ+WklumDqCAo6aGn5a6iKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn5YaF6YOoICjmi4XlvZPogIUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ+WFrOmWiyAo5YWo5ZOhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICflhazplovjgIAo44OR44OW44Oq44OD44KvKSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdUYW1iYWggYXJ0aWtlbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdLYXRhIGt1bmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2F0ZWdvcmkgZGlwZXJsdWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdQZW5nZXNhaGFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gS2F0ZWdvcmkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnVGFtYmFoIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ1RhbWJhaCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnQXVkaXQgS2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdTdWIta2F0ZWdvcmkgZGFyaXBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdTaWxhIHBpbGloIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IHBlcm1pbnRhYW4ga3VtcHVsYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdLdW1wdWxhbiBlamVuIGJvbGVoIG1lbmdha3NlcyBhcnRpa2VsIGRhbGFtIGthdGVnb3JpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0FrYW4gZGlwYXBhcmthbiBzZWJhZ2FpIGtvbWVuIGRhbGFtIEV4cGxvcmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVtYWRhbSBrYXRlZ29yaSBpbmk/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnQW5kYSB0aWRhayBib2xlaCBtZW1hZGFtIGthdGVnb3JpIGluaS4gSWEgZGlndW5ha2FuIGRhbGFtIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGF0aWtlbCBGQVEgZGFuL2F0YXUgYWRhbGFoIGlidWJhcGEga2VwYWRhIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGthdGVnb3JpIGxhaW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnS2F0ZWdvcmkgaW5pIGRpZ3VuYWthbiBkYWxhbSBhdGlrZXQgRkFRIGJlcmlrdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnS2F0ZWdvcmkgaW5pIGFkYWxhaCBpYnViYXBhIGtlcGFkYSBzdWIta2F0ZWdvcmkgYmVyaWt1dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdBZGFrYWggYW5kYSBpbmdpbiBtZW1hZGFtIGFydGlrZWwgRkFRIGluaT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnQ2FyaWFuIFBhbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnV2lsZGNhcmRzIGFkYWxhaCBkaWJlbmFya2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdDYXJpYW4gVGVycGVyaW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnU3ViLWthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlrZXQgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnVGlhZGEgc3ViLWthdGVnb3JpIGRpdGVtdWkuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdTZWphcmFoIHVudHVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0thbmR1bmdhbiBzZWphcmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDaXB0YSBtYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ1RpYWRhIGRhdGEgSnVybmFsIEZBUSBkaXRlbXVpLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdQZW5ndXJ1c2FuIEJhaGFzYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdndW5ha2FuIGNpcmkgaW5pIGppa2EgYW5kYSBtYWh1IHVudHVrIGJla2VyamEgZGVuZ2FuIHBlbGJhZ2FpIGJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdUYW1iYWggYmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ1RhbWJhaCBiYWhhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0F1ZGl0IGJhaGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVtYWRhbWthbiBiYWhhc2EgaW5pPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdBbmRhIHRpZGFrIGJvbGVoIG1lbWFkYW0gYmFoYXNhIGluaS4gSWEgZGlndW5ha2FuIHNla3VyYW5nLWt1cmFuZ255YSBzYXR1IGFydGlrZWwgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0JhaGFzYSBpbmkgZGlndW5ha2FuIGRhbGFtIEFydGlrZWwgRkFRIHlhbmcgYmVyaWt1dCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0F0dXJhbiBrb250ZWtzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0FydGlrZWwgRkFRIHBlciBtdWthIHN1cmF0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ1RpYWRhIGRhdGEgRkFRIGRpdGVtdWkuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdkYXJpcGFkYSA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ0thdGEga3VuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ1VuZGkgKGNvbnRvaDogQmVyc2FtYWFuIDEwIGF0YXUgbGViaWggYmVzYXIgZGFyaXBhZGEgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ0thZGFyIChjb250b2g6IEJlcnNhbWFhbiAyNSUgYXRhdSBsZWJpaCBiZXNhciBkYXJpcGFkYSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnRGlsdWx1c2thbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdUZXJha2hpciBkaXViYWggb2xlaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ1dha3R1IGNpcHRhIGFydGlrZWwgRkFRIChzZWJlbHVtL3NlbGVwYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1dha3R1IGNpcHRhIGFydGlrZWwgRkFRIChkaSBhbnRhcmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnV2FrdHUgcGVydWJhaGFuIGFydGlrZWwgRkFRIChzZWJlbHVtL3NlbGVwYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1dha3R1IHBlcnViYWhhbiBhcnRpa2VsIEZBUSAoZGkgYW50YXJhKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVFUZWtzUGVudWgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdDYXJpYW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnUGlsaWhhbiBwcm9maWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1VuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ1RpYWRhIHRldGFwYW4gdW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ1VuZGkgc3Blc2lmaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnY29udG9oOiBTYW1hIGRlbmdhbiAxMCBhdGF1IExlYmloIGJlc2FyIGRhcmlwYWRhIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdLYWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnVGlhZGEgdGV0YXBhbiBrYWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnS2FkYXIgc3Blc2lmaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdjb250b2g6IFNhbWEgZGVuZ2FuIDI1JSBhdGF1IGxlYmloIGJlc2FyIGRhcmlwYWRhIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1dha3R1IGNpcHRhIGFydGlrZWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnV2FrdHUgcGVydWJhaGFuIGFydGlrZWwgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnTWVuaWxhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1VuZGlhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdUaWFkYSB1bmRpYW4gZGl0ZW11aSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ1RpYWRhIHVuZGlhbiBkaXRlbXVpISBKYWRpbGFoIG9yYW5nIHBlcnRhbWEgbWVuaWxhaSBhcml0bCBGQVEgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnTXVhdCB0dXJ1biBsYW1waXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ1VudHVrIG1lbWJ1a2EgcGF1dGFuIGRhbGFtIGtldGVyYW5nYW4gYmxvayBiZXJpa3V0LCBhbmRhIG11bmdraW4gcGVybHUgbWVuZWthbiBrZWt1bmNpIEN0cmwgYXRhdSBDbWQgYXRhdSBTaGlmdCBzZW1hc2EgbWVuZWthbiBwYXV0YW4gKGJlcmdhbnR1bmcga2VwYWRhIHBlbGF5YXIgZGFuIHNpc3RlbSBvcGVyYXNpIGFuZGEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0JlcmFwYSBiYW55YWsgYXJpa2VsIGluaSBtZW1iYW50dT8gU2lsYSBiZXJpIGthbWkgcGVuaWxhaWFuIGFuZGEgZGFuIGJhbnR1IHVudHVrIG1lbmluZ2thdGthbiBwYW5na2FsYW4gZGF0YSBGQVEuIFRlcmltYSBLYXNpaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdUaWRhayBtZW1iYW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdTYW5nYXQgbWVtYmFudHUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ1RhbWJhaCB0YWp1ayBGQVEgcGFkYSBzdWJqZWsgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdNYXN1ayBUZWtzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICdNYXN1a2thbiBGQVEgcGVudWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnTWFzdWsgcGF1dGFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnTWFzdWsgVGVrcyBGQVEgJiBQYXV0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ01hc3Vra2FuIEZBUSBwZW51aCBkYW4gcGF1dGFuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnVGlhZGEgYXJ0aWtlbCBGQVEgZGlqdW1wYWkuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnQ2FyaWFuIFRla3MgcGVudWggZGFsYW0gYXJ0aWtlbCBGQVEgKGNvbnRvaC4gIkpvaG4qbiIgb3IgIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdTZWthdGFuIHVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIGJlcnNlcnRhIHVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICdTZWthdGFuIGthZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIGJlcnNlcnRhIGthZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnS2VrYW5nYW4gbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnSGFueWEgYXJ0aWtlbCBGQVEgeWFuZyBkaWNpcHRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ0hhbnlhIGFydGlrZWwgRkFRIHlhbmcgZGljaXB0YSBkaSBhbnRhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnQ2FyaWFuIGJlcnByb2ZpbCBzZWJhZ2FpIHRlbXBsYXQ/JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTm9tYm9yIEFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdDYXJpYW4gdW50dWsgYXJ0aWtlbCBkZW5nYW4ga2VrdW5jaSBwZXJrYXRhYW4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnVW11bSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnQmFsaWsga2VwYWRhIHBlbmVyb2thIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnQW5kYSBwZXJsdWthbiBrZWl6aW5hbiBydyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ1RpYWRhIGthdGVnb3JpIHlhbmcgZGlqdW1wYWkgZGltYW5hIHBlbmdndW5hIHBlcmx1IGFkYSBrZWl6aW5hbiBiYWNhL3R1bGlzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdUaWFkYSBiYWhhc2EgbGF6aW0geWFuZyBkaWp1bXBhaSBkYW4gdGlkYWsgYm9sZWggbWVtYnVhdCB5YW5nIGJhcnUuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnUGVybHVrYW4gQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmkgcGVybHUgbWVtcHVueWFpIG5hbWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdrYXRlZ29yaSBpbmkgc3VkYWggd3VqdWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnS2F0ZWdvcmkgaW5pIHRlbGFoIHd1anVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJ1RpYWRhIENhdGVnb3J5SUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ1RpZGFrIG1hbXB1IHVudHVrIG1lbWJ1YW5nIGthdGVnb3JpICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdLYXRlZ29yaSBGQVEgZGlrZW1hc2tpbmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdrYXRlZ29yaSBGQVEgZGl0YW1iYWghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ1BhZGFtIGthdGVnb3JpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpYWRhIEl0ZW1JRCBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnQW5kYSB0aWRhayBtZW1wdW55YWkga2VpemluYW4gdW50dWsga2F0ZWdvcmkgaW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICd0aWRhayBtYW1wdSB1bnR1ayBtZW1idWFuZyBhcnRpa2VsIEZBUSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQ2F0ZWdvcnlJRCAlcyBpdHUgdGlkYWsgc2FoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYm9sZWggbWVudW5qdWtrYW4gc2VqYXJhaCwgc2ViYWdhaSB0aWFkYSBJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnU2VqYXJhaCBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdqdXJuYWwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJ1Blcmx1a2FuIHBpbGloYW4gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgY29uZmlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ3BpbGloYW4gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgY29uZmlnIG1lbWVybHVrYW4gdW50dWsgbWVuamFkaSBzdWF0dSBydWogSEFTSCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICdUaWFkYSBwaWxpaGFuIGNvbmZpZyBkaWp1bXBhaSB1bnR1ayBwYW5kYW5nYW4gIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgTGFuZ3VhZ2VJRCBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ05hbWEgZGlwZXJsdWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdCYWhhc2EgaW5pIHN1ZGFoIHd1anVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdUaWRhayBtYW1wdSB1bnR1ayBtZW1idWFuZyBiYWhhc2EgJXMgaXR1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdCYWhhc2EgRkFRIGRpa2VtYXNraW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnQmFoYXNhIEZBUSBkaXRhbWJhaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnUGFkYW0gYmFoYXNhICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdLZXB1dHVzYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdLZW1hc2tpbmkga2FsaSB0ZXJha2hpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdNZWRhbiBEaW5hbWlrIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgJXMgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICdUaWRhayBib2xlaCBtZW11YXRrYW4gT2JqZWtCYWhhc2EhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpYWRhIEtlcHV0dXNhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ05vbWJvciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnUGVydHVrYXJhbiBBa2hpciBvbGVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEl0ZW0gQ2lwdGEgTWFzYSAoc2ViZWx1bS9zZWxlcGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEgSXRlbSBDaXB0YSBNYXNhIChkaSBhbnRhcmEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEl0ZW0gVWJhaCBNYXNhIChzZWJlbHVtL3NlbGVwYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBJdGVtIFViYWggTWFzYSAoZGkgYW50YXJhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdTYW1hIERlbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdsZWJpaCBCZXNhciBkYXJpcGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnbGViaWggQmVzYXIgZGFyaXBhZGEgc2FtYSBkZW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTGViaWggS2VjaWwgZGFyaXBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ0xlYmloIEtlY2lsIGRhcmlwYWRhIHNhbWEgZGVuZ2FuICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdQZXJsdWthbiBGaWxlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ1RlcmltYSBrYXNpaCB1bnR1ayB1bmRpYW4gYW5kYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdBbmQgc3VkYWggbWVuZ3VuZGkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnVGlhZGEga2FkYXIgZGlwaWxpaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnTWVrYW5pc21hIG1lbmd1bmRpIHRpZGFrIGRpYm9sZWhrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnS2FkYXIgdW5kaWFuIHRpZGFrIGRpdGFrcmlma2FuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdBcnRpa2VsIEZBUSBkaWNldGFrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnRGljaXB0YSBkaSBhbnRhcmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnUGVybHVrYW4gSXRlbUlEISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnQXJ0aWtlbCBGQVEgKGJhcnUgZGljaXB0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlrZWwgRkFRIChiYXJ1IGRpdWJhaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWtlbCBGQVEgKDEwIHRlcmJhaWspJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnVGlhZGEgSmVuaXMgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICdKZW5pcyBtZXN0aSBhbnRhcmEgTGFzdENyZWF0ZSBhdGF1IExhc3RDaGFuZ2UgYXRhdSBUb3AxMCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICdUaWRhayBib2xlaCBtZW5jaXB0YSBmYWlsIFJTUyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKFRla3NwZW51aEZBUSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIFBlbGFuZ2dhbiAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gUGVsYW5nZ2FuIChUZWtzcGVudWhGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIFVtdW0gKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBVbXVtICh0ZWtzcGVudWhGQVEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnQXJ0aWtlbCBpbmkga29zb25nISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdNZW5jaXB0YSBhcml0a2VsIEZBUSB0ZXJiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0tlbWFza2luaSBBcnRpa2VsIEZBUSB0ZXJiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdBcml0a2VsIEZBUSAxMCB0ZXJiYWlrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnZGFsYW1hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2x1YXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICd1bXVtJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdBc2luZ2FuIHVudHVrIGhhc2lsIGtlbHVhcmFuIHVudHVrIG1lbmFtYmFoIHBhdXRhbiBkaWJlbGFrYW5nIGphcmluZ2FuIHN0cmluZy4gRWxlbWVuIGdhbWJhciBkaWJlbmFya2FuIGR1YSBpbnB1dC4gcGVydGFtYSBuYW1hIGdhbWJhciB0ZXJzZWJ1dCAoZmFxLnBuZykuIERhbGFtIGtlcyBpbmksIGphbGFuIGdhbWJhciBPVFJTIGFrYW4gZGlndW5ha2FuLiBrZWR1YW55YSBrZW11bmdraW5hbiBhZGFsYWggdW50dWsgbWVtYXN1a2thbiBwYXV0YW4gcGFkYSBnYW1iYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ3RhbWJhaCBhcnRpa2VsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ1dhcm5hIENTUyB1bnR1ayBrZXB1dHVzYW4gdW5kaWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnV2FrdHUgY2FjaGUgdW50dWsgbWVuaW5nZ2Fsa2FuIGJhZ2kgaXRlbSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4ga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ0NldGFrYW4gRkFRIFBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnWnVtIEZBUSBQZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICdjYXJpYW4gRkFRIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRIFBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdUaXRpayBwZXJwdWx1aGFuIGRhcmlwYWRhIGtlcHV0dXNhbiB1bmRpYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdLYXRlZ29yaSBuYW1hIHNlZGlhIGFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0JhaGFzYSBzZWRpYSBhZGEgdW50dWsgYXJ0aWtlbCBGQVEgcGFkYSBzYXR1IG1vZCBiYWhhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ1NhaXogbWFrc2ltdW0gdGV0YXBhbiBhd2FsIGRhcmlwYWRhIHRhanVrIGRhbGFtIGFydGlrZWwgRkFRIHVudHVrIGRpdHVuanVra2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdLZXV0YW1hYW4gc2VkaWEgYWRhIHRpa2V0IHVudHVrIHBlbmdlc2FoYW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdLZWFkYWFuIHNlZGlhIGFkYSB1bnR1ayBrZW1hc3VrYW4gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnS2VhZGFhbiBzZWRpYSBhZGEgdGlrZXQgdW50dWsgcGVuZ2VzYWhhbiBkYXJpcGFkYSBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnSmVuaXMgdGV0YXBhbiBhd2FsIHRpa2V0IHVudHVrIGtlbHVsdXNhbiBhcnRpa2VsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ05pbGFpIHNlZGlhIGFkYSB1bnR1ayB0aW5kYWthbiBwYXJhbWV0ZXIga2VwYWRhIGRlcGFuYWtoaXIgdW11bS4gVGluZGFrYW4gcGFyYW1ldGVyIGRpZ3VuYWthbiBkYWxhbSBza3JpcCBzaXN0ZW0gdGVyc2VidXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdUYWtyaWZrYW4gVGluZGFrYW4gZGltYW5hIGJ1dGFuZyB0ZXRhcGFuIGl0dSBhZGEgZGFsYW0gd2lkZ2V0IG9iamVrIGJlcnNhbWJ1bmcgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gU2lsYSBwYXN0aWthbiB5YW5nIFRpbmRha2FuIGluaSBwZXJsdSBkaWRhZnRhcmthbiB5YW5nIGJlcmlrdXQgZmFpbC1mYWlsIEpTIGRhbiBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnVGVudHVrYW4gamlrYSB0YWp1ayBGQVEgcGVybHUgZGlyYW5na2Fpa2FuIGtlcGFkYSBhcnRpa2VsIHN1Ymplay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgbGloYXQgc2VtdWxhIG1vZHVsIHVudHVrIHBhcGFyIHBhcGFyYW4ga2VjaWwgZGFyaSBKdXJuYWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIGxpaGF0IHNlbXVsYSBtb2R1bCB1bnR1ayBwYXBhciBwYXBhcmFuIGtlY2lsIGRhcmkgc2VuYXJhaSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLZW5hbHBhc3RpIHNpZmF0IHNlZGlhIGFkYSBGQVEgbWVueXVzdW4gZGFsYW0gY2FyaWFuIEZBUSBkYXJpcGFkYSBpbnRlcmZhY2UgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tlbmFscGFzdGkgc2lmYXQgc2VkaWEgYWRhIEZBUSBtZW55dXN1biBkYWxhbSBjYXJpYW4gRkFRIGRhcmlwYWRhIGludGVyZmFjZSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBzaWZhdCBzZWRpYSBhZGEgRkFRIG1lbnl1c3VuIGRhbGFtIGNhcmlhbiBGQVEgZGFyaXBhZGEgaW50ZXJmYWNlIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2VuYWxwYXN0aSBzaWZhdCBzZWRpYSBhZGEgRkFRIG1lbnl1c3VuIGRhbGFtIGNhcmlhbiBGQVEgZGFyaXBhZGEgZWplbiBpbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gdGV0YXBhbiBhd2FsIHNpZmF0IEZBUSB1bnR1ayBzdXN1bmFuIEZBUSBkYWxhbSBwZW5lcm9rYSBGQVEgYW50YXJhIG11a2EgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB0ZXRhcGFuIGF3YWwgc2lmYXQgRkFRIHVudHVrIHN1c3VuYW4gRkFRIGRhbGFtIHBlbmVyb2thIEZBUSBhbnRhcmEgbXVrYSBvcmFuZyBhd2FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHBlcmludGFoIEZBUSBsYWxhaSBkYWxhbSBoYXNpbCBGQVEgRXhwbG9yZXIgYmFnaSBhbnRhcmEgbXVrYSBlamVuLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gQmF3YWg6IHRlcmtpbmkgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcGVyaW50YWggRkFRIGxhbGFpIGRhbGFtIGhhc2lsIEZBUSBFeHBsb3JlciBiYWdpIGFudGFyYSBtdWthIHBlbGFuZ2dhbi4gQXRhczogdGVydHVhIGRpIGF0YXMuIEJhd2FoOiB0ZXJraW5pIGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBwZXJpbnRhaCBGQVEgbGFsYWkgZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIGJhZ2kgYW50YXJhIG11a2Egb3JhbmcgYXdhbS4gQXRhczogdGVydHVhIGRpIGF0YXMuIEJhd2FoOiB0ZXJraW5pIGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBwZXJpbnRhaCBsYWxhaSBGQVEgaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcGVyaW50YWggbGFsYWkgRkFRIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBCYXdhaDogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHBlcmludGFoIGxhbGFpIEZBUSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgYXdhbS4gQXRhczogdGVydHVhIGRpIGF0YXMuIEJhd2FoOiB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGxhbGFpIGRpdHVuanVra2FuIEZBUSBhdHJpYnV0IGNhcmlhbiB1bnR1ayBza3JpbiBGQVEgY2FyaWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gbWFrbHVtYXQgeWFuZyBha2FuIGRpbWFzdWtrYW4gZGFsYW0gdGlrZXQgYmVyZGFzYXJrYW4gRkFRLiAiRkFRIFBlbnVoIiB0ZXJtYXN1ayB0ZWtzLCBsYW1waXJhbiBkYW4gaW1laiBzZWJhcmlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcGFyYW1ldGVyIHVudHVrIGJhY2tlbmQgcGFwYW4gcGVtdWthLiAiSGFkIiBtZW50YWtyaWZrYW4gYmlsYW5nYW4gcGVueWVydGFhbiBkaXBhcGFya2FuIHNlY2FyYSBsYWxhaS4gIkt1bXB1bGFuIiBkaWd1bmFrYW4gdW50dWsgbWVueWVrYXQgYWtzZXMga2VwYWRhIHBsdWdpbiAoY29udG9oOiBLdW1wdWxhbjogYWRtaW47IGdyb3VwMSA7IGdyb3VwMiA7KS4gIkRlZmF1bHQiIG1lbnVuanVra2FuIGppa2EgcGx1Z2luIGluaSBkaWFrdGlma2FuIHNlY2FyYSBsYWxhaSBhdGF1IGppa2EgcGVuZ2d1bmEgcGVybHUgdW50dWsgbWVtYm9sZWhrYW4gc2VjYXJhIG1hbnVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGxhanVyIG1lbnVuanVra2FuIGRpIEV4cGxvcmVyIEZBUS4gUGlsaWhhbiBpbmkgdGlkYWsgbWVtcHVueWFpIGtlc2FuIGtlIGF0YXMga2VkdWR1a2FuIHRpYW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBydWFuZ2FuIHlhbmcgZGl0dW5qdWtrYW4gZGFsYW0ganVybmFsIEZBUS4gUGlsaWhhbiBpbmkgdGlkYWsgbWVtcHVueWFpIGtlc2FuIGtlIGF0YXMga2VkdWR1a2FuIHRpYW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHJ1YW5nYW4geWFuZyBkaXR1bmp1a2thbiBkYWxhbSBjYXJpYW4gRkFRLiBQaWxpaGFuIGluaSB0aWRhayBtZW1wdW55YWkga2VzYW4ga2UgYXRhcyBrZWR1ZHVrYW4gdGlhbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnTWVudGFrcmlma2FuIGRpIG1hbmEgcGF1dGFuIFwnSW5zZXJ0IEZBUVwnIGFrYW4gZGlwYXBhcmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pc2kgaXRlbSBGQVEgcGVyY3VtYSBiaWRhbmcgdGVrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnUGFkYW0gRkFRIGluaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0F1ZGl0IEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ0FrdGlma2FuIHBlbGJhZ2FpIGJhaGFzYSBwYWRhIG1vZHVsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWt0aWZrYW4gdW5kaWFuIG1la2FuaXNtYSBwYWRhIG1vZHVsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdQZW5lcm9rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdQZW5ndWxhcyBBSkFYIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ1JpY2h0ZXh0IHVudHVrIEFKQVggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnQmFoYWdpYW4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ0JhaGFnaWFuIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdCdWFuZyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnU3VudGluZyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdKdXJuYWwgRkFRIGxpaGF0IHNlbXVsYSAiS2VjaWwiIGhhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpaGF0IHNlbXVsYSBGQVEgaGFkICJrZWNpbCInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0NldGFrYW4gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnQ2FyaWFuIFNvYWxhbiBMYXppbSBiYWNrZW5kIHJvdXRlciBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ01lZGFuNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdNZWRhbjUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVEgcGVudWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnS3VtcHVsYW4gYmFnaSBrZWx1bHVzYW4gYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdTZWphcmFoIEZBUSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ1Rlcm1hc3VrIGJpZGFuZyBkYWxhbWFuIFRpa2V0IGJlcmFzYXNrYW4gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ1Rlcm1hc3VrIG5hbWEgc2V0aWFwIGJpZGFuZyBkYWxhbSBUaWtldCBiZXJhc2Fza2FuIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdBbnRhcmEgbXVrYSBkaSBtYW5hIGNhcmlhbiBjZXBhdCBoZW5kYWtsYWggZGl0dW5qdWtrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICdKdXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gQmFoYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0ZBUSBwYXV0YW4gaW5pIGtlcGFkYSBvYmplayBsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NlbmFyYWkgamVuaXMga2VhZGFhbiB5YW5nIGJvbGVoIGRpZ3VuYWthbiBkYWxhbSBydWFuZyBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZW5hcmFpIGplbmlzIGtlYWRhYW4geWFuZyBib2xlaCBkaWd1bmFrYW4gZGFsYW0gcnVhbmcgYW50YXJhIG11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2VuYXJhaSBqZW5pcyBrZWFkYWFuIHlhbmcgYm9sZWggZGlndW5ha2FuIGRhbGFtIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gbWFrc2ltdW0gYXJ0aWtlbCBGQVEgYWthbiBkaXBhcGFya2FuIGRhbGFtIGhhc2lsIEZBUSBFeHBsb3JlciBtdWthIGVqZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gbWFrc2ltdW0gYXJ0aWtlbCBGQVEgYWthbiBkaXBhcGFya2FuIGRhbGFtIGhhc2lsIEZBUSBFeHBsb3JlciBtdWthIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gbWFrc2ltdW0gYXJ0aWtlbCBGQVEgeWFuZyBha2FuIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgRkFRIEV4cGxvcmVyIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBGQVEgYXJ0aWtlbCB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIGp1cm5hbCBGQVEgZGkgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIG1ha3NpbXVtIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0gaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gbWFrc2ltdW0gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBkYWxhbSBoYXNpbCBjYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBtYWtzaW11bSBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIGRhbGFtIGhhc2lsIGNhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhaXogbWFrc2ltdW0gdGFqdWsgZGFsYW0gYXJ0aWtlbCBGQVEgdW50dWsgZGl0dW5qdWtrYW4gZGFsYW0gRkFRIEV4cGxvcmVyIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FpeiBtYWtzaW11bSB0YWp1ayBkYWxhbSBhcnRpa2VsIEZBUSB1bnR1ayBkaXR1bmp1a2thbiBkYWxhbSBGQVEgRXhwbG9yZXIgZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhaXogbWFrc2ltdW0gdGFqdWsgZGFsYW0gYXJ0aWtlbCBGQVEgdW50dWsgZGl0dW5qdWtrYW4gZGFsYW0gRkFRIEV4cGxvcmVyIGRhbGFtIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhaXogbWFrc2ltdW0gdGFqdWsgZGFsYW0gYXJ0aWtlbCBGQVEgdW50dWsgZGl0dW5qdWtrYW4gZGkgRkFRIENhcmlhbiBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTYWl6IG1ha3NpbXVtIHRhanVrIGRhbGFtIGFydGlrZWwgRkFRIHVudHVrIGRpdHVuanVra2FuIGRpIEZBUSBDYXJpYW4gZGFsYW0gYW50YXJhIG11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FpeiBtYWtzaW11bSB0YWp1ayBkYWxhbSBhcnRpa2VsIEZBUSB1bnR1ayBkaXR1bmp1a2thbiBkaSBGQVEgQ2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTYWl6IG1ha3NpbXVtIHRhanVrIGRhbGFtIGFydGlrZWwgRkFRIHVudHVrIGRpdHVuanVra2FuIGRhbGFtIGp1cm5hbCBGQVEgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgdW50dWsgbWVuamFuYSBwcm9maWwgSFRNTCBPcGVuU2VhcmNoIHVudHVrIGNhcmlhbiBGQVEgcGVuZGVrIGRhbGFtIGFudGFyYSBtdWthIGF3YW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnQXJ0aWtlbCBiYXJ1IEZBUSBwZXJsdSBrZWx1bHVzYW4gc2ViZWx1bSBtZXJla2EgbWVuZGFwYXQgZGl0ZXJiaXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JpbGFuZ2FuIGFydGlrZWwgRkFRIHVudHVrIGRpcGFwYXJrYW4gZGFsYW0gRXhwbG9yZXIgRkFRIGFudGFyYSBtdWthIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgdW50dWsgZGlwYXBhcmthbiBkYWxhbSBFeHBsb3JlciBGQVEgYW50YXJhIG11a2EgYXdhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWxhbmdhbiBhcnRpa2VsIEZBUSB1bnR1ayBkaXBhcGFya2FuIHBhZGEgc2V0aWFwIGhhbGFtYW4gaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlsYW5nYW4gYXJ0aWtlbCBGQVEgYWthbiBkaXBhcGFya2FuIHBhZGEgc2V0aWFwIGhhbGFtYW4gaGFzaWwgY2FyaWFuIGRhbGFtIGFudGFyYSBtdWthIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnQmlsYW5nYW4gaXRlbSB5YW5nIGRpdHVuanVra2FuIGRhbGFtIHBlcnViYWhhbiB0ZXJha2hpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdCaWxhbmdhbiBpdGVtIHlhbmcgZGl0dW5qdWtrYW4gZGFsYW0gdGVyYWtoaXIgZGljaXB0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdCaWxhbmdhbiBpdGVtIHlhbmcgZGl0dW5qdWtrYW4gZGFsYW0gMTAgdGVyYXRhcyBjaXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgbXVrYSBzdXJhdCAoZGkgbWFuYSBpdGVtIEZBUSBkaXR1bmp1a2thbikgZ2FtYmFyYW4ga2VjaWwganVybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtdWthIHN1cmF0IChkaSBtYW5hIGl0ZW0gRkFRIGRpdHVuanVra2FuKSBnYW1iYXJhbiBrZXNlbHVydWhhbiBGQVEga2VjaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnQ2V0YWsgaGFsYW1hbiBGQVEgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnY2V0YWthbiBGQVEgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnenVtIEZBUSB1bXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ2NhcmlhbiBGQVEgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ0ZBUSBVbXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0JlcmF0dXIgdW50dWsga2VsdWx1c2FuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ0thZGFyIHVudHVrIG1lbmd1bmRpLiBLdW5jaSBtZXN0aWxhaCBkYWxhbSBwZXJhdHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnQ2FyaWFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ01lbmV0YXBrYW4ga2V0aW5nZ2lhbiBsYWxhaSAoZGFsYW0gcGlrc2VsKSBiaWRhbmcgSFRNTCBzZWJhcmlzIGRhbGFtIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdNZW5ldGFwa2FuIGtldGluZ2dpYW4gbGFsYWkgKGRhbGFtIHBpa3NlbCkgYmlkYW5nIEhUTUwgc2ViYXJpcyBkYWxhbSBDdXN0b21lckZBUVpvb20gKGRhbiBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnTWVuZXRhcGthbiBrZXRpbmdnaWFuIG1ha3NpbXVtIChkYWxhbSBwaWtzZWwpIGJpZGFuZyBIVE1MIHNlYmFyaXMgZGFsYW0gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ01lbmV0YXBrYW4ga2V0aW5nZ2lhbiBtYWtzaW11bSAoZGFsYW0gcGlrc2VsKSBiaWRhbmcgSFRNTCBzZWJhcmlzIGRhbGFtIEN1c3RvbWVyRkFRWm9vbSAoZGFuIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1R1bmp1a2thbiAiU2lzaXBhbiBGQVEgTGluayIgQnV0YW5nIGRpIEFnZW50RkFRWm9vbVNtYWxsIHVudHVrIGF3YW0gRkFRIEFydGlrZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ1R1bmp1a2thbiBidXRhbmcgIlNpc2lwYW4gRkFRIExpbmsgJiBUZWtzIi8gIlNpc2lwYW4gcGVudWggRkFRIiBkaSBBZ2VudEZBUVpvb21TbWFsbCB1bnR1ayBhd2FtIEZBUSBBcnRpa2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnVHVuanVra2FuIGJ1dGFuZyAiU2lzaXBhbiBUZWtzIEZBUSIgLyAiU2lzaXBhbiBQZW51aCBGQVEiIGRpIEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdQYXBhciBGQVEgUGVya2FyYSBkZW5nYW4gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnUGFwYXIgRkFRIGphbGFuIHlhIC8gdGlkYWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHVuanVra2FuIGl0ZW0taXRlbSB0aWRhayBzYWhpaCBkYWxhbSBrZXB1dHVzYW4gUGVuZXJva2EgRkFRIGJhZ2kgYW50YXJhbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnUGFwYXIgaXRlbSBzdWJrYXRlZ29yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTWVudW5qdWtrYW4gaXRlbSBwZXJ1YmFoYW4gdGVyYWtoaXIgZGFsYW0gYW50YXJhIG11a2EgeWFuZyBkaXRha3JpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1R1bmp1a2thbiBha2hpciBtZW5jaXB0YSBpdGVtIGRhbGFtIGFudGFyYSBtdWthIHlhbmcgZGl0YWtyaWZrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdQYXBhciB0b3AgMTAgaXRlbSBkYWxhbSBhbnRhcmEgbXVrYSB5YW5nIGRpdGFrcmlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnUGFwYXIgbWVuZ3VuZGkgZGFsYW0gYW50YXJhIG11a2EgeWFuZyBkaXRha3JpZmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB5YW5nIG1lbWJvbGVoa2FuIG1lbmdodWJ1bmdrYW4gRkFRIGRlbmdhbiBvYmplayBsYWluIGRhbGFtIHBhbmRhbmdhbiB6b29tIEZBUSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRpIGJhciBtZW51IGRhbGFtIHBhbmRhbmdhbiBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4geWFuZyBtZW1ib2xlaGthbiB1bnR1ayBtZW1hZGFtIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkaSBiYXIgbWVudSBkYWxhbSBwYW5kYW5nYW4gZGl6dW0gZGFsYW0gZWplbiB1bnR1ayBtZWxpaGF0IHNlamFyYWggYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGkgYmFyIG1lbnUgZGFsYW0gcGFuZGFuZ2FuIGRpenVtIGRhbGFtIGFudGFyYSBtdWthIHBlbGFuZ2dhbiB5YW5nIG1lbWJvbGVoa2FuIHVudHVrIG1lbmdlZGl0IGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRpIGJhciBtZW51IGRhbGFtIHBhbmRhbmdhbiBkaXp1bSBkYWxhbSBhbnRhcmEgbXVrYSBwZWxhbmdnYW4geWFuZyBtZW1ib2xlaGthbiB1bnR1ayBrZW1iYWxpIGtlIGhhbGFtYW4gc2ViZWx1bW55YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGkgYmFyIG1lbnUgZGFsYW0gcGFuZGFuZ2FuIGRpenVtIGRhbGFtIGFudGFyYSBtdWthIGVqZW4sIHlhbmcgbWVtYm9sZWhrYW4gdW50dWsgbWVuY2V0YWsgYXJ0aWtlbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnUGVueWVsZXNhaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTaW1wdG9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ2hhbnlhIHRla3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ1BlbmdlY2FtIHVudHVrIGl0ZW0gRkFRLCBzZXBlcnRpIEZBUSAjLCAjIEtCLCBNeUZBUSAjLiBOaWxhaSBsYWxhaSBhZGFsYWggIyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1RldGFwYW4gaW5pIG1lbnRha3JpZmthbiBiYWhhd2Egb2JqZWsgXCdGQVFcJyBib2xlaCBkaXBhdXQgZGVuZ2FuIG9iamVrIFwnRkFRXCcgbGFpbiBtZW5nZ3VuYWthbiBqZW5pcyBwYXV0YW4gXCdOb3JtYWxcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gYmFoYXdhIG9iamVrIFwnRkFRXCcgYm9sZWggZGlwYXV0IGRlbmdhbiBvYmplayBcJ0ZBUVwnIGxhaW4gbWVuZ2d1bmFrYW4gamVuaXMgcGF1dGFuIFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGJhaGF3YSBcJyBGQVFcJyBvYmplayBkZW5nYW4gamVuaXMgcGF1dGFuIFwnYmlhc2FcJyBsYWluIFwnVGlrZXRcJyBib2xlaCBkaWthaXRrYW4gZGVuZ2FuIG9iamVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ1RldGFwYW4gaW5pIG1lbnRha3JpZmthbiBiYWhhd2Egb2JqZWsgXCdGQVFcJyBib2xlaCBkaXBhdXQgZGVuZ2FuIFwnVGlrZXRcJyBsYWluIG1lbmdndW5ha2FuIGplbmlzIHBhdXRhbiBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdCYWRhbiB0aWtldCB1bnR1ayBtZWxlcGFza2FuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnVGVydGFrbHVrIGtlcGFkYSB0aWtldCB1bnR1ayBtZWxlcGFza2FuIGFydGlrZWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnSXRlbSBUb29sYmFyIHVudHVrIGphbGFuIHBpbnRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2x1YXJhbiAocGVsYW5nZ2FuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnZGFsYW1hbiAoZWplbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnVW11bSAoU2VtdWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ2F3YW0gKGF3YW0pJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdMZWdnIHRpbCBPU1MtYXJ0aWtrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdOw7hra2Vsb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2F0ZWdvcmkgZXIgb2JsaWdhdG9yaXNrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0dvZGtqZW5uaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3Jpb3Bwc2V0dCBmb3IgT1NTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnTGVnZyB0aWwga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnTGVnZyB0aWwga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VuZHJlIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnVW5kZXJrYXRlZ29yaSBhdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnU2Frc2JlaGFuZGxlcmdydXBwZXIgc29tIGhhciB0aWxnYW5nIHRpbCBhcnRpa2xlciBpIGRlbm5lIGthdGVnb3JpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ1ZpbCB2aXNlcyBzb20ga29tbWVudGFyIGkgdXRmb3Jza2VyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBzbGV0dGUgZGVubmUga2F0ZWdvcmllbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdEdSBrYW4gaWtrZSBzbGV0dGUgZGVubmUga2F0ZWdvcmllbiwgZm9yZGkgZGVuIGVyIGJydWt0IGkgbWluc3QgZW4gT1NTLWFydGlra2VsIG9nL2VsbGVyIGZvcmVsZHJlIHRpbCBtaW5zdCBlbiBhbm5lbiBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgYnJ1a3QgaSBmw7hsZ2VuZGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0Rlbm5lIGthdGVnb3JpZW4gZXIgZm9yZWxkcmUgdGlsIGbDuGxnZW5kZSB1bmRlcmthdGVnb3JpZXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZW5uZSBhcnRpa2tlbGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdPU1MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ1V0Zm9yc2tlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdIdXJ0aWdzw7hrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnQXZhbnNlcnQgc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ09mdGUgU3RpbHRlIFNww7hyc23DpWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdJbmdlbiB1bmRlcmthdGVnb3JpZXIgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdIaXN0b3Jpa2sgZm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0hpc3Rvcmlrayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnT3BwcmV0dGV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdTcHLDpWtvcHBzZXR0IGZvciBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnTGVnZyB0aWwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0xlZ2cgdGlsIHNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnRW5kcmUgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdWaWwgZHUgdmlya2VsaWcgZmplcm5lIGRldHRlIHNwcsOla2V0Pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdEdSBrYW4gaWtrZSBzbGV0dGUgZGV0dGUgc3Byw6VrZXQuIERldCBlciBicnVrdCBpIG1pbnN0IGVuIE9TUyBhcnRpa2tlbCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdLb250ZWtzdHZhbGcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnT1NTIGFydGlrbGVyIHBlciBzaWRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0luZ2VuIGFydGlrbGVyIGZ1bm5ldCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnYXYgNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdOw7hra2Vsb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnR29ka2plbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnU2lzdCBlbmRyZXQgYXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdPcHByZXR0ZWxzZXN0aWRzcHVua3QgZm9yIE9TUyBhcnRpa2tlbGVuIChmw7hyL2V0dGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdPcHByZXR0ZWxzZXN0aWRzcHVua3QgZm9yIE9TUyBhcnRpa2tlbGVuIChtZWxsb20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdPU1Mtc8O4ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1Byb2ZpbHZhbGcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ1N0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ0luZ2VuIHN0ZW1tZWlubnN0aWxsaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdTcGVzaWZpa2sgbm90aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdSYW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ0luZ2VuIHJhbmdlcmluZ3Npbm5zdGlsbGluZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mbyBvbSBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnUmF0aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnU3RlbW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdJbmdlbiBzdGVtbWVyIGZ1bm5ldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0luZ2VuIHN0ZW1tZXIgYXZnaXR0ISBCbGkgZGVuIGbDuHJzdGUgdGlsIMOlIHN0ZW1tZSBww6UgZGVubmUgYXJ0aWtrZWxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ0xhc3QgbmVkIHZlZGxlZ2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICdWYXIgZGVubmUgYXJ0aWtrZWxlbiB0aWwgaGplbHA/IFbDpnIgc25pbGwgb2cgZ2kgb3NzIGRpbiBzdGVtbWUsIHNsaWsgYXQgdmkga2FuIGZvcmJlZHJlIGRhdGFiYXNlbi4gVHVzZW4gdGFrayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdpa2tlIHRpbCBoamVscCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2ZWxkaWcgbnl0dGlnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnU2V0dCBpbm4gT1NTLXRla3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdTZXR0IGlubiBPU1MtbGVua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ1NldHQgaW5uIE9TUy10ZWtzdCBvZyAtbGVua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ0luZ2VuIE9TUy1hcnRpa2xlciBibGUgZnVubmV0JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnRnVsbHRla3N0c8O4ayBpIE9TUy1hcnRpa2xlciAoZi5la3MuICJPbCoiIGVsbGVyICJBbmRyZWFzKm4iJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdCYXJlIE9TUyBhcnRpa2xlciBtZWQgc3RlbW1lci4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdCYXJlIE9TUyBhcnRpa2xlciBtZWQgcmFuZ2VyaW5nZXIuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdUaWRzYmVncmVuc25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnQXJ0aWtrZWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTw7hrIGV0dGVyIGFydGlrbGVyIG1lZCBuw7hra2Vsb3JkJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ09mZmVudGxpZyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnVGlsYmFrZSB0aWwgT1NTIHV0Zm9yc2tlcmVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnRW4ga2F0ZWdvcmkgbcOlIGhhIGV0IG5hdm4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdEZW5uZSBrYXRlZ29yaWVuIGVrc2lzdGVyZXIgYWxsZXJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ09TUy1rYXRlZ29yaSBvcHBkYXRlcnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdPU1Mta2F0ZWdvcmkgbGFndCB0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnU2xldHQga2F0ZWdvcmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ09TUy1oaXN0b3Jpa2snOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdPU1Mtam91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICdOYXZuIGVyIHDDpWtyZXZkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0RldHRlIHNwcsOla2V0IGZpbm5lcyBhbGxlcmVkZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ09TUy1zcHLDpWsgb3BwZGF0ZXJ0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnT1NTLXNwcsOlayBsYWd0IHRpbCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnU2xldHQgc3Byw6VrICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ1Npc3Qgb3BwZGF0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdJbmdlbiByZXN1bHRhdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdPU1MtbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ1Npc3QgZW5kcmV0IGF2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdUYWtrIGZvciBkaW4gc3RlbW1lISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0R1IGhhciBhbGxlcmVkZSBzdGVtdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ0luZ2VuIHJhdGluZyB2YWxndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnVXRza3JpZnQgYXYgT1NTLWFydGlra2VsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnT1NTLWFydGlrbGVyIChueWxpZyBvcHByZXR0ZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdPU1MtYXJ0aWtsZXIgKG55bGlnIGVuZHJldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnT1NTLWFydGlrbGVyIChUb3BwIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdEZW5uZSBhcnRpa2tlbGVuIGVyIHRvbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnU2lzdCBvcHByZXR0ZWRlIE9TUy1hcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTaXN0IG9wcGRhdGVydGUgT1NTLWFydGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3BwIDEwIE9TUyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2Vrc3Rlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnb2ZmZW50bGlnJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTLWZhcmdlIGZvciBhdnN0ZW1uaW5nc3Jlc3VsdGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0thdGVnb3Jpb3Bwc2V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdBbnRhbGwgZGVzaW1hbGVyIGZvciBhdnN0ZW1uaW5nc3Jlc3VsdGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdGb3J2YWxndCBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdTdGFuZGFyZCBwcmlvcml0ZXQgZm9yIHNha2VyIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdTdGFuZGFyZCBzdGF0dXMgZm9yIGV0IE9TUy1vYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGFuZGFyZCBzdGF0dXMgZm9yIHNha2VyIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pc2pvbiBhdiBmcml0ZWtzdGZlbHQgZm9yIE9TUy1hcnRpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdTbGV0dCBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFbmRyZSBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnVXRmb3Jzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnRmVsdCA0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ0ZlbHQgNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwcGUgc29tIHNrYWwgZ29ka2plbm5lIE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3RvcmlrayBvdmVyIGRlbm5lIGFydGlra2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm91cm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnU3Byw6Vrb3Bwc2V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdMZW5rIG9wcCBldCBhbm5ldCBvYmpla3QgdGlsIGRlbm5lIGFydGlra2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTnllIGFydGlrbGVyIHRyZW5nZXIgZ29ka2plbm5pbmcgZsO4ciBkZSBrYW4gcHVibGlzZXJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdBbnRhbGwgb2JqZWt0ZXIgdmlzdCBpIHNpc3RlIGVuZHJpbmdlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY3JlYXRlZC4nfSA9ICdBbnRhbGwgdmlzdGUgb2JqZWt0ZXIgdW5kZXIgc2lzdCBvcHByZXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnQW50YWxsIHZpc3RlIGFydGlrbGVyIGkgIlRvcHAgMTAiLWZ1bmtzam9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdTa3JpdiB1dCBkZW5uZSBhcnRpa2tlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0vDuCBmb3IgZ29ka2plbm5pbmcgYXYgT1NTLWFydGlrbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ1JhdGVyIGZvciBhdnN0ZW1taW5nLiBOw7hra2VsIG3DpSB2w6ZyZSBpIHByb3NlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1PDuGsgaSBPU1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1ZpcyBIVE1MIGkgT1NTLWFydGlra2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdWaXMgT1NTLXN0aSAoamEvbmVpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnVmlzIGlubmhvbGQgaSB1bmRlcmthdGVnb3JpZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ZpcyBzaXN0IGVuZHJlZGUgYXJ0aWtsZXIgaSBkZWZpbmVydGUgZ3JlbnNlc25pdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdWaXMgc2lzdCBvcHByZXR0ZWRlIGFydGlrbGVyIGkgZGVmaW5lcnRlIGdyZW5zZXNuaXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdWaXMgIlRvcHAgMTAiIGkgZGVmaW5lcnRlIGdyZW5zZXNuaXR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVmlzIGF2c3RlbW1pbmcgaSBkZWZpbmVydGUgZ3JlbnNlbnNuaXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ0zDuHNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTeW1wdG9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvciBmb3IgZW4gT1NTLWFydGlra2VsLCBmLmVrcy4gRkFRIywgS0IjLCBPU1MjLCBNaW5PU1MjLiBTdGFuZGFyZCBlciBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdEZW5uZSBpbm5zdGlsbGluZ2VuIGRlZmluZXJlciBhdCBlbiBPU1MtYXJ0aWtrZWwga2FuIGxlbmtlcyB0aWwgYW5kcmUgT1NTLWFydGlrbGVyIG1lZCAiTm9ybWFsIiBsZW5rZXR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVubmUgaW5uc3RpbGxpbmdlbiBkZWZpbmVyZXIgYXQgZW4gT1NTLWFydGlra2VsIGthbiBsZW5rZXMgdGlsIGFuZHJlIE9TUy1hcnRpa2xlciBtZWQgIkZvcmVsZHJlL0Jhcm4iLWxlbmtldHlwZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVubmUgaW5uc3RpbGxpbmdlbiBkZWZpbmVyZXIgYXQgZW4gT1NTLWFydGlra2VsIGthbiBsZW5rZXMgdGlsIGFuZHJlIHNha2VyIG1lZCAiTm9ybWFsIiBsZW5rZXR5cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRGVubmUgaW5uc3RpbGxpbmdlbiBkZWZpbmVyZXIgYXQgZW4gT1NTLWFydGlra2VsIGthbiBsZW5rZXMgdGlsIGFuZHJlIHNha2VyIG1lZCAiRm9yZWxkcmUvQmFybiItbGVua2V0eXBlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnU2Frc2lubmhvbGQgZm9yIGdvZGtqZW5uaW5nIGF2IE9TUy1hcnRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ1Nha3NlbW5lIGZvciBnb2RramVubmluZyBhdiBPU1MtYXJ0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2t1biB0aWwga3VuZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdrdW4gaW50ZXJudCAoYWdlbnRlciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnb2ZmZW50bGlnIChhbGxlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBcnRpa2VsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1RyZWZ3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnS2llcyBlZW4gY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ0dvZWRrZXVyaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUSBjYXRlZ29yaWViZWhlZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yaWUgdG9ldm9lZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0NhdGVnb3JpZSB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0NhdGVnb3JpZSBiZXdlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3JpZSB2YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdTZWxlY3RlZXIgdGVubWluc3RlIMOpw6luIHBlcm1pc3NpZWdyb2VwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR2VicnVpa2VycyBtZXQgcmVjaHRlbiBvcCBhcnRpa2VsZW4gaW4gZGV6ZSBjYXRlZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdXb3JkdCBpbiB3ZWJpbnRlcmZhY2UgZ2V0b29uZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ1dpbHQgdSBkZXplIGNhdGVnb3JpZSB2ZXJ3aWpkZXJlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdVIGt1bnQgZGV6ZSBjYXRlZ29yaWUgbmlldCB2ZXJ3aWpkZXJlbi4gSGlqIHdvcmR0IGdlYnJ1aWt0IGluIGVlbiBvZiBtZWVyIGFydGlrZWxlbiBlbi9vZiBoZWVmdCBvbmRlcmxpZ2dlbmRlIGNhdGVnb3Jpw6tuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ0RlemUgY2F0ZWdvcmllIHdvcmR0IGdlYnJ1aWt0IGRvb3IgZGUgdm9sZ2VuZGUgYXJ0aWtlbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0RlemUgY2F0ZWdvcmllIGhlZWZ0IGRlIHZvbGdlbmRlIHN1YmNhdGVnb3Jpw6tuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1dpbHQgdSBkaXQgYXJ0aWtlbCB2ZXJ3aWpkZXJlbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEgdmVya2VubmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1pvZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnV2lsZGNhcmRzIHppam4gdG9lZ2VzdGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnVWl0Z2VicmVpZCB6b2VrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ1N1YmNhdGVnb3Jpw6tuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ0dlZW4gc3ViY2F0ZWdvcmnDq24gZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICdHZXNjaGllZGVuaXMgdmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0luaG91ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQWFuZ2VtYWFrdCBvcCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdHZWVuIGRhdGEgZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdUYWFsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdUYWFsIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAnVGFhbCBiZXdlcmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnV2lsdCB1IGRlemUgdGFhbCB2ZXJ3aWpkZXJlbj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnVSBrdW50IGRlemUgdGFhbCBuaWV0IHZlcndpamRlcmVuLCBoaWogd29yZHQgZ2VicnVpa3QgZG9vciBlZW4gb2YgbWVlciBhcnRpa2VsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRGV6ZSB0YWFsIGlzIGdlYnJ1aWt0IHZvb3IgZGUgdm9sZ2VuZGUgYXJ0aWtlbGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQ29udGV4dCBJbnN0ZWxsaW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQWFudGFsIGFydGlrZWxlbiBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0dlZW4gRkFRIGRhdGEgZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICd2YW4gNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdUcmVmd29vcmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnU3RlbSAoYmlqdi4gZ2VsaWprIGFhbiAxMCBvZiBncm90ZXIgZGFuIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdWZXJob3VkaW5nICh2YjogR2VsaWprIGFhbiAyNSUgb2YgR3JvdGVyIGRhbiA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnQWFuZ2Vub21lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYWF0c3QgZ2V3aWp6aWdkIGRvb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAodm9vci9uYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKHR1c3NlbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAodm9vci9uYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKHR1c3NlbiknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnWm9la2VuIGluIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSB6b2VrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdQcm9maWVsIHNlbGVjdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdTdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdHZWVuIGluc3RlbGxpbmdlbiBvbSB0ZSBzdGVtbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnU3BlY2lmaWVrZSBzdGVtbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ3ZiOiBHZWxpamsgYWFuIDEwIG9mIEdyb3RlciBEYW4gNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ0Jlb29yZGVsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdHZWVuIGJlb29yZGVsaW5nIGluc3RlbGxpbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnU3BlY2lmaWVrZSBiZW9vcmRlbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2JpanYuIGdlbGlqayAyNSUgb2YgZ3JvdGVyIGRhbiA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICdGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnQmVvb3JkZWxpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdTdGVtbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0dlZW4gc3RlbW1lbiBnZXZvbmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnR2VlbiBzdGVtbWVuIGdldm9uZGVuLiBXZWVzIGRlIGVlcnN0ZSBvbSBkaXQgYXJ0aWtlbCB0ZSBiZW9vcmRlbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnU2xhIGJpamxhZ2Ugb3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdPbSBkZSBsaW5rcyBpbiBkZSBvbXNjaHJpanZpbmdlbiB0ZSBvcGVuZW4gaXMgaGV0IG1vZ2VsaWprIGRhdCB1IEN0cmwgb2YgQ21kIG9mIFNoaWZ0IG1vZXQgaW5kcnVra2VuIHRlcndpamwgdSBvcCBkZSBsaW5rIGtsaWt0IChhZmhhbmtlbGlqayB2YW4gdXcgYnJvd3NlciBlbiBiZXN0dXJpbmdzc3lzdGVlbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnSGllbHAgZGl0IGFydGlrZWwgYmlqIGhldCBiZWFudHdvb3JkZW4gdmFuIHV3IHZyYWFnPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ2hlbGVtYWFsIG5pZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAnaGVlbCBlcmcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0ZBUSB0aXRlbCB0b2V2b2VnZW4gYWFuIG9uZGVyd2VycCB2YW4gaGV0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnVm9lZyBGQVEgdGVrc3QgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnVm9sbGVkaWdlIEZBUSBpbnZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdWb2VnIGxpbmsgbmFhciBGQVEgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ1ZvZWcgRkFRIHRla3N0IGVuIGxpbmsgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ1ZvbGxlZGlnZSBGQVEgJiBMaW5rIGludm9lZ2VuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnR2VlbiBhcnRpa2VsZW4gZ2V2b25kZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnWm9la2VuIGluIHRla3N0IHZhbiBhcnRpa2VsZW4gKGJpanYuICJKYW5zKmVuIiBvZiAiUHJpbnQqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdTdGVtbWluZ3NiZXBlcmtpbmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnQWxsZWVuIEZBUSBhcnRpa2VsZW4gd2Fhcm9wIGdlc3RlbWQgd2VyZC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ0JlcGVya2luZ2VuIHZhbiBiZW9vcmRlbGluZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0FsbGVlbiBGQVEgYXJ0aWtlbGVuIG1ldCBlZW4gYmVvb3JkZWxpbmcgLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnVGlqZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnQWxsZWVuIEZBUSBhcnRpa2VscyBkaWUgYWFuZ2VtYWFrdCB3ZXJkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnQWxsZWVuIEZBUSBhcnRpa2VsIGRpZSBhYW5nZW1hYWt0IHdlcmRlbiB0dXNzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAnWm9lay1Qcm9maWVsIGFscyB0ZW1wbGF0ZT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdBcnRpa2VsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnWm9layBvcCBhcnRpa2VsZW4gbWV0IHRyZWZ3b29yZCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdPcGVuYmFhcic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnVGVydWcgbmFhciBkZSBGQVEgVmVya2VubmVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnR2VlZiBlZW4gbmFhbSBvcCB2b29yIGRlIGNhdGVnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ0RlemUgY2F0ZWdvcmllIGJlc3RhYXQgYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUSBjYXRlZ29yaWUgYmlqZ2V3ZXJrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUSBjYXRlZ29yaWUgdG9lZ2V2b2VnZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIHZlcndpamRlcmVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdGQVEgam91cm5hYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnRGUgbmFhbSBpcyB2ZXJwbGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGV6ZSB0YWFsIGJlc3RhYXQgYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdUYWFsIGJpamdld2Vya3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ1RhYWwgdG9lZ2V2b2VnZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnVGFhbCB2ZXJ3aWpkZXJlbiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnUmVzdWx0YWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnTGFhdHN0ZSB1cGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnRkFRIER5bmFtaXNjaGUgdmVsZGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0dlZW4gcmVzdWx0YWF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnRkFRIG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0JlZGFua3Qgdm9vciB1dyBzdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ1UgaGVlZnQgYWwgZ2VzdGVtZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdHZWVuIHdhYXJkZXJpbmcgZ2VzZWxlY3RlZXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnQXJ0aWtlbCBhZmRydWtrZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpa2VsZW4gKG5pZXV3IGFhbmdlbWFha3QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpa2VsZW4gKGxhYXRzdCBnZXdpanppZ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydGlrZWxlbiAodG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdEaXQgaXRlbSBoZWVmdCBnZWVuIHdhYXJkZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnTGFhdHN0IGFhbmdlbWFha3RlIGFydGlrZWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdMYWF0c3QgZ2V3aWp6aWdkZSBhcnRpa2VsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1BvcHVsYWlyc3RlIGFydGlrZWxlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2V4dGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJsaWVrJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ1NTIGtsZXVyIHZvb3IgZGUgc3RlbW1pbmdzdWl0c2xhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnQmVoZWVyIGNhdGVnb3Jpw6tuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnU3RhbmRhYXJkIGNhdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdTdGFuZGFhcmQgcHJpb3JpdGVpdCB2YW4gdGlja2V0cyB2b29yIGdvZWRrZXVyaW5nIHZhbiBGQVEgYXJ0aWtlbHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdTdGFuZGFhcmQgc3RhdHVzIHZvb3IgRkFRIGFydGlrZWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdTdGFuZGFhcmQgc3RhdHVzIHZhbiBoZXQgdGlja2V0IHZvb3IgaGV0IGdvZWRrZXVyZW4gdmFuIEZBUSBhcnRpa2Vscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnVmVyd2lqZGVyIGRpdCBhcnRpa2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdCZXdlcmsgZGl0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdPdmVyemljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ1ZlbGQ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ1ZlbGQ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dyb2VwIHZvb3IgZGUgZ29lZGtldXJpbmcgdmFuIEZBUSBpdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnR2VzY2hpZWRlbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0xvZ2JvZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB0YWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdLb3BwZWwgZWVuIGFuZGVyIG9iamVjdCBhYW4gZGl0IGFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnQXJ0aWtlbCBhZmRydWtrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1pvZWtlbiBpbiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1Rvb24gRkFRIGl0ZW0gbWV0IEhUTUwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnVG9vbiBGQVEgcGFkIGphL25lZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnVG9vbiBpdGVtcyB2YW4gc3ViY2F0ZWdvcmnDq24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnVG9vbiBzdGVtLWZlYXR1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnT3Bsb3NzaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTeW1wdG9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm4gKGtsYW50ZW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm4gKGdlYnJ1aWtlcnMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3B1YmxpZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdEb2RhaiBhcnR5a3XFgiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdzxYJvd2Ega2x1Y3pvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWEgamVzdCB3eW1hZ2FuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdaYXR3aWVyZHplbmllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ1phcnrEhWR6YW5pZSBrYXRlZ29yaWFtaSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0RvZGFqIGthdGVnb3JpxJnCoEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ0VkeXR1aiBrYXRlZ29yacSZIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdEb2RhaiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ0RvZGFqIGthdGVnb3JpxJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0VkeXR1aiBrYXRlZ29yacSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnUG9ka2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnWmF6bmFjeiBwcnp5bmFqbW5pZWogamVkbsSFIGdydXDEmSB1cHJhd25pZcWELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cHkgYWduZXTDs3csIGt0w7NyZSBtYWrEhSBkb3N0xJlwIGRvIHRlaiBrYXRlZ29yaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdab3N0YW5pZSBwb2themFueSBqYWtvIGtvbWVudGFyeiB3IGVrc3Bsb3JlcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0xJkga2F0ZWdvcmnEmT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdOaWUgbW/FvGVzeiB1c3VuxIXEhyB0ZWoga2F0ZWdvcmlpLiBKZXN0IG9uYSB1xbx5d2FuYSBwcnpleiBwcnp5bmFqbW5pZWogamVkZW4gYXJ0eWt1xYIgRkFRIGx1Yi9pIGplc3Qgcm9kemljZW0gcHJ6bmFqbW5pZWogamVkbmVqIGlubmVqIGthdGVnb3JpaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ1RhIGthdGVnb3JpYSBqZXN0IHXFvHl3YW5hIHcgbmFzdMSZcHVqxIVjeWNoIGFydHlrdcWCYWNoIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdUYSBrYXRlZ29yaWEgamVzdCByb2R6aWNlbSBuYXN0xJlwdWrEhWN5Y2ggcG9ka2F0ZWdvcmlpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0N6eSBuYSBwZXdubyBjaGNlc3ogdXN1bsSFxIcgdGVuIGFydHlrdcWCIEZBUT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdFa3NwbG9yZXIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ1N6eWJraWUgd3lzenVraXdhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICdabmFraSB3aWVsb3puYWN6bmUgc8SFIGRvendvbG9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnV3lzenVraXdhbmllIHphYXdhbnNvd2FuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnUG9ka2F0ZWdvcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydHlrdcWCeSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdCcmFrIHBvZGthdGVnb3JpaS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ0hpc3RvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1phd2FydG/Fm8SHIGhpc3RvcmlpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdVdHdvcnpvbmUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnQnJhayBkYW55Y2ggdyBkemllbm5pa3UgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgasSZenlrYW1pIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnRG9kYWogasSZenlrIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkeXR1aiBqxJl6eWsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1XFvHlqIHRlaiBmdW5rY2ppIGplxZtsaSBjaGNlc3ogcHJhY293YcSHIHogd2llbG9tYSBqxJl6eWthbWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0RvZGFqIGrEmXp5ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdEb2RhaiBqxJl6eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkeXR1aiBqxJl6eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ0N6eSBuYSBwZXdubyBjaGNlc3ogdXN1bsSFxIcgdGVuIGrEmXp5az8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAnTmllIG1vxbxlc3ogdXN1bsSFxIcgdGVnbyBqxJl6eWthLiBKZXN0IG9uIHXFvHl3YW55IHcgcHJ6eW5ham1uaWVqIGplZG55bSBhcnR5a3VsZSBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnVGVuIGrEmXp5ayBqZXN0IHXFvHl3YW55IHcgbmFzdMSZcHVqxIVjeWNoIGFydHVrdcWCYWNoIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ1VzdGF3aWVuaWEga29udGVrc3Rvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnTGljemJhIGFydHlrdcWCw7N3IEZBUSBuYSBzdHJvbsSZJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0JyYWsgZGFueWNoIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ3ogNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdTxYJvd28ga2x1Y3pvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSAoZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwKSd9ID0gJ0fFgm9zdWogKG5wLjogcsOzd25lIDEwIGx1YiB3acSZY2VqIG5pxbwgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ09jZcWEIChucC46IHLDs3duZSAyNSUgbHViIHdpxJljZWogbmnFvCA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnWmF0d2llcmR6b25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ09zdGF0bmlvIHptaWVuaW9uZSBwcnpleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBDemFzIHR3b3J6ZW5pYSB6Z8WCb3N6ZW5pYSAocHJ6ZWQvcG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBDemFzIHR3b3J6ZW5pYSB6Z8WCb3N6ZW5pYSAocG9tacSZZHp5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBDemFzIHptaWFueSB6Z8WCb3N6ZW5pYSAocHJ6ZWQvcG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUSBDemFzIHptaWFueSB6Z8WCb3N6ZW5pYSAocG9tacSZZHp5KSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEgcGXFgm5vdGVrc3Rvd28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdXeXN6dWtpd2FuaWUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnV3liw7NyIHByb2ZpbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ0fFgm9zdWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ0JyYWsgdXN0YXdpZcWEIGfFgm9zb3dhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnS29ua3JldG5lIGfFgm9zeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICducC46IHLDs3duZSAxMCBsdWIgd2nEmWNlaiBuacW8IDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdPY2XFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnQnJhayB1c3Rhd2llxYQgb2Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnS29ua3JldG5hIG9jZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAnbnAuOiByw7N3bmUgMjUlIGx1YiB3acSZY2VqIG5pxbwgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnQ3phcyB1dHdvcnplbmlhIGFydHlrdcWCdSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdGQVEgQ3phcyB6bWlhbnkgemfFgm9zemVuaWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAnT2NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdHxYJvc3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnQnJhayBnxYJvc8OzdyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0JyYWsgZ8WCb3PDs3chIELEhWTFuiBwaWVyd3N6eSBpIG9jZcWEIHRlbiBhcnR5a3XFgiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdQb2JpZXJ6IHphxYLEhWN6bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnQWJ5IG90d29yennEhyDFgsSFY3phLCB3IHBvbmnFvHN6eWNoIGJsb2thY2ggb3Bpc3UsIG5hbGXFvHkgcHJ6eWNpc27EhcSHIGtsYXdpc3ogQ3RybCwgQ21kIGx1YiBTaGlmdCBwb2RjemFzIGtsaWtuacSZY2lhICh3IHphbGXFvG5vxZtjaSBvZCBwcnplZ2zEhWRhcmtpIGkgc3lzdGVtdSBvcGVyYWN5am5lZ28pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0phayBwb21vY255IGJ5xYIgdGVuIGFydHlrdcWCPyBQcm9zaW15IG8gdHdvasSFIG9jZW7EmSBpIHBvbW9jIHByenkgdWRvc2tvbmFsYW5pdSBiYXp5IEZBUS4gRHppxJlrdWplbXkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAnbmllcHJ6eWRhdG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ3BvbW9jbmUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0RvZGFqIHR5dHXFgsKgRkFRIGpha28gdGVtYXQgd2lhZG9tb8WbY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnV3N0YXcgdGVrc3QgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ1dzdGF3IGNhxYJ5IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdXc3RhdyBvZG5vxZtuaWsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdXc3RhdyB0ZWtzdCBpIG9kbm/Fm25payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ1dzdGF3IGNhxYJ5IEZBUSBpIG9kbm/Fm25payc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05pZSB6bmFsZXppb25vIGFydHlrdcWCw7N3IEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICdUbyBtb8W8ZSBiecSHIHByenlkYXRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTmllIHpuYWxlemlvbm8gemFzb2LDs3cgcG9tb2N5IGRsYSBwb2RhbmVnbyB0ZW1hdHUgaSB0cmXFm2NpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdXcGlzeiBvYm9rIHRlbWF0IGx1YiB0cmXFm8SHIHpnxYJvc3plbmlhIGFieSBwcnplc3p1a2HEhyB6YXNvYnkgcG9tb2N5Lic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnV3lzenVraXdhbmllIHBlxYJub3Rla3N0b3dlIHcgYXJ0eWt1xYJhY2ggRkFRIChucC4gIk5haipwc3p5IiBsdWIgIktvd2Fsc2sqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICdPZ3JhbmljemVuaWEgZ8WCb3Nvd2FuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ1R5bGtvIGFydHlrdcWCeSBGQVEgeiBnxYJvc2FtaS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ09ncmFuaWN6ZW5pYSBvY2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ1R5bGtvIGFydHlrdcWCeSBGQVEgeiBvY2VuxIUuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdPZ3JhbmljemVuaWEgY3phc293ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAnVHlsa28gdXR3b3J6b25lIGFydHlrdcWCeSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnVHlsa28gYXJ0eWt1xYJ5IEZBUSB1dHdvcnpvbmUgcG9tacSZZHp5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1Byb2ZpbCB3eXN6dWtpd2FuaWEgamFrbyBTemFibG9uPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ051bWVyIGFydHlrdcWCdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1N6dWthaiBhcnR5a3XFgsOzdyB6YSBwb21vY8SFIHPFgm93YSBrbHVjem93ZWdvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1BvYmxpY3puZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnV3LDs8SHIGRvIFByemVnbMSFZHUgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdQb3RyemVidWplc3ogcHJhdyBvZGN6eXR1L3phcGlzdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ0JyYWsga2F0ZWdvcmlpIGdkemllIHXFvHl0a293bmlrIHBvc2lhZGEgcHJhd2EgemFwaXN1L29kY3p5dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJ0JyYWsgZG9tecWbbG5lZ28gasSZenlrYSBpIG5pZSBtb8W8bmEgc3R3b3J6ecSHIG5vd2Vnby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdQb3RyemVibmUgQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnS2F0ZWdvcmlhIHBvd2lubmEgcG9zaWFkYcSHIG5henfEmSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ1RhIGthdGVnb3JpYSBqdcW8IGlzdG5pZWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnVGEga2F0ZWdvcmlhIGp1xbwgaXN0bmllamUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTmllIHphZGVrbGFyb3dhbm8gQ2F0ZWdvcnlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnTmllIG1vxbxuYSB1c3VuxIXEhyBrYXRlZ29yaWkgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0thdGVnb3JpYSBGQVEgemFrdHVhbGl6b3dhbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdLYXRlZ29yaWEgRkFRIGRvZGFuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnVXN1xYQga2F0ZWdvcmnEmSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOaWUgemFkZWtsYXJvd2FubyBJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnTmllIG1hc3ogdXByYXduaWXFhCBkbyB0eWNoIGthdGVnb3JpaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnTmllIG1vxbxlc3ogdXN1bsSFxIcgYXJ0eWt1xYJ1IEZBUSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnQ2F0ZWdvcnlJRCAlcyBqZXN0IG5pZSBwcmF3aWTFgm93ZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pZSBtb8W8bmEgd3nFm3dpZXRsacSHIGhpc3RvcmlpLCBuaWUgcG9kYW5vIEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdIaXN0b3JpYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICdEemllbm5payBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnUG90cnplYm5hIGtvbmZpZ3VyYWNqYSBvcGNqaSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICdCcmFrIGtvbmZpZ3VyYWNqaSBvcGNqaSBkbGEgd2lkb2t1ICIlcyIhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ0JyYWsgemFkZWtsYXJvd2FuZWdvIExhbmd1YWdlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ05hendhIGplc3Qgd3ltYWdhbmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnVGVuIGrEmXp5ayBqdcW8IGlzdG5pZWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdOaWUgbW/FvGVteSB1c3VuxIXEhyBqxJl6eWthICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdKxJl6eWsgRkFRIHpha3R1YWxpem93YW55ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSsSZenlrIEZBUSBkb2RhbnkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ1VzdcWEIGrEmXp5ayAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnV3luaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICdPc3RhdG5pYSBha3R1YWxpemFjamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnUG9sYSBEeW5hbWljem5lIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnTmllIHphZGVrbGFyb3dhbm8gJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ05pZSBtb8W8bmEgemHFgmFkb3dhxIcgTGFuZ3VhZ2VPYmplY3QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0JyYWsgV3luaWvDs3chJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdOdW1lciBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnT3N0YXRuaW8gWm1pZW5pb25lIHByemV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnQ3phcyB1dHdvcnplbmlhIGVsZW1lbnR1IEZBUSAocHJ6ZWQvcG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0N6YXMgdXR3b3J6ZW5pYSBlbGVtZW50dSBGQVEgKHBvbWnEmWR6eSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdDemFzIHptaWFueSBlbGVtZW50dSBGQVEgKHByemVkL3BvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdDemFzIHptaWFueSBlbGVtZW50dSBGQVEgKHBvbWnEmWR6eSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnUsOzd25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ1dpxJlrc3plIG5pxbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ1dpxJlrc3plIGx1YiByw7N3bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTW5pZWpzemUgbmnFvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTW5pZWpzemUgbHViIHLDs3duZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdQb3RyemVibnkgRmlsZUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdEemnEmWt1amVteSB6YSBvZGRhbmllIGfFgm9zdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdKdcW8IHJheiBnxYJvc293YcWCZcWbISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ05pZSB3eWJyYcWCZcWbIG9jZW55ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICdNZWNoYW5pem0gZ8WCb3Nvd2FuaWEgbmllIGplc3Qgd8WCxIVjem9ueSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICdXc2thxbpuaWsgZ8WCb3Nvd2FuaWEgbmllIGplc3Qgb2tyZcWbbG9ueSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnRHJ1a3VqIGluZm9ybWFjasSZIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ1N0d29yem9uZSBwb21pxJlkenknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnUG90cnplYm5lIEl0ZW1JRCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydHlrdcWCeSBGQVEgKG5vd2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnR5a3XFgnkgRkFRIChvc3RhdG5pbyB6bWllbmlvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ0FydHlrdcWCeSBGQVEgKDEwIG5hamxlcHN6eWNoKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ0JyYWsgemFkZWtsYXJvd2FuZWdvIFR5cHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ05pZSBtb8W8bmEgc3R3b3J6ecSHIHBsaWt1IFJTUyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBLbGllbnQgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIEtsaWVudCAoRkFRRnVsbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICclcyAtIFB1YmxpY3puZSAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIFB1YmxpY3puZSAoRkFRRnVsbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnVGVuIGFydHlrdcWCIGplc3QgcHVzdHkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ09zdGF0bmlvIGRvZGFuZSBpbmZvcm1hY2plIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdPc3RhdG5pbyB6YWt0dWFsaXpvd2FuZSBpbmZvcm1hY2plIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGluZm9ybWFjamkgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnd2V3bsSZdHJ6bnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICd6ZXduxJl0cnpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdwdWJsaWN6bnknOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdEb2RhaiBhcnR5a3XFgiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdLb2xvciBDU1MgZGxhIHd5bmlrw7N3IGfFgm9zb3dhbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUga2F0ZWdvcmlhbWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICdaYXJ6xIVkemFuaWUgS2F0ZWdvcmnEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnTWllanNjYSBwbyBwb3RyemVjaW5rdSB3IHd5bmlrYWNoIGfFgm9zb3dhbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnRG9tecWbbG5hIG5hendhIGthdGVnb3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ0RvbXnFm2xueSBqxJl6eWsgZGxhIGFydHlrdcWCw7N3IEZBUSB3IHRyeWJpZSBwb2plZHluY3plZ28gasSZenlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ0RvbXnFm2xueSBwcmlvcnl0ZXQgemfFgm9zemXFhCBkbGEgemF0d2llcmR6ZcWEIGFydHlrdcWCw7N3IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ0RvbXnFm2xueSBzdGFuIGRsYSBwb3p5Y2ppIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ0RlZmluaWNqYSBwb2xhIGZyZWUgdGV4dCBwb3p5Y2ppIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAnVXN1xYQgdG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICdFZHl0dWogdG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdXxYLEhWN6IHdpZWxlIGrEmXp5a8OzdyB3IG1vZHVsZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ1fFgsSFY3ogbWVjaGFuaXptIGfFgm9zb3dhbmlhIHcgbW9kdWxlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICdFa3NwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdFZHljamEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICdIaXN0b3JpYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdCBGQVEgdyBwcnplZ2zEhWR6aWUgZHppZW5uaWthIHcgdHJ5YmllICJNYcWCZSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdCBGQVEgdyBwcnplZ2zEhWR6aWUgdyB0cnliaWUgIk1hxYJlIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnRHJ1a3VqIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdQb2xlNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdQb2xlNSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwYWEgZGxhIGFrY2VwdGFjamkgYXJ0eWt1xYLDs3cgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnSGlzdG9yaWEgdGVnbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnRHppZW5uaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ1phcnrEhWR6YW5pZSBqxJl6eWthbWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICdaYXJ6xIVkemFuaWUgSsSZenlraWVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ1BvxYLEhWN6IGlubnkgb2JpZWt0IHogdHltIGVsZW1lbnRlbSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc3ltYWxuYSBsaWN6YmEgYXJ0eWt1xYLDs3cgRkFRIGt0w7NyZSBixJlkxIUgd3nFm3dpZXRsYW5lIHcgUHJ6ZWdsxIVkemllIEZBUSB3IGludGVyZmVqc2llIHXFvHl0a293bmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc3ltYWxuYSBsaWN6YmEgYXJ0eWt1xYLDs3cgRkFRIGt0w7NyZSBixJlkxIUgd3nFm3dpZXRsYW5lIHcgUHJ6ZWdsxIVkemllIEZBUSB3IGludGVyZmVqc2llIGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJ05vd3kgQXJ0eWt1xYIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOb3dlIGFydHlrdcWCeSBGQVEgd3ltYWdhasSFIHphdHdpZXJkemVuaWEgcHJ6ZWQgcHVibGlrYWNqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnV3lkcnVrdWogdG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0tvbGVqa2EgZGxhIHphdHdpZXJkemXFhCBhYXJ0eWt1xYLDs3cgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdTenVrYWogRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1JvendpxIV6YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnT2JqYXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ1BvenljamEgcGFza2EgbmFyesSZZHppb3dlZ28gZGxhIHNrcsOzdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICd6ZXduxJl0cnpuZSAoa2xpZW5jaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ3dld27EmXRyem5lIChhZ2VuY2kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3B1YmxpY3puZSAod3N6eXNjeSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAncHVibGljem5lIChwdWJsaWMpJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGljaW9uYXIgYXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1BhbGF2cmFzLWNoYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnw4kgbmVjZXNzw6FyaWEgdW1hIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvdmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIENhdGVnb3JpYXMgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgQ2F0ZWdvcmlhIGRlIFBlcmd1bnRhcyBlIFJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ0VkaXRyYXIgY2F0ZWdvcmlhIGRlIFBlcmd1bnRhcyBlIFJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdFZGl0YXIgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3J5IG9mJ30gPSAnU3ViY2F0ZWdvcmlhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuJ30gPSAnU2VsZWNpb25lIHBlbG8gbWVub3MgdW0gZ3J1cG8gZGUgcGVybWlzc8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4nfSA9ICdHcnVwb3MgZGUgYWdlbnRlcyBjb20gYWNlc3NvIGEgYXJ0aWdvcyBuZXN0YSBjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0NvbWVudMOhcmlvIGEgYXByZXNlbnRhciBubyBicm93c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdDb25maXJtYSBhIHJlbW/Dp8OjbyBkZXN0YSBjYXRlZ29yaWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnTsOjbyBwb2RlIHJlbW92ZXIgZXN0YSBjYXRlZ29yaWEuIFRlbSBwZWxvIG1lbm9zIHVtIGFydGlnbyBlL291IHVtYSBzdWJjYXRlZ29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3JpYSDDqSB1dGlsaXphZGEgbm8ocykgc2VndWludGUocykgYXJ0aWdvKHMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0VzdGEgY2F0ZWdvcmlhIHRlbSBhcyBzZWd1aW50ZXMgc3ViY2F0ZWdvcmlhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFEZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGQVEgYXJ0aWNsZT8nfSA9ICdDb25maXJtYSBhIHJlbW/Dp8OjbyBkZXN0ZSBhcnRpZ28/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSd9ID0gJ0ZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnRXhwbG9yYWRvciBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnUGVzcXVpc2EgcsOhcGlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnQXN0ZXJpc2NvcygqKSBzw6NvIHBlcm1pdGlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnUGVzcXVpc2EgYXZhbsOnYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlnb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICdOZW5odW1hIHN1YmNhdGVnb3JpYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdMOzcmljbyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0w7NyaWNvIGRvIGNvbnRlw7pkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnU2VtIGRhZG9zIGRlIGRpw6FyaW8uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0dlc3TDo28gZGUgaWRpb21hcyBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBQZXJndW50YXMgZSBSZXNwb3N0YXMgZW0gTGluZ3VhIEVzdHJhbmdlaXJhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXRhciBMaW5ndWFnZW0gZGUgUGVyZ3VudGFzIGUgUmVzcG9zdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSBlc3RhIGZ1bmNpb25hbGlkYWRlIHNlIGRlc2VqYSB0cmFiYWxoYXIgY29tIG3Dumx0aXBsb3MgaWRpb21hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnQWRpY2lvbmFyIGlkaW9tYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdFZGl0YXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdDb25maXJtYSBhIHJlbW/Dp8OjbyBkZXN0ZSBpZGlvbWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ07Do28gcG9kZSByZW1vdmVyIGVzdGUgaWRpb21hLiDDiSB1dGlsaXphZG8gZW0gcGVsbyBtZW5vcyB1bSBhcnRpZ28gZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIMOpIHV0aWxpemFkbyBubyhzKSBzZWd1aW50ZShzKSBhcnRpZ28ocyknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdDb25maWd1cmHDp8O1ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnQXJ0aWdvcyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOZW5odW1hcyBQZXJndW50YXMgZSBSZXNwb3N0YXMgRW5jb250cmFkYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnUGFsYXZyYS1jaGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90YXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSAoZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUpJ30gPSAnQ2xhc3NpZmljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdBcHJvdmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfDmmx0aW1hIGFsdGVyYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0RhdGEgZGUgY3JpYcOnw6NvIGRvIGFydGlnbyAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdEYXRhIGRlIGNyaWHDp8OjbyBkbyBhcnRpZ28gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0RhdGEgZGUgbW9kaWZpY2HDp8OjbyBkbyBhcnRpZ28gKGFudGVzL2RlcG9pcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRGF0YSBkZSBtb2RpZmljYcOnw6NvIGRvIGFydGlnbyAoZW50cmUpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ1RleHRvIGludGVncmFsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdTZWxlw6fDo28gZGUgcGVyZmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdWb3Rhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAnU2VtIGRlZmluacOnw6NvIGRlIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RvcyBlc3BlY8OtZmljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnZXg6IElndWFsIGEgMTAgb3UgU3VwZXJpb3IgYSA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAnQ2xhc3NpZmljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ1NlbSBjb25maWd1cmHDp8O1ZXMgZGUgcG9udHVhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ0NsYXNzaWZpY2HDp8OjbyBlc3BlY8OtZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2V4LiBJZ3VhbCBhIDI1JSBvdSBtYWlvciBxdWUgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnRGF0YSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdEYXRhIGRlIG1vZGlmaWNhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIGFydGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdDbGFzc2lmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdTZW0gdm90b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4nfSA9ICdTZW0gdm90b3MuIFNlamEgbyBwcmltZWlybyBhIGNsYXNzaWZpY2FyIGVzdGUgYXJ0aWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnRGVzY2FycmVnYXIgQW5leG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICdQYXJhIGFicmlyIGFzIGxpZ2HDp8O1ZXMgYWJhaXhvIHBvZGVyw6EgbmVjZXNzaXRhciBkZSBwcmVtaXIgYSB0ZWNsYSBDVFJMIChvdSBDTUQpIG91IFNoaWZ0IChkZXBlbmRlbmRvIGRvIGJyb3dzZXIgZSBkbyBzaXN0ZW1hIG9wZXJhdGl2bykgcXVhbmRvIGNsaWNhciBzb2JyZSBhIGxpZ2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0VzdGUgYXJ0aWdvIGZvaSDDunRpbD8gVXRpbGl6ZSBhIGNsYXNzaWZpY2HDp8OjbyBwYXJhIG5vcyBhanVkYXIgYSBtZWxob3JhciBhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICduw6NvIGFqdWRvdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdhanVkb3UgbXVpdG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0FkaWNpb25hciBvIHTDrXR1bG8gZGEgRkFRIGFvIGFzc3VudG8gZG8gYXJ0aWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ0luc2VyaXIgbyB0ZXh0byBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zZXJpciBhIEZBUSBjb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdJbnNlcmlyIGxpZ2HDp8OjbyBwYXJhIGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdJbnNlcmlyIHRleHRvIGUgYSBsaWdhw6fDo28gcGFyYSBhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJpciBvIHRleHRvIGNvbXBsZXRvIGUgYSBsaWdhw6fDo28gcGFyYSBhIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lbmh1bSBhcnRpZ28gRkFRIGVuY29udHJhZG8uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnSXN0byBwb2RlIEFqdWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyByZXN1bHRhZG9zIMO6dGVpcyBwYXJhIG8gYXNzdW50byBvdSB0ZXh0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ0luc2lyYSB1bSBhc3N1bnRvIG91IHRleHRvIHBhcmEgbGlzdGFyIGFydGlnb3MgcmVsZXZhbnRlcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1Blc3F1aXNhIG5vIHRleHRvIGludGVncmFsIGRvcyBhcnRpZ29zIGRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyacOnw7VlcyBkZSB2b3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnQXBlbmFzIGFydGlnb3MgY29tIHZvdG9zLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzaWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdBcGVuYXMgYXJ0aWdvcyBjb20gY2xhc3NpZmljYcOnw6NvLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpw6fDo28gaG9yw6FyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ0FwZW5hcyBhcnRpZ29zIGNyaWFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnQXBlbmFzIGFydGlnb3MgY3JpYWRvcyBlbnRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdHdWFyZGFyIG1vZGVsbyBkZSBwZXNxdWlzYT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIGFydGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1Byb2N1cmFyIGFydGlnb3MgY29tIGEgcGFsYXZyYS1jaGF2ZSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICdQdWJsaWNvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdWb2x0YXIgYW8gZXhwbG9yYWRvciBkYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJ05lY2Vzc2l0YSBkZSBwZXJtaXNzw6NvIGRlIGVzY3JpdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZGFzIGNhdGVnb3JpYXMgb25kZSBvIHV0aWxpemFkb3IgcG9zc3VhIHBlcm1pc3PDtWVzIGRlIGxlaXR1cmEgZSBlc2NyaXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdOw6NvIGZvaSBlbmNvbnRyYWRvIHVtIGlkaW9tYSBwYWRyw6NvIGUgdMOjbyBwb3VjbyBjcmlhciB1bSBub3ZvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ05lY2Vzc8OhcmlvIENhdGVnb3J5SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0EgY2F0ZWdvcmlhIGRldmUgdGVyIHVtIG5vbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdFc3RhIGNhdGVnb3JpYSBqw6EgZXhpc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXN0YSBjYXRlZ29yaWEgasOhIGV4aXN0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICdDYXRlZ29yeUlEIGVtIGZhbHRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgYXBhZ2FyIGEgY2F0ZWdvcmlhICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGF0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGFkaWNpb25hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0VsaW1pbmFyIENhdGVnb3JpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJdGVtSUQgZW0gZmFsdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnTsOjbyBkaXNww7VlIGRlIHBlcm1pc3PDtWVzIHBhcmEgZXN0YSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBhcGFnYXIgbyBhcnRpZ28gJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0EgQ2F0ZWdvcmlhSUQgJXMgw6kgaW52w6FsaWRhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGhpc3TDs3JpY28sIGZhbHRhIG8gSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0hpc3TDs3JpY28gZGEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnRGnDoXJpbyBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnw4kgbmVjZXNzw6FyaWEgYSBvcMOnw6NvIGRlIGNvbmZpZ3VyYcOnw6NvIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ0Egb3DDp8OjbyBkZSBjb25maWd1cmHDp8OjbyBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBwcmVjaXNhIHNlciB1bSB2YWxvciBIQVNIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRhcyBvcMOnw7VlcyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIGEgdmlzdWFsaXphw6fDo28gIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnSWRpb21hSUQgZW0gZmFsdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ8OJIG5lY2Vzc8OhcmlvIG8gbm9tZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdFc3RhIExpbmd1YWdlbSBqw6EgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgYXBhZ2FyIG8gaWRpb21hICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdMaW5ndWFnZW0gZGUgRkFRIGF0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdMaW5ndWFnZW0gZGUgRkFRIGFkaWNpb25hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ1JlbW92ZXIgaWRpb21hICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICfDmmx0aW1hIGF0dWFsaXphw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnQ2FtcG9zIGRpbsOibWljb3MgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICclcyBlbSBmYWx0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGNhcnJlZ2FyIExhbmd1YWdlT2JqZWN0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTZW0gcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0RhdGEgZGUgY3JpYcOnw6NvIGRvIGFydGlnbyAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdEYXRhIGRlIGNyaWHDp8OjbyBkbyBhcnRpZ28gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0RhdGEgZGUgYWx0ZXJhw6fDo28gZG8gYXJ0aWdvIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRGF0YSBkZSBhbHRlcmHDp8OjbyBkbyBhcnRpZ28gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICdJZ3VhbCBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ1N1cGVyaW9yIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ01haW9yIG91IGlndWFsIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnSW5mZXJpb3IgYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTWVub3Igb3UgaWd1YWwgYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICdOZWNlc3NpdGEgZG8gQXJxdWl2b0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdPYnJpZ2FkbyBwZWxvIHNldSB2b3RvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ0rDoSB2b3RvdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdQb250dWHDp8OjbyBuw6NvIHNlbGVjY2lvbmFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnQSBmdW5jaW9uYWxpZGFkZSBkZSB2b3Rhw6fDo28gbsOjbyBlc3TDoSBhY3RpdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnTyBwZXNvIGRvcyB2b3RvcyBuw6NvIGZvaSBkZWZpbmlkbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnSW1wcmltaXIgYXJ0aWdvIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ0NyaWFkbyBlbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfDiSBuZWNlc3PDoXJpbyBvIEl0ZW1JRC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0FydGlnb3MgZGUgRkFRIChjcmlhZG9zIHJlY2VudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0FydGlnb3MgZGUgRkFRIChhbHRlcmFkb3MgcmVjZW50ZW1lbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICdBcnRpZ29zIGRlIEZBUSAoVG9wIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ1RpcG8gZW0gZmFsdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ08gVGlwbyBkZXZlIHNlciDDmmx0aW1vQ3JpYWRvLCDDmmx0aW1vQWx0ZXJhZG8gb3UgVG9wMTAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGNyaWFyIG8gZmljaGVpcm8gUlNTISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclcyAoRkFRLVRleHRvQ29tcGxldG8pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJXMgLSBDbGllbnRlICglcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBDbGllbnRlIChGQVEtVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0gUMO6YmxpY28gKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSBQw7pibGljbyAoRkFRLVRleHRvQ29tcGxldG8pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ05lY2Vzc2l0YSBkZSBjbGFzc2lmaWNhw6fDo28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdFc3RlIGFydGlnbyBlc3TDoSB2YXppbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAnw5psdGltb3MgYXJ0aWdvcyBGQVEgY3JpYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfDmmx0aW1vcyBhcnRpZ29zIEZBUSBhdHVhbGl6YWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wIDEwIGFydGlnb3MgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ1RpcG8gZGUgY29udGXDumRvJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAnZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICdww7pibGljbyc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnVW0gZmlsdHJvIGRlIEhUTUwgZGUgb3V0cHV0IHBhcmEgYWRpY2lvbmFyIGxpbmtzIGFudGVzIGRlIHVtIGRldGVybWluYWRvIHRleHRvLiBPIGVsZW1lbnRvIEltYWdlbSBwZXJtaXRlIGRvaXMgdGlwb3MgZGUgaW5wdXQuIFByaW1laXJvLCBvIG5vbWUgZGUgdW1hIGltYWdlbSAoZXguIGZhcS5wbmcpLiBOZXN0ZSBjYXNvLCBvIGNhbWluaG8gcGFyYSBpbWFnZW5zIE9UUlMgc2Vyw6EgdXNhZG8uIEEgc2VndW5kYSBwb3NzaWJpbGlkYWRlIMOpIGluc2VyaXIgbyBsaW5rIHBhcmEgYSBpbWFnZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJ0FkaWNpb25hciBhcnRpZ28gw6AgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ29yIENTUyBwYXJhIG8gcmVzdWx0YWRvIGRhIHZvdGHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ1RlbXBvIGRlIHBlcm1hbsOqbmNpYSBlbSBjYWNoZSBkb3MgYXJ0aWdvcyBkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGNhdGVnb3JpYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICdHZXN0w6NvIGRlIENhdGVnb3JpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICdJbXByZXNzw6NvIGRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnVmlzdWFsaXphw6fDo28gZGEgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ1Blc3F1aXNhIGRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ0ZBUSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdOw7ptZXJvIGRlIGNhc2FzIGRlY2ltYWlzIGRvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICdOb21lIGRhIGNhdGVnb3JpYSBwb3Igb21pc3PDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdJZGlvbWEgcG9yIG9taXNzw6NvIGRvcyBhcnRpZ29zIGRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRvIHTDrXR1bG8gZG8gYXJ0aWdvIEZBUSBhIHNlciBleGliaWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdQcmlvcmlkYWRlIGRvcyB0aWNrZXRzIHBhcmEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnRXN0YWRvIHBvciBvbWlzc8OjbyBwYXJhIG5vdmFzIGVudHJhZGFzIG5hIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0VzdGFkbyBkb3MgdGlja2V0cyBwYXJhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnVGlwbyBkZSB0aWNrZXRzIHBhcmEgYSBhcHJvdmHDp8OjbyBkZSBhcnRpZ29zIGRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1ZhbG9yIGRvIHBhcsOibWV0cm8gXCdBY3Rpb25cJyBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEVzdGUgcGFyw6JtZXRybyDDqSB1c2FkbyBub3Mgc2NyaXB0cyBkbyBzaXN0ZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pciBBY8Onw7VlcyBvbmRlIHVtIGJvdMOjbyBkZSBjb25maWd1cmHDp8O1ZXMgZXN0w6EgZGlzcG9uw612ZWwgbmEgd2lkZ2V0IHRoZSBvYmplY3RvcyBsaWdhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuICBFc3RhcyBBY8Onw7VlcyBkZXZlbSBlc3RhciByZWdpc3RhZGFzIG5vcyBzZWd1aW50ZXMgZmljaGVpcm9zIEpTIGUgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ0luZGlxdWUgc2UgbyB0w610dWxvIGRvIEZBUSBkZXZlIHNlciBjb25jYXRlbmFkbyBhbyBhc3N1bnRvIGRvIGFydGlnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHJlc3VtbyBwYXJhIG1vc3RyYXIgYSB2aXN1YWxpemHDp8OjbyBwZXF1ZW5hIGRlIHVtIGpvcm5hbCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHJlc3VtbyBwYXJhIG1vc3RyYXIgYSB2aXN1YWxpemHDp8OjbyBwZXF1ZW5hIGRlIHVtYSBsaXN0YSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgZW0gdW1hIHBlc3F1aXNhIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gZGUgb3JkZW5hw6fDo28gbm8gRXhwbG9yYWRvciBkZSBGQVEgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIGRlIG9yZGVuYcOnw6NvIG5vIEV4cGxvcmFkb3IgZGUgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIGRlIG9yZGVuYcOnw6NvIG5vIEV4cGxvcmFkb3IgZGUgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbmHDp8OjbyBwYWRyw6NvIGRvcyByZXN1bHRhZG9zIG5vIEV4cGxvcmFkb3IgZGUgRkFRIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuIEFjaW1hOiBtYWlzIGFudGlnb3Mgbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW5hw6fDo28gcGFkcsOjbyBkb3MgcmVzdWx0YWRvcyBubyBFeHBsb3JhZG9yIGRlIEZBUSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IG1haXMgYW50aWdvcyBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW5hw6fDo28gcGFkcsOjbyBkb3MgcmVzdWx0YWRvcyBubyBFeHBsb3JhZG9yIGRlIEZBUSBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFjaW1hOiBtYWlzIGFudGlnb3Mgbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVuYcOnw6NvIHBhZHLDo28gZG9zIHJlc3VsdGFkb3MgbmEgcGVzcXVpc2EgZGUgRkFRIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuIEFjaW1hOiBtYWlzIGFudGlnb3Mgbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVuYcOnw6NvIHBhZHLDo28gZG9zIHJlc3VsdGFkb3MgbmEgcGVzcXVpc2EgZGUgRkFRIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLiBBY2ltYTogbWFpcyBhbnRpZ29zIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW5hw6fDo28gcGFkcsOjbyBkb3MgcmVzdWx0YWRvcyBuYSBwZXNxdWlzYSBkZSBGQVEgbmEgaW50ZXJmYWNlIHDDumJsaWNhLiBBY2ltYTogbWFpcyBhbnRpZ29zIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gbm8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdEZWZpbmUgYSBpbmZvcm1hw6fDo28gYSBzZXIgaW5zZXJpZGEgbm8gY2hhbWFkbyBiYXNlYWRvIGVtIEZBUS4gIlRvZG8gbyBGQVEiIGluY2x1aSB0ZXh0bywgYW5leG9zIGUgaW1hZ2VucyBlbWJ1dGlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBwYXLDom1ldHJvcyBwYXJhIG8gYmFja2VuZCBkbyBkYXNoYm9hcmQuICJMaW1pdGUiIGRlZmluZSBvIG7Dum1lcm8gZGUgZW50cmFkYXMgZXhpYmlkYXMgcG9yIHBhZHLDo28uICJHcnVwbyIgw6kgdXNhZG8gcGFyYSByZXN0cmluZ2lyIG8gYWNlc3NvIGFvIHBsdWdpbiAoZXguOiBHcnVwbzogYWRtaW4sIGdydXBvMSwgZ3J1cG8yKS4gIlBhZHLDo28iIGluZGljYSBzZSBvIHBsdWdpbiDDqSBoYWJpbGl0YWRvIHBvciBwYWRyw6NvIG91IHNlIG8gdXN1w6FyaW8gcHJlY2lzYSBoYWJpbGl0w6EtbG8gbWFudWFsbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBubyBFeHBsb3JhZG9yIGRlIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5vIGpvcm5hbCBGQVEuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGEgY29sdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5hIHBlc3F1aXNhIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5lIG9uZGUgbyBsaW5rICJJbnNlcmlyIEZBUSIgc2Vyw6EgZXhpYmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pw6fDo28gZGUgY2FtcG9zIGRlIHRleHRvIGxpdnJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdBcGFnYXIgZXN0YSBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgZXhpYmlkb3Mgbm8gZWNyw6MgZGUgYWRpY2lvbmFyIEZBUSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBleGliaWRvcyBucCBlY3LDoyBkZSBlZGl0YXIgRkFRIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIGV4aWJpZG9zIG5vIGVjcsOjIGRlIGltcHJpbWlyIEZBUSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5vIGVjcsOjIGRlIHBlc3F1aXNhIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBleGliaWRvcyBubyBlY3LDoyB2aXPDo28gZ2VyYWwgZGUgRkFRIGVtIGZvcm1hdG8gcGVxdWVubyBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBleGliaWRvcyBubyBlY3LDoyBkZSB6b29tIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnRWRpdGFyIGVzdGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdQZXJtaXRpciB2w6FyaW9zIGlkaW9tYXMgbm8gbcOzZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJ0F0aXZhciBhIGZ1bmNpb25hbGlkYWRlIGRlIGFydGlnb3MgcmVsYWNpb25hZG9zIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ0F0aXZhciBmdW5jaW9uYWxpZGFkZSBkZSB2b3Rhw6fDo28gbm8gbcOzZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnRXhwbG9yYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCBSZXNwb25kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCBSZXNwb25kZXIgZW0gUmljaHRleHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnw4FyZWEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ8OBcmVhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdBcGFnYXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdFZGl0YXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICdIaXN0w7NyaWNvIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSBWaXPDo28gR2VyYWwgIlBlcXVlbm8iIGRvIEpvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgVmlzw6NvIEdlcmFsIEZBUSAiUGVxdWVubyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ltcHJpbWlyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ0ZBUSBidXNjYSBzZXJ2aWRvciByb3RlYWRvciBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdDYW1wbzQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnQ2FtcG81JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnRkFRIGNvbXBsZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0dydXBvIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0w7NyaWNvIGRlc3RlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnSW5jbHVpciBjYW1wb3MgaW50ZXJub3MgZGUgdW0gQ2hhbWFkbyBiYXNlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIG8gbm9tZSBkZSBjYWRhIGNhbXBvIGVtIHVtIENoYW1hZG8gYmFzZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnSW50ZXJmYWNlcyBvbmRlIGEgcGVzcXVpc2EgcsOhcGlkYSBkZXZlIHNlciBtb3N0cmFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ0pvcm5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBpZGlvbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnR2VyZW5jaWFtZW50byBkZSBJZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ0xpbWl0ZSBwYXJhIGEgcGVzcXVpc2EgY29uc3RydWlyIGEgbGlzdGEgZGUgcGFsYXZyYXMtY2hhdmUgZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdMaW5rIGRlIG91dHJvIGFydGlnbyBwYXJhIGVzdGUgaXRlbSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICdMaXN0YSBkbyBub21lcyBkZSBmaWxhcyBwYXJhIG9zIHF1YWlzIG8gcmVjdXJzbyBkZXNzZSBhcnRpZ28gZXN0w6EgYXRpdmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgZG9zIHRpcG9zIGRlIGVzdGFkbyBxdWUgcG9kZSBzZXIgdXRpbGl6YWRvIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGRvcyB0aXBvcyBkZSBlc3RhZG8gcXVlIHBvZGUgc2VyIHV0aWxpemFkbyBuYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIGRvcyB0aXBvcyBkZSBlc3RhZG8gcXVlIHBvZGUgc2VyIHV0aWxpemFkbyBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRvIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIGpvcm5hbCBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkZSB1bWEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkZSB1bWEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcHVibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5hIGxpc3RhIGRlIGVudHJhZGFzIGRhIEZBUSBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5hIGxpc3RhIGRlIGVudHJhZGFzIGRhIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgUGVzcXVpc2EgZGUgRkFRIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgUGVzcXVpc2EgZGUgRkFRIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBQZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBubyBKb3JuYWwgRkFRIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBnZXJhciBwZXJmaWwgSFRNTCBPcGVuU2VhcmNoIHBhcmEgcGVzcXVpc2FzIGN1cnRhcyBkZSBGQVEgbmEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJ05vdm8gQXJ0aWdvIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnTm92b3MgYXJ0aWdvcyBGQVEgcHJlY2lzYW0gZGUgYXByb3Zhw6fDo28gYW50ZXMgZGUgc2VyIHB1YmxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIHB1YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3MgZW0gw7psdGltYXMgYWx0ZXJhw6fDtWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ07Dum1lcm8gZGUgaXRlbnMgbW9zdHJhZG9zIGVtIMO6bHRpbWFzIGNyaWHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3Mgbm8gcmVjdXJzbyB0b3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnTGltaXRlIGRlIHNhw61kYSBwYXJhIG9zIGFydGlnb3MgZGVzc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIEZBUSBzw6NvIG1vc3RyYWRvcykgZGEgdmlzw6NvIGdlcmFsIHBlcXVlbmEgZG8gam9ybmFsIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRlIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgRkFRIHPDo28gbW9zdHJhZG9zKSBkYSB2aXPDo28gZ2VyYWwgcGVxdWVuYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnSW1wcmltaXIgZXN0ZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICdJbXByaW1pciBGQVEgcMO6YmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdab29tIGVtIEZBUSBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnQnVzY2EgRkFRIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJ0ZBUSBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRmlsYSBwYXJhIGEgYXByb3Zhw6fDo28gZG9zIGFydGlnb3MgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ0NvbmRpw6fDo28gcGFyYSBhIGF2YWxpYcOnw6NvLiBDaGF2ZSBkZXZlIHNlciBlbSBwZXJjZW50dWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnUGVzcXVpc2EgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnUGVzcXVpc2FyIEZBUSBQZXF1ZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnUGVzcXVpc2FyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ1NlbGVjaW9uZSBxdWFudG9zIGl0ZW5zIGRldmVtIHNlciBtb3N0cmFkb3MgbmEgdmlzw6NvIGdlcmFsIGRvIGRpw6FyaW8gIlNtYWxsIiBwb3IgcGFkcsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdTZWxlY2lvbmUgcXVhbnRvcyBpdGVucyBkZXZlbSBzZXIgbW9zdHJhZG9zIG5hIHZpc8OjbyBnZXJhbCAiU21hbGwiIHBvciBwYWRyw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdDb25maWd1cmEgYSBhbHR1cmEgcGFkcsOjbyAoZW0gcGl4ZWxzKSBkZSBjYW1wb3MgSFRNTCBlbWJ1dGlkb3Mgbm8gQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBhIGFsdHVyYSBwYWRyw6NvIChlbSBwaXhlbHMpIGRlIGNhbXBvcyBIVE1MIGVtYnV0aWRvcyBlbSBDdXN0b21lckZBUVpvb20gKGUgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBhIGFsdHVyYSBtw6F4aW1hIChlbSBwaXhlbHMpIGRlIGNhbXBvcyBIVE1MIGVtYnV0aWRvcyBubyBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQ29uZmlndXJhIGEgYWx0dXJhIG3DoXhpbWEgKGVtIHBpeGVscykgZGUgY2FtcG9zIEhUTUwgZW1idXRpZG9zIGVtIEN1c3RvbWVyRkFRWm9vbSAoZSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmEgYm90w6NvICJJbnNlcmlyIExpbmsgRkFRIiBlbSBBbXBsaWHDp8OjbyBwZXF1ZW5hIHBhcmEgbyBhcnRpZ29zIEZBUSBww7pibGljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDtWVzICJJbnNlcmlyIHRleHRvIGRvIEZBUSBlIGxpbmsiIC8gIkluc2VyaXIgdG9kbyBvIEZBUSBlIGxpbmsiIGVtIEFnZW50RkFRWm9vbVNtYWxsIHBhcmEgQXJ0aWdvcyBkZSBGQVEgcMO6YmxpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnTW9zdHJhciBib3TDtWVzICJJbnNlcmlyIHRleHRvIGRvIEZBUSIgLyAiSW5zZXJpciB0b2RvIG8gRkFRIiBlbSBBZ2VudEZBUVpvb21TbWFsbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnTW9zdHJhciBhcnRpZ28gRkFRIGNvbSBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdNb3N0cmFyIGNhbWluaG8gRkFRIHNpbSAvIG7Do28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhciBpdGVucyBpbnbDoWxpZG9zIG5vIHJlc3VsdGFkbyBkbyBFeHBsb3JhZG9yIGRlIEZBUSBuYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnTW9zdHJhciBpdGVucyBkZSBzdWJjYXRlZ29yaWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIGFzIMO6bHRpbWFzIGFsdGVyYcOnw7VlcyBkZSBpdGVucyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgb3Mgw7psdGltb3MgaXRlbnMgY3JpYWRvcyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICdNb3N0cmUgYXMgZXN0cmVsYXMgcGFyYSBvcyBhcnRpZ29zIGNvbSB1bWEgY2xhc3NpZmljYcOnw6NvIGlndWFsIG91IG1haW9yIGRvIHZhbG9yIGRlZmluaWRvIChkZWZpbmEgbyB2YWxvciBcJzBcJyBwYXJhIGRlc2F0aXZhciBhIHNhw61kYSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIG9zIDEwIGl0ZW5zIHN1cGVyaW9yIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciB2b3Rhw6fDo28gZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBxdWUgcGVybWl0ZSBsaWdhciB1bSBGQVEgY29tIG91dHJvIG9iamV0byBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGV4Y2x1aXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhY2Vzc2FyIG8gaGlzdMOzcmljbyBkZSB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSB2b2x0YXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBpbXByaW1pciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnU29sdcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTaW50b21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ0FwZW5hcyB0ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdPIGlkaW9tYSBwYWRyw6NvIHBhcmEgb3MgYXJ0aWdvcyBkZXNzZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVtIEZBUSwgZXhlbXBsbyBGQVEgIyBLQiAjICMgTXlGQVEuIE8gcGFkcsOjbyDDqSBGQVEgIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0ZBUVwnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdGQVFcJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnUGFpIGUgZmlsaG9cJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnQ2hhbWFkb1wnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdOb3JtYWxcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdDaGFtYWRvXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ1BhaSBlIGZpbGhvXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ0NvcnBvIGRvIGNoYW1hZG8gcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnTyBhc3N1bnRvIGRvIGNoYW1hZG8gcGFyYSBhcHJvdmHDp8OjbyBkZSB1bSBhcnRpZ28gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnSXRlbSBkYSBiYXJyYSBkZSBmZXJyYW1lbnRhcyBwYXJhIHVtIGF0YWxoby4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdleHRlcm5vIChjbGllbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJubyAoYWdlbnRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdww7pibGljbyAodG9kb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ3DDumJsaWNvIChww7pibGljbyknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdBZGljaW9uYXIgQXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ1BhbGF2cmFzLWNoYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAnVW1hIGNhdGVnb3JpYSDDqSBuZWNlc3PDoXJpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdBcHJvdmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIENhdGVnb3JpYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJ0FkaWNpb25hciBDYXRlZ29yaWEgZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIENhdGVnb3J5J30gPSAnRWRpdGFyIENhdGVnb3JpYSBkZSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAnQWRpY2lvbmFyIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdBZGljaW9uYXIgY2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICdBbHRlcmFyIGNhdGVnb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1N1YmNhdGVnb3JpYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1BvciBmYXZvciwgc2VsZWNpb25lIHBlbG8gbWVub3MgdW0gZ3J1cG8gZGUgcGVybWlzc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ0dydXBvcyBkZSBhdGVuZGVudGVzIHF1ZSBwb2RlbSBhY2Vzc2FyIGFydGlnb3MgbmVzdGEgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAnU2Vyw6EgZXhpYmlkbyBjb21vIGNvbWVudMOhcmlvIG5hIGxpc3RhIGRlIGVudHJhZGFzIGRhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnVm9jw6ogcmVhbG1lbnRlIHF1ZXIgYXBhZ2FyIGVzdGEgY2F0ZWdvcmlhPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ1ZvY8OqIG7Do28gcG9kZSByZW1vdmVyIGVzc2EgY2F0ZWdvcmlhLiBFbGEgw6kgdXRpbGl6YWRhIHBvciBwZWxvIG1lbm9zIHVtIEFydGlnbyBkYSBGQVEgZS9vdSDDqSBwYWkgZGUgcGVsbyBtZW5vcyB1bWEgb3V0cmEgY2F0ZWdvcmlhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdFc3RhIGNhdGVnb3JpYSDDqSB1dGlsaXphZGEgbm8ocykgc2VndWludGUocykgYXJ0aWdvKHMpIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdFc3RhIGNhdGVnb3JpYSDDqSBwYWkgZGFzIHNlZ3VpbnRlcyBzdWJjYXRlZ29yaWFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ1ZvY8OqIHJlYWxtZW50ZSBxdWVyIGV4Y2x1aXIgZXN0ZSBhcnRpZ28gRkFRPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0V4cGxvcmFyIGEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ0J1c2NhIFLDoXBpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0NvcmluZ2FzIHPDo28gcGVybWl0aWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAnUGVzcXVpc2EgQXZhbsOnYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICdTdWJjYXRlZ29yaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0FydGlnb3MgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnU3ViY2F0ZWdvcmlhcyBuw6NvIGVuY29udHJhZGFzLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdMOzcmljbyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZcO6ZG8gZG8gSGlzdMOzcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBKb3JuYWwgRkFRLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXJlbmNpYW1lbnRvIGRlIElkaW9tYXMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgSWRpb21hIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ0VkaXRhciBJZGlvbWEgZG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ1VzZSBlc3NlIHJlY3Vyc28gc2Ugdm9jw6ogZGVzZWphIHRyYWJhbGhhciBjb20gbcO6bHRpcGxvcyBpZGlvbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICdBZGljaW9uYXIgaWRpb21hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0FkaWNpb25hciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0VkaXRhciBJZGlvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1ZvY8OqIHJlYWxtZW50ZSBxdWVyIGV4Y2x1aXIgZXN0ZSBpZGlvbWE/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ1ZvY8OqIG7Do28gcG9kZSBleGNsdWlyIGVzdGUgaWRpb21hLiBFbGUgw6kgdXNhZG8gZW0gcGVsbyBtZW5vcyB1bSBhcnRpZ28gRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0VzdGUgaWRpb21hIMOpIHVzYWRvIG5vcyBzZWd1aW50ZXMgYXJ0aWdvKHMpIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0NvbmZpZ3VyYcOnw7VlcyBkZSBDb250ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdBcnRpZ29zIEZBUSBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOw6NvIGZvcmFtIGVuY29udHJhZG9zIGRhZG9zIGRlIEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ2RlIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnUGFsYXZyYS1jaGF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnVm90byAoZXguIElndWFsIGEgMTAgb3UgbWFpb3IgcXVlIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdQb250dWHDp8OjbyAoZXguIElndWFsIGEgMjUlIG91IG1haW9yIHF1ZSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAnQXByb3ZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnQWx0ZXJhZG8gcGVsYSDDumx0aW1hIHZleiBwb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdIb3LDoXJpbyBkZSBjcmlhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdIb3LDoXJpbyBkZSBjcmlhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSAoZW50cmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnSG9yw6FyaW8gZGUgYWx0ZXJhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdIb3LDoXJpbyBkZSBhbHRlcmHDp8OjbyBkZSBhcnRpZ28gZGUgRkFRIChlbnRyZSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFRLVRleHRvQ29tcGxldG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdCdXNjYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICdTZWxlw6fDo28gZGUgcGVyZmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdWb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdTZW0gY29uZmlndXJhw6fDtWVzIGRlIHZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdWb3RvcyBlc3BlY8OtZmljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAnZXguIElndWFsIGEgMTAgb3UgbWFpb3IgcXVlIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdQb250dWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAnU2VtIGNvbmZpZ3VyYcOnw7VlcyBkZSBwb250dWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnUG9udHVhw6fDo28gZXNwZWPDrWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICdleC4gSWd1YWwgYSAyNSUgb3UgbWFpb3IgcXVlIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ0hvcsOhcmlvIGRlIGNyaWHDp8OjbyBkZSBhcnRpZ28gZGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnSG9yw6FyaW8gZGUgYWx0ZXJhw6fDo28gZGUgYXJ0aWdvIGRlIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDo28gZG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ05vdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdWb3Rvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdOZW5odW0gdm90byBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnTmVuaHVtIHZvdG8gZW5jb250cmFkbyEgU2VqYSBvIHByaW1laXJvIGEgYXZhbGlhciBlc3RlIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdCYWl4YXIgYW5leG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnUGFyYSBhYnJpciBsaW5rcyBub3MgYmxvY29zIGRlIGRlc2NyacOnw6NvIHNlZ3VpbnRlcywgdGFsdmV6IHZvY8OqIHByZWNpc2UgcHJlc3Npb25hciBDdHJsLCBDbWQgb3UgU2hpZnQgZW5xdWFudG8gY2xpY2Egbm8gbGluayAoZGVwZW5kZW5kbyBkbyBzZXUgbmF2ZWdhZG9yIG91IHNpc3RlbWEgb3BlcmFjaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0VzdGUgYXJ0aWdvIHRlIGFqdWRvdT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdwb3VjbyDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdtdWl0byDDunRpbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAnQWRpY2lvbmFyIGFzc3VudG8gbm8gYXJ0aWdvIGRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5zZXJpciB0ZXh0byBkbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnSW5zZXJpciB0b2RvIG8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ0luc2VyaXIgbGluayBkbyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ0luc2VyaXIgdGV4dG8gZG8gRkFRIGUgbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnSW5zZXJpciB0b2RvIG8gRkFRIGUgbGluayc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ05lbmh1bSBhcnRpZ28gRkFRIGVuY29udHJhZG8uJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnSXNzbyBwb2RlIHNlciDDunRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyByZXN1bHRhZG9zIMO6dGVpcyBwYXJhIG8gYXNzdW50byBvdSB0ZXh0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ0luc2lyYSB1bSBhc3N1bnRvIG91IHRleHRvIHBhcmEgbGlzdGFyIG9zIHJlY3Vyc29zIMO6dGVpcy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1Blc3F1aXNhIGNvbXBsZXRhIGRlIHRleHRvcyBlbSBhcnRpZ29zIEZBUSAocG9yIGV4ZW1wbG8sICJKbypvIiBvciAiV2lsbCoiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1Jlc3RyacOnw7VlcyBkZSB2b3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdBcGVuYXMgYXJ0aWdvcyBkZSBGQVEgY29tIHZvdG9zLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnUmVzdHJpw6fDtWVzIGRlIHBvbnR1YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0FwZW5hcyBhcnRpZ29zIGRlIEZBUSBjb20gcG9udHVhw6fDo28uLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICdSZXN0cmnDp8O1ZXMgZGUgdGVtcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ0FwZW5hcyBhcnRpZ29zIGRlIEZBUSBjcmlhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ0FwZW5hcyBhcnRpZ29zIGRlIEZBUSBjcmlhZG9zIGVudHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1BlcmZpbCBkZSBwZXNxdWlzYSBjb21vIG1vZGVsbz8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRvIEFydGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ1Byb2N1cmUgcG9yIGFydGlnb3MgY29tIHBhbGF2cmFzLWNoYXZlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ1DDumJsaWNvJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdWb2x0YXIgcGFyYSBhIGxpc3RhIGRlIGVudHJhZGFzIGRhIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnVm9jw6ogcHJlY2lzYSBkZSBwZXJtaXNzw6NvIHJ3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRhcyBjYXRlZ29yaWFzIG9uZGUgbyB1c3XDoXJpbyBwb3NzdWEgcGVybWlzc8OjbyBkZSBsZWl0dXJhIGUgZXNjcml0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTsOjbyBmb2kgZW5jb250cmFkbyB1bSBpZGlvbWEgcGFkcsOjbyBlIHTDo28gcG91Y28gY3JpYXIgdW0gbm92by4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdOZWNlc3PDoXJpYSBDYXRlZ29yeUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdVbWEgY2F0ZWdvcmlhIHByZWNpc2EgdGVyIHVtIG5vbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdFc3RhIGNhdGVnb3JpYSBqw6EgZXhpc3RlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJ0Vzc2EgY2F0ZWdvcmlhIGrDoSBleGlzdGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtYSBDYXRlZ29yeUlEIGZvaSBpbmZvcm1hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBleGNsdWlyIGEgY2F0ZWdvcmlhICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGF0dWFsaXphZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdDYXRlZ29yaWEgZGUgRkFRIGFkaWNpb25hZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ0V4Y2x1aXIgY2F0ZWdvcmlhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBJdGVtSUQgZm9pIGluZm9ybWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICdWb2PDqiBuw6NvIHBvc3N1w60gaW5mb3JtYcOnw7VlcyBwYXJhIGVzc2EgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgZGVsZXRhciBvIGFydGlnbyAlcywgZG8gRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0EgQ2F0ZWdvcmlhSUQgJVMgw6kgaW52w6FsaWRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOw6NvIMOpIHBvc3PDrXZlbCBtb3N0cmFyIG8gaGlzdMOzcmljbywgbsOjbyBmb2kgaW5mb3JtYWRvIHVtIEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICdIaXN0w7NyaWNvIGRlIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0pvcm5hbCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnTmVjZXNzw6FyaWEgYSBvcMOnw6NvIGRlIGNvbmZpZ3VyYcOnw6NvIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ09ww6fDo28gZGUgY29uZmlndXJhw6fDo28gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgcHJlY2lzYSBzZXIgdW0gdmFsb3IgSEFTSCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkYXMgb3DDp8O1ZXMgZGUgY29uZmlndXJhw6fDo28gcGFyYSBhIHZpc3VhbGl6YcOnw6NvICIlcyIhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBJZGlvbWFJRCBpbmZvcm1hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ08gbm9tZSDDqSBvYnJpZ2F0w7NyaW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRXNzZSBpZGlvbWEgasOhIGV4aXN0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGFwYWdhciBvIGlkaW9tYSUgcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnSWRpb21hIGRlIEZBUSBhdHVhbGl6YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnSWRpb21hIGRlIEZBUSBhZGljaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdFeGNsdWlyIGlkaW9tYSAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAnUmVzdWx0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnw5psdGltYSBhdHVhbGl6YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0NhbXBvcyBkaW7Dom1pY29zIGRhIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFSaWNoVGV4dC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gJXMgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtICVzIGluZm9ybWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGNhcnJlZ2FyIExhbmd1YWdlT2JqZWN0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZW5odW0gcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnTsO6bWVybyBkYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBUZW1wbyBkZSBDcmlhw6fDo28gZGUgSXRlbSAoYW50ZXMvZGVwb2lzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEgVGVtcG8gZGUgQ3JpYcOnw6NvIGRlIEl0ZW0gKGVudHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUSBUZW1wbyBkZSBBbHRlcmHDp8OjbyBkbyBJdGVtIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnVGVtcG8gZGUgQWx0ZXJhw6fDo28gZGUgRkFRIChlbnRyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnSWd1YWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJ01haW9yIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnTWFpb3ItaWd1YWwgcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ01lbm9yIHF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnTWVub3ItaWd1YWwgcXVlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ05lY2Vzc2l0YSBkbyBBcnF1aXZvSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ09icmlnYWRvIHBvciBzZXUgdm90byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdWb2PDqiBqw6Egdm90b3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnTmVuaHVtYSBwb250dWHDp8OjbyBzZWxlY2lvbmFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGluZyBtZWNoYW5pc20gaXMgbm90IGVuYWJsZWQhJ30gPSAnTyBtZWNhbmlzbW8gZGUgdm90YcOnw6NvIG7Do28gZXN0w6EgaGFiaWxpdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICdPIHBlc28gZG9zIHZvdG9zIG7Do28gZm9pIGRlZmluaWRvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdJbXByaW1pciBhcnRpZ28gZGEgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnQ3JpYWRvIGVudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJ05lY2Vzc2l0YSBkbyBJdGVtSUQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdBcnRpZ29zIGRhIEZBUSAocmVjw6ltIGNyaWFkb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknfSA9ICdBcnRpZ29zIGRhIEZBUSAoYWx0ZXJhZG9zIHJlY2VudGVtZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnQXJ0aWdvcyBkYSBGQVEgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICdTZW0gVGlwbyBpbmZvcm1hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ1RpcG8gZGV2ZSBzZXIgw5psdGltb0NyaWFkbyBvdSDDmmx0aW1vQWx0ZXJhZG8gb3UgVG9wMTAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGNyaWFyIG8gYXJxdWl2byBSU1MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChGQVEtVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtIENsaWVudGUgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIENsaWVudGUgKEZBUS1UZXh0b0NvbXBsZXRvKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSBQw7pibGljbyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIFDDumJsaWNvIChGQVEtVGV4dG9Db21wbGV0byknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnVW1hIHByb3BvcsOnw6NvIMOpIG5lY2Vzc8OhcmlhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAnTyBhcnRpZ28gZXN0w6EgdmF6aW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ0FydGlnb3MgZGEgRkFRIGNyaWFkb3MgcmVjZW50ZW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdBcnRpZ29zIGRhIEZBUSBhdHVhbGl6YWRvcyByZWNlbnRlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdUb3AgMTAgYXJ0aWdvcyBkYSBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwbyBkZSBjb250ZcO6ZG8nOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ2ludGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ3DDumJsaWNvJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdVbSBmaWx0cm8gZGUgc2HDrWRhIEhUTUwgcGFyYSBhZGljaW9uYXIgbGlua3MgcGFyYSB0csOhcyB1bWEgc2Vxw7zDqm5jaWEgZGVmaW5pZGEuIE8gZWxlbWVudG8gZGUgaW1hZ2VtIHBlcm1pdGUgZG9pcyB0aXBvcyBkZSBlbnRyYWRhLiBQcmltZWlybywgbyBub21lIGRlIHVtYSBpbWFnZW0gKGZhcS5wbmcsIHBvciBleGVtcGxvKS4gTmVzdGUgY2FzbywgbyBjYW1pbmhvIGRhIGltYWdlbSBPVFJTIHNlcsOhIHVzYWRvLiBBIHNlZ3VuZGEgcG9zc2liaWxpZGFkZSDDqSBpbnNlcmlyIG8gbGluayBwYXJhIGEgaW1hZ2VtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICdBZGljaW9uYXIgQXJ0aWdvIGRlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ0NTUyBjb3IgcGFyYSBvIHJlc3VsdGFkbyBkYSB2b3Rhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdUZW1wbyBkZSBleHBpcmHDp8OjbyBkZSBjYWNoZSBwYXJhIGl0ZW5zIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgQ2F0ZWdvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnR2VyZW5jaWFtZW50byBkZSBDYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICdJbXByaW1pciBGQVEgZGUgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ1pvb20gZW0gRkFRIGRlIENsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnQnVzY2EgZW0gRkFRIGRlIENsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICdGQVEgZGUgQ2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQ2FzYXMgZGVjaW1haXMgZG8gcmVzdWx0YWRvIGRhIHZvdGHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05vbWUgcGFkcsOjbyBkYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdJZGlvbWEgcGFkcsOjbyBwYXJhIG9zIGFydGlnb3MgRkFRIG5vIG1vZG8gZGUgaWRpb21hIMO6bmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIHBhZHLDo28gZG9zIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBkZSBGQVEgYSBzZXJlbSBleGliaWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnUHJpb3JpZGFkZSBwYWRyw6NvIGRlIGNoYW1hZG9zIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdFc3RhZG8gcGFkcsOjbyBkZSBlbnRyYWRhIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0VzdGFkbyBwYWRyw6NvIGRlIGNoYW1hZG9zIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ1RpcG8gcGFkcsOjbyBkbyBjaGFtYWRvcyBwYXJhIGEgYXByb3Zhw6fDo28gZGUgYXJ0aWdvcyBkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICdWYWxvciBwYWRyw6NvIHBhcmEgbyBwYXLDom1ldHJvIGRlIFJlY3Vyc28gcGFyYSBhIGludGVyZmFjZSBww7pibGljYS4gTyBwYXLDom1ldHJvIGRlIGHDp8OjbyDDqSB1c2FkbyBub3Mgc2NyaXB0cyBkbyBzaXN0ZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5hIEHDp8O1ZXMgb25kZSB1bSBib3TDo28gZGUgY29uZmlndXJhw6fDtWVzIGVzdMOhIGRpc3BvbsOtdmVsIG5vIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlPSJjb21wbGV4IikuIE9ic2VydmUgcXVlIGVzc2FzIGHDp8O1ZXMgZGV2ZW0gdGVyIHJlZ2lzdHJhZG8gb3Mgc2VndWludGVzIGFycXVpdm9zIEpTIGUgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBlIENvcmUuQWdlbnQgLkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnRGVmaW5lIHNlIG8gdMOtdHVsbyBkbyBGQVEgZGV2ZSBzZXIgY29uY2F0ZW5hZG8gYW8gYXNzdW50byBkbyBhcnRpZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICdEZWZpbmUgdW0gbcOzZHVsbyBkZSByZXN1bW8gcGFyYSBtb3N0cmFyIGEgdmlzdWFsaXphw6fDo28gcGVxdWVuYSBkZSB1bSBqb3JuYWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW0gbcOzZHVsbyBkZSByZXN1bW8gcGFyYSBtb3N0cmFyIGEgdmlzdWFsaXphciBkZSB1bWEgcGVxdWVuYSBsaXN0YSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgZW0gdW1hIHBlc3F1aXNhIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIGVtIHVtYSBwZXNxdWlzYSBGQVEgZGEgaW50ZXJmYWNlIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gRkFRIHBhcmEgY2xhc3NpZmljYXIgbyBGQVEgbm8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIEZBUSBwYXJhIGNsYXNzaWZpY2FyIG8gRkFRIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRlIEZBUSBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4gQWNpbWE6IEEgbWFpcyBhbnRpZ2Egbm8gdG9wby4gQWJhaXhvOiBtYWlzIHJlY2VudGVzIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkZSBGQVEgbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLiBBY2ltYTogQSBtYWlzIGFudGlnYSBubyB0b3BvLiBBYmFpeG86IG1haXMgcmVjZW50ZXMgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZGUgRkFRIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuIEFjaW1hOiBBIG1haXMgYW50aWdhIG5vIHRvcG8uIEFiYWl4bzogbWFpcyByZWNlbnRlcyBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIGRlIHBlc3F1aXNhIGRlIEZBUSBwYWRyw6NvIG5hIHRlbGEgZGUgcHJvY3VyYSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGluZm9ybWHDp8OjbyBhIHNlciBpbnNlcmlkYSBubyBjaGFtYWRvIGJhc2VhZG8gZW0gRkFRLiAiVG9kbyBvIEZBUSIgaW5jbHVpIHRleHRvLCBhbmV4b3MgZSBpbWFnZW5zIGVtYnV0aWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnRGVmaW5lIG9zIHBhcsOibWV0cm9zIHBhcmEgbyBiYWNrZW5kIGRvIGRhc2hib2FyZC4gIkxpbWl0ZSIgZGVmaW5lIG8gbsO6bWVybyBkZSBlbnRyYWRhcyBleGliaWRhcyBwb3IgcGFkcsOjby4gIkdydXBvIiDDqSB1c2FkbyBwYXJhIHJlc3RyaW5naXIgbyBhY2Vzc28gYW8gcGx1Z2luIChleC46IEdydXBvOiBhZG1pbiwgZ3J1cG8xLCBncnVwbzIpLiAiUGFkcsOjbyIgaW5kaWNhIHNlIG8gcGx1Z2luIMOpIGhhYmlsaXRhZG8gcG9yIHBhZHLDo28gb3Ugc2UgbyB1c3XDoXJpbyBwcmVjaXNhIGhhYmlsaXTDoS1sbyBtYW51YWxtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5vIEdlcmVuY2lhZG9yIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5vIGpvcm5hbCBGQVEuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGEgY29sdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgbW9zdHJhZGFzIG5hIHBlc3F1aXNhIEZBUS4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5lIG9uZGUgbyBsaW5rICJJbnNlcmlyIEZBUSIgc2Vyw6EgZXhpYmlkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pw6fDo28gZGUgY2FtcG9zIGRlIHRleHRvIGxpdnJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdFeGNsdWlyIGVzdGUgRkFRISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIGV4aWJpZG9zIG5hIHRlbGEgZGUgYWRpY2lvbmFyIEZBUSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBleGliaWRvcyBuYSB0ZWxhIGRlIGVkaXRhciBGQVEgZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgZXhpYmlkb3MgbmEgdGVsYSBkZSBpbXByaW1pciBGQVEgZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIEZBUSBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBleGliaWRvcyBuYSB0ZWxhIHZpc8OjbyBnZXJhbCBkZSBGQVEgZW0gZm9ybWF0byBwZXF1ZW5vIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIGV4aWJpZG9zIG5hIHRlbGEgZGUgem9vbSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ0VkaXRhciBlc3RlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnUGVybWl0aXIgdsOhcmlvcyBpZGlvbWFzIG5vIG3Ds2R1bG8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICdBdGl2YXIgb3MgcmVjdXJzb3MgZGVzc2UgYXJ0aWdvIHBhcmEgYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdQZXJtaXRpciBtZWNhbmlzbW8gZGUgQXZhbGlhw6fDo28gbm8gbcOzZHVsbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnRXhwbG9yYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnRkFRIEFKQVggUmVzcG9uZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnRkFRIEFKQVggUmVzcG9uZGVyIGVtIFJpY2h0ZXh0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ8OBcmVhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICfDgXJlYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnRGVsZXRhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJ0VkaXRhciBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJ0hpc3TDs3JpY28gZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRhIFZpc8OjbyBHZXJhbCAiUGVxdWVubyIgZG8gSm9ybmFsIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSBWaXPDo28gR2VyYWwgRkFRICJQZXF1ZW5vIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnaW1wcmltaXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnRkFRIGJ1c2NhIHNlcnZpZG9yIHJvdGVhZG9yIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ0NhbXBvNCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICdDYW1wbzUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICdGQVEgY29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnR3J1cG8gcGFyYSBhIGFwcm92YcOnw6NvIGRvcyBhcnRpZ29zIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ0hpc3TDs3JpY28gZGVzdGUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdJbmNsdWlyIGNhbXBvcyBpbnRlcm5vcyBkZSB1bSBDaGFtYWRvIGJhc2UgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0luY2x1aXIgbyBub21lIGRlIGNhZGEgY2FtcG8gZW0gdW0gQ2hhbWFkbyBiYXNlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZhY2VzIG9uZGUgYSBwZXNxdWlzYSByw6FwaWRhIGRldmUgc2VyIG1vc3RyYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSm9ybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGlkaW9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICdHZXJlbmNpYW1lbnRvIGRlIElkaW9tYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnTGltaXRlIHBhcmEgYSBwZXNxdWlzYSBjb25zdHJ1aXIgYSBsaXN0YSBkZSBwYWxhdnJhcy1jaGF2ZSBkZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0xpbmsgZGUgb3V0cm8gYXJ0aWdvIHBhcmEgZXN0ZSBpdGVtIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ0xpc3RhIGRvIG5vbWVzIGRlIGZpbGFzIHBhcmEgb3MgcXVhaXMgbyByZWN1cnNvIGRlc3NlIGFydGlnbyBlc3TDoSBhdGl2YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSBkb3MgdGlwb3MgZGUgZXN0YWRvIHF1ZSBwb2RlIHNlciB1dGlsaXphZG8gbmEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgZG9zIHRpcG9zIGRlIGVzdGFkbyBxdWUgcG9kZSBzZXIgdXRpbGl6YWRvIG5hIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgZG9zIHRpcG9zIGRlIGVzdGFkbyBxdWUgcG9kZSBzZXIgdXRpbGl6YWRvIG5hIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPIG7Dum1lcm8gbcOheGltbyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIHJlc3VsdGFkbyBkbyBHZXJlbmNpYWRvciBGQVEgZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZG8gR2VyZW5jaWFkb3IgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gam9ybmFsIEZBUSBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ08gbsO6bWVybyBtw6F4aW1vIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gbm8gcmVzdWx0YWRvIGRlIHVtYSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTyBuw7ptZXJvIG3DoXhpbW8gZGUgYXJ0aWdvcyBGQVEgcGFyYSBzZXIgZXhpYmlkbyBubyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBwdWJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBsaXN0YSBkZSBlbnRyYWRhcyBkYSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbWFuaG8gbcOheGltbyBkZSB0w610dWxvcyBlbSB1bSBhcnRpZ28gRkFRIGEgc2VyZW0gZXhpYmlkb3MgbmEgbGlzdGEgZGUgZW50cmFkYXMgZGEgRkFRIGRhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBQZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFtYW5obyBtw6F4aW1vIGRlIHTDrXR1bG9zIGVtIHVtIGFydGlnbyBGQVEgYSBzZXJlbSBleGliaWRvcyBuYSBQZXNxdWlzYSBkZSBGQVEgZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5hIFBlc3F1aXNhIGRlIEZBUSBkYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1hbmhvIG3DoXhpbW8gZGUgdMOtdHVsb3MgZW0gdW0gYXJ0aWdvIEZBUSBhIHNlcmVtIGV4aWJpZG9zIG5vIEpvcm5hbCBGQVEgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGdlcmFyIHBlcmZpbCBIVE1MIE9wZW5TZWFyY2ggcGFyYSBwZXNxdWlzYXMgY3VydGFzIGRlIEZBUSBuYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnTm92byBBcnRpZ28gZGUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICdOb3ZvcyBhcnRpZ29zIEZBUSBwcmVjaXNhbSBkZSBhcHJvdmHDp8OjbyBhbnRlcyBkZSBzZXIgcHVibGljYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIG5vIEdlcmVuY2lhZG9yIEZBUSBkYSBpbnRlcmZhY2UgcHVibGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGFydGlnb3MgRkFRIHBhcmEgc2VyIGV4aWJpZG8gZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBhcnRpZ29zIEZBUSBwYXJhIHNlciBleGliaWRvIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIHB1YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIG1vc3RyYWRvcyBlbSDDumx0aW1hcyBhbHRlcmHDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTsO6bWVybyBkZSBpdGVucyBtb3N0cmFkb3MgZW0gw7psdGltYXMgY3JpYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICdOw7ptZXJvIGRlIGl0ZW5zIG1vc3RyYWRvcyBubyByZWN1cnNvIHRvcCAxMC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICdMaW1pdGUgZGUgc2HDrWRhIHBhcmEgb3MgYXJ0aWdvcyBkZXNzZSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRlIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgRkFRIHPDo28gbW9zdHJhZG9zKSBkYSB2aXPDo28gZ2VyYWwgcGVxdWVuYSBkbyBqb3JuYWwgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGUgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBGQVEgc8OjbyBtb3N0cmFkb3MpIGRhIHZpc8OjbyBnZXJhbCBwZXF1ZW5hIGRlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnQgdGhpcyBGQVEnfSA9ICdJbXByaW1pciBlc3RlIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ0ltcHJpbWlyIEZBUSBww7pibGljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ1pvb20gZW0gRkFRIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICdCdXNjYSBGQVEgcMO6YmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnRkFRIHDDumJsaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGaWxhIHBhcmEgYSBhcHJvdmHDp8OjbyBkb3MgYXJ0aWdvcyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnQ29uZGnDp8OjbyBwYXJhIGEgYXZhbGlhw6fDo28uIENoYXZlIGRldmUgc2VyIGVtIHBlcmNlbnR1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICdTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICdQZXNxdWlzYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICdQZXNxdWlzYXIgRkFRIFBlcXVlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICdQZXNxdWlzYXIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnU2VsZWNpb25lIHF1YW50b3MgaXRlbnMgZGV2ZW0gc2VyIG1vc3RyYWRvcyBuYSB2aXPDo28gZ2VyYWwgZG8gZGnDoXJpbyAiU21hbGwiIHBvciBwYWRyw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ1NlbGVjaW9uZSBxdWFudG9zIGl0ZW5zIGRldmVtIHNlciBtb3N0cmFkb3MgbmEgdmlzw6NvIGdlcmFsICJTbWFsbCIgcG9yIHBhZHLDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBhIGFsdHVyYSBwYWRyw6NvIChlbSBwaXhlbHMpIGRlIGNhbXBvcyBIVE1MIGVtYnV0aWRvcyBubyBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnQ29uZmlndXJhIGEgYWx0dXJhIHBhZHLDo28gKGVtIHBpeGVscykgZGUgY2FtcG9zIEhUTUwgZW1idXRpZG9zIGVtIEN1c3RvbWVyRkFRWm9vbSAoZSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnQ29uZmlndXJhIGEgYWx0dXJhIG3DoXhpbWEgKGVtIHBpeGVscykgZGUgY2FtcG9zIEhUTUwgZW1idXRpZG9zIG5vIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdDb25maWd1cmEgYSBhbHR1cmEgbcOheGltYSAoZW0gcGl4ZWxzKSBkZSBjYW1wb3MgSFRNTCBlbWJ1dGlkb3MgZW0gQ3VzdG9tZXJGQVFab29tIChlIFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ01vc3RyYSBib3TDo28gIkluc2VyaXIgTGluayBGQVEiIGVtIEFtcGxpYcOnw6NvIHBlcXVlbmEgcGFyYSBvIGFydGlnb3MgRkFRIHDDumJsaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMO1ZXMgIkluc2VyaXIgdGV4dG8gZG8gRkFRIGUgbGluayIgLyAiSW5zZXJpciB0b2RvIG8gRkFRIGUgbGluayIgZW0gQWdlbnRGQVFab29tU21hbGwgcGFyYSBBcnRpZ29zIGRlIEZBUSBww7pibGljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdNb3N0cmFyIGJvdMO1ZXMgIkluc2VyaXIgdGV4dG8gZG8gRkFRIiAvICJJbnNlcmlyIHRvZG8gbyBGQVEiIGVtIEFnZW50RkFRWm9vbVNtYWxsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdNb3N0cmFyIGFydGlnbyBGQVEgY29tIEhUTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ01vc3RyYXIgY2FtaW5obyBGQVEgc2ltIC8gbsOjby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmFyIGl0ZW5zIGludsOhbGlkb3Mgbm8gcmVzdWx0YWRvIGRvIEV4cGxvcmFkb3IgZGUgRkFRIG5hIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdNb3N0cmFyIGl0ZW5zIGRlIHN1YmNhdGVnb3JpYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgYXMgw7psdGltYXMgYWx0ZXJhw6fDtWVzIGRlIGl0ZW5zIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnTW9zdHJhciBvcyDDumx0aW1vcyBpdGVucyBjcmlhZG9zIGVtIGludGVyZmFjZXMgZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJ01vc3RyZSBhcyBlc3RyZWxhcyBwYXJhIG9zIGFydGlnb3MgY29tIHVtYSBjbGFzc2lmaWNhw6fDo28gaWd1YWwgb3UgbWFpb3IgZG8gdmFsb3IgZGVmaW5pZG8gKGRlZmluYSBvIHZhbG9yIFwnMFwnIHBhcmEgZGVzYXRpdmFyIGEgc2HDrWRhKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ01vc3RyYXIgb3MgMTAgaXRlbnMgc3VwZXJpb3IgZW0gaW50ZXJmYWNlcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdNb3N0cmFyIHZvdGHDp8OjbyBlbSBpbnRlcmZhY2VzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGxpZ2FyIHVtIEZBUSBjb20gb3V0cm8gb2JqZXRvIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcXVlIHBlcm1pdGUgZXhjbHVpciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZXNzYXIgbyBoaXN0w7NyaWNvIGRlIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW0gRkFRIG5vIG1vZG8gZGUgZXhpYmnDp8OjbyBhbXBsaWFkYSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIHZvbHRhciB1bSBGQVEgbm8gbW9kbyBkZSBleGliacOnw6NvIGFtcGxpYWRhIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtIEZBUSBubyBtb2RvIGRlIGV4aWJpw6fDo28gYW1wbGlhZGEgbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICdTb2x1w6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ1NpbnRvbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnQXBlbmFzIHRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ08gaWRpb21hIHBhZHLDo28gcGFyYSBvcyBhcnRpZ29zIGRlc3NlIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnTyBpZGVudGlmaWNhZG9yIHBhcmEgdW0gRkFRLCBleGVtcGxvIEZBUSAjIEtCICMgIyBNeUZBUS4gTyBwYWRyw6NvIMOpIEZBUSAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdFc3NhIGNvbmZpZ3VyYcOnw6NvIGRlZmluZSBxdWUgdW0gb2JqZXRvIFwnRkFRXCcgcG9kZSBzZXIgcmVsYWNpb25hZG8gY29tIG91dHJvcyBvYmpldG9zIFwnRkFRXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0ZBUVwnIHVzYW5kbyBvIHRpcG8gZGUgdsOtbmN1bG8gXCdQYWkgZSBmaWxob1wnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ0Vzc2EgY29uZmlndXJhw6fDo28gZGVmaW5lIHF1ZSB1bSBvYmpldG8gXCdGQVFcJyBwb2RlIHNlciByZWxhY2lvbmFkbyBjb20gb3V0cm9zIG9iamV0b3MgXCdDaGFtYWRvXCcgdXNhbmRvIG8gdGlwbyBkZSB2w61uY3VsbyBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnRXNzYSBjb25maWd1cmHDp8OjbyBkZWZpbmUgcXVlIHVtIG9iamV0byBcJ0ZBUVwnIHBvZGUgc2VyIHJlbGFjaW9uYWRvIGNvbSBvdXRyb3Mgb2JqZXRvcyBcJ0NoYW1hZG9cJyB1c2FuZG8gbyB0aXBvIGRlIHbDrW5jdWxvIFwnUGFpIGUgZmlsaG9cJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnQ29ycG8gZG8gY2hhbWFkbyBwYXJhIGFwcm92YcOnw6NvIGRlIHVtIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdPIGFzc3VudG8gZG8gY2hhbWFkbyBwYXJhIGFwcm92YcOnw6NvIGRlIHVtIGFydGlnbyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICdJdGVtIGRhIGJhcnJhIGRlIGZlcnJhbWVudGFzIHBhcmEgdW0gYXRhbGhvLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybm8gKGNsaWVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsIChhZ2VudCknfSA9ICdpbnRlcm5vIChhdGVuZGVudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ3DDumJsaWNvICh0b2RvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAncMO6YmxpY28gKHDDumJsaWNvKSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGB0YLQsNGC0YzRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICfQmtC70Y7Rh9C10LLRi9C1INGB0LvQvtCy0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfQndGD0LbQvdC+INCy0YvQsdGA0LDRgtGMINC60LDRgtC10LPQvtGA0LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfQntC00L7QsdGA0LXQvdC+JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60LDRgtC10LPQvtGA0LjRj9C80LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICfQlNC+0LHQsNCy0LjRgtGMINC60LDRgtC10LPQvtGA0LjRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgQ2F0ZWdvcnknfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQutCw0YLQtdCz0L7RgNC40Y4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfQo9C00LDQu9C40YLRjCDQutCw0YLQtdCz0L7RgNC40Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfQn9C+0LTRgNCw0LfQtNC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQo9C60LDQttC40YLQtSDRhdC+0YLRjyDQsdGLINC+0LTQvdGDINCz0YDRg9C/0L/Rgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0L/RiyDQsNCz0LXQvdGC0L7Qsiwg0LjQvNC10Y7RidC40YUg0LTQvtGB0YLRg9C/INC6INGB0YLQsNGC0YzRj9C8INGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ9CR0YPQtNC10YIg0L/QvtC60LDQt9Cw0L3QviDQsiBFeHBsb3JlciDQutCw0Log0LrQvtC80LzQtdC90YLQsNGA0LjQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn0K3RgtGDINC60LDRgtC10LPQvtGA0LjRjiDRg9C00LDQu9GP0YLRjCDQvdC10LvRjNC30Y8hINCSINC90LXQuSDRgdC+0LTQtdGA0LbQuNGC0YHRjyDQutCw0Log0LzQuNC90LjQvNGD0Lwg0L7QtNC90LAg0YHRgtCw0YLRjNGPIEZBUSDQuC/QuNC70Lgg0L7QvdCwINGP0LLQu9GP0LXRgtGB0Y8g0YDQvtC00LjRgtC10LvRjNGB0LrQvtC5INC00LvRjyDQtNGA0YPQs9C40YUg0LrQsNGC0LXQs9C+0YDQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn0JIg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4INC40LzQtdGO0YLRgdGPINGB0LvQtdC00YPRjtGJ0LjQtSDRgdGC0LDRgtGM0LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ9Ct0YLQsCDQutCw0YLQtdCz0L7RgNC40Y8g0Y/QstC70Y/QtdGC0YHRjyDRgNC+0LTQuNGC0LXQu9GM0YHQutC+0Lkg0LTQu9GPINGB0LvQtdC00YPRjtGJ0LjRhSDQv9C+0LTRgNCw0LfQtNC10LvQvtCyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7QuSDRgdGC0LDRgtGM0LggRkFRISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUSDQntCx0LfQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1aWNrIFNlYXJjaCd9ID0gJ9CR0YvRgdGC0YDRi9C5INC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ9Cg0LDQt9GA0LXRiNC10L3QviDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtSDRgdC40LzQstC+0LvQvtCyINGI0LDQsdC70L7QvdCwINGC0LjQv9CwIFwnKlwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfQoNCw0YHRiNC40YDQtdC90L3Ri9C5INC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ9Cf0L7QtNGA0LDQt9C00LXQu9GLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfQn9C+0LTRgNCw0LfQtNC10LvRiyDQvdC1INC90LDQudC00LXQvdGLLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAn0JjRgdGC0L7RgNC40Y8g0LTQu9GPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0L7QtNC10YDQttC40LzQvtC1INC40YHRgtC+0YDQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9GFINC20YPRgNC90LDQu9CwIEZBUSDQvdC10YIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INGP0LfRi9C60LDQvNC4IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAn0JTQvtCx0LDQstC40YLRjCDRj9C30YvQuiDQtNC70Y8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAn0JjQt9C80LXQvdC40YLRjCDRj9C30YvQuiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAn0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSDRjdGC0YMg0YTRg9C90LrRhtC40Y4g0L/RgNC4INC90LXQvtCx0YXQvtC00LjQvNC+0YHRgtC4INGA0LDQsdC+0YLRiyDRgSDQvdC10YHQutC+0LvRjNC60LjQvNC4INGP0LfRi9C60LDQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGP0LfRi9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0Y/Qt9GL0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ9Cf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0YPQtNCw0LvQtdC90LjQtSDRjdGC0L7Qs9C+INGP0LfRi9C60LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ9Ct0YLQvtGCINGP0LfRi9C6INGD0LTQsNC70Y/RgtGMINC90LXQu9GM0LfRjy4g0J3QsCDQvdGR0Lwg0L3QsNC/0LjRgdCw0L3QsCDQutCw0Log0LzQuNC90LjQvNGD0Lwg0L7QtNC90LAg0YHRgtCw0YLRjNGPIEZBUSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICfQrdGC0L7RgiDRj9C30YvQuiDQuNGB0L/QvtC70YzQt9C+0LLQsNC9INCyINGB0LvQtdC00YPRjtGJ0LjRhSDRgdGC0LDRgtGM0Y/RhSBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LrQvtC90YLQtdC60YHRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSDQvdCwINGB0YLRgNCw0L3QuNGG0YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9C1IEZBUSDQvdC1INC90LDQudC00LXQvdGLLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAn0LjQtyA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ9Ca0LvRjtGH0LXQstC+0LUg0YHQu9C+0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn0JPQvtC70L7RgdC+0LLQsNC90LjQtSAo0L3QsNC/0YDQuNC80LXRgCwg0YDQsNCy0L3QviAxMCDQuNC70Lgg0LHQvtC70LXQtSDRh9C10LwgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ9Ce0YbQtdC90LjRgtGMICjQvdCw0L/RgNC40LzQtdGALCDRgNCw0LLQvdC+IDI1JSDQuNC70Lgg0LHQvtC70LXQtSDRh9C10LwgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ9Cj0YLQstC10YDQttC00LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Cf0L7RgdC70LXQtNC90LjQvCDQuNC30LzQtdC90LjQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ9CS0YDQtdC80Y8g0YHQvtC30LTQsNC90LjRjyDRgdGC0LDRgtGM0LggRkFRICjQtNC+L9C/0L7RgdC70LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ9CS0YDQtdC80Y8g0YHQvtC30LTQsNC90LjRjyDRgdGC0LDRgtGM0LggRkFRICjQvNC10LbQtNGDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ9CS0YDQtdC80Y8g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YzQuCBGQVEgKNC00L4v0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzRjyDQuNC30LzQtdC90LXQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSAo0LzQtdC20LTRgyknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAn0J/QvtC70L3QvtGC0LXQutGB0YLQvtCy0YvQuSDQv9C+0LjRgdC6INCyIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ9Cf0L7QuNGB0Log0LIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAn0JLRi9Cx0L7RgCDRiNCw0LHQu9C+0L3QsCDQv9C+0LjRgdC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ9CT0L7Qu9C+0YHQvtCy0LDRgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0LPQvtC70L7RgdC+0LLQsNC90LjRjyDQvdC1INC30LDQtNCw0L3Riyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ9Ce0L/RgNC10LTQtdC70LXQvdC90YvQtSDQs9C+0LvQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwJ30gPSAn0L3QsNC/0YDQuNC80LXRgCwg0YDQsNCy0L3QviAxMCDQuNC70Lgg0LHQvtC70LXQtSDRh9C10LwgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ9Ce0YbQtdC90LjRgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0LTQu9GPINC+0YbQtdC90LrQuC/RgNC10LnRgtC40L3Qs9CwINC90LUg0LfQsNC00LDQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICfQntC/0YDQtdC00LXQtNC10LvQtdC90L3Ri9C1INC+0YbQtdC90LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ9C90LDQv9GA0LjQvNC10YAsINGA0LDQstC90L4gMjUlINC40LvQuCDQsdC+0LvQtdC1INGH0LXQvCA3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ9CS0YDQtdC80Y8g0LjQt9C80LXQvdC10L3QuNGPINGB0YLQsNGC0YzQuCBGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ9Ce0YbQtdC90LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0L7Qu9C+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfQk9C+0LvQvtGB0L7QsiDQvdC1INC90LDQudC00LXQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAn0J7RhtC10L3QvtC6INC90LUg0L3QsNC50LTQtdC90L4hINCe0YbQtdC90LjRgtC1INGN0YLRgyDRgdGC0LDRgtGM0Y4gRkFRINC/0LXRgNCy0YvQvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ9Ch0LrQsNGH0LDRgtGMINCy0LvQvtC20LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuJ30gPQogICAgICAgICfQlNC70Y8g0L7RgtC60YDRi9GC0LjRjyDRgdGB0YvQu9C60Lgg0LIg0YHQu9C10LTRg9GO0YnQtdC8INGB0L7QvtCx0YnQtdC90LjQuC/Qt9Cw0LzQtdGC0LrQtSDQvdC10L7QsdGF0L7QtNC40LzQviDQvdCw0LbQsNGC0Ywg0Lgg0YPQtNC10YDQttC40LLQsNGC0Ywg0LrQu9Cw0LLQuNGI0YMgQ3RybCDQuNC70LggQ21kINC40LvQuCBTaGlmdCDQuCDQutC70LjQutC90YPRgtGMINC/0L4g0YHRgdGL0LvQutC1ICjQt9Cw0LLQuNGB0LjRgiDQvtGCINCy0LDRiNC10LPQviDQsdGA0LDRg9C30LXRgNCwINC4INCe0KEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ9Cd0LDRgdC60L7Qu9GM0LrQviDQsdGL0LvQsCDQv9C+0LvQtdC30L3QsCDRjdGC0LAg0YHRgtCw0YLRjNGPPyDQn9C+0LbQsNC70YPQudGB0YLQsCwg0L7RhtC10L3QuNGC0LUg0LXRkSwg0YfRgtC+0LHRiyDQvNGLINC80L7Qs9C70Lgg0YPQu9GD0YfRiNC40YLRjCDQsdCw0LfRgyBGQVEuINCh0L/QsNGB0LjQsdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ9Cx0LXRgdC/0L7Qu9C10LfQvdCw0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn0L7Rh9C10L3RjCDQv9C+0LvQtdC30L3QsNGPJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINC30LDQs9C+0LvQvtCy0L7QuiDQuiDRgdGC0LDRgtGM0LUgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0YLQtdC60YHRgiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAn0JLRgdGC0LDQstC40YLRjCDQv9C+0LvQvdC+0YHRgtGM0Y4gRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ9CS0YHRgtCw0LLQuNGC0Ywg0YHRgdGL0LvQutGDINC90LAgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtGMINGC0LXQutGB0YIgRkFRINC4INGB0YHRi9C70LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAn0JLRgdGC0LDQstC40YLRjCDQv9C+0LvQvdC+0YHRgtGM0Y4gRkFRINC4INGB0YHRi9C70LrRgyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEg0L3QtSDQvdCw0LnQtNC10L3Riy4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICfQrdGC0L4g0LzQvtC20LXRgiDQsdGL0YLRjCDQktCw0Lwg0L/QvtC70LXQt9C90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ9Cd0LXRgiDQv9C+0LvQtdC30L3Ri9GFINGB0YLQsNGC0LXQuSDQvdCwINGN0YLRgyDRgtC10LzRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ9CS0LLQtdC00LjRgtC1INGC0LXQvNGDINC40LvQuCDRgtC10LrRgdGCINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8g0YHQv9C40YHQutCwINC/0L7Qu9C10LfQvdGL0YUg0YHQv9GA0LDQstC+0YfQvdGL0YUg0YHRgtCw0YLQtdC5IEZBUS4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ9Cf0L7Qu9C90L7RgtC10LrRgdGC0L7QstGL0Lkg0L/QvtC40YHQuiDQsiDRgdGC0LDRgtGM0Y/RhSBGQVEgKNC90LDQv9GA0LjQvNC10YAsICLQsNCy0YLQvtC8KtC60LgiINC40LvQuCAi0JzQvtGB0LoqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC90LAg0LPQvtC70L7RgdC+0LLQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAn0KLQvtC70YzQutC+INGB0YLQsNGC0YzQuCBGQVEg0YEg0LPQvtC70L7RgdCw0LzQuC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXQvdC40Y8g0L7RhtC10L3QvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ9Ci0L7Qu9GM0LrQviDRgdGC0LDRgtGM0LggRkFRINGBINC+0YbQtdC90LrQvtC5Li4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn0JLRgNC10LzQtdC90L3Ri9C1INGA0LDQvNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ9Ci0L7Qu9GM0LrQviDRgdGC0LDRgtGM0LggRkFRINGB0L7Qt9C00LDQvdC90YvQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfQotC+0LvRjNC60L4g0YHRgtCw0YLRjNC4IEZBUSwg0YHQvtC30LTQsNC90L3Ri9C1INC80LXQttC00YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAn0JjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINC/0LDRgNCw0LzQtdGC0YDRiyDQv9C+0LjRgdC60LAg0LrQsNC6INGI0LDQsdC70L7QvT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINGB0YLQsNGC0YzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ9Cf0L7QuNGB0Log0YHRgtCw0YLQtdC5INC/0L4g0LrQu9GO0YfQtdCy0L7QvNGDINGB0LvQvtCy0YMnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ9CS0LXRgNC90YPRgtGM0YHRjyDQsiDQvtCx0LfQvtGAIEZBUSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC80Ysg0L/RgNCw0LLQsCBydyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ9Ce0YLRgdGD0YLRgdGC0LLRg9GO0YIg0LrQsNGC0LXQs9C+0YDQuNC4INCyINC60L7RgtC+0YDRi9GFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQuNC80LXQtdGCINC/0YDQsNCy0LAg0YfRgtC10L3QuNGPL9C30LDQv9C40YHQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAn0J3QtSDRg9C60LDQt9Cw0L0g0Y/Qt9GL0Log0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0Lgg0L3QtdCy0L7Qt9C80L7QttC90L4g0LfQsNC00LDRgtGMINC90L7QstGL0LkuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAn0KLRgNC10LHRg9C10YLRgdGPIENhdGVnb3J5SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ9CjINC60LDRgtC10LPQvtGA0LjQuCDQtNC+0LvQttC90L4g0LHRi9GC0Ywg0L3QsNC30LLQsNC90LjQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ9Ci0LDQutCw0Y8g0LrQsNGC0LXQs9C+0YDQuNGPINGD0LbQtSDRgdGD0YnQtdGB0YLQstGD0LXRgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfQotCw0LrQsNGPINC60LDRgtC10LPQvtGA0LjRjyDRg9C20LUg0YHRg9GJ0LXRgdGC0LLRg9C10YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnQ2F0ZWdvcnlJRCDQvdC1INC30LDQtNCw0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0YPQtNCw0LvQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8gRkFRINC40LfQvNC10L3QtdC90LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfQmtCw0YLQtdCz0L7RgNC40Y8gRkFRINC00L7QsdCw0LLQu9C10L3QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn0KPQtNCw0LvQuNGC0Ywg0LrQsNGC0LXQs9C+0YDQuNGOJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0YPQutCw0LfQsNC9IEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICfQoyDQstCw0YEg0L3QtdGCINC/0YDQsNCyINC90LAg0LTQvtGB0YLRg9C/INC6INGN0YLQvtC5INC60LDRgtC10LPQvtGA0LjQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDRg9C00LDQu9C40YLRjCDRgdGC0LDRgtGM0Y4gRkFRICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICdDYXRlZ29yeUlEICVzINC90LXQstC10YDQtdC9Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LjRgdGC0L7RgNC40Y4sINGC0LDQuiDQutCw0Log0L3QtSDQt9Cw0LTQsNC9IEl0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICfQmNGB0YLQvtGA0LjRjyBGQVEgJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAn0JbRg9GA0L3QsNC7IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICfQndC10L7QsdGF0L7QtNC40LzQviDQvdCw0YHRgtGA0L7QuNGC0Ywg0L/QsNGA0LDQvNC10YLRgCBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGAIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IC0g0YLRgNC10LHRg9C10YLRgdGPINGB0YHRi9C70LrQsCDQvdCwIEhBU0ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAn0J3QtSDQvdCw0YHRgtGA0L7QtdC9INC+0LHQt9C+0YAgIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnTGFuZ3VhZ2VJRCDQvdC1INC30LDQtNCw0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC+INC30LDQtNCw0YLRjCDQvdCw0LfQstCw0L3QuNC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ9Ci0LDQutC+0Lkg0Y/Qt9GL0Log0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICfQndC1INGD0LTQsNC70L7RgdGMINGD0LTQsNC70LjRgtGMINGP0LfRi9C6ICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfQr9C30YvQuiDQtNC70Y8gRkFRINC40LfQvNC10L3RkdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn0K/Qt9GL0Log0LTQu9GPIEZBUSDQtNC+0LHQsNCy0LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICfQo9C00LDQu9C40YLRjCDRj9C30YvQuiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAn0KDQtdC30YPQu9GM0YLQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn0J/QvtGB0LvQtdC00L3QtdC1INC+0LHQvdC+0LLQu9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjyDQtNC70Y8gRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICclcyDQvdC1INC30LDQtNCw0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ9C90LXQstC+0LfQvNC+0LbQvdC+INC30LDQs9GA0YPQt9C40YLRjCBMYW5ndWFnZU9iamVjdCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0J3QtdGCINGA0LXQt9GD0LvRjNGC0LDRgtCwL9Cg0LXRiNC10L3QuNGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAn0J/QvtGB0LvQtdC00L3QuNC8INC40LfQvNC10L3QuNC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0JLRgNC10LzRjyDRgdC+0LfQtNCw0L3QuNGPINGB0YLQsNGC0YzQuCBGQVEgKNC00L4v0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzRjyDRgdC+0LfQtNCw0L3QuNGPINGB0YLQsNGC0YzQuCBGQVEgKNC80LXQttC00YMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0JLRgNC10LzRjyDQuNC30LzQtdC90LXQvdC40Y8g0YHRgtCw0YLRjNC4IEZBUSAo0LTQvi/Qv9C+0YHQu9C1KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfQktGA0LXQvNGPINC40LfQvNC10L3QtdC90LjRjyDRgdGC0LDRgtGM0LggRkFRICjQvNC10LbQtNGDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICfRgNCw0LLQvdGP0LXRgtGB0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAn0LHQvtC70YzRiNC1INGH0LXQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAn0LHQvtC70YzRiNC1INC40LvQuCDRgNCw0LLQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJ9C80LXQvdGM0YjQtSDRh9C10LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ9C80LXQvdGM0YjQtSDQuNC70Lgg0YDQsNCy0L3Qvic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICfQotGA0LXQsdGD0LXRgtGB0Y8gRmlsZUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfQodC/0LDRgdC40LHQviDQt9CwINCy0LDRiNGDINC+0YbQtdC90LrRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfQktGLINGD0LbQtSDQv9C+0YHRgtCw0LLQuNC70Lgg0L7RhtC10L3QutGDISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9Ce0YbQtdC90LrQsCDQvtGC0YHRg9GC0YHRgtCy0YPQtdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICfQnNC10YXQsNC90LjQt9C8INCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8g0L3QtSDQstC60LvRjtGH0LXQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICfQn9GA0LXQtNC10LvRjNC90YvQuSDRg9GA0L7QstC10L3RjCDQtNC70Y8g0LPQvtC70L7RgdC+0LLQsNC90LjRjyDQvdC1INC30LDQtNCw0L0hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBQcmludCd9ID0gJ9Cf0LXRh9Cw0YLRjCDRgdGC0LDRgtGM0LggRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KHQvtC30LTQsNC90LAg0LzQtdC20LTRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfQotGA0LXQsdGD0LXRgtGB0Y8gSXRlbUlEISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn0KHRgtCw0YLRjNC4IEZBUSAo0L3QvtCy0YvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEgKNC+0LHQvdC+0LLQu9GR0L3QvdGL0LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAoVG9wIDEwKSd9ID0gJ9Ch0YLQsNGC0YzQuCBGQVEgKFRvcCAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICfQndC1INGD0LrQsNC30LDQvSDQotC40L8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJ9Ci0LjQvyDQtNC+0LvQttC10L0g0LjQvNC10YLRjCDQt9C90LDRh9C10L3QuNC1IExhc3RDcmVhdGUv0J/QvtGB0LvQtdC00L3QuNC1INGB0L7Qt9C00LDQvdC90YvQtSDQuNC70LggTGFzdENoYW5nZS/Qn9C+0YHQu9C10LTQvdC40LUg0LjQt9C80LXQvdC10L3QvdGL0LUg0LjQu9C4IFRvcDEwLzEwINC70YPRh9GI0LjRhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICfQndC10LLQvtC30LzQvtC20L3QviDRgdC+0LfQtNCw0YLRjCBSU1Mg0YTQsNC50LshJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICclcyAtINCa0LvQuNC10L3RgiAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0g0JrQu9C40LXQvdGCIChGQVFGdWxsdGV4dCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0g0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0LkgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSDQntCx0YnQtdC00L7RgdGC0YPQv9C90YvQuSAoRkFRRnVsbHRleHQpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ9Cd0YPQttC90LAg0L7RhtC10L3QutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAn0K3RgtCwINGB0YLQsNGC0YzRjyDQv9GD0YHRgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfQndC+0LLRi9C1INGB0YLQsNGC0YzQuCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J/QvtGB0LvQtdC00L3QuNC1INC+0LHQvdC+0LLQu9C10L3QuNGPINGB0YLQsNGC0LXQuSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ1RvcCAxMCDRgdGC0LDRgtC10LkgRkFRJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJ9Ci0LjQvyDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+JzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICfRgdC70YPQttC10LHQvdC+0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICfQvtGC0LrRgNGL0YLQvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC1JzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICfQpNC40LvRjNGC0YAg0LTQu9GPIEhUTUwg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINGB0YHRi9C70LrQuCDQv9C+0LfQsNC00Lgg0LfQsNC00LDQvdC90L7QuSDRgdGC0YDQvtC60LguINCt0LvQtdC80LXQvdGCIEltYWdlINC80L7QttC10YIg0LHRi9GC0Ywg0LLQstC10LTQtdC9INC00LLRg9C80Y8g0YHQv9C+0YHQvtCx0LDQvNC4LiDQn9C10YDQstGL0LkgLSDRjdGC0L4g0LjQvNGPINGE0LDQudC70LAo0YIu0LUuIGZhcS5wbmcpLiDQkiDRjdGC0L7QvCDRgdC70YPRh9Cw0LUg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC/0YPRgtGMINC6INGE0LDQudC70LDQvCDQuNC30L7QsdGA0LDQttC10L3QuNC5IE9UUlMuINCS0YLQvtGA0L7QuSDQstCw0YDQuNCw0L3RgiDQsiDRg9C60LDQt9Cw0L3QuNC4INGB0YHRi9C70LrQuCDQvdCwINC40LfQvtCx0YDQsNC20LXQvdC40LUo0L3QsNC/0YDQuNC80LXRgCwgaHR0cDovL290cnMub3JnL2ZhcS5wbmcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICfQlNC+0LHQsNCy0LjRgtGMINGB0YLQsNGC0YzRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdDU1Mt0YbQstC10YIg0LTQu9GPINGA0LXQt9GD0LvRjNGC0LDRgtCwINCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICfQktGA0LXQvNGPINC00LvRjyDQstGL0YXQvtC00LAg0LjQtyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPIEZBUSDQv9GD0L3QutGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60LDRgtC10LPQvtGA0LjRj9C80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDQutCw0YLQtdCz0L7RgNC40Y/QvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAn0J/QtdGH0LDRgtGMINGB0YLQsNGC0YzQuCBGQVEg0LrQu9C40LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJ9Cn0LDRgdGC0L4g0LfQsNC00LDQstCw0LXQvNGL0LUg0LLQvtC/0YDQvtGB0Ysg0L/QviDQutC70LjQtdC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICfQp9Cw0YHRgtC+INC30LDQtNCw0LLQsNC10LzRi9C1INCy0L7Qv9GA0L7RgdGLINC/0L4g0LrQu9C40LXQvdGC0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJ9Cf0YDQvtGB0LzQvtGC0YAg0YHRgtCw0YLRjNC4IEZBUSDQutC70LjQtdC90YLQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJ9Cf0L7QuNGB0Log0YHRgtCw0YLRjNC4IEZBUSDQutC70LjQtdC90YLQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnRkFRINC00LvRjyDQutC70LjQtdC90YLQvtCyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfQlNC10YHRj9GC0LjRh9C90YvRhSDQt9C90LDQutC+0LIg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0LPQvtC70L7RgdC+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAn0J3QsNC30LLQsNC90LjQtSDQutCw0YLQtdCz0L7RgNC40Lgg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICfQr9C30YvQuiDRgdGC0LDRgtC10LkgRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOINCyINC+0LTQvdC+0Y/Qt9GL0YfQvdC+0Lwg0YDQtdC20LjQvNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdGL0Lkg0YDQsNC30LzQtdGAINC30LDQs9C+0LvQvtCy0LrQvtCyLCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiwg0L/QvtC60LDQt9GL0LLQsNC10LzRi9GFINCyINGB0YLQsNGC0YzRj9GFIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAn0J/RgNC40L7RgNC40YLQtdGCINC30LDRj9Cy0L7QuiDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtC10LkgRkFRINC/0L4t0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAn0KHRgtCw0YLRg9GBINC30LDQv9C40YHQuCBGQVEg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQodGC0LDRgtGD0YEg0LfQsNGP0LLQvtC6INC90LAg0L7QtNC+0LHRgNC10L3QuNC1INGB0YLQsNGC0LXQuSBGQVEg0L/Qvi3Rg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9Ci0LjQvyDQt9Cw0Y/QstC+0Log0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLQtdC5IEZBUSDQv9C+LdGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ9CX0L3QsNGH0LXQvdC40LUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0L/QsNGA0LDQvNC10YLRgNCwIEFjdGlvbiDQtNC70Y8g0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LPQviDRhNGA0L7QvdGC0LXQvdC00LAuINCf0LDRgNCw0LzQtdGC0YAgQWN0aW9uINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQsiDRgdC60YDQuNC/0YLQsNGFINGB0LjRgdGC0LXQvNGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQutC+0LPQtNCwINC60L3QvtC/0LrQsCDQvdCw0YHRgtGA0L7QudC60Lgg0LTQvtGB0YLRg9C/0L3QsCDQsiDRgdCy0Y/Qt9Cw0L3QvdC+0Lwg0LLQuNC00LbQtdGC0LUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9GC0L4g0Y3RgtC4INCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQtNC+0LvQttC90Ysg0LjQvNC10YLRjCDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0LUgSlMg0LjQu9C4IENTUyDRhNCw0LnQu9GLOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDQuCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCLCDQtNC+0LvQttC10L0g0LvQuCDQt9Cw0LPQvtC70L7QstC+0LogRkFRINC+0LHRitC10LTQuNC90Y/RgtGM0YHRjyDRgSDRgtC10LzQvtC5INGB0YLQsNGC0YzQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNC+0LTRg9C70Ywg0L/RgNC+0YHQvNC+0YLRgNCwINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC20YPRgNC90LDQu9CwIEZBUSDQsiBzbWFsbCDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQvtC00YPQu9GMINC/0YDQvtGB0LzQvtGC0YDQsCDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDRgdC/0LjRgdC60LAg0YHRgtCw0YLQtdC5IEZBUSDQsiBzbWFsbCDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAgRkFRINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAgRkFRINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90L7QtSDQt9C90LDRh9C10L3QuNC1INCw0YLRgNC40LHRg9GC0LAg0YHQvtGA0YLQuNGA0L7QstC60Lgg0YDQtdC30YPQu9GM0YLQsNGC0LAg0L/QvtC40YHQutCwINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INCyIEZBUSBFeHBsb3JlcmUg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INCyIEZBUSBFeHBsb3JlcmUg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSDQsNGC0YDQuNCx0YPRgtCwINGB0L7RgNGC0LjRgNC+0LLQutC4INCyIEZBUSBFeHBsb3JlcmUg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0LwgINC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Cj0LrQsNC20LjRgtC1INGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0L/QvtGA0Y/QtNC+0Log0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSBGQVEgRXhwbG9yZXIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLiBVcDog0L/QvtC30LTQvdC10LUg0L3QsNCy0LXRgNGF0YMuIERvd246INC90L7QstC+0LUg0L3QsNCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0KPQutCw0LbQuNGC0LUg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFIEZBUSBFeHBsb3JlciDQuNC90YLQtdGA0YTQtdC50YHQsCDQutC70LjQtdC90YLQsC4gVXA6INC/0L7Qt9C00L3QtdC1INC90LDQstC10YDRhdGDLiBEb3duOiDQvdC+0LLQvtC1INC90LDQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQo9C60LDQttC40YLQtSDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INC/0L7RgNGP0LTQvtC6INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUgRkFRIEV4cGxvcmVyINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1LiBVcDog0L/QvtC30LTQvdC10LUg0L3QsNCy0LXRgNGF0YMuIERvd246INC90L7QstC+0LUg0L3QsNCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdGC0LDQvdC00LDRgNGC0L3Ri9C5INC/0L7RgNGP0LTQvtC6INGB0L7RgNGC0LjRgNC+0LLQutC4INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINCyIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuIFVwOiDRgdGC0LDRgNGL0LUg0LLQstC10YDRhdGDLiBEb3duOiDQvdC+0LLRi9C1INCy0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0YLQsNC90LTQsNGA0YLQvdGL0Lkg0L/QvtGA0Y/QtNC+0Log0YHQvtGA0YLQuNGA0L7QstC60Lgg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLiBVcDog0YHRgtCw0YDRi9C1INCy0LLQtdGA0YXRgy4gRG93bjog0L3QvtCy0YvQtSDQstCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHRgtCw0L3QtNCw0YDRgtC90YvQuSDQv9C+0YDRj9C00L7QuiDRgdC+0YDRgtC40YDQvtCy0LrQuCDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDQsiBGQVEg0LIg0L7QsdGJ0LXQvC/Qv9GD0LHQu9C40YfQvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuIFVwOiDRgdGC0LDRgNGL0LUg0LLQstC10YDRhdGDLiBEb3duOiDQvdC+0LLRi9C1INCy0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LDRgtGA0LjQsdGD0YIgRkFRINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQv9C+0LrQsNC30LAg0L3QsCDRjdC60YDQsNC90LUg0L/QvtC40YHQutC+0LLQvtCz0L4g0LfQsNC/0YDQvtGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0LXRgNC10YfQtdC90Ywg0LjQvdGE0L7RgNC80LDRhtC40Lgg0LLQutC70Y7Rh9Cw0LXQvNC+0Lkg0LIg0LfQsNGP0LLQutGDINC40LcgRkFRLiAiRnVsbCBGQVEiINCy0LrQu9GO0YfQsNC10YIg0YLQutC10YHRgiwg0LLQu9C+0LbQtdC90LjRjyDQuCDQstGB0YLRgNC+0LXQvdC90YvQtSDQuNC30L7QsdGA0LDQttC10L3QuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0L/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINCyINCU0LDQudC00LbQtdGB0YLQtS4gIkxpbWl0IiDQt9Cw0LTQsNC10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uICJHcm91cCIg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNGPINC00L7RgdGC0YPQv9CwINC6INC00LDQvdC90YvQvCDQvNC+0LTRg9C70Y8gKNC90LDQv9GA0LjQvNC10YAsIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiDQvtC30L3QsNGH0LDQtdGCLCDRh9GC0L4g0LzQvtC00YPQu9GMINC70LjQsdC+INCy0LrQu9GO0YfQtdC9INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLCDQu9C40LHQviDQsNCz0LXQvdGCLCDQv9GA0Lgg0L3QtdC+0LHRhdC+0LTQuNC80L7RgdGC0LgsINC80L7QttC10YIg0LXQs9C+INCy0LrQu9GO0YfQuNGC0Ywg0LLRgNGD0YfQvdGD0Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQv9C10YDQtdGH0LXQvdGMINC60L7Qu9C+0L3QvtC6LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0LIg0J7QsdC30L7RgNC1IEZBUS4g0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQvdC1INCy0LvQuNGP0LXRgiDQvdCwINC/0L7RgNGP0LTQvtC6INC60L7Qu9C+0L3QvtC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQv9C10YDQtdGH0LXQvdGMINC60L7Qu9C+0L3QvtC6LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0LIg0JjRgdGC0L7RgNC40LggRkFRLiDQrdGC0L7RgiDQv9Cw0YDQsNC80LXRgtGAINC90LUg0LLQu9C40Y/QtdGCINC90LAg0L/QvtGA0Y/QtNC+0Log0LrQvtC70L7QvdC+0LouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0L/QtdGA0LXRh9C10L3RjCDQutC+0LvQvtC90L7Quiwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINCyIEZBUS4g0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQvdC1INCy0LvQuNGP0LXRgiDQvdCwINC/0L7RgNGP0LTQvtC6INC60L7Qu9C+0L3QvtC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQs9C00LUg0LHRg9C00LXRgiDQvtGC0L7QsdGA0LDQttCw0YLRjNGB0Y8g0YHRgdGL0LvQutCwICLQktGB0YLQsNCy0LjRgtGMINC40LcgRkFRIi9cJ0luc2VydCBGQVFcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICfQntC/0YDQtdC00LXQu9C10L3QuNC1INGB0LLQvtCx0L7QtNC90YvRhSDQv9C+0LvQtdC5INGN0LvQtdC80LXQvdGC0L7QsiBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ9Cj0LTQsNC70LjRgtGMINGN0YLQvtGCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INCyINC+0LrQvdC1INC00L7QsdCw0LLQu9C10L3QuNGPINGB0YLQsNGC0YzQuCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINGB0YLQsNGC0YzQuCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L7QsdC30L7RgNCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDQvtCx0LfQvtGA0LAgRkFRINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QtdGH0LDRgtC4IEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDQv9C10YfQsNGC0LggRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INCyINC+0LrQvdC1INC/0LXRh9Cw0YLQuCBGQVEg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDQutGA0LDRgtC60L7Qs9C+INC+0LHQt9C+0YDQsCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQsiDQvtC60L3QtSDQv9C+0LTRgNC+0LHQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAg0YHRgtCw0YLRjNC4IEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INCyINC+0LrQvdC1INC/0L7QtNGA0L7QsdC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDRgdGC0LDRgtGM0LggRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0LIg0L7QutC90LUg0L/QvtC00YDQvtCx0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwINGB0YLQsNGC0YzQuCBGQVEg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfQmNC30LzQtdC90LjRgtGMINGN0YLQvtGCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAn0KDQsNC30YDQtdGI0LjRgtGMINC80L3QvtCz0L7Rj9C30YvRh9C90L7RgdGC0Ywg0LIg0LzQvtC00YPQu9C1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9C40YLRjCDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC/0L7QuNGB0LrQsCDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40YUg0LrQvtC90YLQtdC60YHRgtGDINGB0YLQsNGC0LXQuSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAn0KDQsNC30YDQtdGI0LjRgtGMINGE0YPQvdC60YbQuNGOINC+0YbQtdC90LrQuCDQsiDQvNC+0LTRg9C70LUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ9Ce0LHQt9C+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnRkFRIEFKQVgg0L7RgtCy0LXRgtGH0LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ0ZBUSBBSkFYINC+0YLQstC10YLRh9C40Log0LTQu9GPIFJpY2h0ZXh0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJ9Ce0LHQu9Cw0YHRgtGMIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICfQntCx0LvQsNGB0YLRjCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAn0KPQtNCw0LvQuNGC0Ywg0YHRgtCw0YLRjNGOIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0YHRgtCw0YLRjNGOIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAn0JjRgdGC0L7RgNC40Y8gRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDQltGD0YDQvdCw0LvQsCBGQVEg0LIgIlNtYWxsIiDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0J7QsdC30L7RgNCwIEZBUSDQsiAiU21hbGwiINGE0L7RgNC80LDRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICfQn9C10YfQsNGC0Ywg0YHRgtCw0YLRjNC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ9CS0LrQu9GO0YfQuNGC0Ywg0Lgg0L3QsNGB0YLRgNC+0LjRgtGMINC80L7QtNGD0LvRjCDQv9C+0LjRgdC60LAgRkFRINC00LvRjyDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ9Cf0L7Qu9C1NCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICfQn9C+0LvQtTUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICfQn9C+0LvQvdGL0LkgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyb3VwIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9CT0YDRg9C/0L/QsCDQtNC70Y8g0L7QtNC+0LHRgNC10L3QuNGPINGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICfQmNGB0YLQvtGA0LjRjyDRjdGC0L7Qs9C+IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAn0JLQutC70Y7Rh9C40YLRjCDQstC90YPRgtGA0LXQvdC90LjQtSDQv9C+0LvRjyDQsiDQt9Cw0Y/QstC60YMsINC+0YHQvdC+0LLQsNC90L3Rg9GOINC90LAg0YHRgtCw0YLRjNC1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfQktC60LvRjtGH0LjRgtGMINC40LzRjyDQutCw0LbQtNC+0LPQviDQv9C+0LvRjyDQsiDQt9Cw0Y/QstC60YMsINC+0YHQvdC+0LLQsNC90L3Rg9GOINC90LAg0YHRgtCw0YLRjNC1IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICfQmNC90YLQtdGA0YTQtdC50YHRiywg0LIg0LrQvtGC0L7RgNGL0YUg0L/QsNC90LXQu9GMINCx0YvRgdGC0YDQvtCz0L4g0L/QvtC40YHQutCwINC80L7QttC10YIg0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn0JbRg9GA0L3QsNC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDRj9C30YvQutCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INGP0LfRi9C60LDQvNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ9Cb0LjQvNC40YIgINC00LvRjyDQv9C+0LjRgdC60LAg0LTQu9GPINC/0L7RgdGC0YDQvtC10L3QuNGPINGB0L/QuNGB0LrQsCDQutC+0L3RgtC10LrRgdGC0L3Ri9GFINGB0YLQsNGC0LXQuSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ9Cf0YDQuNCy0Y/Qt9Cw0YLRjCDQtNGA0YPQs9C+0Lkg0L7QsdGK0LXQutGCINC6INGN0YLQvtC80YMg0Y3Qu9C10LzQtdC90YLRgyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICfQodC/0LjRgdC+0Log0L7Rh9C10YDQtdC00LXQuSDQtNC70Y8g0LrQvtGC0L7RgNGL0YUg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQv9C+0LjRgdC60LAg0LrQvtC90YLQtdC60YHRgtC90YvRhSDRgdGC0LDRgtC10LkgRkFRINCy0LrQu9GO0YfQtdC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ch0L/QuNGB0L7QuiDRgtC40L/QvtCyINGB0L7RgdGC0L7Rj9C90LjQuSwg0LrQvtGC0L7RgNGL0LUg0LzQvtCz0YPRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KHQv9C40YHQvtC6INGC0LjQv9C+0LIg0YHQvtGB0YLQvtGP0L3QuNC5LCDQutC+0YLQvtGA0YvQtSDQvNC+0LPRg9GCINC40YHQv9C+0LvRjNC30L7QstCw0YLRjNGB0Y8g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC/0LjRgdC+0Log0YLQuNC/0L7QsiDRgdC+0YHRgtC+0Y/QvdC40LksINC60L7RgtC+0YDRi9C1INC80L7Qs9GD0YIg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGM0YHRjyDQsiDQv9GD0LHQu9C40YfQvdC+0Lwv0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICdMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiDQtNC70Y8g0L/Rg9Cx0LvQuNGH0L3QvtCz0L4g0LjQvdGC0LXRgNGE0LXQudGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80L7QtSDQsiBGQVEgRXhwbG9yZXIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNC+0LUg0LIgRkFRIEV4cGxvcmVyINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQsNGC0LXQuSwg0LLRi9Cy0L7QtNC40LzQvtC1INCyIEZBUSBFeHBsb3JlciDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDQttGD0YDQvdCw0LvQtSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0LIg0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGA0LDQt9C80LXRgCDQt9Cw0LPQvtC70L7QstC60L7QsiDQsiDRgdGC0LDRgtGM0LUgRkFRINC/0L7QutCw0LfRi9Cy0LDQtdC80YvRhSDQsiDQvtCx0LfQvtGA0LUgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdGL0Lkg0YDQsNC30LzQtdGAINC30LDQs9C+0LvQvtCy0LrQvtCyINCyINGB0YLQsNGC0YzQtSBGQVEg0L/QvtC60LDQt9GL0LLQsNC10LzRi9GFINCyINC+0LHQt9C+0YDQtSBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QsdC30L7RgNC1IEZBUSDQsiDQv9GD0LHQu9C40YfQvdC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0L7QutC90LUg0L/QvtC40YHQutCwIEZBUSDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90YvQuSDRgNCw0LfQvNC10YAg0LfQsNCz0L7Qu9C+0LLQutC+0LIg0LIg0YHRgtCw0YLRjNC1IEZBUSDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0LIg0LbRg9GA0L3QsNC70LUgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINCz0LXQvdC10YDQsNGG0LjQuCBIVE1MIE9wZW5TZWFyY2gg0YjQsNCx0LvQvtC90L7QsiDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINCz0LXQvdC10YDQsNGG0LjQuCBIVE1MIE9wZW5TZWFyY2gg0YjQsNCx0LvQvtC90L7QsiDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LIgRkFRINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINCz0LXQvdC10YDQsNGG0LjQuCBIVE1MIE9wZW5TZWFyY2gg0YjQsNCx0LvQvtC90L7QsiDQtNC70Y8g0LHRi9GB0YLRgNC+0LPQviDQv9C+0LjRgdC60LAg0LIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAn0J3QvtCy0LDRjyDRgdGC0LDRgtGM0Y8g0LIgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICfQndC+0LLQsNGPINGB0YLQsNGC0YzRjyBGQVEg0L/QtdGA0LXQtCDQv9GD0LHQu9C40LrQsNGG0LjQtdC5INGC0YDQtdCx0YPQtdGCINC+0LTQvtCx0YDQtdC90LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIgRkFRIEV4cGxvcmVyINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0YHRgtCw0YLQtdC5LCDQstGL0LLQvtC00LjQvNGL0YUg0LIgRkFRIEV4cGxvcmVyINCyINC+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC8INC40L3RgtC10YDRhNC10LnRgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQvdCwINC60LDQttC00L7QuSDRgdGC0YDQsNC90LjRhtC1INGA0LXQt9GD0LvRjNGC0LDRgtCwINC/0L7QuNGB0LrQsCDQsiAg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0LDRgtC10LksINCy0YvQstC+0LTQuNC80YvRhSDQvdCwINC60LDQttC00L7QuSDRgdGC0YDQsNC90LjRhtC1INGA0LXQt9GD0LvRjNGC0LDRgtCwINC/0L7QuNGB0LrQsCDQsiDQvtCx0YnQtdC00L7RgdGC0YPQv9C90L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/QvtC30LjRhtC40Lkg0LIg0L/QvtGB0LvQtdC00L3QuNGFINC40LfQvNC10L3QtdC90LjRj9GFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQv9C+0LfQuNGG0LjQuSDQsiDQvdC+0LLRi9GFINGB0YLQsNGC0YzRj9GFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQv9C+0LfQuNGG0LjQuSDQsiDRhNGD0L3QutGG0LjQuCBUb3AgMTAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICfQktGL0YXQvtC00L3QvtC5INGE0LjQu9GM0YLRgCDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8gSmF2YS1zY3JpcHQg0LTQu9GPINGN0LrRgNCw0L3QsCBDdXN0b21lclRpY2tldE1lc3NhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ9Cb0LjQvNC40YIg0LTQu9GPINCy0YvQstC+0LTQsCDRgdCy0Y/Qt9Cw0L3QvdGL0YUv0LrQvtC90YLQtdC60YHRgtC90YvRhSDRgdGC0LDRgtC10LkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGB0YLRgNCw0L3QuNGG0YsgKNC90LAg0LrQvtGC0L7RgNC+0Lkg0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINGN0LvQtdC80LXQvdGC0YsgRkFRKSDQv9GA0Lgg0L7QsdC30L7RgNC1INC20YPRgNC90LDQu9CwIEZBUSDQsiBzbWFsbCDRhNC+0YDQvNCw0YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YHRgtGA0LDQvdC40YbRiyAo0L3QsCDQutC+0YLQvtGA0L7QuSDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0Y3Qu9C10LzQtdC90YLRiyBGQVEpINC/0YDQuCDQvtCx0LfQvtGA0LUgRkFRINCyIHNtYWxsINGE0L7RgNC80LDRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ9Cf0LXRh9Cw0YLRjCDRjdGC0L7Qs9C+IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ9Cf0LXRh9Cw0YLRjCDQv9GD0LHQu9C40YfQvdC+0Lkg0YHRgtCw0YLRjNC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ9Cf0YDQvtGB0LzQvtGC0YAg0L/Rg9Cx0LvQuNGH0L3QvtC5INGB0YLQsNGC0YzQuCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ9Cf0L7QuNGB0Log0YHRgtCw0YLRjNC4INCyINC/0YPQsdC70LjRh9C90L7QvCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAn0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0Lkv0L/Rg9Cx0LvQuNGH0L3Ri9C5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVldWUgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0J7Rh9C10YDQtdC00Ywg0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICfQntGG0LXQvdC60Lgg0LTQu9GPINCz0L7Qu9C+0YHQvtCy0LDQvdC40Y8uINCa0LvRjtGHINC00L7Qu9C20LXQvSDQsdGL0YLRjCDQt9Cw0LTQsNC9INCyINC/0YDQvtGG0LXQvdGC0LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ9Cf0L7QuNGB0Log0LIgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAn0J/QvtC40YHQuiDQsiBGQVEg0YHQvtC60YDQsNGJ0LXQvdC90YvQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICfQn9C+0LjRgdC6INCyIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJ9CS0YvQsdC10YDQuNGC0LUsINGB0LrQvtC70YzQutC+INGN0LvQtdC80LXQvdGC0L7QsiDQtNC+0LvQttC90L4g0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPINCyINC+0LHQt9C+0YDQtSDQttGD0YDQvdCw0LvQsCDCq9Ca0YDQsNGC0LrQuNC5wrsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAn0JLRi9Cx0LXRgNC40YLQtSwg0YHQutC+0LvRjNC60L4g0Y3Qu9C10LzQtdC90YLQvtCyINC00L7Qu9C20L3QviDQvtGC0L7QsdGA0LDQttCw0YLRjNGB0Y8g0LIg0L7QsdC30L7RgNC1IMKr0JrRgNCw0YLQutC40LnCuyDQv9C+INGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCy0YvRgdC+0YLRgyAo0LIg0L/QuNC60YHQtdC70LDRhSkg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPIGlubGluZSBIVE1MINC/0L7Qu9C10Lkg0LIgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQstGL0YHQvtGC0YMgKNCyINC/0LjQutGB0LXQu9Cw0YUpINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyBpbmxpbmUgSFRNTCDQv9C+0LvQtdC5INCyIEN1c3RvbWVyRkFRWm9vbSAo0LggUHVibGljRkFRWm9vbSkuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQsNC60YHQuNC80LDQu9GM0L3Rg9GOINCy0YvRgdC+0YLRgyAo0LIg0L/QuNC60YHQtdC70LDRhSkg0LTQu9GPIGlubGluZSBIVE1MINC/0L7Qu9C10Lkg0LIgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNCw0LrRgdC40LzQsNC70YzQvdGD0Y4g0LLRi9GB0L7RgtGDICjQsiDQv9C40LrRgdC10LvQsNGFKSDQtNC70Y8gaW5saW5lIEhUTUwg0L/QvtC70LXQuSDQsiBDdXN0b21lckZBUVpvb20gKNC4IFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQsNGC0Ywg0LrQvdC+0L/QutGDICJJbnNlcnQgRkFRIExpbmsv0JLQutC70Y7Rh9C40YLRjCDRgdGB0YvQu9C60YMg0L3QsCBGQVEiINCyIEFnZW50RkFRWm9vbVNtYWxsINC00LvRjyDQv9GD0LHQu9C40YfQvdGL0YUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cw0YLRjCDQutC90L7Qv9C60YMgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiLyLQktGB0YLQsNCy0LjRgtGMINGC0LXQutGB0YIgRkFRINC4INGB0LLRj9C30LDRgtGMIi/QktGB0YLQsNCy0LjRgtGMINC/0L7Qu9C90YvQuSBGQVEg0Lgg0YHQstGP0LfQsNGC0YwiINCyIEFnZW50RkFRWm9vbVNtYWxsINC00LvRjyDQv9GD0LHQu9C40YfQvdGL0YUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC60L3QvtC/0LrRgyAi0JLRgdGC0LDQstC40YLRjCDRgtC10LrRgdGCIEZBUSEgLyAi0JLRgdGC0LDQstC40YLRjCDRgdGC0LDRgtGM0Y4gRkFRINC/0L7Qu9C90L7RgdGC0YzRjiIg0L3QsCDRjdC60YDQsNC90LUgQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINGB0YLQsNGC0YzRjiBGQVEg0LIgSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0L/Rg9GC0YwgRkFRINC00LAv0L3QtdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC90LXQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3Ri9C1INGB0YLQsNGC0YzQuCDQsiDQvtCx0LfQvtGA0LUgRkFRIEV4cGxvcmVyINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINGB0L7QtNC10YDQttC40LzQvtC1INC/0L7QtNGA0LDQt9C00LXQu9C+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0L7QutCw0LfRi9Cy0LDRgtGMINC/0L7RgdC70LXQtNC90LjQtSDQuNC30LzQtdC90LXQvdC40Y8g0LIg0YPQutCw0LfQsNC90YvRhSDQuNC90YLQtdGA0YTQtdC50YHQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn0J/QvtC60LDQt9GL0LLQsNGC0Ywg0L3QvtCy0YvQtSDQv9GD0L3QutGC0Ysg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNGC0YwgItC30LLQtdC30LTRiyIg0LTQu9GPINGB0YLQsNGC0LXQuSDRgSDRgNC10LnRgtC40L3Qs9C+0Lwg0YDQsNCy0L3Ri9C8INC40LvQuCDQsdC+0LvRjNGI0LUg0LfQsNC00LDQvdC90L7Qs9C+INC30LTQtdGB0Ywg0LfQvdCw0YfQtdC90LjRjyAo0YPRgdGC0LDQvdC+0LLQuNGC0LUg0LIgIjAiINC00LvRjyDQvtGC0LrQu9GO0YfQtdC90LjRjyDQv9C+0LrQsNC30LApLsKgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCBUb3AgMTAg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfQn9C+0LrQsNC30YvQstCw0YLRjCDQvtGG0LXQvdC60YMg0LIg0YPQutCw0LfQsNC90L3Ri9GFINC40L3RgtC10YDRhNC10LnRgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDRgdCy0Y/Qt9Cw0YLRjCDRgdGC0LDRgtGM0Y4gRkFRINGBINC00YDRg9Cz0LjQvCDQvtCx0YrQtdC60YLQvtC8INC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0Y3RgtC+0Lkg0YHRgtCw0YLRjNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INGD0LTQsNC70LjRgtGMINGB0YLQsNGC0YzRjiBGQVEg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDRjdGC0L7QuSDRgdGC0LDRgtGM0Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4sINC/0L7Qt9Cy0L7Qu9GP0Y7RidC40Lkg0LTQvtGB0YLRg9C/INC6INC40YHRgtC+0YDQuNC4INGB0YLQsNGC0YzQuCBGQVEg0L/RgNC4INC10LUg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4sINC/0L7Qt9Cy0L7Qu9GP0Y7RidC40Lkg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0YHRgtCw0YLRjNGOIEZBUSDQv9GA0Lgg0LXQtSDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDQstC10YDQvdGD0YLRjNGB0Y8g0L3QsNC30LDQtCDQv9GA0Lgg0L/RgNC+0YHQvNC+0YLRgNC1INGB0YLQsNGC0YzQuCBGQVEg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0J/QtdGH0LDRgtGMINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0YHRgtCw0YLRjNC4IEZBUSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAn0KDQtdGI0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ9Ch0LjQvNC/0YLQvtC80YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAn0KLQvtC70YzQutC+INGC0LXQutGB0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAn0K/Qt9GL0LrQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LjRgdC60L7QvNGL0YUg0YHRgtCw0YLQtdC5IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAn0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAgRkFRLCDQvdCw0L/RgNC40LzQtdGALCBGQVEjLCBLQiMsIE15RkFRIy4g0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4gLSBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfQrdGC0L7RgiDQv9Cw0YDQsNC80LXRgtGAINC30LDQtNCw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINGB0LLRj9C30LDRgtGMINC+0LHRitC10LrRgiBcJ0ZBUVwnINGBINC00YDRg9Cz0LjQvCDQv9C+0LTQvtCx0L3Ri9C8INC+0LHRitC10LrRgtC+0Lwg0LjRgdC/0L7Qu9GM0LfRg9GPINGC0LjQvyDRgdCy0Y/Qt9C4IFwnTm9ybWFsXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQt9Cw0LTQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDRgdCy0Y/Qt9Cw0YLRjCDQvtCx0YrQtdC60YIgXCdGQVFcJyDRgSDQtNGA0YPQs9C40Lwg0L/QvtC00L7QsdC90YvQvCDQvtCx0YrQtdC60YLQvtC8INC40YHQv9C+0LvRjNC30YPRjyDRgtC40L8g0YHQstGP0LfQuCBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ9Ct0YLQvtGCINC/0LDRgNCw0LzQtdGC0YAg0LfQsNC00LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0YHQstGP0LfQsNGC0Ywg0L7QsdGK0LXQutGCIFwnRkFRXCcg0YEg0LTRgNGD0LPQuNC80Lgg0L7QsdGK0LXQutGC0LDQvNC4INGC0LjQv9CwICLQl9Cw0Y/QstC60LAiINC40YHQv9C+0LvRjNC30YPRjyDRgtC40L8g0YHQstGP0LfQuCBcJ05vcm1hbFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ9Ct0YLQvtGCINC/0LDRgNCw0LzQtdGC0YAg0LfQsNC00LDQtdGCINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0YHQstGP0LfQsNGC0Ywg0L7QsdGK0LXQutGCIFwnRkFRXCcg0YEg0LTRgNGD0LPQuNC80Lgg0L7QsdGK0LXQutGC0LDQvNC4INGC0LjQv9CwICLQl9Cw0Y/QstC60LAiINC40YHQv9C+0LvRjNC30YPRjyDRgtC40L8g0YHQstGP0LfQuCBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICfQotC10LvQviDQt9Cw0Y/QstC60Lgg0L3QsCDQvtC00L7QsdGA0LXQvdC40LUg0YHRgtCw0YLRjNC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ9Ci0LXQvNCwINC30LDRj9Cy0LrQuCDQvdCwINC+0LTQvtCx0YDQtdC90LjQtSDRgdGC0LDRgtGM0LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDRj9GA0LvRi9C60LAo0LjQutC+0L3QutC4KSDQtNC70Y8g0L3QsNCy0LjQs9Cw0YbQuNC+0L3QvdC+0Lkg0L/QsNC90LXQu9C4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn0L7RgtC60YDRi9GC0L7QtSAo0LrQu9C40LXQvdGC0LDQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ9GB0LvRg9C20LXQsdC90L7QtSAo0LDQs9C10L3RgtCw0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ9C+0LHRidC10LTQvtGB0YLRg9C/0L3QvtC1ICjQstGB0LXQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAn0L7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0LkgKNC/0YPQsdC70LjRh9C90YvQuSknOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ9CU0L7QtNCw0ZggRkFRINGH0LvQsNC90LDQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ9Ca0ZnRg9GH0L3QtSDRgNC10YfQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRmNCwINGY0LUg0L7QsdCw0LLQtdC30L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICfQntC00L7QsdGA0LXRmtC1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSBGQVEg0LrQsNGC0LXQs9C+0YDQuNGY0LDQvNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICfQlNC+0LTQsNGYIEZBUSDQutCw0YLQtdCz0L7RgNC40ZjRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ9Cj0YDQtdC00LggRkFRINC60LDRgtC10LPQvtGA0LjRmNGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ9CU0L7QtNCw0Zgg0LrQsNGC0LXQs9C+0YDQuNGY0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn0JTQvtC00LDRmCDQutCw0YLQtdCz0L7RgNC40ZjRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAn0KPRgNC10LTQuCDQutCw0YLQtdCz0L7RgNC40ZjRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ9Cf0L7QtNC60LDRgtC10LPQvtGA0LjRmNCwINC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQnNC+0LvQuNC80L4g0LTQsCDQuNC30LDQsdC10YDQtdGC0LUg0LHQsNGAINGY0LXQtNC90YMg0LPRgNGD0L/RgyDQtNC+0LfQstC+0LvQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0LUg0L7Qv9C10YDQsNGC0LXRgNCwINC60L7RmNC1INC80L7Qs9GDINC/0YDQuNGB0YLRg9C/0LjRgtC4INGH0LvQsNC90YbQuNC80LAg0YMg0L7QstC+0Zgg0LrQsNGC0LXQs9C+0YDQuNGY0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICfQkdC40ZvQtSDQv9GA0LjQutCw0LfQsNC90L4g0LrQsNC+INC60L7QvNC10L3RgtCw0YAg0YMg0JjRgdGC0YDQsNC20LjQstCw0YfRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ9CU0LAg0LvQuCDRgdGC0LLQsNGA0L3QviDQttC10LvQuNGC0LUg0LTQsCDQvtCx0YDQuNGI0LXRgtC1INC+0LLRgyDQutCw0YLQtdCz0L7RgNC40ZjRgz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICfQndC1INC80L7QttC10YLQtSDQvtCx0YDQuNGB0LDRgtC4INC+0LLRgyDQutCw0YLQtdCz0L7RgNC40ZjRgy4g0KPQv9C+0YLRgNC10LHRmdC10L3QsCDRmNC1INGDINCx0LDRgCDRmNC10LTQvdC+0LwgRkFRINGH0LvQsNC90LrRgyDQuC/QuNC70Lgg0ZjQtSDQvdCw0LTRgNC10ZLQtdC90LAg0L3QsNGY0LzQsNGa0LUg0ZjQtdC00L3QvtGYINC00YDRg9Cz0L7RmCDQutCw0YLQtdCz0L7RgNC40ZjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ9Ce0LLQsCDQutCw0YLQtdCz0L7RgNC40ZjQsCDRmNC1INGD0L/QvtGC0YDQtdCx0ZnQtdC90LAg0YMg0YHQu9C10LTQtdGb0LjQvCBGQVEg0YfQu9Cw0L3RhtC40LzQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICfQntCy0LAg0LrQsNGC0LXQs9C+0YDQuNGY0LAg0ZjQtSDQvdCw0LTRgNC10ZLQtdC90LAg0YHQu9C10LTQtdGb0LjQvCDQv9C+0LTQutCw0YLQtdCz0L7RgNC40ZjQsNC80LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAn0JTQsCDQu9C4INGB0YLQstCw0YDQvdC+INC20LXQu9C40YLQtSDQtNCwINC+0LHRgNC40YjQtdGC0LUg0L7QstCw0ZggRkFRINGH0LvQsNC90LDQuj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICfQkdGA0LfQviDRgtGA0LDQttC10ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAn0I/QvtC60LXRgNGB0LrQuCDQt9C90LDRhtC4INGB0YMg0LTQvtC30LLQvtGZ0LXQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfQndCw0L/RgNC10LTQvdCwINC/0YDQtdGC0YDQsNCz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ9Cf0L7QtNC60LDRgtC10LPQvtGA0LjRmNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUSDRh9C70LDQvdGG0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfQn9C+0LTQutCw0YLQtdCz0L7RgNC40ZjQtSDQvdC40YHRgyDQv9GA0L7QvdCw0ZLQtdC90LUuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfQmNGB0YLQvtGA0LjRmNCwINC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn0KHQsNC00YDQttCw0Zgg0LjRgdGC0L7RgNC40ZjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ9Cd0LjRgdGDINC/0YDQvtC90LDRktC10L3QuCDQv9C+0LTQsNGG0LggRkFRINC00L3QtdCy0L3QuNC60LAuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSBGQVEg0ZjQtdC30LjRhtC40LzQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAn0JTQvtC00LDRmCBGQVEg0ZjQtdC30LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJ9Cj0YDQtdC00LggRkFRINGY0LXQt9C40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAn0KPQv9C+0YLRgNC10LHQuNGC0LUg0L7QstGDINGE0YPQvdC60YbQuNGY0YMg0LDQutC+INC20LXQu9C40YLQtSDQtNCwINC60L7RgNC40YHRgtC40YLQtSDQstC40YjQtSDRmNC10LfQuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ9CU0L7QtNCw0Zgg0ZjQtdC30LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfQlNC+0LTQsNGYINCI0LXQt9C40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ9Cj0YDQtdC00Lgg0IjQtdC30LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn0JTQsCDQu9C4INC30LDQuNGB0YLQsCDQttC10LvQuNGC0LUg0LTQsCDQuNC30LHRgNC40YjQtdGC0LUg0L7QstCw0Zgg0ZjQtdC30LjQuj8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAn0J3QtSDQvNC+0LbQtdGC0LUg0L7QsdGA0LjRgdCw0YLQuCDQvtCy0LDRmCDRmNC10LfQuNC6LiDQo9C/0L7RgtGA0LXQsdGZ0LXQvSDRmNC1INGDINCx0LDRgCDRmNC10LTQvdC+0LwgRkFRINGH0LvQsNC90LrRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIEFydGljbGUocyknfSA9ICfQntCy0LDRmCDRmNC10LfQuNC6INGY0LUg0YPQv9C+0YLRgNC10LHRmdC10L0g0YMg0YHQu9C10LTQtdGb0LjQvCBGQVEg0YfQu9Cw0L3RhtC40LzQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ9Cf0L7QtNC10YjQsNCy0LDRmtC1INC60L7QvdGC0LXQutGB0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICdGQVEg0YfQu9Cw0L3QsNC60LAg0L/QviDRgdGC0YDQsNC90LgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn0J3QuNGB0YMg0L/RgNC+0L3QsNGS0LXQvdC4IEZBUSDQv9C+0LTQsNGG0LguJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICfQvtC0IDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAn0JrRmdGD0YfQvdCwINGA0LXRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn0JPQu9Cw0YHQsNGYICjQvdC/0YAg0ZjQtdC00L3QsNC60L4gMTAg0LjQu9C4INCy0LXRm9C1INC+0LQgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ9Ce0YbQtdC90LggKNC90L/RgCDRmNC10LTQvdCw0LrQviAyNSUg0LjQu9C4INCy0LXRm9C1INC+0LQgNzUlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZlZCd9ID0gJ9Ce0LTQvtCx0YDQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0J/QvtGB0LvQtdC00ZrQuCDRmNC1INC80LXRmtCw0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfQktGA0LXQvNC1INC60YDQtdC40YDQsNGa0LAgRkFRINGH0LvQsNC90LrQsCAo0L/RgNC1L9C/0L7RgdC70LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ9CS0YDQtdC80LUg0LrRgNC10LjRgNCw0ZrQsCBGQVEg0YfQu9Cw0L3QutCwICjQuNC30LzQtdGS0YMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0JLRgNC10LzQtSDQv9GA0L7QvNC10L3QtSBGQVEg0YfQu9Cw0L3QutCwICjQv9GA0LUv0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzQtSDQv9GA0L7QvNC10L3QtSBGQVEg0YfQu9Cw0L3QutCwICjQuNC30LzQtdGS0YMpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUSDRgtC10LrRgdGCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFRINC/0YDQtdGC0YDQsNCz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfQmNC30LHQvtGAINC/0YDQvtGE0LjQu9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfQk9C70LDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAn0J3QtdC80LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0LfQsCDQs9C70LDRgdCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ9Ch0L/QtdGG0LjRhNC40YfQvdC4INCz0LvQsNGB0L7QstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ9C90L/RgCDRmNC10LTQvdCw0LrQviAxMCDQuNC70Lgg0LLQtdGb0LUg0L7QtCA2MCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlJ30gPSAn0J7RhtC10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAn0J3QtdC80LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0LfQsCDQvtGG0LXRmtC40LLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ9Ch0L/QtdGG0LjRhNC40YfQvdCwINC+0YbQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICfQvdC/0YAg0ZjQtdC00L3QsNC60L4gMjUlINC40LvQuCDQstC10ZvQtSDQvtC0IDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ9CS0YDQtdC80LUg0LrRgNC10LjRgNCw0ZrQsCBGQVEg0YfQu9Cw0L3QutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAn0JLRgNC10LzQtSDQv9GA0L7QvNC10L3QtSBGQVEg0YfQu9Cw0L3QutCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUSDQuNC90YTQvtGA0LzQsNGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ9Ce0YbQtdGa0LjQstCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9CT0LvQsNGB0L7QstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ9CT0LvQsNGB0L7QstC4INC90LjRgdGDINC/0YDQvtC90LDRktC10L3QuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ9CT0LvQsNGB0L7QstC4INC90LjRgdGDINC/0YDQvtC90LDRktC10L3QuCEg0JHRg9C00LjRgtC1INC/0YDQstC4INC60L7RmNC4INGb0LUg0L7RhtC10L3QuNGC0Lgg0L7QstCw0ZggRkFRINGH0LvQsNC90LDQui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ9Cf0YDQtdGD0LfQvNC4INC/0YDQuNC70L7Qsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ9CU0LAg0LHQuNGB0YLQtSDQvtGC0LLQvtGA0LjQu9C4INCy0LXQt9C1INGDINGB0LvQtdC00LXRm9C40Lwg0LHQu9C+0LrQvtCy0LjQvNCwINC+0L/QuNGB0LAsINC80L7QttC00LAg0ZvQtdGC0LUg0YLRgNC10LHQsNGC0Lgg0LTQsCDQv9GA0LjRgtC40YHQvdC10YLQtSDigJ5DdHJs4oCdINC40LvQuCDigJ5DbWTigJ0g0LjQu9C4IOKAnlNoaWZ04oCdINGC0LDRgdGC0LXRgCDQtNC+0Log0LjRgdGC0L7QstGA0LXQvNC10L3QviDQutC70LjQutC90LXRgtC1INC90LAg0LLQtdC30YMgKNC30LDQstC40YHQuCDQvtC0INCy0LDRiNC10LMg0J7QoSDQuCDQv9GA0LXQs9C70LXQtNCw0YfQsCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAn0JrQvtC70LjQutC+INGY0LUg0LrQvtGA0LjRgdGC0LDQvSDQvtCy0LDRmCDRh9C70LDQvdCw0Lo/INCc0L7Qu9C40LzQviDQstCw0YEg0LTQsCDQtNCw0YLQtSDQstCw0YjRgyDQvtGG0LXQvdGDINC4INC/0L7QvNC+0LPQvdC10YLQtSDQv9C+0LTQuNC30LDRmtGDINC60LLQsNC70LjRgtCw0YLQsCDQsdCw0LfQtSDRh9C10YHRgtC+INC/0L7RgdGC0LDQstGZ0LDQvdC40YUg0L/QuNGC0LDRmtCwLiDQpdCy0LDQu9CwINCS0LDQvCEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn0L3QuNGY0LUg0LrQvtGA0LjRgdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn0LLRgNC70L4g0LrQvtGA0LjRgdC90L4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ9CU0L7QtNCw0Zgg0L3QsNGB0LvQvtCyIEZBUSDRh9C70LDQvdC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn0KPQvdC10YHQuCBGQVEg0YLQtdC60YHRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICfQo9C90LXRgdC4INC60L7QvNC/0LvQtdGC0LDQvSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAn0KPQvdC10YHQuCBGQVEg0LLQtdC30YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ9Cj0L3QtdGB0LggRkFRINGC0LXQutGB0YIg0Lgg0LLQtdC30YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ9Cj0L3QtdGB0Lgg0LrQvtC80L/Qu9C10YLQsNC9IEZBUSDQuCDQstC10LfRgyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ9Cd0LjRgdGDINC/0YDQvtC90LDRktC10L3QuCBGQVEg0YfQu9Cw0L3RhtC4Lic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJ9Ce0LLQviDQvNC+0LbQtSDQtNCwINCx0YPQtNC1INC+0LQg0L/QvtC80L7Rm9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICfQmtC+0YDQuNGB0L3QuCDRgNC10YHRg9GA0YHQuCDQt9CwINGD0L3QtdGC0Lgg0L/RgNC10LTQvNC10YIg0Lgg0YLQtdC60YHRgiDQvdC40YHRgyDQv9GA0L7QvdCw0ZLQtdC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICfQl9CwINC70LjRgdGC0YMg0LrQvtGA0LjRgdC90LjRhSDRgNC10YHRg9GA0YHQsCwg0LzQvtC70LjQvNC+INGD0L3QtdGB0LjRgtC1INC/0YDQtdC00LzQtdGCINC40LvQuCDRgtC10LrRgdGCLic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn0J/QvtGC0L/Rg9C90LAg0YLQtdC60YHRgtGD0LDQu9C90LAg0L/RgNC10YLRgNCw0LPQsCDRgyBGQVEg0YfQu9Cw0L3RhtC40LzQsCAo0L3Qv9GALiAiSm9obipuIiDQuNC70LggIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQsCDQs9C70LDRgdCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAn0KHQsNC80L4gRkFRINGH0LvQsNC90YbQuCDRgdCwINCz0LvQsNGB0L7QstC40LzQsC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtCwINC+0YbQtdGa0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICfQodCw0LzQviBGQVEg0YfQu9Cw0L3RhtC4INGB0LAg0L7RhtC10L3QvtC8Li4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn0JLRgNC10LzQtdC90YHQutCwINC+0LPRgNCw0L3QuNGH0LXRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICfQodCw0LzQviBGQVEg0YfQu9Cw0L3RhtC4INC60YDQtdC40YDQsNC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KHQsNC80L4gRkFRINGH0LvQsNC90YbQuCDQutGA0LXQuNGA0LDQvdC4INC40LfQvNC10ZLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICfQn9GA0L7RhNC40Lsg0L/RgNC10YLRgNCw0LPQtSDQutCw0L4g0YjQsNCx0LvQvtC9Pyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ9CR0YDQvtGYINGH0LvQsNC90LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ9Ci0YDQsNC20Lgg0YfQu9Cw0L3QutC1INGB0LAg0LrRmdGD0YfQvdC+0Lwg0YDQtdGH0LgnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn0IjQsNCy0L3Qvic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAn0J3QsNC30LDQtCDQvdCwIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGHJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfQn9C+0YLRgNC10LHQvdCwINCy0LDQvCDRmNC1IOKAnnJ34oCdINC00L7Qt9Cy0L7Qu9CwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAn0JrQsNGC0LXQs9C+0YDQuNGY0LUg0YMg0LrQvtGY0L7RmCDQutC+0YDQuNGB0L3QuNC6INC40LzQsCDQv9GA0LjRgdGC0YPQvyDQsdC10Lcg0L7Qs9GA0LDQvdC40YfQtdGa0LAg0L3QuNGB0YMg0L/RgNC+0L3QsNGS0LXQvdC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICfQndC40ZjQtSDQv9GA0L7QvdCw0ZLQtdC9INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGY0LXQt9C40Log0Lgg0L3QtSDQvNC+0LbQtSDRgdC1INC60YDQtdC40YDQsNGC0Lgg0L3QvtCyLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ9Cf0L7RgtGA0LXQsdCw0L0g0JjQlCDQmtCw0YLQtdCz0L7RgNC40ZjQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn0JrQsNGC0LXQs9C+0YDQuNGY0LAg0YLRgNC10LHQsCDQtNCwINC40LzQsCDQuNC80LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfQntCy0LAg0LrQsNGC0LXQs9C+0YDQuNGY0LAg0LLQtdGbINC/0L7RgdGC0L7RmNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAn0J7QstCwINC60LDRgtC10LPQvtGA0LjRmNCwINCy0LXRmyDQv9C+0YHRgtC+0ZjQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIg0JjQlCDQmtCw0YLQtdCz0L7RgNC40ZjQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAn0J3QuNGY0LUg0LHQuNC70L4g0LzQvtCz0YPRm9C1INC+0LHRgNC40YHQsNGC0Lgg0LrQsNGC0LXQs9C+0YDQuNGY0YMgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUSDQutCw0YLQtdCz0L7RgNC40ZjQsCDQsNC20YPRgNC40YDQsNC90LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICdGQVEg0LrQsNGC0LXQs9C+0YDQuNGY0LAg0LTQvtC00LDRgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICfQntCx0YDQuNGI0Lgg0LrQsNGC0LXQs9C+0YDQuNGY0YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0KHRgtCw0LLQutC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ9Cd0LXQvNCw0YLQtSDQtNC+0LfQstC+0LvRgyDQt9CwINC+0LLRgyDQutCw0YLQtdCz0L7RgNC40ZjRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAn0J3QuNGY0LUg0LHQuNC70L4g0LzQvtCz0YPRm9C1INC+0LHRgNC40YHQsNGC0LggRkFRINGH0LvQsNC90LDQuiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAn0JjQlCDQmtCw0YLQtdCz0L7RgNC40ZjQtSAlcyDRmNC1INC90LXQuNGB0L/RgNCw0LLQsNC9ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDRgdC1INC/0YDQuNC60LDQt9Cw0YLQuCDQuNGB0YLQvtGA0LjRmNCw0YIsINGY0LXRgCDQvdC40ZjQtSDQtNCw0YIg0JjQlCDQodGC0LDQstC60LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnRkFRINC40YHRgtC+0YDQuNGY0LDRgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSDQtNC90LXQstC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICfQn9C+0YLRgNC10LHQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0L7Qv9GG0LjRmNCwIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0L7Qv9GG0LjRmNCwIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3INC80L7RgNCwINC00LAg0LHRg9C00LUgSEFTSCDRgNC10YTQtdGA0LXQvdGG0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAn0J3QuNGY0LUg0L/RgNC+0L3QsNGS0LXQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwINC30LAg0L/RgNC10LPQu9C10LQgIiVzIiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0IjQtdC30LjQutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICfQmNC80LUg0ZjQtSDQvtCx0LDQstC10LfQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ9Ce0LLQsNGYINGY0LXQt9C40Log0LLQtdGbINC/0L7RgdGC0L7RmNC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICfQndC40ZjQtSDQsdC40LvQviDQvNC+0LPRg9Gb0LUg0L7QsdGA0LjRgdCw0YLQuCDRmNC10LfQuNC6ICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfQkNC20YPRgNC40YDQsNC9IEZBUSDRmNC10LfQuNC6ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn0JTQvtC00LDRgiBGQVEg0ZjQtdC30LjQuiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAn0J7QsdGA0LjRiNC4INGY0LXQt9C40LogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ9Cg0LXQt9GD0LvRgtCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICfQn9C+0YHQu9C10LTRmtC1INCw0LbRg9GA0LjRgNCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdGQVEg0LTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ9CI0LXQt9C40YfQutC4INC+0LHRmNC10LrRgiDRgdC1INC90LUg0LzQvtC20LUg0YPRh9C40YLQsNGC0LghJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9Cd0LXQvNCwINGA0LXQt9GD0LvRgtCw0YLQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUSDQsdGA0L7RmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICfQn9C+0YHQu9C10LTRmtC4INGY0LUg0LzQtdGa0LDQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ9CS0YDQtdC80LUg0LrRgNC10LjRgNCw0ZrQsCBGQVEg0YHRgtCw0LLQutC1ICjQv9GA0LUv0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwIEZBUSDRgdGC0LDQstC60LUgKNC40LfQvNC10ZLRgyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfQktGA0LXQvNC1INC40LfQvNC10L3QtSBGQVEg0YHRgtCw0LLQutC1ICjQv9GA0LUv0L/QvtGB0LvQtSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn0JLRgNC10LzQtSDQuNC30LzQtdC90LUgRkFRINGB0YLQsNCy0LrQtSAo0LjQt9C80LXRktGDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICfQiNC10LTQvdCw0LrQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICfQktC10ZvQtSDQvtC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICfQiNC10LTQvdCw0LrQviDQuNC70Lgg0LLQtdGb0LUg0L7QtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICfQnNCw0ZrQtSDQvtC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICfQiNC10LTQvdCw0LrQviDQuNC70Lgg0LzQsNGa0LUg0L7QtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICfQn9C+0YLRgNC10LHQsNC9INCY0JQg0J/QvtGZ0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ9Cl0LLQsNC70LAg0L3QsCDQstCw0YjQtdC8INCz0LvQsNGB0YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAn0JLQtdGbINGB0YLQtSDQs9C70LDRgdCw0LvQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfQndC40ZjQtSDQuNC30LDQsdGA0LDQvdCwINC90Lgg0ZjQtdC00L3QsCDQvtGG0LXQvdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICfQnNC10YXQsNC90LjQt9Cw0Lwg0LfQsCDQs9C70LDRgdCw0ZrQtSDQvdC40ZjQtSDQsNC60YLQuNCy0LjRgNCw0L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAn0J7RhtC10ZrQuNCy0LDRmtC1INCz0LvQsNGB0LDRmtCwINC90LjRmNC1INC00LXRhNC40L3QuNGB0LDQvdC+ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfQqNGC0LDQvNC/0LAgRkFRINGH0LvQsNC90LrQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJ9Ca0YDQtdC40YDQsNC9INC40LfQvNC10ZLRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICfQn9C+0YLRgNC10LHQsNC9INCY0JQg0KHRgtCw0LLQutC1ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRINGH0LvQsNC90YbQuCAo0L3QvtCy0L4g0LrRgNC10LjRgNCw0L3QuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUSDRh9C70LDQvdGG0LggKNC90LXQtNCw0LLQvdC+INC80LXRmtCw0L3QuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRINGH0LvQsNC90YbQuCAo0L/RgNCy0LjRhSAxMCknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUVJTUy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gVHlwZSBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIg0KLQuNC/ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICdUeXBlINC80L7RgNCwINCx0LjRgtC4IExhc3RDcmVhdGUsIExhc3RDaGFuZ2Ug0LjQu9C4IFRvcDEwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ1JTUyDQtNCw0YLQvtGC0LXQutCwINC90LUg0LzQvtGb0LUg0LHQuNGC0Lgg0YHQvdC40LzRmdC10L3QsCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJXMgKEZBUSDRgtC10LrRgdGCKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0g0JrQu9C40ZjQtdC90YIgKCVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyIChGQVFGdWxsdGV4dCknfSA9ICclcyAtINCa0LvQuNGY0LXQvdGCIChGQVEg0YLQtdC60YHRgiknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0g0IjQsNCy0L3QviAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtINCI0LDQstC90L4gKEZBUSDRgtC10LrRgdGCKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICfQndC10L7Qv9GF0L7QtNC90LAg0L7RhtC10L3QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ9Cn0LvQsNC90LDQuiDRmNC1INC/0YDQsNC30LDQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J/QvtGB0LvQtdC00ZrQtSDQutGA0LXQuNGA0LDQvdC4IEZBUSDRh9C70LDQvdGG0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J/QvtGB0LvQtdC00ZrQtSDQsNC20YPRgNC40YDQsNC90LggRkFRINGH0LvQsNC90YbQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAn0J3QsNGY0L/QvtC/0YPQu9Cw0YDQvdC40ZjQuNGFIDEwIEZBUSDRh9C70LDQvdCw0LrQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICfQotC40L8g0YHQsNC00YDQttCw0ZjQsCc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn0LjQvdGC0LXRgNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICfQtdC60YHRgtC10YDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ9GY0LDQstC90L4nOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICfQoyDRgNC10LTRgyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ9Ck0LjQu9GC0LXRgCDQt9CwIOKAnkhUTUzigJ0g0LjQt9C70LDQtyDQt9CwINC00L7QtNCw0LLQsNGa0LUg0LLQtdC30LUg0LjQt9CwINC00LXRhNC40L3QuNGB0LDQvdC+0LMg0L3QuNC30LAg0LfQvdCw0LrQvtCy0LAuINCV0LvQtdC80LXQvdGCINCh0LvQuNC60LAg0LTQvtC30LLQvtGZ0LDQstCwINC00LLQsCDQvdCw0YfQuNC90LAg0YPQvdC+0YHQsC4g0J/RgNCy0Lgg0ZjQtSDQvdCw0LfQuNCyINGB0LvQuNC60LUgKNC90L/RgCBmYXEucG5nKS4g0YMg0L7QstC+0Lwg0YHQu9GD0YfQsNGY0YMg0LHQuNGb0LUg0LrQvtGA0LjRiNGb0LXQvdCwIOKAnk9UUlPigJ0g0L/Rg9GC0LDRmtCwINC00L4g0YHQu9C40LrQtS4gINCU0YDRg9Cz0LAg0LzQvtCz0YPRm9C90L7RgdGCINGY0LUg0YPQvdC+0YEg0LLQtdC30LUg0LTQviDRgdC70LjQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICfQlNC+0LTQsNGYIEZBUSDRh9C70LDQvdCw0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfigJ5DU1PigJ0g0LHQvtGY0LAg0LfQsCDRgNC10LfRg9C70YLQsNGCINCz0LvQsNGB0LDRmtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAn0JLRgNC10LzQtSDQvtGB0LvQvtCx0LDRktCw0ZrQsCDQutC10YjQsCDQt9CwIEZBUSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0ZnQsNGa0LUg0LrQsNGC0LXQs9C+0YDQuNGY0LDQvNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAn0KPQv9GA0LDQstGZ0LDRmtC1INC60LDRgtC10LPQvtGA0LjRmNCw0LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJ9Co0YLQsNC80L/QsNGa0LUg0LrQu9C40ZjQtdC90YLRgdC60L7QsyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAn0KHRgNC+0LTQvdC4IEZBUSDRh9C70LDQvdGG0Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICfQodGA0L7QtNC90LggRkFRINGH0LvQsNC90YbQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICfQlNC10YLQsNGZ0Lgg0LrQu9C40ZjQtdC90YLRgdC60L7QsyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAn0J/RgNC10YLRgNCw0LPQsCDQutC70LjRmNC10L3RgtGB0LrQvtCzIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ9Ca0LvQuNGY0LXQvdGC0YHQutC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn0JHRgNC+0Zgg0LTQtdGG0LjQvNCw0LvQsCDRgyDRgNC10LfRg9C70YLQsNGC0YMg0LPQu9Cw0YHQsNGa0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICfQndCw0LfQuNCyINC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC1INC60LDRgtC10LPQvtGA0LjRmNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0ZjQtdC30LjQuiBGQVEg0YfQu9Cw0L3QsNC60LAg0YMg0ZjQtdC00L3QvtGY0LXQt9C40YfQutC+0Lwg0L3QsNGH0LjQvdGDINGA0LDQtNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QsCDQvNCw0LrRgdC40LzQsNC70L3QsCDQtNGD0LbQuNC90LAg0L3QsNGB0LvQvtCy0LAgRkFRINGH0LvQsNC90LrQsCDQutC+0ZjQsCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/RgNC40L7RgNC40YLQtdGCINGC0LjQutC10YLQsCDQt9CwINC+0LTQvtCx0YDQsNCy0LDRmtC1IEZBUSDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGB0YLQsNGa0LUgRkFRINGD0L3QvtGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDRgdGC0LDRmtC1INGC0LjQutC10YLQsCDQt9CwINC+0LTQvtCx0YDQsNCy0LDRmtC1IEZBUSDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YLQuNC/INGC0LjQutC10YLQsCDQt9CwINC+0LTQvtCx0YDQsNCy0LDRmtC1IEZBUSDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdCwINCy0YDQtdC00L3QvtGB0YIg0LfQsCDigJ5BY3Rpb27igJ0g0L/QsNGA0LDQvNC10YLQsNGAINGDINGY0LDQstC90L7QvCDRhNGA0L7QvdGC0LXQvdC00YMuINCe0LLQsNGYINC/0LDRgNCw0LzQtdGC0LDRgCDQutC+0YDQuNGB0YLQtSDRgdC60YDQuNC/0YLQtSDRgdC40YHRgtC10LzQsC4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCQ0LrRhtC40ZjQtSDQs9C00LUg0ZjQtSDQtNGD0LPQvNC1INC/0L7RgdGC0LDQstC60Lgg0LTQvtGB0YLRg9C/0L3QviDRgyDQv9C+0LLQtdC30LDQvdC+0Lwg0LPRgNCw0YTQuNGH0LrQvtC8INC10LvQtdC80LXQvdGC0YMg0L7QsdGY0LXQutGC0LAgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0JzQvtC70LjQvNC+INC00LAg0LjQvNCw0YLQtSDQvdCwINGD0LzRgyDQtNCwINC+0LLQtSDQkNC60YbQuNGY0LUg0LzQvtGA0LDRmNGDINC00LAg0LHRg9C00YMg0YDQtdCz0LjRgdGC0YDQvtCy0LDQvdC1INGDINGB0LvQtdC00LXRm9C40LwgSlMg0LggQ1NTINC00LDRgtC+0YLQtdC60LDQvNCwOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDQuCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQtNCwINC70Lgg0L3QsNGB0LvQvtCyIEZBUSDRgtGA0LXQsdCwINC00LAg0LHRg9C00LUg0LTQvtC00LDRgiDQvdCwINGC0LXQvNGDINGH0LvQsNC90LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQutC+0ZjQtSDQutC+0LvQvtC90LUg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90LUg0YMg0LTQvtC00LDRgtC60YMg0L/QvtCy0LXQt9Cw0L3QuNGFIEZBUSDRh9C70LDQvdCw0LrQsCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAi0YHQu9C+0LbQtdC90L4iKS4g0J3QsNC/0L7QvNC10L3QsDog0YHQsNC80L4g0LDRgtGA0LjQsdGD0YLQuCBGQVEg0YfQu9Cw0L3QutCwINC4INC00LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCAoRHluYW1pY0ZpZWxkX05hbWVYKSDRgdGDINC00L7Qt9Cy0L7RmdC10L3QuCDQt9CwIERlZmF1bHRDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC80L7QtNGD0Lsg0L/RgNC10LPQu9C10LTQsCDQt9CwINC80LDQu9C4INC/0YDQuNC60LDQtyBGQVEg0LTQvdC10LLQvdC40LrQsC4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LzQvtC00YPQuyDQv9GA0LXQs9C70LXQtNCwINC30LAg0LzQsNC70Lgg0L/RgNC40LrQsNC3IEZBUSDQu9C40YHRgtC1LiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUgRkFRINC/0YDQtdGC0YDQsNC30LggRkFRICDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyAg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSBGQVEg0YMg0L/RgNC10YLRgNCw0LfQuCBGQVEgINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSBGQVEg0YMg0L/RgNC10YLRgNCw0LfQuCBGQVEgINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINC30LAg0YHQvtGA0YLQuNGA0LDRmtC1IEZBUSDRgyBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINC30LAg0YHQvtGA0YLQuNGA0LDRmtC1IEZBUSDRgyBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUgRkFRINGDIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGH0YMg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCBGQVEg0YMg0YDQtdC30YPQu9GC0LDRgtC40LzQsCBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9CwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/RgNC10YDQsNGC0LXRgNCwLiDQk9C+0YDQtTog0L3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INC90LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCBGQVEg0YMg0YDQtdC30YPQu9GC0LDRgtC40LzQsCBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9CwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuINCT0L7RgNC1OiDQvdCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0L3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCBGQVEg0YDQtdC30YPQu9GC0LDRgtC40LzQsCBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9CwINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4g0JPQvtGA0LU6INC90LDRmNGB0YLQsNGA0LjRmNC4INC90LAg0LLRgNGF0YMuINCU0L7Qu9C1OiDQvdCw0ZjQvdC+0LLQuNGY0LUg0L3QsCDQstGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgNC10LTQvtGB0LvQtdC0IEZBUSDRgyDRgNC10LfRg9C70YLQsNGC0LjQvNCwINC/0YDQtdGC0YDQsNCz0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9GA0LXRgNCw0YLQtdGA0LAuINCT0L7RgNC1OiDQvdCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0L3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCBGQVEg0YMg0YDQtdC30YPQu9GC0LDRgtC40LzQsCDQv9GA0LXRgtGA0LDQs9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuINCT0L7RgNC1OiDQvdCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0L3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQgRkFRINGDINGA0LXQt9GD0LvRgtCw0YLQuNC80LAg0L/RgNC10YLRgNCw0LPQtSDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuINCT0L7RgNC1OiDQvdCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0L3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9GA0LjQutCw0LfQsNC90LggRkFRINCw0YLRgNC40LHRg9GCINC/0YDQtdGC0YDQsNCz0LUg0LfQsCBGQVEg0L/RgNC+0LfQvtGAINC30LAg0L/RgNC10YLRgNCw0LPRgy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LjQvdGE0L7RgNC80LDRhtC40ZjQtSDQutC+0ZjQtSDRm9C1INCx0LjRgtC4INGD0LHQsNGH0LXQvdC1INGDIEZBUSDQsdCw0LfQuNGA0LDQvdC4INGC0LjQutC10YIuICLQmtC+0LzQv9C70LXRgtCw0L0gRkFRIiDRg9C60ZnRg9GH0YPRmNC1INGC0LXQutGB0YIsINC/0YDQuNC70L7Qs9C1INC4INGD0LzQtdGC0L3Rg9GC0LUg0YHQu9C40LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LfQsNC00LjQvdGB0LrQtSDQv9Cw0YDQsNC80LXRgtGA0LUg0LfQsCDQutC+0L3RgtGA0L7Qu9C90YMg0YLQsNCx0LvRgy4gItCb0LjQvNC40YIiINC00LXRhNC40L3QuNGI0LUg0LHRgNC+0Zgg0L/QvtC00YDQtdC30YPQvNC10LLQsNC90L4g0L/RgNC40LrQsNC30LDQvdC40YUg0YPQvdC+0YHQsC4gItCT0YDRg9C/0LAiINGB0LUg0LrQvtGA0LjRgdGC0Lgg0LTQsCDQvtCz0YDQsNC90LjRh9C4INC/0YDQuNGB0YLRg9C/INC00L7QtNCw0YLQutGDICjQvdC/0YAuINCT0YDRg9C/0LA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4i0J/QvtC00YDQsNC30YPQvNC10LLQsNC90L4iINGD0LrQsNC30YPRmNC1INC90LAg0YLQviDQtNCwINC70Lgg0ZjQtSDQtNC+0LTQsNGC0LDQuiDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDQsNC60YLQuNCy0LjRgNCw0L0g0LjQu9C4INC00LAg0ZjQtSDQv9C+0YLRgNC10LHQvdC+INC00LAg0LPQsCDQutC+0YDQuNGB0L3QuNC6INC80LDQvdGD0LXQu9C90L4g0LDQutGC0LjQstC40YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9GA0LjQutCw0LfQsNC90LUg0LrQvtC70L7QvdC1INGDIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGH0YMuINCe0LLQsCDQvtC/0YbQuNGY0LAg0L3QtdC80LAg0YPRgtC40YbQsNGYINC90LAg0L/QvtC30LjRhtC40ZjQtSDQutC+0LvQvtC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9GA0LjQutCw0LfQsNC90LUg0LrQvtC70L7QvdC1INGDIEZBUSDQtNC90LXQstC90LjQutGDLiDQntCy0LAg0L7Qv9GG0LjRmNCwINC90LXQvNCwINGD0YLQuNGG0LDRmCDQvdCwINC/0L7Qt9C40YbQuNGY0LUg0LrQvtC70L7QvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9GA0LjQutCw0LfQsNC90LUg0LrQvtC70L7QvdC1INGDIEZBUSDQv9GA0LXRgtGA0LDQt9C4LiDQntCy0LAg0L7Qv9GG0LjRmNCwINC90LXQvNCwINGD0YLQuNGG0LDRmCDQvdCwINC/0L7Qt9C40YbQuNGY0LUg0LrQvtC70L7QvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ9CU0LXRhNC40L3QuNGI0LUg0LPQtNC1INGb0LUgItCj0LHQsNGG0LggRkFRIiDQstC10LfQsCDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ9CU0LXRhNC40L3QuNGG0LjRmNCwINC/0L7RmdCwINGB0LvQvtCx0L7QtNC90L7QsyDRgtC10LrRgdGC0LAg0LfQsCBGQVEg0YHRgtCw0LLQutGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICfQntCx0YDQuNGI0Lgg0L7QstCw0ZggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDRgtCw0L3QsCDRgyDQtdC60YDQsNC90YMg0LTQvtC00LDQstCw0ZrQsCBGQVEg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDQuNC30LzQtdC90LUgRkFRINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0L/RgNC10LPQu9C10LTRgyBGQVEg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC/0YDQtdCz0LvQtdC00YMgRkFRINGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0LXQutGA0LDQvdGDINGI0YLQsNC80L/QtSBGQVEg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtdC60YDQsNC90YMg0YjRgtCw0LzQv9C1IEZBUSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0LXQutGA0LDQvdGDINGI0YLQsNC80L/QtSBGQVEg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0LXQutGA0LDQvdGDINC/0YDQtdGC0YDQsNCz0LUgRkFRINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDQv9GA0LXRgtGA0LDQs9C1IEZBUSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC10LrRgNCw0L3RgyDQv9GA0LXRgtGA0LDQs9C1IEZBUSDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQv9GA0LXQs9C70LXQtNGDIEZBUSDQvNCw0LvQvtCzINGE0L7RgNC80LDRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQtdCz0LvQtdC00YMgRkFRINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQtdCz0LvQtdC00YMgRkFRINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C60LAg0L/QvtGZ0LAg0L/RgNC40LrQsNC30LDQvdCwINGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC10LPQu9C10LTRgyBGQVEg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAn0KPRgNC10LTQuCDQvtCy0LDRmCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ9CQ0LrRgtC40LLQuNGA0LDRmtC1INCy0LjRiNC1INGY0LXQt9C40LrQsCDQvdCwIEZBUSDQvNC+0LTRg9C70YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LAg0YTRg9C90LrRhtC40ZjRgyDRgdGA0L7QtNC90LjRhSDRh9C70LDQvdCw0LrQsCDQt9CwINC40L3RgtC10YDRhNC10ZjRgSDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJ9CQ0LrRgtC40LLQuNGA0LDRmtC1INC80LXRhdCw0L3QuNC30LzQsCDQt9CwINCz0LvQsNGB0LDRmtC1INC90LAgRkFRINC80L7QtNGD0LvRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfQmNGB0YLRgNCw0LbQuNCy0LDRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICdGQVEgQUpBWCDQvtC00LPQvtCy0LDRgNCw0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCDQvtC00LPQvtCy0LDRgNCw0Ycg0LfQsCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnRkFRINC/0YDQvtGB0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ0ZBUSDQv9GA0L7RgdGC0L7RgC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICfQntCx0YDQuNGI0LggRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICfQo9GA0LXQtNC4IEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAn0JjRgdGC0L7RgNC40ZjQsNGCIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC/0YDQtdCz0LvQtdC00LAgRkFRINC00L3QtdCy0L3QuNC60LAgItC80LDQu9C+Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC/0YDQtdCz0LvQtdC00LAgRkFRICLQvNCw0LvQviInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ9Co0YLQsNC80L/QsNGYIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJ9Cc0L7QtNGD0Lsg0YDRg9GC0LXRgNCwIEZBUSDQv9GA0LXRgtGA0LDQs9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAn0J/QvtGZ0LU0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ9Cf0L7RmdC1NSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ0vQvtC80L/Qu9C10YLQsNC9IEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfQk9GA0YPQv9CwINC30LAg0L7QtNC+0LHRgNCw0LLQsNGa0LUgRkFRINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAn0JjRgdGC0L7RgNC40ZjQsNGCINC+0LLQvtCzIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAn0KPQutGZ0YPRh9C4INC40L3RgtC10YDQvdCwINC/0L7RmdCwINGDIEZBUSDQsdCw0LfQuNGA0LDQvSDRgtC40LrQtdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ9Cj0LrRmdGD0YfQuCDQvdCw0LfQuNCyINGB0LLQsNC60L7QsyDQv9C+0ZnQsCDRgyBGQVEg0LHQsNC30LjRgNCw0L0g0YLQuNC60LXRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICfQmNC90YLQtdGA0YTQtdGY0YEg0L3QsCDQutC+0Lwg0YLRgNC10LHQsCDQv9GA0LjQutCw0LfQsNGC0Lgg0LHRgNC30YMg0L/RgNC10YLRgNCw0LPRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ9CU0L3QtdCy0L3QuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0ZnQsNGa0LUg0ZjQtdC30LjRhtC40LzQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJ9Cj0L/RgNCw0LLRmdCw0ZrQtSDRmNC10LfQuNGG0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQs9C10L3QtdGA0LjRgdCw0ZrQtSDQu9C40YHRgtC1INC60ZnRg9GH0L3QuNGFINGA0LXRh9C4IEZBUSDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn0J/QvtCy0LXQttC4INC00YDRg9Cz0Lgg0L7QsdGY0LXQutCw0YIg0YHQsCDQvtCy0L7QvCDRgdGC0LDQstC60L7QvCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICfQm9C40YHRgtCwINC40LzQtdC90LAg0YDQtdC00L7QstCwINC30LAg0LrQvtGY0LUg0ZjQtSDRhNGD0L3RhtC40ZjQsCDRgdGA0L7QtNC90LjRhSDRh9C70LDQvdCw0LrQsCDQsNC60YLQuNCy0LjRgNCw0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JvQuNGB0YLQsCDRgtC40L/QvtCy0LAg0YHRgtCw0ZrQsCDQutC+0ZjQuCDRgdC1INC80L7Qs9GDINC60L7RgNC40YHRgtC40YLQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cb0LjRgdGC0LAg0YLQuNC/0L7QstCwINGB0YLQsNGa0LAg0LrQvtGY0Lgg0YHQtSDQvNC+0LPRgyDQutC+0YDQuNGB0YLQuNGC0Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cb0LjRgdGC0LAg0YLQuNC/0L7QstCwINGB0YLQsNGa0LAg0LrQvtGY0Lgg0YHQtSDQvNC+0LPRgyDQutC+0YDQuNGB0YLQuNGC0Lgg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwINC80L7QtNGD0LvQsCDQt9CwINGD0YfQuNGC0LDQstCw0ZrQtSDQt9CwINGY0LDQstC90Lgg0LjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCBGQVEg0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGH0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCBGQVEg0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMg0YDQtdC30YPQu9GC0LDRgtGDIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGH0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdC4INCx0YDQvtGYIEZBUSDRh9C70LDQvdCw0LrQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyDRgNC10LfRg9C70YLQsNGC0YMgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfQsCDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCBGQVEg0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMgRkFRINC00L3QtdCy0L3QuNC60YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdC4INCx0YDQvtGYIEZBUSDRh9C70LDQvdCw0LrQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyDRgNC10LfRg9C70YLQsNGC0YMg0L/RgNC10YLRgNCw0LPQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90Lgg0LHRgNC+0ZggRkFRINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDINGA0LXQt9GD0LvRgtCw0YLRgyDQv9GA0LXRgtGA0LDQs9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdC4INCx0YDQvtGYIEZBUSDRh9C70LDQvdCw0LrQsCDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyDRgNC10LfRg9C70YLQsNGC0YMg0L/RgNC10YLRgNCw0LPQtSDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90LAg0LTRg9C20LjQvdCwINC90LDRgdC70L7QstCwINGDIEZBUSDRh9C70LDQvdC60YMg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90LAg0LTRg9C20LjQvdCwINC90LDRgdC70L7QstCwINGDIEZBUSDRh9C70LDQvdC60YMg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70L3QsCDQtNGD0LbQuNC90LAg0L3QsNGB0LvQvtCy0LAg0YMgRkFRINGH0LvQsNC90LrRgyDQutC+0ZjQuCDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L3QuCDRgyBGQVEg0LjRgdGC0YDQsNC20LjQstCw0YfRgyDRgyDRmNCw0LLQvdC+0Lwg0LjQvdGC0LXRgNGE0LXRmNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyBGQVEg0YfQu9Cw0L3QutGDINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDIEZBUSDQv9GA0LXRgtGA0LDQt9C4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90LAg0LTRg9C20LjQvdCwINC90LDRgdC70L7QstCwINGDIEZBUSDRh9C70LDQvdC60YMg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMgRkFRINC/0YDQtdGC0YDQsNC30Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyBGQVEg0YfQu9Cw0L3QutGDINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDIEZBUSDQv9GA0LXRgtGA0LDQt9C4INGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdCwINC00YPQttC40L3QsCDQvdCw0YHQu9C+0LLQsCDRgyBGQVEg0YfQu9Cw0L3QutGDINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDIEZBUSDQtNC90LXQstC90LjQutGDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0LPQtdC90LXRgNC40YHQsNGa0LUgSFRNTCBPcGVuU2VhcmNoINC/0YDQvtGE0LjQu9CwINC30LAg0LrRgNCw0YLQutGDIEZBUSDQv9GA0LXRgtGA0LDQs9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDQs9C10L3QtdGA0LjRgdCw0ZrQtSBIVE1MIE9wZW5TZWFyY2gg0L/RgNC+0YTQuNC70LAg0LfQsCDQutGA0LDRgtC60YMgRkFRINC/0YDQtdGC0YDQsNCz0YMg0YMg0ZjQsNCy0L3QvtC8INC/0YDQvtGE0LjQu9GDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0LPQtdC90LXRgNC40YHQsNGa0LUgSFRNTCBPcGVuU2VhcmNoINC/0YDQvtGE0LjQu9CwINC30LAg0LrRgNCw0YLQutGDIEZBUSDQv9GA0LXRgtGA0LDQs9GDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAn0J3QvtCy0LggRkFRINGH0LvQsNC90LDQui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAn0J3QvtCy0LggRkFRINGH0LvQsNC90YbQuCDRgtGA0LXQsdCw0ZjRgyDQsdC40YLQuCDQvtC00L7QsdGA0LXQvdC4INC/0YDQtSDQvtCx0ZjQsNCy0ZnQuNCy0LDRmtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdGA0L7RmCBGQVEg0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0YMgRkFRINC/0YDQtdGC0YDQsNC20LjQstCw0YfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0ZggRkFRINGH0LvQsNC90LDQutCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDIEZBUSDQv9GA0LXRgtGA0LDQttC40LLQsNGH0YMg0YMg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdGA0L7RmCBGQVEg0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0L3QsCDRgdCy0LDQutC+0Zgg0YHRgtGA0LDQvdC4INGA0LXQt9GD0LvRgtCw0YLQsCDQv9GA0LXRgtGA0LDQs9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdGA0L7RmCBGQVEg0YfQu9Cw0L3QsNC60LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0L3QsCDRgdCy0LDQutC+0Zgg0YHRgtGA0LDQvdC4INGA0LXQt9GD0LvRgtCw0YLQsCDQv9GA0LXRgtGA0LDQs9C1INGDINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICfQkdGA0L7RmCDQv9GA0LjQutCw0LfQsNC90LjRhSDRgdGC0LDQstC60Lgg0YMg0L/QvtGB0LvQtdC00ZrQuNC8INC40LfQvNC10L3QsNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAn0JHRgNC+0Zgg0L/RgNC40LrQsNC30LDQvdC40YUg0YHRgtCw0LLQutC4INGDINC/0L7RgdC70LXQtNGa0LUg0LrRgNC10LjRgNCw0L3QuNC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ9CR0YDQvtGYINC/0YDQuNC60LDQt9Cw0L3QuNGFINGB0YLQsNCy0LrQuCDRgyAi0L/RgNCy0LjRhSAxMCIgLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgZmlsdGVyIHRvIGFkZCBKYXZhLXNjcmlwdCB0byBDdXN0b21lclRpY2tldE1lc3NhZ2Ugc2NyZWVuLid9ID0KICAgICAgICAn0JjQt9C70LDQt9C90Lgg0YTQuNC70YLQtdGAINC30LAg0YPQsdCw0YbQuNCy0LDRmtC1IEphdmFTY3JpcHQg0YMgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlINC10LrRgNCw0L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBsaW1pdCBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INCx0YDQvtGY0LAg0L/RgNC40LrQsNC30LDQvdC40YUg0YHRgNC+0LTQvdC40YUgRkFRINGH0LvQsNC90LDQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIGpvdXJuYWwgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0YHRgtGA0LDQvdC40YbQsCAo0L3QsCDQutC+0ZjQuNC80LAg0YHRgyBGQVEg0YHRgtCw0LLQutC1INC/0YDQuNC60LDQt9Cw0L3QtSkg0L3QsCDQvNCw0LvQvtC8INC/0YDQuNC60LDQt9GDINC/0YDQtdCz0LvQtdC00LAgRkFRINC00L3QtdCy0L3QuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0YHRgtGA0LDQvdC40YbQsCAo0L3QsCDQutC+0ZjQuNC80LAg0YHRgyDQstC40LTRmdC40LLQtSBGQVEg0YHRgtCw0LLQutC1KSDRgdC80LDRmtC10L3QvtCzINC/0YDQtdCz0LvQtdC00LAgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ9Co0YLQsNC80L/QsNGYINC+0LLQsNGYIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJ9Co0YLQsNC80L/QsNGa0LUg0ZjQsNCy0L3QuNGFIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBab29tLid9ID0gJ9CU0LXRgtCw0ZnQuCDRmNCw0LLQvdC40YUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIHNlYXJjaC4nfSA9ICfQn9GA0LXRgtGA0LDQs9CwINGY0LDQstC90LjRhSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAn0IjQsNCy0L3QuCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ9Cg0LXQtCDQt9CwINC+0LTQvtCx0YDQsNCy0LDRmtC1IEZBUSDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICfQntGG0LXQvdC1INC30LAg0LPQu9Cw0YHQsNGa0LUuINCa0ZnRg9GHINC80L7RgNCwINCx0LjRgtC4INGDINC/0YDQvtGG0LXQvdGC0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAn0KEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ9Cf0YDQtdGC0YDQsNC20LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAn0JzQsNC70LAgRkFRINC/0YDQtdGC0YDQsNCz0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAn0J/RgNC10YLRgNCw0LPQsCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICfQmNC30LDQsdC10YDQuNGC0LUg0LrQvtC70LjQutC+INGb0LUg0YHRgtCw0LLQutC4INCx0LjRgtC4INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INC/0YDQuNC60LDQt9Cw0L3QviDRgyDQv9GA0LXQs9C70LXQtNGDINC00L3QtdCy0L3QuNC60LAg0LzQsNC70L7QsyDRhNC+0YDQvNCw0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICfQmNC30LDQsdC10YDQuNGC0LUg0LrQvtC70LjQutC+INGb0LUg0YHRgtCw0LLQutC4INCx0LjRgtC4INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INC/0YDQuNC60LDQt9Cw0L3QviDRgyDQv9GA0LXQs9C70LXQtNGDINC80LDQu9C+0LMg0YTQvtGA0LzQsNGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ9Cf0L7QtNC10YHQuCDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3RgyDQstC40YHQuNC90YMgKNGDINC/0LjQutGB0LXQu9C40LzQsCkg0LjQvdC70LjQvdC1IEhUTUwg0L/QvtGZ0LAg0YMgQWdlbnRGQVFab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ9Cf0L7QtNC10YHQuCDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3RgyDQstC40YHQuNC90YMgKNGDINC/0LjQutGB0LXQu9C40LzQsCkg0LjQvdC70LjQvdC1IEhUTUwg0L/QvtGZ0LAg0YMgQ3VzdG9tZXJGQVFab29tICjQuCBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn0J/QvtC00LXRgdC4INC80LDQutGB0LjQvNCw0LvQvdGDINCy0LjRgdC40L3RgyAo0YMg0L/QuNC60YHQtdC70LjQvNCwKSDQuNC90LvQuNC90LUgSFRNTCDQv9C+0ZnQsCDRgyBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAn0J/QvtC00LXRgdC4INC80LDQutGB0LjQvNCw0LvQvdGDINCy0LjRgdC40L3RgyAo0YMg0L/QuNC60YHQtdC70LjQvNCwKSDQuNC90LvQuNC90LUgSFRNTCDQv9C+0ZnQsCDRgyBDdXN0b21lckZBUVpvb20gKNC4IFB1YmxpY0ZBUVpvb20pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttC4ICLQo9Cx0LDRhtC4IEZBUSDQstC10LfRgyIg0LTRg9Cz0LzQtSDRgyBBZ2VudEZBUVpvb21TbWFsbCDQt9CwINGY0LDQstC90LUgRkFRINCw0YDRgtC40LrQu9C1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbQuCAi0KPQsdCw0YbQuCBGQVEg0YLQtdC60YHRgiDQuCDQstC10LfRgyIgLyAi0KPQsdCw0YbQuCDRhtC10L4gRkFRINC4INCy0LXQt9GDINC00YPQs9C80LUg0YMgQWdlbnRGQVFab29tU21hbGwg0LfQsCDRmNCw0LLQvdC1IEZBUSDQsNGA0YLQuNC60LvQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttC4ICLQo9Cx0LDRhtC4IEZBUSDRgtC10LrRgdGCIiAvICLQo9Cx0LDRhtC4INGG0LXQviBGQVEiINC00YPQs9C80LUg0YMgQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ9Cf0YDQuNC60LDQtyBGQVEg0YfQu9Cw0L3QutCwINC60LDQviBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfQn9GA0LjQutCw0LbQuCDQv9GD0YLQsNGa0YMg0LTQviBGQVEg0LTQsC/QvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQtyDQvdC10LjRgdC/0YDQstC90LjRhSDRgdGC0LDQstC60Lgg0YMg0YDQtdC30YPQu9GC0LDRgtC40LzQsCBGQVEg0L/RgNC10YLRgNCw0LbQuNCy0LDRh9CwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ9Cf0YDQuNC60LDQttC4INGB0YLQsNCy0LrQtSDRgdGD0LHQutCw0YLQtdCz0L7RgNC40ZjQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn0J/RgNC40LrQsNC20Lgg0LfQsNC00ZrQtSDQv9GA0L7QvNC10ZrQtdC90LUg0YHRgtCw0LLQutC1INGDINC00LXRhNC40L3QuNGB0LDQvdC40Lwg0LjQvdGC0LXRgNGE0LXRmNGB0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn0J/RgNC40LrQsNC20Lgg0LfQsNC00ZrQtSDQutGA0LXQuNGA0LDQvdC1INGB0YLQsNCy0LrQtSDRgyDQtNC10YTQuNC90LjRgdCw0L3QuNC8INC40L3RgtC10YDRhNC10ZjRgdC40LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbQuCDQt9Cy0LXQt9C00LjRhtC1INC30LAg0YfQu9Cw0L3QutC1INGB0LAg0ZjQtdC00L3QsNC60L7QvCDQuNC70Lgg0LHQvtGZ0L7QvCDQvtGG0LXQvdC+0Lwg0L7QtCDQtNC10YTQuNC90LjRgdCw0L3QtSDQstGA0LXQtNC90L7RgdGC0LggKNC/0L7RgdGC0LDQstC40YLQtSDQstGA0LXQtNC90L7RgdGCIFwnMFwnINC30LAg0LTQtdCw0LrRgtC40LLQuNGA0LDRmtC1INC/0YDQuNC60LDQt9CwKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ9Cf0YDQuNC60LDQttC4INC/0YDQstC40YUgMTAg0YHRgtCw0LLQutC4INGDINC00LXRhNC40L3QuNGB0LDQvdC40Lwg0LjQvdGC0LXRgNGE0LXRmNGB0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn0J/RgNC40LrQsNC20Lgg0LPQu9Cw0YHQsNGa0LUg0YMg0LTQtdGE0LjQvdC40YHQsNC90LjQvCDQuNC90YLQtdGA0YTQtdGY0YHQuNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQutC+0ZjQsCDQvtC80L7Qs9GD0ZvQsNCy0LAg0L/QvtCy0LXQt9C40LLQsNGa0LUgRkFRINGB0LAg0LTRgNGD0LPQuNC8INC+0LHRmNC10LrRgtC+0Lwg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgtC+0LMgRkFRINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC60L7RmNCwINC+0LzQvtCz0YPRm9Cw0LLQsCDQsdGA0LjRgdCw0ZrQtSBGQVEg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC/0YDQuNGB0YLRg9C/IEZBUSDQuNGB0YLQvtGA0LjRmNCw0YLRgyDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQuNC30LzQtdC90YMgRkFRINGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC/0L7QstGA0LDRgtCw0Log0YMg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3IEZBUSDRgyAg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRiNGC0LDQvNC/0LDRmtC1IEZBUSDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICfQoNC10YjQtdGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ9Ch0LjQvNC/0YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ9Ch0LDQvNC+INGC0LXQutGB0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0ZjQtdC30LjRhtC4INC30LAg0YHRgNC+0LTQvdC1IEZBUSDRh9C70LDQvdC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LAgRkFRLCDQvdC/0YAuIEZBUSMsIEtCIywgTXlGQVEjLiDQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDRmNC1IEZBUSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ9Ce0LLQviDQv9C+0LTQtdGI0LDQstCw0ZrQtSDQtNC10YTQuNC90LjRiNC1INC00LAgRkFRINC+0LHRmNC10LrRgiDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtCy0LXQttC1INGB0LAg0LTRgNGD0LPQuNC8IEZBUSDQvtCx0ZjQtdC60YLQuNC80LAg0LrQvtGA0LjRgdGC0LXRm9C4INCy0LXQt9GDINGC0LjQv9CwIFwnTm9ybWFsXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0J7QstC+INC/0L7QtNC10YjQsNCy0LDRmtC1INC00LXRhNC40L3QuNGI0LUg0LTQsCBGQVEg0L7QsdGY0LXQumHRgiDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtCy0LXQttC1INGB0LAg0LTRgNGD0LPQuNC8IEZBUSDQvtCx0ZjQtdC60YLQuNC80LAg0LrQvtGA0LjRgdGC0LXRm9C4INCy0LXQt9GDINGC0LjQv9CwIFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0J7QstC+INC/0L7QtNC10YjQsNCy0LDRmtC1INC00LXRhNC40L3QuNGI0LUg0LTQsCBGQVEg0L7QsdGY0LXQutGCINC80L7QttC1INC00LAg0YHQtSDQv9C+0LLQtdC20LUg0YHQsCDQtNGA0YPQs9C40Lwg0YLQuNC60LXRgiDQvtCx0ZjQtdC60YLQuNC80LAg0LrQvtGA0LjRgdGC0LXRm9C4INCy0LXQt9GDINGC0LjQv9CwIFwnTm9ybWFsXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn0J7QstC+INC/0L7QtNC10YjQsNCy0LDRmtC1INC00LXRhNC40L3QuNGI0LUg0LTQsCBGQVEg0L7QsdGY0LXQutGCINC80L7QttC1INC00LAg0YHQtSDQv9C+0LLQtdC20LUg0YHQsCDQtNGA0YPQs9C40Lwg0YLQuNC60LXRgiDQvtCx0ZjQtdC60YLQuNC80LAg0LrQvtGA0LjRgdGC0LXRm9C4INCy0LXQt9GDINGC0LjQv9CwIFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ9Ch0LDQtNGA0LbQsNGYINGC0LjQutC10YLQsCDQt9CwINC+0LTQvtCx0YDQsNCy0LDRmtC1IEZBUSDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IHN1YmplY3QgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ9Cf0YDQtdC00LzQtdGCINGC0LjQutC10YLQsCDQt9CwINC+0LTQvtCx0YDQsNCy0LDRmtC1IEZBUSDRh9C70LDQvdCw0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJ9Ch0YLQsNCy0LrQsCDQsNC70LDRgtC90LUg0LvQuNC90LjRmNC1INC30LAg0YHQutGA0LDRm9C10L3QuNGG0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICfQtdC60YHRgtC10YDQvdC+ICjQutC70LjRmNC10L3RgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ9C40L3RgtC10YDQvdC+ICjQvtC/0LXRgNCw0YLQtdGAKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICfRmNCw0LLQvdC+ICjRgdCy0LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJ9GY0LDQstC90L4gKNGY0LDQstC90L4pJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQXJ0aWNsZSd9ID0gJ0RvZGFqIEZBUSDEjWxhbmFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAnS2xqdcSNbmUgcmXEjWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdLYXRlZ29yaWphIGplIG9iYXZlem5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHByb3ZhbCd9ID0gJ09kb2JyZW5qZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFDYXRlZ29yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIENhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSBGQVEga2F0ZWdvcmlqYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICdEb2RhaiBGQVEga2F0ZWdvcmlqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ1VyZWRpIEZBUSBrYXRlZ29yaWp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ0RvZGFqIGthdGVnb3JpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAnRG9kYWoga2F0ZWdvcmlqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnVXJlZGkga2F0ZWdvcmlqdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ1BvZGthdGVnb3JpamEgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdNb2xpbW8gZGEgaXphYmVyZXRlIGJhciBqZWRudSBncnVwdSBkb3p2b2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnR3J1cGUgb3BlcmF0ZXJhIGtvamUgbW9ndSBwcmlzdHVwaXRpIMSNbGFuY2ltYSB1IG92b2oga2F0ZWdvcmlqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ0JpxIdlIHByaWthemFubyBrYW8ga29tZW50YXIgdSBJc3RyYcW+aXZhxI11Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAnRGEgbGkgc3R2YXJubyDFvmVsaXRlIGRhIG9icmnFoWV0ZSBvdnUga2F0ZWdvcmlqdT8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICdOZSBtb8W+ZXRlIG9icmlzYXRpIG92dSBrYXRlZ29yaWp1LiBVcG90cmVibGplbmEgamUgdSBiYXIgamVkbm9tIEZBUSDEjWxhbmt1IGkvaWxpIGplIG5hZHJlxJFlbmEgbmFqbWFuamUgamVkbm9qIGRydWdvaiBrYXRlZ29yaWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnT3ZhIGthdGVnb3JpamEgamUgdXBvdHJlYmxqZW5hIHUgc2xlZGXEh2ltIEZBUSDEjWxhbmNpbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAnT3ZhIGthdGVnb3JpamEgamUgbmFkcmXEkWVuYSBzbGVkZcSHaW0gcG9ka2F0ZWdvcmlqYW1hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0RhIGxpIHN0dmFybm8gxb5lbGl0ZSBkYSBvYnJpxaFldGUgb3ZhaiBGQVEgxI1sYW5haz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEgcHJldHJhxb5pdmHEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdCcnpvIHRyYcW+ZW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnRMW+b2tlcnNraSB6bmFjaSBzdSBkb3p2b2xqZW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICdOYXByZWRuYSBwcmV0cmFnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnUG9ka2F0ZWdvcmlqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdGQVEgxI1sYW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ1BvZGthdGVnb3JpamUgbmlzdSBwcm9uYcSRZW5lLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSXN0b3JpamEgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnU2FkcsW+YWogaXN0b3JpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdOaXN1IHByb25hxJFlbmkgcG9kYWNpIEZBUSBkbmV2bmlrYS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnVXByYXZsamFuamUgRkFRIGplemljaW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICdEb2RhaiBGQVEgamV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICdVcmVkaSBGQVEgamV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnVXBvdHJlYml0ZSBvdnUgZnVua2NpanUgYWtvIMW+ZWxpdGUgZGEga29yaXN0aXRlIHZpxaFlIGplemlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAnRG9kYWogamV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAnRG9kYWogSmV6aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ1VyZWRpIEplemlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICdEYSBsaSB6YWlzdGEgxb5lbGl0ZSBkYSBpemJyacWhZXRlIG92YWogamV6aWs/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ05lIG1vxb5ldGUgb2JyaXNhdGkgb3ZhaiBqZXppay4gVXBvdHJlYmxqZW4gamUgdSBiYXIgamVkbm9tIEZBUSDEjWxhbmt1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ092YWogamV6aWsgamUgdXBvdHJlYmxqZW4gdSBzbGVkZcSHaW0gRkFRIMSNbGFuY2ltYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ1BvZGXFoWF2YW5qZSBrb250ZWtzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAnRkFRIMSNbGFuYWthIHBvIHN0cmFuaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdOaXN1IHByb25hxJFlbmkgRkFRIHBvZGFjaS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ29kIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAnS2xqdcSNbmEgcmXEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnR2xhc2FqIChucHIgamVkbmFrbyAxMCBpbGkgdmXEh2Ugb2QgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ09jZW5pIChucHIgamVkbmFrbyAyNSUgaWxpIHZlxIdlIG9kIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdPZG9icmVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdQb3NsZWRuamkgamUgbWVuamFvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnVnJlbWUga3JlaXJhbmphIEZBUSDEjWxhbmthIChwcmUvcG9zbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSBGQVEgxI1sYW5rYSAoaXptZcSRdSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdWcmVtZSBwcm9tZW5lIEZBUSDEjWxhbmthIChwcmUvcG9zbGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ1ZyZW1lIHByb21lbmUgRkFRIMSNbGFua2EgKGl6bWXEkXUpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ0ZBUSB0ZWtzdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ0ZBUSBwcmV0cmFnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ0l6Ym9yIHByb2ZpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ0dsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ05lbWEgcG9kZcWhYXZhbmphIHphIGdsYXNhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnU3BlY2lmacSNbmkgZ2xhc292aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICducHIgamVkbmFrbyAxMCBpbGkgdmXEh2Ugb2QgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ09jZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdOZW1hIHBvZGXFoWF2YW5qYSB6YSBvY2Vuaml2YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAnU3BlY2lmacSNbmEgb2NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICducHIgamVkbmFrbyAyNSUgaWxpIHZlxIdlIG9kIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ1ZyZW1lIGtyZWlyYW5qYSBGQVEgxI1sYW5rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ1ZyZW1lIHByb21lbmUgRkFRIMSNbGFua2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAnRkFRIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ09jZW5qaXZhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAnR2xhc292aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICdHbGFzb3ZpIG5pc3UgcHJvbmHEkWVuaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ0dsYXNvdmkgbmlzdSBwcm9uYcSRZW5pISBCdWRpdGUgcHJ2aSBrb2ppIMSHZSBvY2VuaXRpIG92YWogRkFRIMSNbGFuYWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdQcmV1em1pIHByaWxvZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ0RhIGJpc3RlIG90dm9yaWxpIHZlemUgdSBzbGVkZcSHaW0gYmxva292aW1hIG9waXNhLCBtb8W+ZGEgxIdldGUgdHJlYmF0aSBkYSBwcml0aXNuZXRlIOKAnkN0cmzigJ0gaWxpIOKAnkNtZOKAnSBpbGkg4oCeU2hpZnTigJ0gdGFzdGVyIGRvayBpc3RvdnJlbWVubyBrbGlrbmV0ZSBuYSB2ZXp1ICh6YXZpc2kgb2QgdmHFoWVnIE9TIGkgcHJlZ2xlZGHEjWEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0tvbGlrbyBqZSBrb3Jpc3RhbiBvdmFqIMSNbGFuYWs/IE1vbGltbyB2YXMgZGEgZGF0ZSB2YcWhdSBvY2VudSBpIHBvbW9nbmV0ZSBwb2RpemFuanUga3ZhbGl0YXRhIGJhemUgxI1lc3RvIHBvc3RhdmxqYW5paCBwaXRhbmphLiBIdmFsYSBWYW0hICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ25pamUga29yaXNubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2cmxvIGtvcmlzbm8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0RvZGFqIG5hc2xvdiBGQVEgxI1sYW5rdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdVbmVzaSBGQVEgdGVrc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRJ30gPSAnVW5lc2kga29tcGxldGFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdVbmVzaSBGQVEgdmV6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnVW5lc2kgRkFRIHRla3N0IGkgdmV6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAnVW5lc2kga29tcGxldGFuIEZBUSBpIHZlenUnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICdOaXN1IHByb25hxJFlbmkgRkFRIMSNbGFuY2kuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnT3ZvIG1vxb5lIGRhIGJ1ZGUgb2QgcG9tb8SHaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnS29yaXNuaSByZXN1cnNpIHphIHVuZXRpIHByZWRtZXQgaSB0ZWtzdCBuaXN1IHByb25hxJFlbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdaYSBsaXN0dSBrb3Jpc25paCByZXN1cnNhLCBtb2xpbW8gdW5lc2l0ZSBwcmVkbWV0IGlsaSB0ZWtzdC4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ1BvdHB1bmEgdGVrc3R1YWxuYSBwcmV0cmFnYSB1IEZBUSDEjWxhbmNpbWEgKG5wci4gIkpvaG4qbiIgaWxpICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnT2dyYW5pxI1lbmphIGdsYXNhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICdTYW1vIEZBUSDEjWxhbmNpIHNhIGdsYXNvdmltYS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ09ncmFuacSNZW5qYSBvY2Vuaml2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdTYW1vIEZBUSDEjWxhbmNpIHNhIG9jZW5vbS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ1ZyZW1lbnNrYSBvZ3JhbmnEjWVuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ1NhbW8gRkFRIMSNbGFuY2kga3JlaXJhbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnU2FtbyBGQVEgxI1sYW5jaSBrcmVpcmFuaSBpem1lxJF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1Byb2ZpbCBwcmV0cmFnZSBrYW8gxaFhYmxvbj8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICdCcm9qIMSNbGFua2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdUcmHFvmkgxI1sYW5rZSBzYSBrbGp1xI1ub20gcmXEjWknOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnSmF2bm8nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ05hemFkIG5hIEZBUSBwcmV0cmHFvml2YcSNJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICdQb3RyZWJuYSB2YW0gamUg4oCecnfigJ0gZG96dm9sYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ0thdGVnb3JpamUgdSBrb2pvaiBrb3Jpc25payBpbWEgcHJpc3R1cCBiZXogb2dyYW5pxI1lbmphIG5pc3UgcHJvbmHEkWVuZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnTmlqZSBwcm9uYcSRZW4gcG9kcmF6dW1ldmFuaSBqZXppayBpIG5lIG1vxb5lIHNlIGtyZWlyYXRpIG5vdi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdQb3RyZWJhbiBJRCBLYXRlZ29yaWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnfSA9ICdLYXRlZ29yaWphIHRyZWJhIGRhIGltYSBpbWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdPdmEga2F0ZWdvcmlqYSB2ZcSHIHBvc3RvamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdPdmEga2F0ZWdvcmlqYSB2ZcSHIHBvc3RvamkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgSUQgS2F0ZWdvcmlqZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnTmlqZSBiaWxvIG1vZ3XEh2Ugb2JyaXNhdGkga2F0ZWdvcmlqdSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFRIGthdGVnb3JpamEgYcW+dXJpcmFuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ0ZBUSBrYXRlZ29yaWphIGRvZGF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnT2JyacWhaSBrYXRlZ29yaWp1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IElEIFN0YXZrZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICdOZW1hdGUgZG96dm9sdSB6YSBvdnUga2F0ZWdvcmlqdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnTmlqZSBiaWxvIG1vZ3XEh2Ugb2JyaXNhdGkgRkFRIMSNbGFuYWsgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0lEIEthdGVnb3JpamUgJXMgamUgbmVpc3ByYXZhbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lIG1vxb5lIHNlIHByaWthemF0aSBpc3RvcmlqYXQsIGplciBuaWplIGRhdCBJRCBTdGF2a2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnRkFRIGlzdG9yaWphdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUSBkbmV2bmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJ1BvdHJlYm5hIGtvbmZpZ3VyYWNpb25hIG9wY2lqYSBGQVE6OkZyb250ZW5kOjpPdmVydmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICdLb25maWd1cmFjaW9uYSBvcGNpamEgRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbW9yYSBkYSBidWRlIEhBU0ggcmVmZXJlbmNhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ05pamUgcHJvbmHEkWVuYSBrb25maWd1cmFjaW9uYSBzdGF2a2EgemEgcHJlZ2xlZCAiJXMiISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCBJRCBKZXppa2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0ltZSBqZSBvYmF2ZXpubyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICdPdmFqIGplemlrIHZlxIcgcG9zdG9qaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAnTmlqZSBiaWxvIG1vZ3XEh2Ugb2JyaXNhdGkgamV6aWsgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSB1cGRhdGVkISd9ID0gJ0HFvnVyaXJhbiBGQVEgamV6aWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdEb2RhdCBGQVEgamV6aWshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ09icmnFoWkgamV6aWsgJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ1JlenVsdGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnUG9zbGVkbmplIGHFvnVyaXJhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUSBkaW5hbWnEjWthIHBvbGphJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnSmV6acSNa2kgb2JqZWt0IHNlIG5lIG1vxb5lIHXEjWl0YXRpISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZW1hIHJlenVsdGF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUSBicm9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ1Bvc2xlZG5qaSBqZSBtZW5qYW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdWcmVtZSBrcmVpcmFuamEgRkFRIHN0YXZrZSAocHJlL3Bvc2xlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdWcmVtZSBrcmVpcmFuamEgRkFRIHN0YXZrZSAoaXptZcSRdSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdWcmVtZSBpem1lbmUgRkFRIHN0YXZrZSAocHJlL3Bvc2xlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdWcmVtZSBpem1lbmUgRkFRIHN0YXZrZSAoaXptZcSRdSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnSmVkbmFrbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICdWZcSHZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnSmVkbmFrbyBpbGkgdmXEh2Ugb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnTWFuamUgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ0plZG5ha28gaWxpIG1hbmplIG9kJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJ1BvdHJlYmFuIElEIFBvbGphISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICdIdmFsYSBuYSB2YcWhZW0gZ2xhc3UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJ30gPSAnVmXEhyBzdGUgZ2xhc2FsaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdOaWplIGl6YWJyYW5hIG5pIGplZG5hIG9jZW5hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICdNZWhhbml6YW0gemEgZ2xhc2FuamUgbmlqZSBha3RpdmlyYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RlIHJhdGUgaXMgbm90IGRlZmluZWQhJ30gPSAnT2NlbmppdmFuamUgZ2xhc2FuamEgbmlqZSBkZWZpbmlzYW5vISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfFoHRhbXBhIEZBUSDEjWxhbmthJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnS3JlaXJhbiBpem1lxJF1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJ1BvdHJlYmFuIElEIFN0YXZrZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ0ZBUSDEjWxhbmNpIChub3ZvIGtyZWlyYW5pKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFRIMSNbGFuY2kgKG5lZGF2bm8gbWVuamFuaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRIMSNbGFuY2kgKHBydmloIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IFRpcCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBtdXN0IGJlIGVpdGhlciBMYXN0Q3JlYXRlIG9yIExhc3RDaGFuZ2Ugb3IgVG9wMTAhJ30gPSAnVHlwZSBtb3JhIGJpdGkgTGFzdENyZWF0ZSwgTGFzdENoYW5nZSBpbGkgVG9wMTAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBjcmVhdGUgUlNTIGZpbGUhJ30gPSAnUlNTIGRhdG90ZWthIG5lIG1vxIdlIGJpdGkgc25pbWxqZW5hISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclcyAoRkFRIHRla3N0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0gS2xpamVudCAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0gS2xpamVudCAoRkFRIHRla3N0KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJXMgLSBKYXZubyAoJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICclcyAtIEphdm5vIChGQVEgdGVrc3QpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ05lb3Bob2RuYSBvY2VuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJ8SMbGFuYWsgamUgcHJhemFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdQb3NsZWRuamUga3JlaXJhbmkgRkFRIMSNbGFuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnUG9zbGVkbmplIGHFvnVyaXJhbmkgRkFRIMSNbGFuY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ05hanBvcHVsYXJuaWppaCAxMCBGQVEgxI1sYW5ha2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnVGlwIHNhZHLFvmFqYSc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnaW50ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ2Vrc3Rlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ2phdm5vJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnVSByZWR1JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnRmlsdGVyIHphIOKAnkhUTUzigJ0gaXpsYXogemEgZG9kYXZhbmplIHZlemUgaXphIGRlZmluaXNhbm9nIG5pemEgem5ha292YS4gRWxlbWVudCBTbGlrYSBkb3p2b2xqYXZhIGR2YSBuYcSNaW5hIHVub3NhLiBQcnZpIGplIG5heml2IHNsaWtlIChucHIgZmFxLnBuZykuIHUgb3ZvbSBzbHXEjWFqdSBiacSHZSBrb3JpxaHEh2VuYSDigJ5PVFJT4oCdIHB1dGFuamEgZG8gc2xpa2UuICBEcnVnYSBtb2d1xIdub3N0IGplIHVub3MgdmV6ZSBkbyBzbGlrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnRG9kYWogRkFRIMSNbGFuYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfigJ5DU1PigJ0gYm9qYSB6YSByZXp1bHRhdCBnbGFzYW5qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ1ZyZW1lIG9zbG9iYcSRYW5qYSBrZcWhYSB6YSBGQVEgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnVXByYXZsamFuamUga2F0ZWdvcmlqYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnVXByYXZsamFuamUga2F0ZWdvcmlqYW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnxaB0YW1wYW5qZSBrbGlqZW50c2tvZyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnU3JvZG5pIEZBUSDEjWxhbmNpIHUgaW50ZXJmZWpzdSBrbGlqZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICdTcm9kbmkgRkFRIMSNbGFuY2kgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICdEZXRhbGppIGtsaWplbnRza29nIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICdQcmV0cmFnYSBrbGlqZW50c2tvZyBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICdLbGlqZW50c2tpIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnQnJvaiBkZWNpbWFsYSB1IHJlenVsdGF0dSBnbGFzYW5qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ05heml2IHBvZHJhenVtZXZhbmUga2F0ZWdvcmlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ1BvZHJhenVtZXZhbmkgamV6aWsgRkFRIMSNbGFuYWthIHUgamVkbm9qZXppxI1rb20gbmHEjWludSByYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5hIG1ha3NpbWFsbmEgZHXFvmluYSBuYXNsb3ZhIEZBUSDEjWxhbmthIGtvamEgxIdlIGJpdGkgcHJpa2F6YW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5pIHByaW9yaXRldCB0aWtldGEgemEgb2RvYnJhdmFuamUgRkFRIMSNbGFuYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnUG9kcmF6dW1ldmFubyBzdGFuamUgRkFRIHVub3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUG9kcmF6dW1ldmFubyBzdGFuamUgdGlrZXRhIHphIG9kb2JyYXZhbmplIEZBUSDEjWxhbmFrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnUG9kcmF6dW1ldmFuaSB0aXAgdGlrZXRhIHphIG9kb2JyYXZhbmplIEZBUSDEjWxhbmFrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmEgdnJlZG5vc3QgemEg4oCeQWN0aW9u4oCdIHBhcmFtZXRhciB1IGphdm5vbSBmcm9udGVuZHUuIE92YWogcGFyYW1ldGFyIGtvcmlzdGUgc2tyaXB0ZSBzaXN0ZW1hLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBBa2NpamUgZ2RlIGplIGR1Z21lIHBvc3RhdmtpIGRvc3R1cG5vIHUgcG92ZXphbm9tIGdyYWZpxI1rb20gZWxlbWVudHUgb2JqZWt0YSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBNb2xpbW8gZGEgaW1hdGUgbmEgdW11IGRhIG92ZSBBa2NpamUgbW9yYWp1IGRhIGJ1ZHUgcmVnaXN0cm92YW5lIHUgc2xlZGXEh2ltIEpTIGkgQ1NTIGRhdG90ZWthbWE6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBkYSBsaSBuYXNsb3YgRkFRIHRyZWJhIGRhIGJ1ZGUgZG9kYXQgbmEgdGVtdSDEjWxhbmthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICdPZHJlxJF1amUga29qZSBrb2xvbmUgxIdlIGJpdGkgcHJpa2F6YW5lIHUgZG9kYXRrdSBwb3ZlemFuaWggRkFRIMSNbGFuYWthIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJzbG/FvmVubyIpLiBOYXBvbWVuYTogc2FtbyBhdHJpYnV0aSBGQVEgxI1sYW5rYSBpIGRpbmFtacSNa2EgcG9samEgKER5bmFtaWNGaWVsZF9OYW1lWCkgc3UgZG96dm9samVuaSB6YSBEZWZhdWx0Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAnRGVmaW5pxaFlIG1vZHVsIHByZWdsZWRhIHphIG1hbGkgcHJpa2F6IEZBUSBkbmV2bmlrYS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtb2R1bCBwcmVnbGVkYSB6YSBtYWxpIHByaWtheiBGQVEgbGlzdGUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB6YSBzb3J0aXJhbmplIEZBUSBwcmV0cmF6aSBGQVEgIHUgaW50ZXJmZWpzdSAgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB6YSBzb3J0aXJhbmplIEZBUSB1IHByZXRyYXppIEZBUSAgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgemEgc29ydGlyYW5qZSBGQVEgdSBwcmV0cmF6aSBGQVEgIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgYXRyaWJ1dCB6YSBzb3J0aXJhbmplIEZBUSB1IEZBUSBwcmV0cmHFvml2YcSNdSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgemEgc29ydGlyYW5qZSBGQVEgdSBGQVEgcHJldHJhxb5pdmHEjXUgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBhdHJpYnV0IHphIHNvcnRpcmFuamUgRkFRIHUgRkFRIHByZXRyYcW+aXZhxI11IHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgRkFRIHUgcmV6dWx0YXRpbWEgRkFRIHByZXRyYcW+aXZhxI1hIHUgaW50ZXJmZWpzdSBvcHJlcmF0ZXJhLiBHb3JlOiBuYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IG5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIEZBUSB1IHJlenVsdGF0aW1hIEZBUSBwcmV0cmHFvml2YcSNYSB1IGludGVyZmVqc3Uga2xpamVudGEuIEdvcmU6IG5hanN0YXJpamkgbmEgdnJodS4gRG9sZTogbmFqbm92aWplIG5hIHZyaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIEZBUSByZXp1bHRhdGltYSBGQVEgcHJldHJhxb5pdmHEjWEgdSBqYXZub20gaW50ZXJmZWpzdS4gR29yZTogbmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBuYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcmVkb3NsZWQgRkFRIHUgcmV6dWx0YXRpbWEgcHJldHJhZ2UgdSBpbnRlcmZlanN1IG9wcmVyYXRlcmEuIEdvcmU6IG5hanN0YXJpamkgbmEgdnJodS4gRG9sZTogbmFqbm92aWplIG5hIHZyaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIEZBUSB1IHJlenVsdGF0aW1hIHByZXRyYWdlIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4gR29yZTogbmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBuYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIEZBUSB1IHJlenVsdGF0aW1hIHByZXRyYWdlIHUgamF2bm9tIGludGVyZmVqc3UuIEdvcmU6IG5hanN0YXJpamkgbmEgdnJodS4gRG9sZTogbmFqbm92aWplIG5hIHZyaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcHJpa2F6YW5pIEZBUSBhdHJpYnV0IHByZXRyYWdlIHphIEZBUSBwcm96b3IgemEgcHJldHJhZ3UuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdPZHJlxJF1amUgaW5mb3JtYWNpamUga29qZSDEh2UgYml0aSB1YmHEjWVuZSB1IEZBUSBiYXppcmFuaSB0aWtldC4gIktvbXBsZXRhbiBGQVEiIHVrbGp1xI11amUgdGVrc3QsIHByaWxvZ2UgaSB1bWV0bnV0ZSBzbGlrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvemFkaW5za2UgcGFyYW1ldHJlIHphIGtvbnRyb2xudSB0YWJsdS4gIkxpbWl0IiBkZWZpbmnFoWUgYnJvaiBwb2RyZXp1bWV2YW5vIHByaWthemFuaWggdW5vc2EuICJHcnVwYSIgc2Uga29yaXN0aSBkYSBvZ3JhbmnEjWkgcHJpc3R1cCBkb2RhdGt1IChucHIuIEdydXBhOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuIlBvZHJhenVtZXZhbm8iIHVrYXp1amUgbmEgdG8gZGEgbGkgamUgZG9kYXRhayBwb2RyYXp1bWV2YW5vIGFrdGl2aXJhbiBpbGkgZGEgamUgcG90cmVibm8gZGEgZ2Ega29yaXNuaWsgbWFudWVsbm8gYWt0aXZpcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIHUgRkFRIHByZXRyYcW+aXZhxI11LiBPdmEgb3BjaWphIG5lbWEgdXRpY2FqIG5hIHBvemljaWplIGtvbG9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcHJpa2F6YW5lIGtvbG9uZSB1IEZBUSBkbmV2bmlrdS4gT3ZhIG9wY2lqYSBuZW1hIHV0aWNhaiBuYSBwb3ppY2lqZSBrb2xvbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcHJpa2F6YW5lIGtvbG9uZSB1IEZBUSBwcmV0cmF6aS4gT3ZhIG9wY2lqYSBuZW1hIHV0aWNhaiBuYSBwb3ppY2lqZSBrb2xvbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnRGVmaW5pxaFlIGdkZSDEh2UgIlViYWNpIEZBUSIgdmV6YSBiaXRpIHByaWthemFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnRGVmaW5pY2lqYSBwb2xqYSBzbG9ib2Rub2cgdGVrc3RhIHphIEZBUSBzdGF2a3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ09icmnFoWkgb3ZhaiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthdGFuYSB1IGVrcmFudSBkb2RhdmFuamEgRkFRIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgZWtyYW51IGl6bWVuZSBGQVEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgcHJlZ2xlZHUgRkFRIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IHByZWdsZWR1IEZBUSB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgxaF0YW1wZSBGQVEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgZWtyYW51IMWhdGFtcGUgRkFRIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IGVrcmFudSDFoXRhbXBlIEZBUSB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgZWtyYW51IHByZXRyYWdlIEZBUSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgZWtyYW51IHByZXRyYWdlIEZBUSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgZWtyYW51IHByZXRyYWdlIEZBUSB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgcHJlZ2xlZHUgRkFRIG1hbG9nIGZvcm1hdGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBkZXRhbGpub20gcHJlZ2xlZHUgRkFRIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgZGV0YWxqbm9tIHByZWdsZWR1IEZBUSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IGRldGFsam5vbSBwcmVnbGVkdSBGQVEgdSBqYXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ1VyZWRpIG92YWogRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICdBa3RpdmlyYW5qZSB2acWhZSBqZXppa2EgbmEgRkFRIG1vZHVsdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAnQWt0aXZpcmEgZnVua2NpanUgc3JvZG5paCDEjWxhbmFrYSB6YSBpbnRlcmZlanMga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAnQWt0aXZpcmFuamUgbWVoYW5pem1hIHphIGdsYXNhbmplIG5hIEZBUSBtb2R1bHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAnSXN0cmHFvml2YcSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJ0ZBUSBBSkFYIG9kZ292YXJhxI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICdGQVEgQUpBWCBvZGdvdmFyYcSNIHphIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICdGQVEgcHJvc3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICdGQVEgcHJvc3Rvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICdPYnJpxaFpIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnVXJlZGkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICdJc3RvcmlqYXQgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnT2dyYW5pxI1lbmplIHByZWdsZWRhIEZBUSBkbmV2bmlrYSAibWFsbyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdPZ3JhbmnEjWVuamUgcHJlZ2xlZGEgRkFRICJtYWxvIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnxaB0YW1wYWogRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTW9kdWwgcnV0ZXJhIEZBUSBwcmV0cmFnZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdQb2xqZTQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAnUG9samU1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGwgRkFRJ30gPSAnS29tcGxldGFuIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdHcnVwYSB6YSBvZG9icmF2YW5qZSBGQVEgxI1sYW5ha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdJc3RvcmlqYXQgb3ZvZyBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ1VrbGp1xI1pIGludGVybmEgcG9samEgdSBGQVEgYmF6aXJhbiB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdVa2xqdcSNaSBuYXppdiBzdmFrb2cgcG9samEgdSBGQVEgYmF6aXJhbiB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdJbnRlcmZlanMgbmEga29tIHRyZWJhIHByaWthemF0aSBicnp1IHByZXRyYWd1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnRG5ldm5payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnVXByYXZsamFuamUgamV6aWNpbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICdVcHJhdmxqYW5qZSBqZXppY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICdPZ3JhbmnEjWVuamUgcHJldHJhZ2UgemEgZ2VuZXJpc2FuamUgbGlzdGUga2xqdcSNbmloIHJlxI1pIEZBUSDEjWxhbmFrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAnUG92ZcW+aSBkcnVnaSBvYmpla2F0IHNhIG92b20gc3RhdmtvbSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICdMaXN0YSBpbWVuYSByZWRvdmEgemEga29qZSBqZSBmdW5jaWphIHNyb2RuaWggxI1sYW5ha2EgYWt0aXZpcmFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGlzdGEgdGlwb3ZhIHN0YW5qYSBrb2ppIHNlIG1vZ3Uga29yaXN0aXRpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpc3RhIHRpcG92YSBzdGFuamEga29qaSBzZSBtb2d1IGtvcmlzdGl0aSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaXN0YSB0aXBvdmEgc3RhbmphIGtvamkgc2UgbW9ndSBrb3Jpc3RpdGkgdSBqYXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgemEgdcSNaXRhdmFuamUgemEgamF2bmkgaW50ZXJmZWpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IEZBUSBwcmV0cmHFvml2YcSNYSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IEZBUSBwcmV0cmHFvml2YcSNYSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IEZBUSBwcmV0cmHFvml2YcSNYSB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuaSBicm9qIEZBUSDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IEZBUSBkbmV2bmlrdSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmkgYnJvaiBGQVEgxI1sYW5ha2Ega29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSByZXp1bHRhdHUgcHJldHJhZ2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5pIGJyb2ogRkFRIMSNbGFuYWthIGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgcmV6dWx0YXR1IHByZXRyYWdlIHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuaSBicm9qIEZBUSDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IHJlenVsdGF0dSBwcmV0cmFnZSB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmEgZHXFvmluYSBuYXNsb3ZhIHUgRkFRIMSNbGFua3Uga29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSBGQVEgcHJldHJhxb5pdmHEjXUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5hIGR1xb5pbmEgbmFzbG92YSB1IEZBUSDEjWxhbmt1IGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgRkFRIHByZXRyYcW+aXZhxI11IHUgaW50ZXJmZWpzdSBrbGlqZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuYSBkdcW+aW5hIG5hc2xvdmEgdSBGQVEgxI1sYW5rdSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IEZBUSBpc3RyYcW+aXZhxI11IHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmEgZHXFvmluYSBuYXNsb3ZhIHUgRkFRIMSNbGFua3Uga29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSBGQVEgcHJldHJhemkgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWFrc2ltYWxuYSBkdcW+aW5hIG5hc2xvdmEgdSBGQVEgxI1sYW5rdSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IEZBUSBwcmV0cmF6aSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5hIGR1xb5pbmEgbmFzbG92YSB1IEZBUSDEjWxhbmt1IGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgRkFRIHByZXRyYXppIHUgamF2bm9tIGludGVyZmVqc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYWtzaW1hbG5hIGR1xb5pbmEgbmFzbG92YSB1IEZBUSDEjWxhbmt1IGtvamkgxIdlIGJpdGkgcHJpa2F6YW5pIHUgRkFRIGRuZXZuaWt1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgemEgZ2VuZXJpc2FuamUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGEgemEga3JhdGt1IEZBUSBwcmV0cmFndSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHphIGdlbmVyaXNhbmplIEhUTUwgT3BlblNlYXJjaCBwcm9maWxhIHphIGtyYXRrdSBGQVEgcHJldHJhZ3UgdSBqYXZub20gcHJvZmlsdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnTW9kdWwgemEgZ2VuZXJpc2FuamUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGEgemEga3JhdGt1IEZBUSBwcmV0cmFndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJ05vdmkgRkFRIMSNbGFuYWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ05vdmkgRkFRIMSNbGFuY2kgdHJlYmFqdSBiaXRpIG9kb2JyZW5pIHByZSBvYmphdmxqaXZhbmphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCcm9qIEZBUSDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IEZBUSBwcmV0cmHFvml2YcSNdSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCcm9qIEZBUSDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IEZBUSBwcmV0cmHFvml2YcSNdSB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCcm9qIEZBUSDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSBuYSBzdmFrb2ogc3RyYW5pIHJlenVsdGF0YSBwcmV0cmFnZSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCcm9qIEZBUSDEjWxhbmFrYSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSBuYSBzdmFrb2ogc3RyYW5pIHJlenVsdGF0YSBwcmV0cmFnZSB1IGphdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ0Jyb2ogcHJpa2F6YW5paCBzdGF2a2kgdSBwb3NsZWRuamltIGl6bWVuYW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ0Jyb2ogcHJpa2F6YW5paCBzdGF2a2kgdSBwb3NsZWRuamUga3JlaXJhbmltLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ0Jyb2ogcHJpa2F6YW5paCBzdGF2a2kgdSAicHJ2aWggMTAiIC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJ0l6bGF6bmkgZmlsdGVyIHphIHViYWNpdmFuamUgSmF2YVNjcmlwdCB1IEN1c3RvbWVyVGlja2V0TWVzc2FnZSBla3Jhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnT2dyYW5pxI1lbmplIGJyb2phIHByaWthemFuaWggc3JvZG5paCBGQVEgxI1sYW5ha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBzdHJhbmljYSAobmEga29qaW1hIHN1IEZBUSBzdGF2a2UgcHJpa2F6YW5lKSBuYSBtYWxvbSBwcmlrYXp1IHByZWdsZWRhIEZBUSBkbmV2bmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBzdHJhbmljYSAobmEga29qaW1hIHN1IHZpZGxqaXZlIEZBUSBzdGF2a2UpIHNtYW5qZW5vZyBwcmVnbGVkYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnxaB0YW1wYWogb3ZhaiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBQcmludC4nfSA9ICfFoHRhbXBhbmplIGphdm5paCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICdEZXRhbGppIGphdm5paCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJ1ByZXRyYWdhIGphdm5paCBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnSmF2bmkgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdSZWQgemEgb2RvYnJhdmFuamUgRkFRIMSNbGFuYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ09jZW5lIHphIGdsYXNhbmplLiBLbGp1xI0gbW9yYSBiaXRpIHUgcHJvY2VudGltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1ByZXRyYcW+aSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICdNYWxhIEZBUSBwcmV0cmFnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICdQcmV0cmFnYSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICdJemFiZXJpdGUga29saWtvIMSHZSBzdGF2a2kgYml0aSBwb2RyYXp1bWV2YW5vIHByaWthemFubyB1IHByZWdsZWR1IGRuZXZuaWthIG1hbG9nIGZvcm1hdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnSXphYmVyaXRlIGtvbGlrbyDEh2Ugc3RhdmtpIGJpdGkgcG9kcmF6dW1ldmFubyBwcmlrYXphbm8gdSBwcmVnbGVkdSBtYWxvZyBmb3JtYXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdQb2Rlc2kgcG9kcmF6dW1ldmFudSB2aXNpbnUgKHUgcGlrc2VsaW1hKSBpbmxpbmUgSFRNTCBwb2xqYSB1IEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICdQb2Rlc2kgcG9kcmF6dW1ldmFudSB2aXNpbnUgKHUgcGlrc2VsaW1hKSBpbmxpbmUgSFRNTCBwb2xqYSB1IEN1c3RvbWVyRkFRWm9vbSAoaSBQdWJsaWNGQVFab29tKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnUG9kZXNpIG1ha3NpbWFsbnUgdmlzaW51ICh1IHBpa3NlbGltYSkgaW5saW5lIEhUTUwgcG9samEgdSBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnUG9kZXNpIG1ha3NpbWFsbnUgdmlzaW51ICh1IHBpa3NlbGltYSkgaW5saW5lIEhUTUwgcG9samEgdSBDdXN0b21lckZBUVpvb20gKGkgUHVibGljRkFRWm9vbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnUHJpa2HFvmkgIlViYWNpIEZBUSB2ZXp1IiBkdWdtZSB1IEFnZW50RkFRWm9vbVNtYWxsIHphIGphdm5lIEZBUSBhcnRpa2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdQcmlrYcW+aSAiVWJhY2kgRkFRIHRla3N0IGkgdmV6dSIgLyAiVWJhY2kgY2VvIEZBUSBpIHZlenUgZHVnbWUgdSBBZ2VudEZBUVpvb21TbWFsbCB6YSBqYXZuZSBGQVEgYXJ0aWtsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJ1ByaWthxb5pICJVYmFjaSBGQVEgdGVrc3QiIC8gIlViYWNpIGNlbyBGQVEiIGR1Z21lIHUgQWdlbnRGQVFab29tU21hbGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ1ByaWtheiBGQVEgxI1sYW5rYSBrYW8gSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAnUHJpa2HFvmkgcHV0YW5qdSBkbyBGQVEgZGEvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2F6IG5laXNwcnZuaWggc3RhdmtpIHUgcmV6dWx0YXRpbWEgRkFRIHByZXRyYcW+aXZhxI1hIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICdQcmlrYcW+aSBzdGF2a2Ugc3Via2F0ZWdvcmlqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnUHJpa2HFvmkgemFkbmplIHByb21lbmplbmUgc3RhdmtlIHUgZGVmaW5pc2FuaW0gaW50ZXJmZWpzaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnUHJpa2HFvmkgemFkbmplIGtyZWlyYW5lIHN0YXZrZSB1IGRlZmluaXNhbmltIGludGVyZmVqc2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICdQcmlrYcW+aSB6dmV6ZGljZSB6YSDEjWxhbmtlIHNhIGplZG5ha29tIGlsaSBib2xqb20gb2Nlbm9tIG9kIGRlZmluaXNhbmUgdnJlZG5vc3RpIChwb3N0YXZpdGUgdnJlZG5vc3QgXCcwXCcgemEgZGVha3RpdmlyYW5qZSBwcmlrYXphKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ByaWthxb5pIHBydmloIDEwIHN0YXZraSB1IGRlZmluaXNhbmltIGludGVyZmVqc2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ1ByaWthxb5pIGdsYXNhbmplIHUgZGVmaW5pc2FuaW0gaW50ZXJmZWpzaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IGtvamEgb21vZ3XEh2F2YSBwb3Zleml2YW5qZSBGQVEgc2EgZHJ1Z2ltIG9iamVrdG9tIHUgZGV0YWxqbm9tIHByaWthenUgdG9nIEZBUSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IGtvamEgb21vZ3XEh2F2YSBicmlzYW5qZSBGQVEgdSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHByaXN0dXAgRkFRIGlzdG9yaWphdHUgdSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgaXptZW51IEZBUSB1IGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwb3ZyYXRhayB1IGRldGFsam5pIHByaWtheiBGQVEgdSAgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgxaF0YW1wYW5qZSBGQVEgdSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ1JlxaFlbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTaW1wdG9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJ1NhbW8gdGVrc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnUG9kcmF6dW1ldmFuaSBqZXppY2kgemEgc3JvZG5lIEZBUSDEjWxhbmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdJZGVudGlmaWthdG9yIHphIEZBUSwgbnByLiBGQVEjLCBLQiMsIE15RkFRIy4gUG9kcmF6dW1ldmFubyBqZSBGQVEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdPdm8gcG9kZcWhYXZhbmplIGRlZmluacWhZSBkYSBGQVEgb2JqZWt0IG1vxb5lIGRhIHNlIHBvdmXFvmUgc2EgZHJ1Z2ltIEZBUSBvYmpla3RpbWEga29yaXN0ZcSHaSB2ZXp1IHRpcGEgXCdOb3JtYWxcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdPdm8gcG9kZcWhYXZhbmplIGRlZmluacWhZSBkYSBGQVEgb2JqZWthdCBtb8W+ZSBkYSBzZSBwb3Zlxb5lIHNhIGRydWdpbSBGQVEgb2JqZWt0aW1hIGtvcmlzdGXEh2kgdmV6dSB0aXBhIFwnUGFyZW50Q2hpbGRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnT3ZvIHBvZGXFoWF2YW5qZSBkZWZpbmnFoWUgZGEgRkFRIG9iamVrdCBtb8W+ZSBkYSBzZSBwb3Zlxb5lIHNhIGRydWdpbSB0aWtldCBvYmpla3RpbWEga29yaXN0ZcSHaSB2ZXp1IHRpcGEgXCdOb3JtYWxcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdPdm8gcG9kZcWhYXZhbmplIGRlZmluacWhZSBkYSBGQVEgb2JqZWt0IG1vxb5lIGRhIHNlIHBvdmXFvmUgc2EgZHJ1Z2ltIHRpa2V0IG9iamVrdGltYSBrb3Jpc3RlxIdpIHZlenUgdGlwYSBcJ1BhcmVudENoaWxkXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdTYWRyxb5haiB0aWtldGEgemEgb2RvYnJhdmFuamUgRkFRIMSNbGFuYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnUHJlZG1ldCB0aWtldGEgemEgb2RvYnJhdmFuamUgRkFRIMSNbGFuYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnU3RhdmthIGFsYXRuZSBsaW5pamUgemEgc2tyYcSHZW5pY3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICdla3N0ZXJubyAoa2xpamVudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ2ludGVybm8gKG9wZXJhdGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICdqYXZubyAoc3ZlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICdqYXZubyAoamF2bm8pJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN2X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdTa2FwYSBGQVEgYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3Jkcyd9ID0gJ055Y2tlbG9yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ0VuIGthdGVnb3JpIGtyw6R2cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdHb2Rrw6RubmFuZGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnRkFRIGthdGVnb3JpaGFudGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICdMw6RnZyB0aWxsIEZBUS1rYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ1JlZGlnZXJhIEZBUS1rYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdTa2FwYSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICdTa2FwYSBrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IENhdGVnb3J5J30gPSAnUmVkaWdlcmEga2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdVbmRlcmthdGVnb3JpIHRpbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICdWw6RubGlnZW4gdsOkbGogbWluc3QgZW4gcsOkdHRpZ2hldHNncnVwcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnQWdlbnQtZ3J1cHBlciBtZWQgw6V0a29tc3QgdGlsbCBhcnRpa2xhcm5hIGkgZGVubmEga2F0ZWdvcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdWaXNhcyBzb20ga29tbWVudGFyIGkgVXRmb3Jza2FyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8nfSA9ICdWaWxsIGR1IHZlcmtsaWdlbiB0YSBib3J0IGRlbm5hIGthdGVnb3JpPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ0R1IGthbiBpbnRlIHRhIGJvcnQgZGVubmEga2F0ZWdvcmluLiBEZXQgYW52w6RuZHMgYXYgbWluc3QgZW4gRkFRLWFydGlrZWwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAnRGVubmEga2F0ZWdvcmkgYW52w6RuZHMgYXYgZsO2bGphbmRlIEZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICdEZW5uYSBrYXRlZ29yaSDDpHIgZsO2csOkbGRlciBmw7ZyIGbDtmxqYW5kZSB1bmRlcmthdGVncm9pZXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAnVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZW5uYSBGQVEtYXJ0aWtlbD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICdGQVEtdXRmb3Jza2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICdTbmFiYnPDtmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ0pva2VydGVja2VuIMOkciB0aWxsw6V0bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ0F2YW5jZXJhZCBzw7ZrbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnVW5kZXJrYXRlZ29yaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ0ZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ0luZ2EgdW5kZXJrYXRlZ29yaWVyIGhpdHRhZGVzLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yaWsgZsO2cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3Jpa2lubmVow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVGlkcHVua3QgZsO2ciBza2FwYW5kZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdEZXQgZmlubnMgaW5nZW4gZGF0YSBpIEZBUS1sb2dnYm9rZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnRkFRIHNwcsOla2hhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAnTMOkZ2cgdGlsbCBGQVEtc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAnUmVkaWdlcmEgRkFRLXNwcsOlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICdBbnbDpG5kIGRlbiBow6RyIGZ1bmt0aW9uZW4gb20gZHUgdmlsbCBhcmJldGEgbWVkIGZsZXJhIHNwcsOlay4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ0zDpGdnIHRpbGwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ0zDpGdnIHRpbGwgc3Byw6VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICdSZWRpZ2VyYSBzcHLDpWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ1ZpbGwgZHUgdmVya2xpZ2VuIHRhIGJvcnQgZGV0dGEgc3Byw6VrPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdEdSBrYW4gaW50ZSB0YSBib3J0IGRldHRhIHNwcsOlay4gRGV0IGFudsOkbmRzIGkgbWluc3QgZW4gRkFRLWFydGlrZWwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAnRGV0dGEgc3Byw6VrIGFudsOkbmRzIGF2IGbDtmxqYW5kZSBGQVEtYXJ0aWtsYXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBbnBhc3NhIHZ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ0ZBUS1hcnRpa2xhciBwZXIgc2lkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgZGF0YSBmb3VuZC4nfSA9ICdJbmdlbiBGQVEtaW5mb3JtYXRpb24gaGl0dGFkZXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICdhdiA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ055Y2tlbG9yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnUsO2c3RlciAoZXguIGxpa2EgbWVkIDEwIGVsbGVyIGZsZXIgw6RuIDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICdCZXR5ZyAoZXguIGxpa2EgbWVkIDI1JSBlbGxlciBtZXIgw6RuIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdHb2Rrw6RuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTZW5hc3Qgw6RuZHJhZCBhdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUS1BcnRpa2VsIFNrYXBhZCBUaWQgKGbDtnJlL2VmdGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEtQXJ0aWtlbCBTa2FwYWQgVGlkIChtZWxsYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRIEFydGlrZWwgw4RuZHJhZCBUaWQgKGbDtnJlL2VmdGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdGQVEtQXJ0aWtlbCDDhG5kcmFkIFRpZCAobWVsbGFuKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICdGQVEtRnVsbHRleHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICdGQVEgc8O2ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9maWxlIFNlbGVjdGlvbid9ID0gJ1Byb2ZpbHZhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlJ30gPSAnUsO2c3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdJbmdhIHLDtnN0aW5zdMOkbGxuaW5nYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgdm90ZXMnfSA9ICdTcGVjaWZpa2EgcsO2c3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICdlLmcuIExpa2EgbWVkIDEwIGVsbGVyIFN0w7ZycmXDhG4gNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ0JldHlnc8OkdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ0luZ2EgYmV0eWdzaW5zdMOkbGxuaW5nYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ1NwZWNpZmlrdCBiZXR5Zyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ2UuZy4gTGlrYSBtZWQgMjUlIGVsbGVyIFN0w7ZycmXDhG4gNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnRkFRLUFydGlrZWwgU2thcGFkIFRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSd9ID0gJ0ZBUSBhcnRpa2VsIMOkbmRyaW5nc3RpZHB1bmt0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUS1JbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICdCZXR5Zyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ1LDtnN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAnSW5nYSByw7ZzdGVyIGZ1bm5hISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnSW5nYSByw7ZzdGVyIGZ1bm5hISBCbGkgZGVuIGbDtnJzdGEgYXR0IGJldHlnc8OkdHRhIGRlbm5hIEZBUS1hcnRpa2VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAnTGFkZGEgbmVyIGJpbGFnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ0bDtnIgYXR0IMO2cHBuYSBsw6Rua2FyIGkgZsO2bGphbmRlIGJlc2tyaXZuaW5nc2Jsb2NrIGJlaMO2dmVyIGR1IGthbnNrZSB0cnlja2EgPEN0cmw+IGVsbGVyIDxDbWQ+IGVsbGVyIDxTaGlmdD4gbWVkYW4gZHUga2xpY2thciBww6UgbMOkbmtlbiAoYmVyb2VuZGUgcMOlIHZpbGtlbiB3ZWJibMOkc2FyZSBlbGxlciBvcGVyYXRpdnN5c3RlbSBkdSBoYXIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ0h1ciBoasOkbHBzYW0gdmFyIGRlbiBow6RyIGFydGlrZWxuPyBWw6RubGlnZW4gZ2Ugb3NzIGRpdHQgYmV0eWcgb2NoIGhqw6RscCBvc3MgZsO2cmLDpHR0cmEgRkFRLWRhdGFiYXNlbi4gVGFjayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICdpbnRlIGhqw6RscHNhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICd2w6RsZGlndCBoasOkbHBzYW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ0zDpGdnIHRpbGwgRkFRLXRpdGVsbiB0aWxsIGFydGlrZWxucyDDpG1uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICdLbGlzdHJhIGluIEZBUS10ZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0tsaXN0cmEgaW4gZnVsbHN0w6RuZGlnIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICdLbGlzdHJhIGluIGzDpG5rIHRpbGwgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICdLbGlzdHJhIGluIEZBUS10ZXh0ICYgbMOkbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0tsaXN0cmEgaW4gZnVsbHN0w6RuZGlnIEZBUSAmIGzDpG5rJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAnSW5nYSBGQVEgYXJ0aWtsYXIgZnVubmEuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnRGVzc2EgYXJ0aWtsYXIga2FuIHZhcmEgYW52w6RuZGJhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ0hpdHRhZGUgaW5nYSBhbnbDpG5kYmFyYSBhcnRpa2xhciBmw7ZyIGRldHRhIMOkbW5ldCBvY2ggdGV4dGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICdTa3JpdiBldHQgw6RtbmUgZWxsZXIgdGV4dCBmw7ZyIGF0dCBmw6UgZW4gbGlzdGEgw7Z2ZXIgaGrDpGxwZnVsbGEgYXJ0aWtsYXInOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ0Z1bGx0ZXh0LXPDtmsgaSBGQVEtYXJ0aWtsYXIgKGUuIGcuICJKb2huKm4iIGVsbGVyICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAnUsO2c3QtcmVzdHJpa3Rpb25lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uJ30gPSAnRW5kYXN0IEZBUSBhcnRpa2xhciBtZWQgcsO2c3Rlci4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ0JldHlncy1yZXN0cmlrdGlvbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ0VuZGFzdCBGQVEgYXJ0aWtsYXIgbWVkIGJldHlnLi4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAnVGlkc3Jlc3RyaWt0aW9uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ0VuZGFzdCBGQVEgYXJ0aWtsYXIgc2thcGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICdFbmRhc3QgRkFRIGFydGlrbGFyIHNrYXBhZGUgbWVsbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1PDtmstcHJvZmlsIHNvbSBtYWxsPyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ0FydGlrZWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICdTw7ZrIGVmdGVyIGFydGlrbGFyIG1lZCBueWNrZWxvcmQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnT2ZmZW50bGlnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICdUaWxsYmFrYSB0aWxsIEZBUS11dGZvcnNrYXJlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnRHUgYmVow7Z2ZXIgcnctYmVow7ZyaWdoZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJ0luZ2Ega2F0ZWdvcmllciBoaXR0YWRlcyBkw6RyIGFudsOkbmRhcmVuIGhhciBsw6RzL3Nrcml2LXLDpHR0aWdoZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICdTdGFuZGFyZC1zcHLDpWsgc2FrbmFzIG9jaCBueXR0IGthbiBlaiBza2FwYXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICdLYXRlZ29yaS1JRCBrcsOkdnMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ0VuIGthdGVnb3JpIGJlaMO2dmVyIGV0dCBuYW1uISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAnRGVubmEga2F0ZWdvcmkgZmlubnMgcmVkYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGVubmEga2F0ZWdvcmkgZmlubnMgcmVkYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQgw4RyZW5kZUlEIMOkciBhbmdpdmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICdTeXN0ZW1ldCBrdW5kZSBpbnRlIHRhIGJvcnQga2F0ZWdvcmluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ0ZBUS1rYXRlZ29yaSB1cHBkYXRlcmFkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFRLWthdGVnb3JpIHRpbGxhZ2QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJ1RhIGJvcnQga2F0ZWdvcmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQgSXRlbUlEIMOkciBhbmdpdmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJ0R1IHNha25hciBiZWjDtnJpZ2hldCBmw7ZyIGRlbiBow6RyIGthdGVnb3JpbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnS3VuZGUgaW50ZSB0YSBib3J0IEZBUS1hcnRpa2VsbiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnS2F0ZWdvcmlJRDp0ICVzIMOkciBvZ2lsdGlndC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0ZBUS1oaXN0b3Jpayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUS1sb2dnYm9rZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFMYW5ndWFnZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gTGFuZ3VhZ2VJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAnTmFtbiBrcsOkdnMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAnRGV0dGEgc3Byw6VrIGZpbm5zIHJlZGFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnRkFRLXNwcsOlayB1cHBkYXRlcmF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFRLXNwcsOlayBza2FwYXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBMYW5ndWFnZSAlcyd9ID0gJ1RhIGJvcnQgc3Byw6VrICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdSZXN1bHRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ1NlbmFzdCB1cHBkYXRlcmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ0ZBUSBEeW5hbWlza2EgRsOkbHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnSW5nZXQgcmVzdWx0YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBOdW1iZXInfSA9ICdGQVEtbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJ1NlbmFzdCDDpG5kcmFkIGF2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFRLUFydGlrZWwgU2thcGFkIFRpZCAoZsO2cmUvZWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUS1BcnRpa2VsIFNrYXBhZCBUaWQgKG1lbGxhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICdGQVEgQXJ0aWtlbCDDhG5kcmFkIFRpZCAoZsO2cmUvZWZ0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUS1BcnRpa2VsIMOEbmRyYWQgVGlkIChtZWxsYW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAnVGFjayBmw7ZyIGRpbiByw7ZzdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICdEdSBoYXIgcmVkYW4gcsO2c3RhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICdJbmdldCBiZXR5ZyBzYXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAnRkFRLWFydGlrZWwgdXRza3JpZnQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICdTa2FwYXQgbWVsbGFuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAnRkFRLWFydGlrbGFyIChueWxpZ2VuIHNrYXBhZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ0ZBUS1hcnRpa2xhciAobnlsaWdlbiDDpG5kcmFkZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFRLWFydGlrbGFyIChUb3BwIDEwKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICdEZW4gaMOkciBhcnRpa2VsbiDDpHIgdG9tISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdTZW5hc3Qgc2thcGFkZSBGQVEtYXJ0aWtsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAnU2VuYXN0IHVwcGRhdGVyYWRlIEZBUS1hcnRpa2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3AgMTAgRkFRIGFydGljbGVzJ30gPSAnVG9wcCAxMCBGQVEtYXJ0aWtsYXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICdpbnRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICdleHRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAnb2ZmZW50bGlnJzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAnTMOkZ2cgdGlsbCBGQVEtYXJ0aWtlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdLYXRlZ29yaWhhbnRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBmb3IgRkFRIGVudHJ5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdHlwZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGluZm9ybWF0aW9uIHRvIGJlIGluc2VydGVkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4gIkZ1bGwgRkFRIiBpbmNsdWRlcyB0ZXh0LCBhdHRhY2htZW50cyBhbmQgaW5saW5lIGltYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQuICJMaW1pdCIgZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgZGlzcGxheWVkIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ1JhZGVyYSBkZW5uYSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJ1JlZGlnZXJhIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ1V0Zm9yc2thcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdGQVEtaGlzdG9yaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnTG9nZ2Jvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAnU3Byw6VraGFudGVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ0zDpG5rYSBldHQgYW5uYXQgb2JqZWt0IHRpbGwgZGVubmEgRkFRLWFydGlrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnU2tyaXYgdXQgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0vDtiBmw7ZyIGdvZGvDpG5uYW5kZSBhdiBGQVEtYXJ0aWtsYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSd9ID0gJ1PDtmsgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIiAvICJJbnNlcnQgRnVsbCBGQVEgJiBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0IiAvICJJbnNlcnQgRnVsbCBGQVEiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICdWaXNhIEZBUS1hcnRpa2VsIG1lZCBIVE1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICdWaXNhIEZBUSBzw7ZrdsOkZyBqYS9uZWouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaW52YWxpZCBpdGVtcyBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgaXRlbXMgb2Ygc3ViY2F0ZWdvcmllcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNoYW5nZSBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjcmVhdGVkIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ0zDtnNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICdTeW1wdG9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ2V4dGVybiAoa3VuZGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAnaW50ZXJuIChhZ2VudCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAnb2ZmZW50bGlnIChhbGxhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICdPbmdlemEgbWFrYWxhIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICdNYW5lbm8gbWFrdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICdTZWhlbXUgaW5haGl0YWppa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92YWwnfSA9ICdJZGhpbmknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAnU2VoZW11IHlhIG1lbmVqaW1lbnRpIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICdPbmdlemEgc2VoZW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBDYXRlZ29yeSd9ID0gJ09uZ2V6YSBzZWhlbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ0hhcmlyaSBzZWhlbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICdLaWppc2VoZW11IGNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ1RhZmFkaGFsaSBjaGFndWEgamFwbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAnTWFrdW5kaSB5YSB3YWthbGEgeWVueWUgcnVodXNhIGt3YSBoaWkgbWFrYWxhIGthdGlrYSBrYXRlZ29yaSBoaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICdJdGFvbnllc2h3YSBrYW1hIHRhbWtvIGt3ZW55ZSBFeHBsb3Jlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ0plIHVuYXRha2Ega3VmdXRhIGhpaSBzZWhlbXU/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAnSHV3ZXppIGt1ZnV0YSBzZWhlbXUgaGlpLkltZXR1bWlrYSBuYSBtYWthbGEgeWEgbWFzd2FsaSBzaSBjaGluaSB5YSBtb2phIG5hL2F1IGlwbyBuZGFuaSB5YSBrYXRlZ29yaSBueWluZ2luZSBzaSBjaGluaSB5YSBtb2phLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICdIaWkgc2VoZW11IGluYXR1bWlrYSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgaWZ1YXRheW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgcGFyZW50IG9mIHRoZSBmb2xsb3dpbmcgc3ViY2F0ZWdvcmllcyd9ID0gJ0hpaSBuaSBzZWhlbXUgbWFtYSB5YSB2aWppc2VoZW11IHZpZnVhdGF2eW8gJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ0plIHVuYXRha2EgS3VmdXRhIGhpaSBtYWthbGEgeWEgbWFzd2FsaT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRJ30gPSAnTWFzd2FsaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEV4cGxvcmVyJ30gPSAnS2ljaHVuZ3V6YWppIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAnVGFmdXRhIGhhcmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAnV2lsZGNhcmQgaGF6aXJ1aHVzaXdpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkdmFuY2VkIFNlYXJjaCd9ID0gJ1RhZnV0YSB6YWlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAnS2lqaWtpc2VoZW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ01ha2FsYSB5YSBNYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAnSGFrdW5hIHZpamlzZWhlbXUgdmlsaXZ5b3BhdGlrYW5hLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAnSGlzdG9yaWEgeWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnTWF1ZGh1aSB5YSBoaXN0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnTXVkYSB3YSBrdXRlbmdlbmV6YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICdEYXRhIHphIGphcmlkYSBsYSBtYXN3YWxpIGhhemlqYXBhdGlrYW5hLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFMYW5ndWFnZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIExhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdNZW5lamltZW50aSB5YSBsdWdoYSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ09uZ2V6YSBsdWdoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICdPbmdlemEgTHVnaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ0hhcmlyaSBMdWdoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAnSmUgdW5hdGFrYSBrdWZ1dGEgaGlpIGx1Z2hhPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBsYW5ndWFnZS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUhJ30gPQogICAgICAgICdIdXdlemkga3VmdXRhIGx1Z2hhIGhpaS4gSW1ldHVtaWthIGt3ZW55ZSBtYWthbGEgeWEgbWFzd2FsaSB6YWlkaSB5YSBtb2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ0hpaSBsdWdoYSBpbWV0dW1pa2Ega2F0aWthIG1ha2FsYSB5YSh6YSkgbWFzd2FsaSBpZnVhdGF5by4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdNaXBhbmdpbGlvIHlhIG11a3RhZGhhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBhcnRpY2xlcyBwZXIgcGFnZSd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIGt3YSB1a3VyYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ0hha3VuYSBkYXRhIHphIG1hc3dhbGknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvdXQgb2YgNSd9ID0gJ0thdGkgeWEgNSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmQnfSA9ICdOZW5vIGt1dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAnS3VyYSAobWZhbm8uIHNhd2EgbmEgMTAgYXUgWmFpZGkgeWEgNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ0tpd2FuZ28gKG1mYW5vIFNhd2EgbmEgMjUlIGF1IFphaWRpIHlhIDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICdLdWlkaGluaXNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdNYXJhIHlhIG13aXNobyBpbWViYWRpbGlzaHdhIG5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnTXVkYSB3YSBrdXRlbmdlbmV6YSBtYWthbGEgeWEgbWFzd2FsaSAoa2FibGEvYmFhZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ011ZGEgd2Ega3V0ZW5nZW5lemEgTWFrYWxhIHlhIG1hc3dhbGkgKGthdGlrYXRpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ011ZGEgd2Ega3ViYWRpbGlzaGEgbWFrYWxhIHlhIG1hc3dhbGkgKGthYmxhL2JhYWRhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICdNdWRhIHdhIGt1YmFkaWxpc2hhIG1ha2FsYSB5YSBtYXN3YWxpIChrYXRpa2F0aSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnTmFrYWxhIG56aW1hIHlhIG1hc3dhbGkgeWFuYXlvIHVsaXp3YSBtYXJhIGt3YSBtYXJhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ1RhZnV0YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAnQ2hhZ3VvIGxhIG1hZWxlem8gbWFmdXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICdLdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGUgc2V0dGluZ3MnfSA9ICdIYWt1bmEgTWlwYW5naWxpbyB5YSBrdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAnS3VyYSBtYWFsdW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ01hZmFubyBTYXdhIG5hIDEwIGF1IFphaWRpIHlhIDYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICdLaXdhbmdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICdIYWt1bmEgbWlwYW5naWxpbyB5YSBraXdhbmdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICdLaXdhbmdvIG1hYWx1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSd9ID0gJ01mYW5vIFNhd2EgbmEgMjUlIGF1IFphaWRpIHlhIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ011ZGEgd2Ega3V0ZW5nZW5lemEgbWFrYWxhIHlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICdNdWRhIHdhIGt1YmFkaWxpIG1ha2FsYSB5YSBtYXN3YWxpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0hhYmFyaSB6YSBNYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ1RoYW1pbmlzaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICdLdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ0hha3VuYSBLdXJhIHppbGl6b3BhdGlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAnSGFrdW5hIGt1cmEuIEt1d2Egd2Ega3dhbnphIGt1dGhhbWluaXNoYSBtYWthbGEgaGlpIHlhIG1hc3dhbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICdEb3dubG9hZCBLaWFtYmF0YW5pc2h3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ05pIGt3YSBraWFzaSBnYW4gbWFrYWxhIGhpaSBpbWVzYWlkaWE/IFRhZmFkaGFsaSB0dXNhaWRpZSBrdXRoYW1pbmlzaGEga3VsZXRhIG1hYmFkaWxpa28ga2F0aWthIGRhdGFiYXNlIHlhIE1hc3dhbGkuIEFzYW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgaGVscGZ1bCd9ID0gJ0hhaW5hIE1zYWFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICdJbmEgbXNhYWRhIHNhbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ09uZ2V6YSBraWNod2EgY2hhIGhhYmFyaSBjaGEgbWFzd2FsaSBrYXRpa2Egc29tbyB5YSBtYWthbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAnSW5naXphIG1hdGluaSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ0luZ2l6YSBtYXN3YWxpIHlvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAnSW5naXphIGxpbmsgeWEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQgJiBMaW5rJ30gPSAnSW5naXphIG5ha2FsYSB5YSBtYXN3YWxpIG5hIExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ0luZ2l6YSBtYXN3YWxpIHlvdGUgbmEgbGluayc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ0hha3VuYSBtYWthbGEgeWEgbWFzd2FsaSBpbGl5b3BhdGlrYW5hJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAnVGFmdXRhIG5ha2FsYSBrYW1pbGkga2F0aWthIG1hc3dhbGkgeWFuYXlvb3VsaXp3YSBtYXJhIGt3YSBtYXJhIChtZmFubyAiSm9obiIgYXUgIldpbGwiKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ1ZpenVpemkgdnlhIGt1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIHllbnllIGt1cmEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgcmVzdHJpY3Rpb25zJ30gPSAnVml6dWl6aSB2eWEgdGhhbWFuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICdNYWthbGEgeWEgbWFzd2FsaSB5YWxpeW90aGFtaW5pc2h3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ1ZpenVpemkgdnlhIG11ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIHlhbGl5b3RlbmdlbmV6d2EgdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnTWFrYWxhIHlhIG1hc3dhbGkgeWFsaXRlbmdlbmV6d2Ega2F0aSB5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8nfSA9ICdUYWZ1dGEgbWFlbGV6byBtYWZ1cGkga2FtYSBraWVsZXpvJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAnTmFtYmEgeWEgbWFrYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAnVGFmdXRhIE1ha2FsYSBrd2EgbmVubyBrdXUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAnVW1tYSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAnQmFjayB0byBGQVEgbWNodW5ndXppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAnc2VoZW11IGl3ZSBuYSBqaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICdIaWkgc2VoZW11IHRheWFyaSBpcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2F0ZWdvcnlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSB1cGRhdGVkISd9ID0gJ1NlaGVtdSB5YSBtYXN3YWxpIGlsaXlvYmFkaWxpc2h3YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ1NlaGVtdSB5YSBtYXN3YWxpIGlsaXlvb25nZXp3YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAnRnV0YSBzZWhlbXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0phcmlkYSBsYSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ0ppbmEgbGluYWhpdGFqaWthISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ0x1Z2hhIGlwbyB0YXlhcmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICdMdWdoYSB5YSBtYXN3YWxpIGltZWJhZGlsaXNod2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBsYW5ndWFnZSBhZGRlZCEnfSA9ICdMdWdoYSB5YSBtYXN3YWxpICBpbWVvbmdlendhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICdGdXRhIEx1Z2hhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICdNYXRva2VvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAnTWFiYWRpbGlrbyB5YSBtd2lzaG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAnaWRhZGkgeWEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ0FzYW50ZSBrd2EgS3VyYSB5YWtvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ1VtZXNoYXBpZ2Ega3VyYSB0YXlhcmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAnSGFrdW5hIGNoYWd1byBsYSBraXdhbmdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdDaGFwaXNoYSBtYWthbGEgeWEgbWFzd2FsaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIChNcHlhIGlsaXlvdGVuZ2VuZXp3YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ01ha2FsYSB5YSBtYXN3YWxpIChJbGl5b2JhZGlsaXNod2EgaGl2aSBrYXJpYnVuaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnTWFrYWxhIHlhIG1hc3dhbGkgKDEwIGJvcmEpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFSU1MucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFR5cGUgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgbXVzdCBiZSBlaXRoZXIgTGFzdENyZWF0ZSBvciBMYXN0Q2hhbmdlIG9yIFRvcDEwISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIEN1c3RvbWVyICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9QdWJsaWNGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljICglcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xheW91dC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgcmF0ZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBhcnRpY2xlIGlzIGVtcHR5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICdNYWthbGEgbXB5YSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ01hcmVrZWJpc2hvIG1hcHlhIHlhIG1ha2FsYSB5YSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICdNYWthbGEgMTAgYm9yYSB5YSBNYXN3YWxpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAnbmRhbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwnfSA9ICduamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljJ30gPSAndW1tYSc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ1Nhd2EnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICdLaWNodWppbyBjaGEgbWF0b2tlbyB5YSBIVE1MIGlsaSBrdW9uZ2V6YSB2aXVuZ28ga3dhIHR1bmdvIHppbGl6byBmYWZhbnVsaXdhLiBTdXJhIHlhIGVsZW1udGkgaGlpIGluYXJ1aHVzdSBtYWluZ2l6byB5YSBhaW5hIG1iaWxpLiBLd2FuemEgamluYWxhIHN1cmEgKG1mLiBmYXEucG5nKS4gS3dhIGtlc2kgaGlpIHN1cmEgeWEgbmppYSB5YSBPVFJTIGl0YXR1bWlrYS4gTmppYSB5YSBwaWxpIG5pIGt1aW5naXphIGtpdW5nbyBjaGEgaGl5byBzdXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICdSYW5naSB5YSBDU1Mga3dhIG1hdG9rZW8geWEga3VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnTXVkYSB3YSBtYXN3YWxpIHlhbGl5eW91bGl6d2EgbWFyYSBteWluZ2kga3VmdXRpa2Ega3V0b2thIGt3ZW55ZSBrdW1idWt1bWJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICdVc2ltYW1pemkgd2Ega2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnTXdvbmdvIHdhIG1hdG9rZW8geWEga3VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAnSmluYSBsYSBjaGFndW8tbXNpbmdpIGxhIGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICdDaGFndW8tbXNpbmdpIGxhIGx1Z2hhIHlhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIG55aW5naSBrYXRpa2EgbHVnaGEgbW9qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAnVWt1YndhIHdhIHVwZW8gd2EganV1IGNoYWd1byBtc2luZ2kgd2EgdmljaHdhIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrdW9ueWVzaHdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdLaXBhdW1iZWxlIGNoYSBjaGFndW8tbXNpbmdpIGNoYSB0aWtldGkga3dhIGlkaGluaSB5YSBtYWthbGEgeWEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAnSGFsaSB5YSBjaGFndW8tbXNpbmdpIHlhIGluZ2l6byBsYSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnSGFsaSB5YSBjaGFndW8tbXNpbmdpIGt3YSB0aWtldGkgemEgaWRoaW5pIHlhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdIYWxpIHlhIGNoYWd1by1tc2luZ2kga3dhIHRpa2V0aSB6YSBtYWthbGEgeWEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ1RoYW1hbmkgeWEgY2hhZ3VvLW1zaW5naSBrd2EgcGF0YW1ldGEgYW1pbGlmdSBrd2EgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGlmIHRoZSBGQVEgdGl0bGUgc2hvdWxkIGJlIGNvbmNhdGVuYXRlZCB0byBhcnRpY2xlIHN1YmplY3QuJ30gPQogICAgICAgICdFbGV6YSBrYW1hIGtpY2h3YSBjaGEgaGFiYXJpIGNoYSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhbnlpbmdpIGtpdW5nYW5pc2h3ZSBuYSBzb21vIGxhIG1ha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ0luYWVsZXphIG1hcGl0aW8geWEgbW9kdWxpIGt1b255ZXNoYSAgbXVvbmVrYW5vIG1kb2dvIHdhIGphcmlkYSBsYSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGxpc3QuJ30gPQogICAgICAgICdJbmFlbGV6YSBtYXBpdGlvIHlhIG1vZHVsaSBrdW9ueWVzaGEgbXVvbmVrYW5vIG1kb2dvIHdhIG9yb2RoYSB5YSBtYXN3YWxpIHlhbGl5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBjaGFndW8tbXNpbmdpIGtpdW1iaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgYWppbGkgeWEgdXBhbmdhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB0YWZ1dGkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGNoYWd1by1tc2luZ2kga2l1bWJpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBhamlsaSB5YSB1cGFuZ2FqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHRhZnV0aSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBraXVtYmkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIGFqaWxpIHlhIHVwYW5nYWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgdGFmdXRpIHlhIGtpb2xlc3VyYSBjaGEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGNoYWd1by1tc2luZ2kga2l1bWJpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGt3YSBhamlsaSB5YSB1cGFuZ2FqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraWNodW5ndXppIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBraXVtYmkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIGFqaWxpIHlhIHVwYW5nYWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpY2h1bmd1emkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBjaGFndW8tbXNpbmdpIGtpdW1iaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgYWppbGkgeWEgdXBhbmdhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2ljaHVuZ3V6aSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRmFmYW51YSBjaGFndW8tbXNpbmdpIHdhIG1wYW5naWxpbyB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYXRva2VvIHlhIGtpY2h1bmd1emkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IHlhIHNhc2FoaXZpIGp1dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0ZhZmFudWEgY2hhZ3VvLW1zaW5naSB3YSBtcGFuZ2lsaW8gd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2EgbWF0b2tlbyB5YSBraWNodW5ndXppIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IHlhIHNhc2FoaXZpIGp1dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdGYWZhbnVhIGNoYWd1by1tc2luZ2kgd2EgbXBhbmdpbGlvIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIG1hdG9rZW8geWEga2ljaHVuZ3V6aSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHVtbWEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IHlhIHNhc2FoaXZpIGp1dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdGYWZhbnVhIGNoYWd1by1tc2luZ2kgd2EgbXBhbmdpbGlvIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIG1hdG9rZW8geWEga3V0YWZ1dGEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLiBKdXU6IEtvbmd3ZSBqdXUuIENoaW5pOiB5YSBzYXNhaGl2aSBqdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRmFmYW51YSBjaGFndW8tbXNpbmdpIHdhIG1wYW5naWxpbyB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYXRva2VvIHlhIGt1dGFmdXRhIGthdGlrYSBraW9sZXN1cmEgY2hhIG10ZWphLiBKdXU6IEtvbmd3ZSBqdXUuIENoaW5pOiB5YSBzYXNhaGl2aSBqdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0ZhZmFudWEgY2hhZ3VvLW1zaW5naSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIG1hamlidSB5YSB1dGFmdXRhamkga2F0aWthIGludGFmYXNlIHlhIHVtbWEuIEp1dTogS29uZ3dlIHphaWRpIGp1dS4gQ2hpbmk6IFlhIHNhc2EgaGl2aSBqdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdJbmFmYWZhbmEgc2lmYSB5YSB1dGFmdXRhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrd2EgYWppbGkgeWEgc2tyaW5pIHlhIHV0YWZ1dGFqaSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICdGYWZhbnVhIHRhYXJpZmEgaXRha2F5b2luZ2l6d2Ega3dlbnllIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIG1pc2luZ2kgeWEgdGlrZXRpLiAiTWFzd2FsaSB5YWxpeW9qYWEgbmF5YXlvdWxpendhIG1hcmEga3dhIG1hcmEiIHlhbmF5b2p1bXVpc2hhIG5ha2FsYSwgdmlhbWJhdGFuaXNoaSBuYSB0YXN3YWlyYSB5YSBtc3Rhcmkgd2EgbmRhbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdGYWZhbnVhIHNhZnUgemlsaXpvb255ZXNod2Ega2F0aWthIGtpdGFmdXRhIG1hc3dhbGkuIEhpbGkgY2hhZ3VvIGhhbGluYSBtYWRoYXJhIGthdGlrYSBuYWZhc2kga3dlbnllIHNhZnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnRmFmYW51YSBzYWZ1IHppbGl6b29ueWVzaHdhIGthdGlrYSBqYXJpZGEgbGEgbWFzd2FsaS4gSGlsaSBjaGFndW8gaGFsaW5hIG1hZGhhcmEga2F0aWthIG5hZmFzaSBrd2VueWUgc2FmdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0ZhZmFudWEgc2FmdSB6aWxpem9vbnllc2h3YSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkuIEhpbGkgY2hhZ3VvIGhhbGluYSBtYWRoYXJhIGthdGlrYSBuYWZhc2kga3dlbnllIHNhZnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJ1VmYWZhbnV6aSB3YSB1Z2EgeWEgbWF0aW5pIGh1cnUgeWEga2lwZW5nZWxlIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICdGdXRhIGhheWEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAnSGFyaXJpIG1ha2FsYSBoaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ1dlemVzaGEgTHVnaGEgbnlpbmdpIG55aW5naSBrYXRpa2EgbWFzd2FsaSBoYXlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICdXZXplc2hhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ0tpY2h1bmd1emFqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyBLaWtvbW8gImtpZG9nbyIgY2hhIG1hcGl0aW8geWEgamFyaWRhIGxhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdLaWtvbW8gImtpZG9nbyIgY2hhIG1hcGl0aW8geWEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB0YWZ1dGEgYmFja2VuZCBydXRhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICdTZWhlbXU0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ1NlaGVtdTUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnTWFrdW5kaSB5YSBpZGhpbmkga3dhIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICdIaXN0b3JpYSB5YSBtYXN3YWxpIGhheWEgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICdKdW11aXNoYSBzZWhlbXUgemEgbmRhbmkgemEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrdWxpbmdhbmEgbmEgdGlrZXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ0p1bXVpc2hhIGppbmEgbGEga2lsYSBzZWhlbXUgeWEgbWFzd2FsaSB5YWxpeW91bGl6d2EgbWFyYSBueWluZ2kga3VsaW5nYW5hIG5hIHRpa2V0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICdLaW9sZXN1cmEgYW1iYWNobyB1dGFmdXRhamkgd2EgaGFyYWthIHVuYXRha2l3YSBrdW9ueWVzaHdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAnSmFyaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICdNZW5lamltZW50aSB5YSBsdWdoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICdVbmdhbmlzaGdhIGtpdHUga2luZ2luZSBuYSBraXBlbmdlbGUgaGlraSBjaGEgIG1hc3dhbGkgeWFsaXlvdWxpendhIG1hcmEga3dhIG1hcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT3JvZGhhIHlhIGFpbmEgeWEgaGFsaSBhbWJhem8gemluYXdlemEga3V0dW1pa2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPcm9kaGEgeWEgYWluYSB5YSBoYWxpIGFtYmF6byB6aW5hd2V6YSBrdXR1bWlrYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09yb2RoYSB5YSBhaW5hIHlhIGhhbGkgYW1iYXpvIHppbmF3ZXphIGt1dHVtaWthIGthdGlrYSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgdXBlbyB3YSBqdXUgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YW5heWF0YXlvb255ZXNod2Ega2F0aWthIG1hamlidSB5YSBraWNodW5ndXppIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSB1cGVvIHdhIGp1dSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhbmF5YXRheW9vbnllc2h3YSBrYXRpa2EgbWFqaWJ1IHlhIGtpY2h1bmd1emkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIHVwZW8gd2EganV1IHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWFuYXlhdGF5b29ueWVzaHdhIGthdGlrYSBtYWppYnUgeWEga2ljaHVuZ3V6aSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSB1cGVvIHdhIGp1dSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhbmF5YXRheW9vbnllc2h3YSBrYXRpa2EgIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB5YSB1cGVvIHdhIGp1dSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhbmF5YXRheW9vbnllc2h3YSBrYXRpa2EgbWFqaWJ1IHlhIHVjaHVuZ3V6aSAgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgdXBlbyB3YSBqdXUgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YW5heWF0YXlvb255ZXNod2Ega2F0aWthIG1hamlidSB5YSB1Y2h1bmd1emkgIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIHVwZW8gd2EganV1IHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWFuYXlhdGF5b29ueWVzaHdhIGthdGlrYSBtYWppYnUgeWEgdWNodW5ndXppICB5YSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXBlbyB3YSBqdXUgd2EgdWt1YndhIHdhIHZpY2h3YSBrYXRpa2EgbWFrYWxhIHlhIG1hc3dhbGkgaW5heW9vbnllc2h3YSBrYXRpa2Ega2l2aW5qYXJpIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcGVvIHdhIGp1dSB3YSB1a3Vid2Egd2EgdmljaHdhIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaSBpbmF5b29ueWVzaHdhIGthdGlrYSBraXZpbmphcmkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpb2xlc3VyYSBjaGEgbXRlamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwZW8gd2EganV1IHdhIHVrdWJ3YSB3YSB2aWNod2Ega2F0aWthIG1ha2FsYSB5YSBtYXN3YWxpIGluYXlvb255ZXNod2Ega2F0aWthIGtpdmluamFyaSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB1bW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcGVvIHdhIGp1dSB3YSB1a3Vid2Egd2EgdmljaHdhIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaSBpbmF5b29ueWVzaHdhIGthdGlrYSB1dGFmdXRhamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwZW8gd2EganV1IHdhIHVrdWJ3YSB3YSB2aWNod2Ega2F0aWthIG1ha2FsYSB5YSBtYXN3YWxpIGluYXlvb255ZXNod2Ega2F0aWthIHV0YWZ1dGFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhICBrYXRpa2Ega2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwZW8gd2EganV1IHdhIHVrdWJ3YSB3YSB2aWNod2Ega2F0aWthIG1ha2FsYSB5YSBtYXN3YWxpIGluYXlvb255ZXNod2Ega2F0aWthIHV0YWZ1dGFqaSB3YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcGVvIHdhIGp1dSB3YSB1a3Vid2Egd2EgdmljaHdhIGthdGlrYSBtYWthbGEgeWEgbWFzd2FsaSBpbmF5b29ueWVzaHdhIGthdGlrYSBqYXJpZGEgbGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsaSB5YSBrdXphbGlzaGEgbWFlbGV6byBtYWZ1cGkgeWEgdXRhZnV0YWppIHdhIHdhemkgd2EgSFRNTCBrd2EgdXRhZnV0YWppIG1mdXBpIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2F0aWthIGtpb2xlc3VyYSBjaGEgdW1tYS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ01ha2FsYSBtcHlhIHlhIG1hc3dhbGkgeWFuYWhpdGFqaSBpZGhpbmlzaG8ga2FibGEgaGF5YXRvbGV3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWF0YWtheW9vbnllc2h3YSBrYXRpa2Ega2l0YWZ1dGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWF0YWtheW9vbnllc2h3YSBrYXRpa2Ega2l0YWZ1dGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBraW9sZXN1cmEgY2hhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHlhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhdGFrYXlvb255ZXNod2Ega2F0aWthIGtpbGEgdWt1cmFzYSB3YSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB5YSBraW9sZXN1cmEgY2hhIG10ZWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWF0YWtheW9vbnllc2h3YSBrYXRpa2Ega2lsYSB1a3VyYXNhIHdhIG1hdG9rZW8geWEgdXRhZnV0YWppIHlhIGtpb2xlc3VyYSBjaGEgdW1tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIGxhc3QgY2hhbmdlcy4nfSA9ICdOYW1iYSB5YSB2aXR1IHZpbGl2b29ueXdlc2h3YSBrYXRpa2EgbWFiYWRpbGlrbyB5YSBtd2lzaG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnTmFtYmEgeWEgdml0dSB2aWxpdm90ZW5nZW5lendhIG13aXNob25pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ05hbWJhIHlhIHZpdHUgdmlsaXZvb255d2VzaHdhIGthdGlrYSB2aXBlbmdlbGUgMTAgYm9yYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXQgbGltaXQgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBqb3VybmFsIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGEgemEga3VyYXNhIChhbWJhem8gdmlwZW5nZWUgdnlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgemltZW9ueWVzaHdhKSB6YSBtYXBpdGlvIG1hZG9nbyB5YSBqYXJpZGEgbGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgRkFRIGl0ZW1zIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIEZBUSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRhIHphIGt1cmFzYSAoYW1iYXpvIHZpcGVuZ2VlIHZ5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHppbWVvbnllc2h3YSkgemEgbWFwaXRpbyBtYWRvZ28geWEgIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnQ2hhcGlzaGEgbWFzd2FsaSBoYXlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWV1ZSBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICdGb2xlbmkgeWEgaWRoaW5pIHlhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGFrd2EgbWFyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICdUaGFtaW5pc2hvIGxhIGt1cmEuIEZ1bmd1byBsYXppbWEgaXdlIGt3ZW55ZSBhc2lsaW1pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAnVGFmdXRhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdTZXRpIHVyZWZ1IHdhIGNoYWd1by1tc2luZ2kgKGthdGlrYSBwaWtzZWxpKSB5YSBuZGFuaSB5YSBtc3Rhcmkgd2EgdWdvIHdhIEhUTUwga2F0aWthIHVrdXphamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnU2V0aSB1cmVmdSB3YSBjaGFndW8tbXNpbmdpIChrYXRpa2EgcGlrc2VsaSkgeWEgbmRhbmkgeWEgbXN0YXJpIHdhIHVnbyB3YSBIVE1MIGthdGlrYSB1a3V6YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgbXRlamEuKG5hIHVrdXphamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYXlhIHVtbWEgKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICdTZXRpIHVwZW8gd2EganV1IHdhIHVyZWZ1IChrYXRpa2EgcGlrc2VsaSkgeWEgbmRhbmkgeWEgbXN0YXJpIHdhIHVnbyB3YSBIVE1MIGthdGlrYSB1a3V6YWppIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ1NldGkgdXBlbyB3YSBqdXUgd2EgdXJlZnUgKGthdGlrYSBwaWtzZWxpKSB5YSBuZGFuaSB5YSBtc3Rhcmkgd2EgdWdvIHdhIEhUTUwga2F0aWthIHVrdXphamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSBtdGVqYS4oYW5kIHVrdXphamkgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSB1bW1hKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdHVmZSBjaGEgXCdcJyBJbmdpemEga2l1bmdhbmlzaGkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmFcJ1wnIGthdGlrYSB3YWthbGEgZmlmaXphIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l0dWZlIGNoYSBcJ1wnSW5naXphIG1hdGluaSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhICYga2l1bmdhbmlzaGlcJ1wnIC8gXCdcJ2luZ2l6YSBtYXdhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeW90ZSAma2l1bmdhbmlzaGlcJ1wnIGthdGlrYSB3YWthbGEgZmlmaXphIHdhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCIgLyAiSW5zZXJ0IEZ1bGwgRkFRIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdHVmZSBjaGEgXCdcJyBJbmdpemEgbWF0aW5pIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmFcJ1wnIC8gXCdcJ0luZ2l6YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlvdGVcJ1wnICBrYXRpa2Egd2FrYWxhICBmaWZpemEgd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgQXJ0aWNsZSB3aXRoIEhUTUwuJ30gPSAnT255ZXNoYSBtYWthbGEgeWEgbWFzd2FsaSBuYSBIVE1MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIHBhdGggeWVzL25vLid9ID0gJ09ueWVzaGEgbmppYSB5YSBtYXN3YWxpIG5kaW8vaGFwYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAnSW5hb255ZXNoYSB2aXBlbmdlbGUgdnlhIGthdGVnb3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdJbmFvbnllc2hhIHZpcGVuZ2VsZSB2aWxpdnlvYmFkaWxpc2h3YSBrYXRpa2Ega2lvbGVzdXJhIGtpbGljaG9mYWZhbnVsaXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnSW5hb255ZXNoYSB2aXBlbmdlbGUgdmlsaXZ5b3RlbmdlbmV6d2EgbXdpc2hvbmkga2F0aWthIGtpb2xlc3VyYSAga2lsaWNob2ZhZmFudWxpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICdJbmFvbnllc2hhIHZpcGVuZ2VsZSAgMTAgIGJvcmEga2F0aWthIGtpb2xlc3VyYSBraWxpY2hvZmFmYW51bGl3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ0luYW9ueWVzaGEga3VwaWdhIGt1cmEga2F0aWthIGtpb2xlc3VyYSBraWxpY2hvZmFmYW51bGl3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nYW5pc2hpIGthdGlrYSBvcm9kaGEgYW1iYWNobyBraW5hcnVodXN1IGt1dW5nYW5pc2h3YSBrd2EgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBuYSBraXBlbmdlbGUga2luZ2luZSBrYXRpa2EgbWFuZGhhcmkga3V6d2EgeWEgaGF5byBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIHlhIHdha2FsYSB3YSBraW9sZXN1cmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ2FuaXNoaSBrYXRpa2Egb3JvZGhhIGFtYWJjaG8ga2luYXJ1aHVzdSBrdWZ1dGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2EgbWFuZGhhbmkga3V6d2Ega2F0aWthIHdha2FsYSB3YSBraW9sZXN1cmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ2FuaXNoaSBrYXRpa2Egb3JvZGhhIGt1ZmlraWEgaGlzdG9yaWEgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBrYXRpa2EgbWFuZGhhcmkga3V6d2EgeWEgd2FrYWxhIHdhIGtpb2xlc3VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga3VpbmdhbmlzaGkga2F0aWthIG9yb2RoYSBrdWhhcmlyaSBrYXRpa2EgbWFuZGhhcmkga3V6d2EgeWEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSB5YSB3YWthbGEgd2Ega2lvbGVzdXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ2FuaXNoaSBrYXRpa2Egb3JvZGhhIGNoYSBrdXJ1ZGkgbnl1bWEga2F0aWthIG1hbmRoYXJpIGt1endhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEgeWEgd2FrYWxhIHdhIGtpb2xlc3VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nYW5pc2hpIGthdGlrYSBvcm9kaGEga3VjaGFwaXNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGthdGlrYSBtYW5kaGFyaSBpbGl5b2t1endhIHlhIHdha2FsYSB3YSBraW9sZXN1cmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICdLaXRhbWJ1bGlzaGkgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEsIG1mYW5vIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEjLEtCIywgTXlGQVEjLiBDaGFndW8gbXNpbmdpIG5pIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdNcGFuZ2lsaW8gaHV1IHVuYWZhZmFudWEga3dhbWJhIGtpcGVuZ2VsZSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBraW5hd2V6YSBrdXVuZ2FuaXNod2EgbmEga2lwZW5nZWxlIGtpbmdpbmUgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga3dhIGt1dHVtaWEga2l1bmdhbmlzaGkgYWluYSB5YSBcJ2thd2FpZGFcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICdNcGFuZ2lsaW8gaHV1IHVuYWZhZmFudWEga3dhbWJhIGtpcGVuZ2VsZSBjaGEgbWFzd2FsaSB5YW5heW91bGl6d2EgbWFyYSBrd2EgbWFyYSBraW5hd2V6YSBrdXVuZ2FuaXNod2EgbmEga2lwZW5nZWxlIGtpbmdpbmUgY2hhIHRpa2V0aSBrd2Ega3V0dW1pYSBraXVuZ2FuaXNoaSBhaW5hIHlhIFwnWmF6aU10b3RvXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJ01wYW5naWxpbyBodXUgdW5hZmFmYW51YSBrd2FtYmEga2lwZW5nZWxlIGNoYSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhIGtpbmF3ZXphIGt1dW5nYW5pc2h3YSBuYSBraXBlbmdlbGUga2luZ2luZSBjaGEgdGlrZXRpIGt3YSBrdXR1bWlhIGtpdW5nYW5pc2hpIGFpbmEgeWEgXCdrYXdhaWRhXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnTXBhbmdpbGlvIGh1dSB1bmFmYWZhbnVhIGt3YW1iYSBraXBlbmdlbGUgY2hhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEga2luYXdlemEga3V1bmdhbmlzaHdhIG5hIGtpcGVuZ2VsZSBraW5naW5lIGNoYSB0aWtldGkga3dhIGt1dHVtaWEgYWluYSB5YSBraXVuZ2FuaXNoaSBraXphemkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBib2R5IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdLaWluaSBjaGEgdGlrZXRpIGt3YSBJZGhpbmkgeWEgbWFrYWxhIHlhIG1hc3dhbGkgeWFuYXlvdWxpendhIG1hcmEga3dhIG1hcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICdTb21vIGxhIHRpa2V0aSBrd2EgSWRoaW5pIHlhIG1ha2FsYSB5YSBtYXN3YWxpIHlhbmF5b3VsaXp3YSBtYXJhIGt3YSBtYXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAnS2lwZW5nZWxlIGNoYSBtd2FtYmFhIHphbmEga3dhIGFqaWxpIHlhIG1rYXRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAnbmplIChtdGVqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ25kYW5pICh3YWthbGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ1VtbWEgKHdvdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAocHVibGljKSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhpcyBtaWdodCBiZSBoZWxwZnVsJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfguYDguJ7guLTguYjguKHguJrguJfguITguKfguLLguKEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAn4LiE4Li14Lii4LmM4LmA4Lin4Li04Lij4LmM4LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuJ30gPSAn4LiV4LmJ4Lit4LiH4Lij4Liw4Lia4Li44Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4o+C4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgY2F0ZWdvcnknfSA9ICfguYDguJ7guLTguYjguKHguKvguKHguKfguJTguKvguKHguLnguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIENhdGVnb3J5J30gPSAn4LmA4Lie4Li04LmI4Lih4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfguYHguIHguYnguYTguILguKvguKHguKfguJTguKvguKHguLnguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfguKvguKHguKfguJTguKvguKHguLnguYjguKLguYjguK3guKLguILguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfguIHguKPguLjguJPguLLguYDguKXguLfguK3guIHguK3guKLguYjguLLguIfguJnguYnguK3guKLguKvguJnguLbguYjguIfguIHguKXguLjguYjguKHguJfguLXguYjguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ+C4geC4peC4uOC5iOC4oeC5gOC4reC5gOC4ouC5iOC4meC4leC5jOC4l+C4teC5iOC4quC4suC4oeC4suC4o+C4luC5gOC4guC5ieC4suC4luC4tuC4h+C4muC4l+C4hOC4p+C4suC4oeC5g+C4meC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4meC4teC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn4LiI4Liw4LmB4Liq4LiU4LiH4LmA4Lib4LmH4LiZ4LiE4Lin4Liy4Lih4LiE4Li04LiU4LmA4Lir4LmH4LiZ4LmD4LiZRXhwbG9yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4peC4muC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4meC4teC5ieC4q+C4o+C4t+C4reC5hOC4oeC5iD8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgY2F0ZWdvcnkuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlIGFuZC9vciBpcyBwYXJlbnQgb2YgYXQgbGVhc3Qgb25lIG90aGVyIGNhdGVnb3J5J30gPQogICAgICAgICfguITguLjguJPguYTguKHguYjguKrguLLguKHguLLguKPguJbguKXguJrguKvguKHguKfguJTguKvguKHguLnguYjguJnguLXguYnguYTguJTguYnguYDguJ7guKPguLLguLDguKvguKHguKfguJTguKvguKHguLnguYjguJnguLXguYnguJbguLnguIHguYPguIrguYnguYPguJnguK3guKLguYjguLLguIfguJnguYnguK3guKLguKvguJnguLbguYjguIfguJrguJfguITguKfguLLguKEgRkFRIOC4q+C4o+C4t+C4rSDguKvguKHguKfguJTguKvguKHguLnguYjguJnguLXguYnguITguLfguK0g4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4Lir4Lil4Lix4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBhcnRpY2xlKHMpJ30gPSAn4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4LiZ4Li14LmJ4LmD4LiK4LmJ4LmD4LiZ4LiB4Liy4Lij4LiV4Li04LiU4LiV4Liy4Lih4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAocyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAn4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4LiZ4Li14LmJ4LiE4Li34Lit4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4Lir4Lil4Lix4LiB4LiC4Lit4LiH4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4Lii4LmI4Lit4Lii4LiV4LmI4Lit4LmE4Lib4LiZ4Li14LmJJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4peC4muC4q+C4seC4p+C4guC5ieC4rSBGQVEg4LiZ4Li14LmJ4Lir4Lij4Li34Lit4LmE4Lih4LmIPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ+C4meC4seC4geC4quC4s+C4o+C4p+C4iCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmB4Lia4Lia4Lij4Lin4LiU4LmA4Lij4LmH4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGRjYXJkcyBhcmUgYWxsb3dlZC4nfSA9ICfguYTguKfguKXguJTguYzguIHguLLguKPguYzguJTguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAn4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmB4Lia4Lia4Lil4Liw4LmA4Lit4Li14Lii4LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YmNhdGVnb3JpZXMnfSA9ICfguKvguKHguKfguJTguKvguKHguLnguYjguKLguYjguK3guKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdWJjYXRlZ29yaWVzIGZvdW5kLid9ID0gJ+C5hOC4oeC5iOC4nuC4muC4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4ouC5iOC4reC4oic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAn4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ+C5gOC4meC4t+C5ieC4reC4q+C4suC4m+C4o+C4sOC4p+C4seC4leC4tCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn4LmA4Lin4Lil4Liy4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiHJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUpvdXJuYWxPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLid9ID0gJ+C5hOC4oeC5iOC4nuC4muC4p+C4suC4o+C4quC4suC4oyBGQVEgJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4o+C4oOC4suC4qeC4siBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBMYW5ndWFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2UgdGhpcyBmZWF0dXJlIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBsYW5ndWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn4LmA4Lie4Li04LmI4Lih4Lig4Liy4Lip4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ+C5gOC4nuC4tOC5iOC4oeC4oOC4suC4qeC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAn4LmB4LiB4LmJ4LmE4LiC4Lig4Liy4Lip4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8nfSA9ICfguITguLjguJPguJXguYnguK3guIfguIHguLLguKPguKXguJrguKDguLLguKnguLLguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+C4hOC4uOC4k+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC4peC4muC4oOC4suC4qeC4suC4meC4teC5ieC5gOC4nuC4o+C4suC4sOC4oOC4suC4qeC4suC4meC4teC5ieC4geC4s+C4peC4seC4h+C5g+C4iuC5ieC5g+C4meC4reC4ouC5iOC4suC4h+C4meC5ieC4reC4ouC4q+C4meC4tuC5iOC4h+C5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgaXMgdXNlZCBpbiB0aGUgZm9sbG93aW5nIEZBUSBBcnRpY2xlKHMpJ30gPSAn4Lig4Liy4Lip4Liy4LiZ4Li14LmJ4LmD4LiK4LmJ4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUShzKSDguYDguKvguKXguYjguLLguJnguLXguYknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguYnguK3guITguKfguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGFydGljbGVzIHBlciBwYWdlJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguILguK3guIfguYHguJXguYjguKXguLDguKvguJnguYnguLInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn4LmE4Lih4LmI4Lie4Lia4LiC4LmJ4Lit4Lih4Li54LilIEZBUSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnMSDguYPguJkgIDUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAn4LiE4Li14Lii4LmM4LmA4Lin4Li04Lij4LmM4LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICfguYLguKvguKfguJUgKOC5gOC4iuC5iOC4mSDguYDguJfguYjguLLguIHguLHguJogMTAg4Lir4Lij4Li34Lit4Lih4Liy4LiB4LiB4Lin4LmI4LiyNjApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ+C5gOC4o+C4lSAo4LmA4LiK4LmI4LiZIOC5gOC4l+C5iOC4suC4geC4seC4miAyNSUg4Lir4Lij4Li34LitIOC4oeC4suC4geC4geC4p+C5iOC4siA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAn4Lit4LiZ4Li44Lih4Lix4LiV4Li04LmB4Lil4LmJ4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4peC5iOC4suC4quC4uOC4lOC5guC4lOC4oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ+C5gOC4p+C4peC4suC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC4geC5iOC4reC4mS/guKvguKXguLHguIcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ+C5gOC4p+C4peC4suC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC5g+C4meC4o+C4sOC4q+C4p+C5iOC4suC4hyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfguYDguKfguKXguLLguJfguLXguYjguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguJrguJfguITguKfguLLguKEgRkFRICjguIHguYjguK3guJkv4Lir4Lil4Lix4LiHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfguYDguKfguKXguLLguJfguLXguYjguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguJrguJfguITguKfguLLguKEgRkFRICjguYPguJnguKPguLDguKvguKfguYjguLLguIcpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ+C4guC5ieC4reC4hOC4p+C4suC4oUZBUeC4ieC4muC4seC4muC5gOC4leC5h+C4oSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFNlYXJjaCd9ID0gJ+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC5guC4lOC4oiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfguIHguLLguKPguYDguKXguLfguK3guIHguYLguJvguKPguYTguJ/guKXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ+C5guC4q+C4p+C4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAn4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiB4Liy4Lij4LmC4Lir4Lin4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAn4LiB4Liy4Lij4LmC4Lir4Lin4LiV4LiX4Li14LmI4LmA4LiJ4Lie4Liy4Liw4LmA4LiI4Liy4Liw4LiI4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ+C5gOC4iuC5iOC4mSDguYDguJfguYjguLLguIHguLHguJogMTAg4Lir4Lij4Li34Lit4Lih4Liy4LiB4LiB4Lin4LmI4LiyNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ+C5gOC4o+C4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAn4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiB4Liy4Lij4LmA4Lij4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICfguIHguLLguKPguJvguKPguLDguYDguKHguLTguJnguJfguLXguYjguYDguInguJ7guLLguLDguYDguIjguLLguLDguIjguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICfguYDguIrguYjguJkg4LmA4LiX4LmI4Liy4LiB4Lix4LiaIDI1JSDguKvguKPguLfguK0g4Lih4Liy4LiB4LiB4Lin4LmI4LiyIDc1JSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSd9ID0gJ+C5gOC4p+C4peC4suC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAn4LmA4Lin4Lil4Liy4LiX4Li14LmI4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4Lia4LiX4LiE4Lin4Liy4LihJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ+C4guC5ieC4reC4oeC4ueC4pSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0aW5nJ30gPSAn4LmA4Lij4LiV4LiV4Li04LmJ4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGVzJ30gPSAn4LmC4Lir4Lin4LiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZvdGVzIGZvdW5kISd9ID0gJ+C5hOC4oeC5iOC4nuC4muC4geC4suC4o+C5guC4q+C4p+C4lSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJ+C5hOC4oeC5iOC4nuC4muC4geC4suC4o+C5guC4q+C4p+C4lSEg4LmA4Lib4LmH4LiZ4LiE4LiZ4LmB4Lij4LiB4LmD4LiZ4LiB4Liy4Lij4Lib4Lij4Liw4LmA4Lih4Li04LiZ4Lir4Lix4Lin4LiC4LmJ4LitIEZBUSDguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG93bmxvYWQgQXR0YWNobWVudCd9ID0gJ+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lOC4quC4tOC5iOC4h+C4l+C4teC5iOC5geC4meC4muC4oeC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ+C5g+C4meC4geC4suC4o+C5gOC4m+C4tOC4lOC4geC4suC4o+C4peC4tOC4h+C4hOC5jOC5g+C4meC4muC4peC5h+C4reC4geC4hOC4s+C4reC4mOC4tOC4muC4suC4ouC4leC5iOC4reC5hOC4m+C4meC4teC5iSDguITguLjguJPguK3guLLguIjguIjguLDguJXguYnguK3guIfguIHguJTguJvguLjguYjguKEgQ3RybCDguKvguKPguLfguK0gQ21kIOC4q+C4o+C4t+C4rSBTaGlmdCDguYPguJnguILguJPguLDguJfguLXguYjguIHguJTguKXguLTguIfguITguYwgKOC4guC4tuC5ieC4meC4reC4ouC4uOC5iOC4geC4seC4muC5gOC4muC4o+C4suC5gOC4i+C4reC4o+C5jOC5geC4peC4sOC4o+C4sOC4muC4muC4m+C4juC4tOC4muC4seC4leC4tOC4geC4suC4o+C4guC4reC4h+C4hOC4uOC4kyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfguKvguLHguKfguILguYnguK3guJnguLXguYnguYTguJTguYnguJvguKPguLDguYLguKLguIrguJnguYzguIHguLHguJrguITguLjguJPguKvguKPguLfguK3guYTguKHguYg/IOC4geC4o+C4uOC4k+C4suC5g+C4q+C5ieC4hOC4sOC5geC4meC4meC4guC4reC4h+C4hOC4uOC4k+C5geC4peC4sOC4iuC5iOC4p+C4ouC5g+C4meC4geC4suC4o+C4m+C4o+C4seC4muC4m+C4o+C4uOC4h+C4kOC4suC4meC4guC5ieC4reC4oeC4ueC4pSBGQVEuIOC4guC4reC4muC4hOC4uOC4kyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfguYTguKHguYjguKHguLXguJvguKPguLDguYLguKLguIrguJnguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn4Lih4Li14Lib4Lij4Liw4LmC4Lii4LiK4LiZ4LmM4Lih4Liy4LiBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICfguYDguJ7guLTguYjguKHguKvguLHguKfguILguYnguK0gRkFRIOC5g+C4meC4leC4seC4p+C4muC4l+C4guC4reC4h+C4muC4l+C4hOC4p+C4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIFRleHQnfSA9ICfguJvguYnguK3guJnguILguYnguK3guITguKfguLLguKEgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ+C4m+C5ieC4reC4mSBGQVEg4LiJ4Lia4Lix4Lia4LmA4LiV4LmH4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ+C4m+C5ieC4reC4meC4peC4tOC4h+C4hOC5jCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ+C4m+C5ieC4reC4meC4peC4tOC4h+C4hOC5jOC5geC4peC4sOC4guC5ieC4reC4hOC4p+C4suC4oSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ+C4m+C5ieC4reC4mSBGQVEg4LiJ4Lia4Lix4Lia4LmA4LiV4LmH4Lih4LmB4Lil4Liw4Lil4Li04LiH4LiE4LmMJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAn4LmE4Lih4LmI4Lie4Lia4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gIkpvaG4qbiIgb3IgIldpbGwqIiknfSA9ICfguITguYnguJnguKvguLLguYHguJrguJrguInguJrguLHguJrguYDguJXguYfguKHguYPguJnguJrguJfguITguKfguLLguKEgRkFRICjguYDguIrguYjguJkgIkpvaG4qbiIgb3IgIldpbGwqIiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfguILguYnguK3guIjguLPguIHguLHguJTguIHguLLguKPguYLguKvguKfguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ+C5gOC4ieC4nuC4suC4sOC4muC4l+C4hOC4p+C4suC4oUZBUSDguYLguJTguKLguIHguLLguKPguYLguKvguKfguJQuLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICfguILguYnguK3guIjguLPguIHguLHguJTguIHguLLguKPguJvguKPguLDguYDguKHguLTguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAn4LmA4LiJ4Lie4Liy4Liw4Lia4LiX4LiE4Lin4Liy4LihRkFRIOC5guC4lOC4ouC4geC4suC4o+C4m+C4o+C4sOC5gOC4oeC4tOC4mS4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIHJlc3RyaWN0aW9ucyd9ID0gJ+C4geC4suC4o+C4iOC4s+C4geC4seC4lOC5gOC4p+C4peC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkJ30gPSAn4LmA4LiJ4Lie4Liy4Liw4Lia4LiX4LiE4Lin4Liy4LihIEZBUeC4l+C4teC5iOC4quC4o+C5ieC4suC4h+C5geC4peC5ieC4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfguYDguInguJ7guLLguLDguJrguJfguITguKfguLLguKEgRkFR4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiH4LmD4LiZ4Lij4Liw4Lir4Lin4LmI4Liy4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ1NlYXJjaC1Qcm9maWxlIOC5gOC4m+C5h+C4meC5geC4oeC5iOC5geC4muC4mj8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICfguKvguKHguLLguKLguYDguKXguILguJrguJfguITguKfguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQnfSA9ICfguITguYnguJnguKvguLLguJrguJfguITguKfguLLguKHguJTguYnguKfguKLguITguLXguKLguYzguYDguKfguLTguKPguYzguJQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljJ30gPSAn4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFjayB0byBGQVEgRXhwbG9yZXInfSA9ICfguIHguKXguLHguJrguYTguJvguJfguLXguYggRkFRIEV4cGxvcmVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn4LiV4LmJ4Lit4LiH4Lij4Liw4Lia4Li44LiK4Li34LmI4Lit4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAn4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmI4LiZ4Li14LmJ4Lih4Li14Lit4Lii4Li54LmI4LmB4Lil4LmJ4LinISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAn4Lit4Lix4Lib4LmA4LiU4LiV4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIIEZBUSDguYHguKXguYnguKchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBjYXRlZ29yeSBhZGRlZCEnfSA9ICfguYDguJ7guLTguYjguKHguKvguKHguKfguJTguKvguKHguLnguYggRkFRIOC5geC4peC5ieC4pyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENhdGVnb3J5J30gPSAn4Lil4Lia4Lir4Lih4Lin4LiU4Lir4Lih4Li54LmIJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBDYXRlZ29yeUlEICVzIGlzIGludmFsaWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSm91cm5hbC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwnfSA9ICfguKfguLLguKPguKrguLLguKMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ+C4leC5ieC4reC4h+C4o+C4sOC4muC4uOC4iuC4t+C5iOC4rSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfguKDguLLguKnguLLguJnguLXguYnguKHguLXguK3guKLguLnguYjguYHguKXguYnguKchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGxhbmd1YWdlICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgdXBkYXRlZCEnfSA9ICfguK3guLHguJvguYDguJTguJXguKDguLLguKnguLIgRkFRIOC5geC4peC5ieC4pyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ+C5gOC4nuC4tOC5iOC4oeC4oOC4suC4qeC4siBGQVEg4LmB4Lil4LmJ4LinISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICfguKXguJrguKDguLLguKnguLIgJSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0J30gPSAn4Lic4Lil4Lil4Lix4Lie4LiY4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgdXBkYXRlJ30gPSAn4Lit4Lix4Lib4LmA4LiU4LiV4Lil4LmI4Liy4Liq4Li44LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEeW5hbWljIEZpZWxkcyd9ID0gJ+C5hOC4lOC4oeC4suC4meC4tOC4hOC4n+C4tOC4peC4lOC5jOC4guC4reC4hyBGQVEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn4LmE4Lih4LmI4Lih4Li14Lic4Lil4Lil4Lix4Lie4LiY4LmMISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn4Lir4Lih4Liy4Lii4LmA4Lil4LiCIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENoYW5nZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbiBlcXVhbHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBGaWxlSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rcyBmb3IgeW91ciB2b3RlISd9ID0gJ+C4guC4reC4muC4hOC4uOC4k+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5guC4q+C4p+C4leC4guC4reC4h+C4hOC4uOC4kyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSB2b3RlZCEnfSA9ICfguITguLjguJPguYTguJTguYnguJfguLPguIHguLLguKPguYLguKvguKfguJXguYHguKXguYnguKchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2VsZWN0ZWQhJ30gPSAn4LmE4Lih4LmI4Lih4Li14LmA4Lij4LiX4LiX4Li14LmI4LiW4Li54LiB4LmA4Lil4Li34Lit4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfguJ7guLTguKHguJ7guYzguJrguJfguITguKfguLLguKEgRkFRICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEl0ZW1JRCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY0ZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKSd9ID0gJ+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC5gOC4nuC4tOC5iOC4h+C4quC4o+C5ieC4suC4h+C5g+C4q+C4oeC5iCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ+C4muC4l+C4hOC4p+C4suC4oSBGQVEgKOC5gOC4nuC4tOC5iOC4h+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSAoMTAg4Lit4Lix4LiZ4LiU4Lix4Lia4Lii4Lit4LiU4LiZ4Li04Lii4LihKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICfguJrguJfguITguKfguLLguKHguJnguLXguYnguKfguYjguLLguIfguYDguJvguKXguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguKrguKPguYnguLLguIfguKXguYjguLLguKrguLjguJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguK3guLHguJvguYDguJTguJXguKXguYjguLLguKrguLjguJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJzEwIOC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Lii4Lit4LiU4LiZ4Li04Lii4LihJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn4Lig4Liy4Lii4LmD4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn4Lig4Liy4Lii4LiZ4Lit4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ+C4quC4suC4mOC4suC4o+C4k+C4sCc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ+C5guC4reC5gOC4hCc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZmlsdGVyIGZvciBIVE1MIG91dHB1dCB0byBhZGQgbGlua3MgYmVoaW5kIGEgZGVmaW5lZCBzdHJpbmcuIFRoZSBlbGVtZW50IEltYWdlIGFsbG93cyB0d28gaW5wdXQga2luZHMuIEZpcnN0IHRoZSBuYW1lIG9mIGFuIGltYWdlIChlLmcuIGZhcS5wbmcpLiBJbiB0aGlzIGNhc2UgdGhlIE9UUlMgaW1hZ2UgcGF0aCB3aWxsIGJlIHVzZWQuIFRoZSBzZWNvbmQgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IHRoZSBsaW5rIHRvIHRoZSBpbWFnZS4nfSA9CiAgICAgICAgJ+C4leC4seC4p+C4geC4o+C4reC4h+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5geC4quC4lOC4h+C4nOC4pSBIVE1M4LmA4Lie4Li34LmI4Lit4LmA4Lie4Li04LmI4Lih4LiB4Liy4Lij4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4LiX4Li14LmI4Lit4Lii4Li54LmI4LmA4Lia4Li34LmJ4Lit4LiH4Lir4Lil4Lix4LiH4LiC4Lit4LiH4Lit4Lix4LiB4LiC4Lij4Liw4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJIOC4reC4h+C4hOC5jOC4m+C4o+C4sOC4geC4reC4muC4guC4reC4h+C4oOC4suC4nuC4l+C4teC5iOC4iOC4sOC4iuC5iOC4p+C4ouC5g+C4q+C5ieC4quC4suC4oeC4suC4o+C4luC4m+C5ieC4reC4meC4guC5ieC4reC4oeC4ueC4peC4quC4reC4h+C4iuC4meC4tOC4lOC5hOC4lOC5iSDguKvguJnguLbguYjguIfguITguLfguK3guIrguLfguYjguK3guILguK3guIfguKDguLLguJ4gKOC5gOC4iuC5iOC4mSBmYXEucG5nKeC5g+C4meC4geC4o+C4k+C4teC4meC4teC5ieC5gOC4quC5ieC4meC4l+C4suC4h+C4guC4reC4h+C4oOC4suC4nk9UUlMg4LiI4Liw4LiW4Li54LiB4LiZ4Liz4Lih4Liy4LmD4LiK4LmJIOC4quC4reC4h+C4hOC4t+C4reC4geC4suC4o+C5geC4l+C4o+C4geC4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC5guC4ouC4h+C5hOC4m+C4ouC4seC4h+C4oOC4suC4nic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIGFydGljbGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1NTIGNvbG9yIGZvciB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfguKrguLUgQ1NTIOC4quC4s+C4q+C4o+C4seC4muC4nOC4peC4geC4suC4o+C5guC4q+C4p+C4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAn4LmA4Lin4Lil4Liy4LmB4LiE4LiK4LiX4Li14LmI4LiI4Liw4Lib4Lil4LmI4Lit4Lii4LmD4Lir4LmJ4Liq4Liz4Lir4Lij4Lix4Lia4Lij4Liy4Lii4LiB4Liy4LijRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICfguIHguLLguKPguIjguLHguJTguIHguLLguKPguKvguKHguKfguJTguKvguKHguLnguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn4LiV4Liz4LmB4Lir4LiZ4LmI4LiH4LiX4Lio4LiZ4Li04Lii4Lih4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiZ4Lix4Lia4LiE4Liw4LmB4LiZ4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICfguIrguLfguYjguK3guKvguKHguKfguJTguKvguKHguLnguYjguYDguKPguLTguYjguKHguJXguYnguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJ+C4oOC4suC4qeC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4miBGQVEg4LmD4LiZ4LmC4Lir4Lih4LiU4Lig4Liy4Lip4Liy4LmA4LiU4Li14Lii4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ+C4guC4meC4suC4lOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4l+C4teC5iOC4quC4ueC4h+C4quC4uOC4lOC4guC4reC4h+C4q+C4seC4p+C4guC5ieC4reC5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ+C4peC4s+C4lOC4seC4muC4hOC4p+C4suC4oeC4quC4s+C4hOC4seC4jeC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4reC4meC4uOC4oeC4seC4leC4tOC4guC4reC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguIHguKPguK3guIHguILguYnguK3guKHguLnguKUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiV4Lix4LmL4Lin4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04Lia4LiX4LiE4Lin4Liy4LihIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn4Lib4Lij4Liw4LmA4Lig4LiX4LiV4Lix4LmL4Lin4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04Lia4LiX4LiE4Lin4Liy4LihIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJ+C4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4geC4suC4o+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C5g+C4meC4q+C4meC5ieC4suC4quC4suC4mOC4suC4o+C4k+C4sCDguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguIHguLLguKPguJTguLPguYDguJnguLTguJnguIHguLLguKPguJbguLnguIHguJnguLPguKHguLLguYPguIrguYnguYPguJnguKrguITguKPguLTguJvguJXguYzguILguK3guIfguKPguLDguJrguJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC4luC5ieC4suC4q+C4suC4geC4q+C4seC4p+C4guC5ieC4rUZBUSDguITguKfguKPguYTguJTguYnguKPguLHguJrguIHguLLguKPguJXguLHguJTguYHguJrguYjguIfguILguYnguK3guITguKfguLLguKHguYTguJvguKLguLHguIfguJrguJfguITguKfguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIHdoaWNoIGNvbHVtbnMgYXJlIHNob3duIGluIHRoZSBsaW5rZWQgRkFRcyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90ZTogT25seSBGQVEgYXR0cmlidXRlcyBhbmQgZHluYW1pYyBmaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQgZm9yIERlZmF1bHRDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgam91cm5hbC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC5guC4oeC4lOC4ueC4peC4oOC4suC4nuC4o+C4p+C4oeC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C4oeC4uOC4oeC4oeC4reC4h+C5gOC4peC5h+C4gSDguYYg4LiC4Lit4LiH4Lin4Liy4Lij4Liq4Liy4LijIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LmC4Lih4LiU4Li54Lil4Lig4Liy4Lie4Lij4Lin4Lih4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4Lih4Li44Lih4Lih4Lit4LiH4LmA4Lil4LmH4LiBIOC5hiDguILguK3guIfguKPguLLguKLguIHguLLguKMgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIEZBUSDguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJpGQVEg4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiHRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIEZBUSDguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJpGQVEg4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiHIEZBUSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgRkFRIOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4miBGQVEg4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiHRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jCBGQVEg4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4Lil4Liz4LiU4Lix4LiaRkFRIOC5g+C4mSBGQVEgRXhwbG9yZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIEZBUSDguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJogIEZBUSDguYPguJlGQVEgRXhwbG9yZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jCBGQVEg4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4Lil4Liz4LiU4Lix4LiaICBGQVEg4LmD4LiZRkFRIEV4cGxvcmVyIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lCBGQVEgb3JkZXIg4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZIOC5g+C4meC4nOC4peC4geC4suC4o+C4hOC5ieC4meC4q+C4siBGQVEgRXhwbG9yZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMIOC4guC4tuC5ieC4mTog4LmA4LiB4LmI4Liy4LiX4Li14LmI4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZIOC4peC4hzog4Lil4LmI4Liy4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiUIEZBUSBvcmRlciDguYDguKPguLTguYjguKHguJXguYnguJkg4LmD4LiZ4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4LiyIEZBUSBFeHBsb3JlciDguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKXguLnguIHguITguYnguLIg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiUIEZBUSBvcmRlciDguYDguKPguLTguYjguKHguJXguYnguJkg4LmD4LiZ4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4LiyIEZBUSBFeHBsb3JlciDguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiUIEZBUSBvcmRlciDguYDguKPguLTguYjguKHguJXguYnguJkg4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMIOC4guC4tuC5ieC4mTog4LmA4LiB4LmI4Liy4LiX4Li14LmI4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZIOC4peC4hzog4Lil4LmI4Liy4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lCBGQVEgb3JkZXIg4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZIOC4guC4reC4h+C4nOC4peC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC4leC4reC4o+C5jOC5gOC4n+C4i+C4peC4ueC4geC4hOC5ieC4siDguILguLbguYnguJk6IOC5gOC4geC5iOC4suC4l+C4teC5iOC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSDguKXguIc6IOC4peC5iOC4suC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiUIEZBUSBvcmRlciDguYDguKPguLTguYjguKHguJXguYnguJkg4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwIOC4guC4tuC5ieC4mTog4LmA4LiB4LmI4Liy4LiX4Li14LmI4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZIOC4peC4hzog4Lil4LmI4Liy4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gRkFRIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIEZBUSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiX4Li14LmI4LmB4Liq4LiU4LiH4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiHRkFRIOC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4guC4reC4h0ZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguILguYnguK3guKHguLnguKXguJfguLXguYjguIjguLDguYHguJfguKPguIHguYPguJlGQVEg4LiV4Liy4LiX4LiV4Lix4LmL4LinICJGQVEg4LiJ4Lia4Lix4Lia4LmA4LiV4LmH4LihIiDguIjguLDguKPguKfguKHguJbguLbguIfguILguYnguK3guITguKfguLLguKHguYHguKXguLDguKDguLLguJ7guJfguLXguYjguYHguJnguJrguKHguLLguYHguJrguJrguK3guLTguJnguYTguKXguJnguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LmB4LiU4LiK4Lia4Lit4Lij4LmM4LiU4LmA4Lia4Li34LmJ4Lit4LiH4Lir4Lil4Lix4LiHICAi4LiI4Liz4LiB4Lix4LiUIiDguITguLfguK3guIHguLPguKvguJnguJTguIjguLPguJnguKfguJnguILguK3guIfguKPguLLguKLguIHguLLguKPguJfguLXguYjguYHguKrguJTguIfguYLguJTguKLguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJkgIuC4geC4peC4uOC5iOC4oSIg4LiI4Liw4LiW4Li54LiB4LiZ4Liz4Lih4Liy4LmD4LiK4LmJ4LmA4Lie4Li34LmI4Lit4LiI4Liz4LiB4Lix4LiU4LiB4Liy4Lij4LmA4LiC4LmJ4Liy4LiW4Li24LiH4Lib4Lil4Lix4LmK4LiB4Lit4Li04LiZICjguYDguIrguYjguJnguIHguKXguLjguYjguKE6IOC4nOC4ueC5ieC4lOC4ueC5geC4peC4o+C4sOC4muC4mjsg4LiB4Lil4Li44LmI4LihIDE7IOC4geC4peC4uOC5iOC4oTI7KSAi4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZIiDguKPguLDguJrguLjguKfguYjguLLguJbguYnguLLguJvguKXguLHguYrguIHguK3guLTguJnguJbguLnguIHguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYLguJTguKLguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguKvguKPguLfguK3guKvguLLguIHguJzguLnguYnguYPguIrguYnguJXguYnguK3guIfguIHguLLguKPguYDguJ7guLfguYjguK3guYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguYTguJTguYnguJTguYnguKfguKLguJXguJnguYDguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4Lit4Lil4Lix4Lih4LiZ4LmM4LiX4Li14LmI4LmB4Liq4LiU4LiH4Lit4Lii4Li54LmI4LmD4LiZIEZBUSBFeHBsb3JlciAg4LiL4Li24LmI4LiH4LiV4Lix4Lin4LmA4Lil4Li34Lit4LiB4LiZ4Li14LmJ4LiI4Liw4LmE4Lih4LmI4Lih4Li14Lic4Lil4LiV4LmI4Lit4LiV4Liz4LmB4Lir4LiZ4LmI4LiH4LiC4Lit4LiH4LiE4Lit4Lil4Lix4Lih4LiZ4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4Lit4Lil4Lix4Lih4LiZ4LmM4LiX4Li14LmI4LmB4Liq4LiU4LiH4Lit4Lii4Li54LmI4LmD4LiZ4LiZ4Li04LiV4Lii4Liq4Liy4LijIEZBUSDguIvguLbguYjguIfguJXguLHguKfguYDguKXguLfguK3guIHguJnguLXguYnguIjguLDguYTguKHguYjguKHguLXguJzguKXguJXguYjguK3guJXguLPguYHguKvguJnguYjguIfguILguK3guIfguITguK3guKXguLHguKHguJnguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC4reC4peC4seC4oeC4meC5jOC4l+C4teC5iOC5geC4quC4lOC4h+C4reC4ouC4ueC5iOC5g+C4meC4geC4suC4o+C4hOC5ieC4meC4q+C4siBGQVEg4LiL4Li24LmI4LiH4LiV4Lix4Lin4LmA4Lil4Li34Lit4LiB4LiZ4Li14LmJ4LiI4Liw4LmE4Lih4LmI4Lih4Li14Lic4Lil4LiV4LmI4Lit4LiV4Liz4LmB4Lir4LiZ4LmI4LiH4LiC4Lit4LiH4LiE4Lit4Lil4Lix4Lih4LiZ4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAn4LiB4Liz4Lir4LiZ4LiU4Liq4LiW4Liy4LiZ4LiX4Li14LmI4LiX4Li14LmI4Lil4Li04LiH4LiE4LmMIFwn4LmB4LiX4Lij4LiBRkFRIFwnIOC4iOC4sOC4m+C4o+C4suC4geC4jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICfguITguLPguJnguLTguKLguLLguKHguILguK3guIfguIrguYjguK3guIfguILguYnguK3guITguKfguLLguKHguILguK3guIfguKPguLLguKLguIHguLLguKMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ+C4peC4miBGQVEg4LiZ4Li14LmJISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAn4LmB4LiB4LmJ4LmE4LiCIEZBUSDguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ+C5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC4q+C4peC4suC4geC4q+C4peC4suC4ouC4oOC4suC4qeC4siDguYPguJnguYLguKHguJTguLnguKUgRkFRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICfguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguIHguKXguYTguIHguIHguLLguKPguYLguKvguKfguJXguYPguJnguYLguKHguJTguLnguKVGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAn4LiZ4Lix4LiB4Liq4Liz4Lij4Lin4LiIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJlYS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIERlbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn4Lig4Liy4Lie4Lij4Lin4Lih4LiC4Lit4LiH4Lin4Liy4Lij4Liq4Liy4LijRkFRIuC4guC4meC4suC4lOC5gOC4peC5h+C4gSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfguKDguLLguJ7guKPguKfguKHguILguK3guIdGQVEi4LiC4LiZ4Liy4LiU4LmA4Lil4LmH4LiBIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdiYWNrZW5kIHJvdXRlciDguITguYnguJnguKvguLIgRkFRIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICfguJ/guLTguKXguJTguYw0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ+C4n+C4tOC4peC4lOC5jDUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn4LiB4Lil4Li44LmI4Lih4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04Lia4LiX4LiE4Lin4Liy4LihIEZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJ+C4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4hyBGQVEg4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICfguKPguKfguKHguYDguILguJXguILguYnguK3guKHguLnguKXguKDguLLguKLguYPguJnguYDguIHguLXguYjguKLguKfguIHguLHguJpGQVEg4LiV4Liy4Lih4LiV4Lix4LmL4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAn4Lij4Lin4Lih4LiW4Li24LiH4LiK4Li34LmI4Lit4LiC4Lit4LiH4LmB4LiV4LmI4Lil4Liw4LmA4LiC4LiV4LiC4LmJ4Lit4Lih4Li54Lil4Lig4Liy4Lii4LmD4LiZRkFRIOC4leC4suC4oeC4leC4seC5i+C4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4geC4suC4o+C4hOC5ieC4meC4q+C4suC5geC4muC4muC4o+C4p+C4lOC5gOC4o+C5h+C4p+C4hOC4p+C4o+C4iOC4sOC5geC4quC4lOC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn4Lin4Liy4Lij4Liq4Liy4LijJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfguIHguLLguKPguIjguLHguJTguIHguLLguKPguKDguLLguKnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn4Lil4Li04LiH4LiE4LmM4Lit4Lit4Lia4LmA4LiI4LiB4LiV4LmM4Lit4Li34LmI4LiZ4LmE4Lib4Lii4Lix4LiHIEZBUSDguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lij4Liy4Lii4LiK4Li34LmI4Lit4LiC4Lit4LiH4Lib4Lij4Liw4LmA4Lig4LiX4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiV4LmI4Liy4LiH4LmG4LiX4Li14LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LmE4LiU4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4o+C4suC4ouC4iuC4t+C5iOC4reC4guC4reC4h+C4m+C4o+C4sOC5gOC4oOC4l+C4quC4luC4suC4meC4oOC4suC4nuC4leC5iOC4suC4h+C5huC4l+C4teC5iOC4quC4suC4oeC4suC4o+C4luC5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C4peC4ueC4geC4hOC5ieC4suC5hOC4lOC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lij4Liy4Lii4LiK4Li34LmI4Lit4LiC4Lit4LiH4Lib4Lij4Liw4LmA4Lig4LiX4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiV4LmI4Liy4LiH4LmG4LiX4Li14LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4Liw4LmE4LiU4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguKrguLnguIfguKrguLjguJTguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4quC4ueC4h+C4quC4uOC4lOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4mSBGQVEgRXhwbG9yZXIg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguJrguJfguITguKfguLLguKEgRkFRIOC4quC4ueC4h+C4quC4uOC4lOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4mSBGQVEgIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguKrguLnguIfguKrguLjguJTguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJnguKfguLLguKPguKrguLLguKMgRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4Liq4Li54LiH4Liq4Li44LiU4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZ4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguKrguLnguIfguKrguLjguJTguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJnguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguKrguLnguIfguKrguLjguJTguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJnguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLXguYjguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguKvguLHguKfguILguYnguK3guKrguLnguIfguKrguLjguJTguYPguJnguJrguJfguITguKfguLLguKEgRkFRICDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJkgRkFRIEV4cGxvcmVyIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4q+C4seC4p+C4guC5ieC4reC4quC4ueC4h+C4quC4uOC4lOC5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEgIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4mSBGQVEgRXhwbG9yZXIg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4q+C4seC4p+C4guC5ieC4reC4quC4ueC4h+C4quC4uOC4lOC5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEgIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4mSBGQVEgRXhwbG9yZXIg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4q+C4seC4p+C4guC5ieC4reC4quC4ueC4h+C4quC4uOC4lOC5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEgIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4guC4reC4hyBGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4q+C4seC4p+C4guC5ieC4reC4quC4ueC4h+C4quC4uOC4lOC5g+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEgIOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4guC4reC4hyBGQVEg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguJnguKfguJnguKvguLHguKfguILguYnguK3guKrguLnguIfguKrguLjguJTguYPguJnguJrguJfguITguKfguLLguKEgRkFRICDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguILguK3guIcgRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lir4Lix4Lin4LiC4LmJ4Lit4Liq4Li54LiH4Liq4Li44LiU4LmD4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJnguKfguLLguKPguKrguLLguKMgRkFRIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYLguKHguJTguLnguKXguYPguJnguIHguLLguKPguKrguKPguYnguLLguIfguYLguJvguKPguYTguJ/guKXguYwgT3BlblNlYXJjaCBodG1sIOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4hOC5ieC4meC4q+C4siBGQVEg4LmB4Lia4Lia4LiB4Lij4Liw4LiK4Lix4LiaIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBBcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIGFydGljbGVzIG5lZWQgYXBwcm92YWwgYmVmb3JlIHRoZXkgZ2V0IHB1Ymxpc2hlZC4nfSA9ICfguJrguJfguITguKfguLLguKFGQVEg4LmD4Lir4Lih4LmI4LiV4LmJ4Lit4LiH4LiX4Li14LmI4LmE4LiU4LmJ4Lij4Lix4Lia4LiB4Liy4Lij4Lit4LiZ4Li44Lih4Lix4LiV4Li04LiB4LmI4Lit4LiZ4LmE4LiU4LmJ4Lij4Lix4Lia4LiB4Liy4Lij4LiV4Li14Lie4Li04Lih4Lie4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZIEZBUSBFeHBsb3JlciDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZIEZBUSBFeHBsb3JlciDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguJrguJnguYHguJXguYjguKXguLDguKvguJnguYnguLLguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C4meC4p+C4meC4muC4l+C4hOC4p+C4suC4oSBGQVEg4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4Lia4LiZ4LmB4LiV4LmI4Lil4Liw4Lir4LiZ4LmJ4Liy4LiC4Lit4LiH4Lic4Lil4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAn4LiI4Liz4LiZ4Lin4LiZIGl0ZW1zIOC4l+C4teC5iOC5geC4quC4lOC4h+C5g+C4meC4iuC5iOC4p+C4h+C4l+C4teC5iOC5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4hOC4o+C4seC5ieC4h+C4peC5iOC4suC4quC4uOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ+C4iOC4s+C4meC4p+C4mSBpdGVtcyDguJfguLXguYjguYHguKrguJTguIfguYPguJnguIrguYjguKfguIfguJfguLXguYjguKrguKPguYnguLLguIfguILguLbguYnguJnguITguKPguLHguYnguIfguKXguYjguLLguKrguLjguJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIHNob3duIGl0ZW1zIGluIHRoZSB0b3AgMTAgZmVhdHVyZS4nfSA9ICfguIjguLPguJnguKfguJnguKPguLLguKLguIHguLLguKPguJfguLXguYjguYHguKrguJTguIfguJ/guLXguYDguIjguK3guKPguYzguYPguJkgMTAg4Lit4Lix4LiZ4LiU4Lix4Lia4LmB4Lij4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC5g+C4meC4o+C4suC4ouC4geC4suC4oyAo4LiL4Li24LmI4LiH4LiI4Liw4LmB4Liq4LiU4LiH4Lij4Liy4Lii4LiB4Liy4LijIEZBUSApIOC4guC4reC4h+C4p+C4suC4o+C4quC4suC4oyBGQVEg4LiC4LiZ4Liy4LiU4LmA4Lil4LmH4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgb3ZlcnZpZXcuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguYPguJnguKPguLLguKLguIHguLLguKMgICjguIvguLbguYjguIfguIjguLDguYHguKrguJTguIfguKPguLLguKLguIHguLLguKMgRkFRKSDguILguK3guIcg4Lig4Liy4Lie4Lij4Lin4LihIEZBUeC4guC4meC4suC4lOC5gOC4peC5h+C4gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludCB0aGlzIEZBUSd9ID0gJ+C4nuC4tOC4oeC4nuC5jCBGQVEg4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+C4hOC4tOC4p+C5g+C4meC4geC4suC4o+C4reC4meC4uOC4oeC4seC4leC4tOC4muC4l+C4hOC4p+C4suC4oUZBUS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZXMgZm9yIHZvdGluZy4gS2V5IG11c3QgYmUgaW4gcGVyY2VudC4nfSA9ICfguYDguKPguJXguKrguLPguKvguKPguLHguJrguIHguLLguKPguYLguKvguKfguJXguJXguYnguK3guIfguIHguLPguKvguJnguJTguYDguJvguYfguJnguKPguYnguK3guKLguKXguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAn4LiE4LmJ4LiZ4Lir4LiyIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRIFNtYWxsLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gT3ZlcnZpZXcgIlNtYWxsIiBieSBkZWZhdWx0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEFnZW50RkFRWm9vbS4nfSA9CiAgICAgICAgJ+C5gOC4i+C4leC4hOC5iOC4suC4hOC4p+C4suC4oeC4quC4ueC4h+C5gOC4o+C4tOC5iOC4oeC4leC5ieC4mSjguJ7guLTguIHguYDguIvguKUpIOC4guC4reC4h+C4n+C4tOC4peC4lOC5jEhUTUwg4LmB4Lia4Lia4Lit4Li04LiZ4LmE4Lil4LiZ4LmM4LmD4LiZIEFnZW50RkFRWm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICfguYDguIvguJXguITguYjguLLguITguKfguLLguKHguKrguLnguIfguYDguKPguLTguYjguKHguJXguYnguJko4Lie4Li04LiB4LmA4LiL4LilKSDguILguK3guIfguJ/guLTguKXguJTguYxIVE1MIOC5geC4muC4muC4reC4tOC4meC5hOC4peC4meC5jOC5g+C4mUN1c3RvbWVyRkFRWm9vbSAgKOC5geC4peC4sCBQdWJsaWNGQVFab29tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICfguYDguIvguJXguITguYjguLLguITguKfguLLguKHguKrguLnguIfguKrguLnguIfguKrguLjguJQo4Lie4Li04LiB4LmA4LiL4LilKSDguILguK3guIfguJ/guLTguKXguJTguYxIVE1MIOC5geC4muC4muC4reC4tOC4meC5hOC4peC4meC5jOC5g+C4mSBBZ2VudEZBUVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAn4LmA4LiL4LiV4LiE4LmI4Liy4LiE4Lin4Liy4Lih4Liq4Li54LiH4Liq4Li54LiH4Liq4Li44LiUKOC4nuC4tOC4geC5gOC4i+C4pSkg4LiC4Lit4LiH4Lif4Li04Lil4LiU4LmMSFRNTCDguYHguJrguJrguK3guLTguJnguYTguKXguJnguYzguYPguJlDdXN0b21lckZBUVpvb20gKOC5geC4peC4sCBQdWJsaWNGQVFab29tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4m+C4uOC5iOC4oSAi4LmB4LiX4Lij4LiB4Lil4Li04LiH4LiE4LmMIEZBUSAiIOC5g+C4mSBBZ2VudEZBUVpvb21TbWFsbCDguKrguLPguKvguKPguLHguJrguJrguJfguITguKfguLLguKFGQVEg4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4m+C4uOC5iOC4oSAi4LmB4LiX4Lij4LiB4LiC4LmJ4Lit4LiE4Lin4Liy4LihIEZBUeC5geC4peC4sOC4peC4tOC4h+C4hOC5jCAiIOC5g+C4mSBBZ2VudEZBUVpvb21TbWFsbCDguKrguLPguKvguKPguLHguJrguJrguJfguITguKfguLLguKEgRkFRIOC4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lib4Li44LmI4LihICLguYHguJfguKPguIHguILguYnguK3guITguKfguLLguKEgRkFRICIg4LmD4LiZIEFnZW50RkFRWm9vbVNtYWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ+C5geC4quC4lOC4h+C4muC4l+C4hOC4p+C4suC4oUZBUSDguJTguYnguKfguKIgSFRNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAn4LmB4Liq4LiU4LiHIOC5g+C4iuC5iC8g4LmE4Lih4LmI4LmD4LiK4LmIIOC4nuC4suC4mEZBUSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ+C5geC4quC4lOC4h+C4o+C4suC4ouC4geC4suC4o+C4guC4reC4h+C4q+C4oeC4p+C4lOC4q+C4oeC4ueC5iOC4ouC5iOC4reC4oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfguYHguKrguJTguIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguJfguLXguYjguJzguYjguLLguJnguKHguLLguKXguYjguLLguKrguLjguJTguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLXguYjguIHguLPguKvguJnguJTguYTguKfguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+C5geC4quC4lOC4h+C4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4quC4o+C5ieC4suC4h+C4peC5iOC4suC4quC4uOC4lOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5iS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0aGUgc3RhcnMgZm9yIHRoZSBhcnRpY2xlcyB3aXRoIGEgcmF0aW5nIGVxdWFsIG9yIGdyZWF0ZXIgbGlrZSB0aGUgZGVmaW5lZCB2YWx1ZSAoc2V0IHZhbHVlIFwnMFwnIHRvIGRlYWN0aXZhdGUgdGhlIG91dHB1dCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB0b3AgMTAgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+C5geC4quC4lOC4hzEwIOC4o+C4suC4ouC4geC4suC4o+C4ouC4reC4lOC4meC4tOC4ouC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn4LmB4Liq4LiU4LiH4LiB4Liy4Lij4LmC4Lir4Lin4LiV4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4Lil4Li04LiH4LiE4LmMIEZBUSDguIHguLHguJrguK3guK3guJrguYDguIjguIHguITguYzguK3guLfguYjguJnguYPguJnguIHguLLguKPguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guK3guJnguLjguI3guLLguJXguIHguLLguKPguKXguJogRkFR4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4LmA4LiC4LmJ4Liy4LiU4Li54Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiHIEZBUSDguYPguJnguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC5geC4geC5ieC5hOC4giBGQVEg4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guKLguYnguK3guJnguIHguKXguLHguJogRkFRIOC5g+C4meC4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4nuC4tOC4oeC4nuC5jCBGQVEg4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAn4Lin4Li04LiY4Li14LmB4LiB4LmJ4Lib4Lix4LiN4Lir4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N5bXB0b20nfSA9ICfguYDguITguKPguLfguYjguK3guIfguYHguKrguJTguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICfguJXguLHguKfguJrguYjguIfguIrguLXguYnguKrguLPguKvguKPguLHguJogRkFRLCDguYDguIrguYjguJkgRkFRIywgIEtCIywgTXlGQVEgIy4g4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiE4Li34LitIEZBUSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiZ4Li14LmJ4LiB4Liz4Lir4LiZ4LiU4Lin4LmI4Liy4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMICBcJ0ZBUVwnIOC4quC4suC4oeC4suC4o+C4luC4peC4tOC4h+C4hOC5jOC4geC4seC4muC4reC4reC4muC5gOC4iOC4geC4hOC5jCAgXCdGQVFcJyDguK3guLfguYjguJkg4LmC4LiU4Lii4LiB4Liy4Lij4LmD4LiK4LmJ4Lil4Li04LiH4LiE4LmMICBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiZ4Li14LmJ4LiB4Liz4Lir4LiZ4LiU4Lin4LmI4Liy4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMIFwnRkFRXCcg4Liq4Liy4Lih4Liy4Lij4LiW4Lil4Li04LiH4LiE4LmM4LiB4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMIFwnRkFRXCcg4Lit4Li34LmI4LiZIOC5guC4lOC4ouC4geC4suC4o+C5g+C4iuC5ieC4peC4tOC4h+C4hOC5jCBcJ1BhcmVudENoaWxkXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiZ4Li14LmJ4LiB4Liz4Lir4LiZ4LiU4Lin4LmI4Liy4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMICBcJ0ZBUVwnIOC4quC4suC4oeC4suC4o+C4luC4peC4tOC4h+C4hOC5jOC4geC4seC4muC4reC4reC4muC5gOC4iOC4geC4hOC5jCAgXCfguJXguLHguYvguKdcJyDguK3guLfguYjguJkg4LmC4LiU4Lii4LiB4Liy4Lij4LmD4LiK4LmJ4Lil4Li04LiH4LiE4LmMICBcJ05vcm1hbFwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiZ4Li14LmJ4LiB4Liz4Lir4LiZ4LiU4Lin4LmI4Liy4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMIFwnRkFRXCcg4Liq4Liy4Lih4Liy4Lij4LiW4Lil4Li04LiH4LiE4LmM4LiB4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmMIFwnRkFRXCcg4Lit4Li34LmI4LiZIOC5guC4lOC4ouC4geC4suC4o+C5g+C4iuC5ieC4peC4tOC4h+C4hOC5jCBcJ1BhcmVudENoaWxkXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJ+C5gOC4meC4t+C5ieC4reC5gOC4o+C4t+C5iOC4reC4h+C4guC4reC4h+C4leC4seC5i+C4p+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4reC4meC4uOC4oeC4seC4leC4tOC4guC4reC4h+C4muC4l+C4hOC4p+C4suC4oSBGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICfguKvguLHguKfguILguYnguK3guILguK3guIfguJXguLHguYvguKfguKrguLPguKvguKPguLHguJrguIHguLLguKPguK3guJnguLjguKHguLHguJXguLTguILguK3guIfguJrguJfguITguKfguLLguKFGQVEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ+C4oOC4suC4ouC4meC4reC4gSAo4Lil4Li54LiB4LiE4LmJ4LiyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn4Lig4Liy4Lii4LmD4LiZICjguYDguK3guYDguKLguYjguJnguJXguYwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ+C4quC4suC4mOC4suC4o+C4k+C4sCAo4LiX4Lix4LmJ4LiH4Lir4Lih4LiUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfQlNC+0LTQsNGC0Lgg0LDRgNGC0LjQutGD0Lsg0LTQvtCy0ZbQtNC90LjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleXdvcmRzJ30gPSAn0JrQu9GO0YfQvtCy0ZYg0YHQu9C+0LLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGNhdGVnb3J5IGlzIHJlcXVpcmVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0ZbRjyDQvtCx0L7Qslwn0Y/Qt9C60L7QstCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn0J/QvtCz0L7QtNC20LXQvdC90Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQ2F0ZWdvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAn0JzQtdC90LXQtNC20LXRgCDQutCw0YLQtdCz0L7RgNGW0ZcgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgQ2F0ZWdvcnknfSA9ICfQlNC+0LTQsNGC0Lgg0LrQsNGC0LXQs9C+0YDRltGOIEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEZBUSBDYXRlZ29yeSd9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INC60LDRgtC10LPQvtGA0ZbRjiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGNhdGVnb3J5J30gPSAn0JTQvtC00LDRgtC4INC60LDRgtC10LPQvtGA0ZbRjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICfQlNC+0LTQsNGC0Lgg0LrQsNGC0LXQs9C+0YDRltGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQ2F0ZWdvcnknfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQutCw0YLQtdCz0L7RgNGW0Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcnkgb2YnfSA9ICfQn9GW0LTQutCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgcGVybWlzc2lvbiBncm91cC4nfSA9ICfQkdGD0LTRjCDQu9Cw0YHQutCwINCy0LjQsdC10YDRltGC0Ywg0YXQvtGHINC+0LTQvdGDINCz0YDRg9C/0YMg0LTQvtGB0YLRg9C/0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ9CT0YDRg9C/0Lgg0LDQvdCz0LXQvdGC0ZbQsiwg0YnQviDQvNCw0Y7RgtGMINC00L7RgdGC0YPQvyDQtNC+INGB0YLQsNGC0YLQtdC5INCyINGG0ZbQuSDQutCw0YLQtdCz0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLid9ID0gJ9CR0YPQtNC1INC/0L7QutCw0LfQsNC90L4sINGP0Log0LrQvtC80LXQvdGC0LDRgCDRgyDQn9GA0L7QstGW0LTQvdC40LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn0JLQuCDQtNGW0LnRgdC90L4g0YXQvtGH0LXRgtC1INCy0LjQtNCw0LvQuNGC0Lgg0YbRjiDQutCw0YLQtdCz0L7RgNGW0Y4/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGNhdGVnb3J5LiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSBhbmQvb3IgaXMgcGFyZW50IG9mIGF0IGxlYXN0IG9uZSBvdGhlciBjYXRlZ29yeSd9ID0KICAgICAgICAn0JLQuCDQvdC1INC80L7QttC10YLQtSDQstC40LTQsNC70LjRgtC4INGG0Y4g0LrQsNGC0LXQs9C+0YDRltGOLiDQktC+0L3QsCDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQsNCx0L4g0ZQg0LHQsNGC0YzQutGW0LLRgdGM0LrQvtGOINC00LvRjyDRltC90YjQvtGXINC60LDRgtC10LPQvtGA0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ9Cm0Y8g0LrQsNGC0LXQs9C+0YDRltGPINCy0LjQutC+0YDQuNGB0YLQvtCy0YPRlNGC0YzRgdGPINCyINC90LDRgdGC0YPQv9C90LjRhSDRgdGC0LDRgtGC0Y/RhSBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAn0KbRjyDQutCw0YLQtdCz0L7RgNGW0Y8g0ZQg0LHQsNGC0YzQutGW0LLRgdGM0LrQvtGOINC00LvRjyDQvdCw0YHRgtGD0L/QvdC40YUg0L/RltC00LrQsNGC0LXQs9C+0YDRltC5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ9CS0Lgg0LTRltC50YHQvdC+INGF0L7Rh9C10YLQtSDQstC40LTQsNC70LjRgtC4INGG0Y4g0YHRgtCw0YLRgtGOPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICfQkdCw0LfQsCDQt9C90LDQvdGMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRXhwbG9yZXInfSA9ICfQntCz0LvRj9C0INCR0LDQt9C4INC30L3QsNC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVpY2sgU2VhcmNoJ30gPSAn0KjQstC40LTQutC40Lkg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxkY2FyZHMgYXJlIGFsbG93ZWQuJ30gPSAn0J/RltC00YHRgtCw0L3QvtCy0LrQsCDQtNC+0LfQstC+0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWR2YW5jZWQgU2VhcmNoJ30gPSAn0KDQvtC30YjQuNGA0LXQvdC40Lkg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yaWVzJ30gPSAn0J/RltC00LrQsNGC0LXQs9C+0YDRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyd9ID0gJ9Ch0YLQsNGC0YLRliDQkdCw0LfQuCDQt9C90LDQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN1YmNhdGVnb3JpZXMgZm91bmQuJ30gPSAn0J/RltC00LrQsNGC0LXQs9C+0YDRltGXINC90LUg0LfQvdCw0LnQtNC10L3Rlic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFIaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mJ30gPSAn0IbRgdGC0L7RgNGW0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn0IbRgdGC0L7RgNGW0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Cn0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDQvNCw0ZQg0LbRg9GA0L3QsNC70YMgRkFRJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ9Ca0LXRgNGD0LLQsNC90L3RjyDQvNC+0LLQsNC80LggRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICfQlNC+0LTQsNGC0Lgg0LzQvtCy0YMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LzQvtCy0YMgRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ9CS0LjQutC+0YDQuNGB0YLQvtCy0YPQudGC0LUg0YbRjiDQvtC/0YbRltGOINGP0LrRidC+INCy0Lgg0YXQvtGH0LXRgtC1INC/0YDQsNGG0Y7QstCw0YLQuCDQtyDQtNC10LrRltC70YzQutC+0LzQsCDQvNC+0LLQsNC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIGxhbmd1YWdlJ30gPSAn0JTQvtC00LDRgtC4INC80L7QstGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBMYW5ndWFnZSd9ID0gJ9CU0L7QtNCw0YLQuCDQvNC+0LLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IExhbmd1YWdlJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LzQvtCy0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ9CS0Lgg0LTRltC50YHQvdC+INGF0L7Rh9C10YLQtSDQstC40LTQsNC70LjRgtC4INGG0Y4g0LzQvtCy0YM/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ9Cm0Y8g0LzQvtCy0LAg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8g0LIg0L3QsNGB0YLRg9C/0L3QuNGFINGB0YLQsNGC0YLRj9GFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAn0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC60L7QvdGC0LXQutGB0YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0YHRgtCw0YLRgtC10Lkg0L3QsCDRgdGC0L7RgNGW0L3QutGDJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ9Cd0LUg0LfQvdCw0LnQtNC10L3QviDQtNCw0L3QuNGFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICfQtyA1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ9Ca0LvRjtGH0L7QstC10YHQu9C+0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn0J7RhtGW0L3QutCwICjQtNGW0LDQv9Cw0LfQvtC9INC30L3QsNGH0LXQvdC90Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSd9ID0gJ9Cg0LXQudGC0LjQvdCzICUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICfQn9C+0LPQvtC00LbQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0JIg0L7RgdGC0LDQvdC90ZQg0LfQvNGW0L3QtdC90L46JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn0KfQsNGBINGB0YLQstC+0YDQtdC90L3RjyDRgdGC0LDRgtGC0ZYgKNC00L4v0L/RltGB0LvRjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pJ30gPSAn0KfQsNGBINGB0YLQstC+0YDQtdC90L3RjyDRgdGC0LDRgtGC0ZYgKNC80ZbQtiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfQp9Cw0YEg0LfQvNGW0L3QuCDRgdGC0LDRgtGC0ZYgKNC00L4v0L/RltGB0LvRjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn0KfQsNGBINC30LzRltC90Lgg0YHRgtCw0YLRgtGWICjQvNGW0LYpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVFGdWxsdGV4dCd9ID0gJ9Cf0L7QstC90L7RgtC10LrRgtC+0LLQuNC5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAn0J/QvtGI0YPQuiBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfQktC40LHRltGAINC/0YDQvtGE0ZbQu9GOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfQntGG0ZbQvdC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ9Cd0LXQvNCw0ZQg0L7RhtGW0L3QvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAn0J7QutGA0LXQvNGWINC+0YbRltC90LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICfQn9GA0LjQutC70LDQtDog0YDRltCy0L3QtSAxMCDRh9C4INCx0ZbQu9GM0YjQtSDQvdGW0LYgNjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ9Cg0LXQudGC0LjQvdCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJhdGUgc2V0dGluZ3MnfSA9ICfQndC10LzQsNGUINGA0LXQudGC0LjQvdCz0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlY2lmaWMgcmF0ZSd9ID0gJ9Ce0LrRgNC10LzQuNC5INGA0LXQudGC0LjQvdCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAn0J/RgNC40LrQu9Cw0LQ6INCg0ZbQstC90LUgMjUlINCw0LHQviDQsdGO0ZbQu9GM0YjQtSDQvdGW0LYgNzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAn0KfQsNGBINGB0YLQstC+0LXRgNC90L3RjyDRgdGC0LDRgtGC0ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICfQp9Cw0YEg0LfQvNGW0L3QuCDRgdGC0LDRgtGC0ZYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAn0IbQvdGE0L7RgNC80LDRhtGW0Y8g0JHQsNC30Lgg0LfQvdCw0L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfQoNC10LnRgtC40L3Qsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ9Ce0YbRltC90LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfQndC10LzQsNGUINC+0YbRltC90L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAn0J3QtSDQt9C90LDQudC00LXQvdC+INC+0YbRltC90L7QuiEg0JHRg9C00YzRgtC1INC/0LXRgNGI0LjQvCDRhdGC0L4g0L7RhtGW0L3QuNGC0Ywg0LTQsNC90YYg0YHRgtCw0YLRgtGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rvd25sb2FkIEF0dGFjaG1lbnQnfSA9ICfQl9Cw0LLQsNC90YLQsNC20LjRgtC4INCy0LrQu9Cw0LTQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4nfSA9CiAgICAgICAgJ9CU0LvRjyDQstGW0LrRgNC40YLRgtGPINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvdCw0YHRgtGD0L/QvdC40YUg0L7Qv9C40YHQvtCy0LjRhSDQsdC70L7QutCw0YUsINCS0LDQvCDQvNC+0LbQu9C40LLQviDQtNC+0LLQtdC00LXRgtGM0YHRjyDQvdCw0YLQuNGB0L3Rg9GC0LggQ3RybCDQsNCx0L4gQ21kINCw0LHQviBTaGlmdCDQv9GW0LQg0YfQsNGBINCy0LjQsdC+0YDRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEnfSA9CiAgICAgICAgJ9Cd0LDRgdC60ZbQu9GM0LrQuCDQutC+0YDQuNGB0L3QvtGOINCx0YPQu9CwINGG0Y8g0YHRgtCw0YLRgtGPPyDQkdGD0LTRjCDQu9Cw0YHQutCwINC30LDQu9C40YjRgtC1INC+0YbRltC60YMg0ZYg0LTQvtC/0L7QvNC+0LbRltGC0Ywg0L3QsNC8INC/0L7QutGA0LDRidGD0LLQsNGC0Lgg0JHQsNC30YMg0JfQvdCw0L3RjC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfQvdC1INC00L7Qv9C+0LzQvtCz0LvQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd2ZXJ5IGhlbHBmdWwnfSA9ICfQtNGD0LbQtSDQtNC+0L/QvtC80L7Qs9C70L4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbVNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCd9ID0gJ9CU0L7QtNCw0YLQuCDQt9Cw0LPQvtC70L7QstC+0Log0YHRgtCw0YLRgtGWINC00L4g0YLQtdC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn0JLRgdGC0LDQstC40YLQuCDRgtC10LrRgdGCINGB0YLQsNGC0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICfQktGB0YLQsNCy0LjRgtC4INC/0L7QstC90YMg0YHRgtCw0YLRgtGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgTGluayd9ID0gJ9CS0YHRgtCw0LLQuNGC0Lgg0L/QvtGB0LjQu9Cw0L3QvdGPINC90LAg0YHRgtCw0YLRgtGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtC4INGC0LXQutGB0YIg0YHRgtCw0YLRgtGWINGC0LAg0L/QvtGB0LjQu9Cw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSAmIExpbmsnfSA9ICfQktGB0YLQsNCy0LjRgtC4INC/0L7QstC90YMg0YHRgtCw0YLRgtGOINGC0LAg0LvRltC90LonOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBhcnRpY2xlcyBmb3VuZC4nfSA9ICfQndC1INC30L3QsNC50LTQtdC90L4g0YHRgtCw0YLRgtC10LknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnfSA9ICfQptC1INC80L7QttC1INCx0YPRgtC4INC60L7RgNC40YHQvdC40LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0Lid9ID0gJ9Cd0LUg0LfQvdCw0LnQtNC10L3QviDQutC+0YDQuNGB0L3QvtC70Zcg0ZbQvdGE0L7RgNC80LDRhtGW0Zcg0L/QviDQstCy0LXQtNC10L3RltC5INGC0LXQvNGWINGC0LAg0YLRltC70YMg0LfQstC10YDQvdC10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICfQktCy0LXQtNGW0YLRjCDRgtC10LzRgyDRh9C4INGC0LXQutGB0YIg0LfQstC10YDQvdC10L3QvdGPINGJ0L7QsSDQvtGC0YDQuNC80LDRgtC4INC60L7RgNC40YHQvdGDINGW0L3RhNC+0YDQvNGG0ZbRjic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn0J/QvtCy0L3QvtGC0LXQutGB0YLQvtCy0LjQuSDQv9C+0YjRg9C6INC/0L4g0YHRgtCw0YLRgtGP0YUg0JHQsNC30Lgg0JfQvdCw0L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIHJlc3RyaWN0aW9ucyd9ID0gJ9Ce0LHQvNC10LbQtdC90L3RjyDQvtGG0ZbQvdC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ9Ci0ZbQu9GM0LrQuCDRgdGC0LDRgtGC0ZYg0Lcg0L7RhtGW0L3QutCw0LzQuC4uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ9Ce0LHQvNC10LbQtdC90L3RjyDRgNC10LnRgtC40L3Qs9GDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLid9ID0gJ9Ci0ZbQu9GM0LrQuCDRgdGC0LDRgtGC0ZYg0Lcg0YDQtdC50YLQuNC90LPQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn0KLQuNC80YfQsNGB0L7QstGWINGA0LDQvNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ9Ci0ZbQu9GM0LrQuCDRgdGC0LDRgtGC0ZYg0YHRgtCy0L7RgNC10L3Rlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfQotGW0LvRjNC60Lgg0YHRgtCw0YLRgtGWINGB0YLQstC+0YDQtdC90ZYg0LzRltC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJ9Cf0YDQvtGE0ZbQu9GMINC/0L7RiNGD0LrRgyDRj9C6INGI0LDQsdC70L7QvT8nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXJ0aWNsZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINGB0YLQsNGC0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ9Co0YPQutCw0YLQuCDRgdGC0LDRgtGC0Y4g0L/QvtC60LvRjtGH0L7QstC+0LzRgyDRgdC70L7QstGDJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ9Cf0YPQsdC70ZbRh9C90LjQuSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAn0J/QvtCy0LXRgNC90YPRgtC40YHRjCDQtNC+INC/0YDQvtCy0ZbQtNC90LjQutCwINCR0LDQt9C4INCX0L3QsNC90YwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBydyBwZXJtaXNzaW9uISd9ID0gJ9CS0LDQvCDQvdC10L7QsdGF0ZbQtNC90ZYg0L/RgNCw0LLQsCDQvdCwINC30LDQv9C40YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY2F0ZWdvcmllcyBmb3VuZCB3aGVyZSB1c2VyIGhhcyByZWFkL3dyaXRlIHBlcm1pc3Npb25zISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZhdWx0IGxhbmd1YWdlIGZvdW5kIGFuZCBjYW5cJ3QgY3JlYXRlIGEgbmV3IG9uZS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRQ2F0ZWdvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgQ2F0ZWdvcnlJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn0JrQsNGC0LXQs9C+0YDRltGPINC/0L7QstC40L3QvdCwINC80LDRgtC4INC90LDQt9Cy0YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMnfSA9ICfQlNCw0L3QsCDQutCw0YLQtdCz0L7RgNGW0Y8g0YPQttC1INGW0YHQvdGD0ZQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNhdGVnb3J5ICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgdXBkYXRlZCEnfSA9ICfQntC90L7QstC70LXQvdC90ZYg0LrQsNGC0LXQs9C+0YDRltGXINC00L7QstGW0LTQvdC40LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IGFkZGVkISd9ID0gJ9CU0L7QtNCw0L3RliDQutCw0YLQtdCz0L7RgNGW0Zcg0LTQvtCy0ZbQtNC90LjQutCw0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDYXRlZ29yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFEZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEl0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgRkFRIGFydGljbGUgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFIaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBhcyBubyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBIaXN0b3J5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUpvdXJuYWwucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgY29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRTGFuZ3VhZ2UucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIGlzIHJlcXVpcmVkISd9ID0gJ9Cd0LXQvtCx0YXRltC00L3QviDQstCy0LXRgdGC0Lgg0L3QsNC30LLRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnfSA9ICfQptGPINC80L7QstCwINCy0LbQtSDRltGB0L3Rg9GUISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAn0J7QvdC+0LLQu9C10L3QviDQvNC+0LLRgyDQtNC+0LLRltC00LrQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIGFkZGVkISd9ID0gJ9CU0L7QtNCw0L3QviDQvNC+0LLRgyDQtNC+0LLRltC00LrQuCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIExhbmd1YWdlICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHQnfSA9ICfQoNC10LfRg9C70YzRgtCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCB1cGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIER5bmFtaWMgRmllbGRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVJpY2hUZXh0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyAlcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCBGQVEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBDaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyZWF0ZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NtYWxsZXIgdGhhbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4gZXF1YWxzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRmlsZUlEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFua3MgZm9yIHlvdXIgdm90ZSEnfSA9ICfQlNGP0LrRg9GU0LzQviwg0LfQsCDRgtC1LCDRidC+INC/0YDQvtCz0L7Qu9C+0YHRg9Cy0LDQu9C4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ9CS0Lgg0LLQttC1INCz0L7Qu9C+0YHRg9Cy0LDQu9C4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNlbGVjdGVkISd9ID0gJ9Cd0LXQvNCw0ZQg0L7QsdGA0LDQvdC+0Zcg0LrQsNGC0LXQs9C+0YDRltGXISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHZvdGUgcmF0ZSBpcyBub3QgZGVmaW5lZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIFByaW50J30gPSAn0J3QsNC00YDRg9C60YPQstCw0YLQuCDRgdGC0LDRgtGC0Y4g0LTQvtCy0ZbQtNC90LjQutCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lckZBUVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgSXRlbUlEISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRRXhwbG9yZXIucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJ30gPSAn0JTQvtCy0ZbQtNC90LjQuiAo0L3QvtCy0ZYg0YHRgtCw0YLRgtGWKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAn0JTQvtCy0ZbQtNC90LjQuiAo0L3QtdC00LDQstC90L4g0LfQvNGW0L3QtdC90ZYg0YHRgtCw0YLRgtGWKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfQlNC+0LLRltC00L3QuNC6ICjQvdCw0LnQutGA0LDRidGWIDEwINGB0YLQsNGC0YLQtdC5KSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J7RgdGC0LDQvdC90Y8g0YHRgtCy0L7RgNC10L3QsCDRgdGC0LDRgtGC0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJ30gPSAn0J7RgdGC0LDQvdC90Y8g0LfQvNGW0L3QtdC90LAg0YHRgtCw0YLRgtGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvcCAxMCBGQVEgYXJ0aWNsZXMnfSA9ICfQotC+0L8gMTAg0YHRgtCw0YLRgtC10LknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MaW5rT2JqZWN0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGVudCBUeXBlJ30gPSAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCBEZWZpbml0aW9uOiBGQVEuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwnfSA9ICfQstC90YPRgtGA0ZbRiNC90ZbQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ9C30L7QstC9adGI0L3RlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICfQv9GD0LHQu9GW0YfQvdC1JzsKCiAgICAjIEpTIEZpbGU6IEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYWNoZSBUaW1lIFRvIExlYXZlIGZvciBGQVEgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUmVsYXRlZCBBcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVjaW1hbCBwbGFjZXMgb2YgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgY2F0ZWdvcnkgbmFtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBsYW5ndWFnZSBmb3IgRkFRIGFydGljbGVzIG9uIHNpbmdsZSBsYW5ndWFnZSBtb2RlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IG1heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBwcmlvcml0eSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHR5cGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSBmb3IgdGhlIEFjdGlvbiBwYXJhbWV0ZXIgZm9yIHRoZSBwdWJsaWMgZnJvbnRlbmQuIFRoZSBBY3Rpb24gcGFyYW1ldGVyIGlzIHVzZWQgaW4gdGhlIHNjcmlwdHMgb2YgdGhlIHN5c3RlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBpZiB0aGUgRkFRIHRpdGxlIHNob3VsZCBiZSBjb25jYXRlbmF0ZWQgdG8gYXJ0aWNsZSBzdWJqZWN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSB3aGljaCBjb2x1bW5zIGFyZSBzaG93biBpbiB0aGUgbGlua2VkIEZBUXMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5vdGU6IE9ubHkgRkFRIGF0dHJpYnV0ZXMgYW5kIGR5bmFtaWMgZmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkIGZvciBEZWZhdWx0Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgRkFRIGpvdXJuYWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIEZBUSBzZWFyY2ggYXR0cmlidXRlIGZvciBGQVEgc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBpbmZvcm1hdGlvbiB0byBiZSBpbnNlcnRlZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuICJGdWxsIEZBUSIgaW5jbHVkZXMgdGV4dCwgYXR0YWNobWVudHMgYW5kIGlubGluZSBpbWFnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kLiAiTGltaXQiIGRlZmluZXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGRpc3BsYXllZCBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBpbmRpY2F0ZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBFeHBsb3Jlci4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgam91cm5hbC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hlcmUgdGhlIFwnSW5zZXJ0IEZBUVwnIGxpbmsgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gb2YgRkFRIGl0ZW0gZnJlZSB0ZXh0IGZpZWxkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgdGhpcyBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBhZGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBlZGl0IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc2VhcmNoIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNtYWxsIGZvcm1hdCBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgbXVsdGlwbGUgbGFuZ3VhZ2VzIG9uIEZBUSBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgZm9yIHRoZSBjdXN0b21lciBmcm9udGVuZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdm90aW5nIG1lY2hhbmlzbSBvbiBGQVEgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBsb3Jlcid9ID0gJ9Cf0YDQvtCy0ZbQtNC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyIGZvciBSaWNodGV4dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFyZWEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBEZWxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEpvdXJuYWwgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiB0aGlzIEZBUSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIGludGVybmFsIGZpZWxkcyBvbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgdGhlIG5hbWUgb2YgZWFjaCBmaWVsZCBpbiBhIEZBUSBiYXNlZCBUaWNrZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVyZmFjZXMgd2hlcmUgdGhlIHF1aWNrIHNlYXJjaCBzaG91bGQgYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0pvdXJuYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgdGhlIHNlYXJjaCB0byBidWlsZCB0aGUga2V5d29yZCBGQVEgYXJ0aWNsZSBsaXN0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIGFub3RoZXIgb2JqZWN0IHRvIHRoaXMgRkFRIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBxdWV1ZSBuYW1lcyBmb3Igd2hpY2ggdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGlzIGVuYWJsZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIGEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBFeHBsb3JlciBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIGh0bWwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQ3VzdG9tZXJGQVFab29tIChhbmQgUHVibGljRkFRWm9vbSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRvcCAxMCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdm90aW5nIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBGQVEgd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgem9vbSB2aWV3IG9mIHN1Y2ggRkFRIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIHRvIGRlbGV0ZSBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIEZBUSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgRkFRIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvbHV0aW9uJ30gPSAn0KDRltGI0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ9Ch0LjQvNC/0YLQvtC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGV4dCBPbmx5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGxhbmd1YWdlcyBmb3IgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBGQVEsIGUuZy4gRkFRIywgS0IjLCBNeUZBUSMuIFRoZSBkZWZhdWx0IGlzIEZBUSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnTm9ybWFsXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ1BhcmVudENoaWxkXCcgbGluayB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdUaWNrZXRcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBzdWJqZWN0IGZvciBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9vbGJhciBJdGVtIGZvciBhIHNob3J0Y3V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCAoY3VzdG9tZXIpJ30gPSAn0LLRltC00LrRgNC40YLQtSAo0LrQu9GW0ZTQvdGC0LDQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW50ZXJuYWwgKGFnZW50KSd9ID0gJ9Cy0ZbQtNC60YDQuNGC0LUgKNCw0LPQtdC90YLQsNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKGFsbCknfSA9ICfQl9Cw0LPQsNC70YzQvdC+0LTQvtGB0YLRg9C/0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMgKHB1YmxpYyknfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoaXMgbWlnaHQgYmUgaGVscGZ1bCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfmt7vliqBGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICflhbPplK7lrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfnsbvliKvmmK/lv4XpnIDnmoQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn5a6h5om5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ0ZBUeexu+WIq+euoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAn5re75YqgRkFR57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIENhdGVnb3J5J30gPSAn57yW6L6RRkFR57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ+a3u+WKoOexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICfmt7vliqDnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ+e8lui+keexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJ+WtkOexu+WIq+S6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ+ivt+iHs+WwkemAieaLqeS4gOS4que7hOadg+mZkC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWdlbnQgZ3JvdXBzIHRoYXQgY2FuIGFjY2VzcyBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5Lid9ID0gJ+iDveiuv+mXruatpOexu+WIq+aWh+eroOeahOacjeWKoeS6uuWRmOe7hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaWxsIGJlIHNob3duIGFzIGNvbW1lbnQgaW4gRXhwbG9yZXIuJ30gPSAn5bCG5L2c5Li65rOo6YeK5Zyo5rWP6KeI5pe25pi+56S6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY2F0ZWdvcnk/J30gPSAn5L2g56Gu5a6a6KaB5Yig6Zmk6L+Z5Liq57G75Yir5ZCXPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ+S9oOS4jeiDveWIoOmZpOi/meS4quexu+WIq++8jOivpeexu+WIq+iHs+WwkeWMheWQq+S4gOevh0ZBUeaWh+eroO+8jOaIluiAheiHs+WwkeWMheWQq+S4gOS4quWtkOexu+WIq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSd9ID0gJ+S4i+WIl0ZBUeaWh+eroOS9v+eUqOivpeexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGlzIHBhcmVudCBvZiB0aGUgZm9sbG93aW5nIHN1YmNhdGVnb3JpZXMnfSA9ICfor6XnsbvliKvmmK/kuIvliJflrZDnsbvliKvnmoTniLbnsbvliKsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRkFRIGFydGljbGU/J30gPSAn5L2g56Gu5a6a6KaB5Yig6Zmk6K+lRkFR5paH56ug5ZCXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICdGQVHnn6Xor4blupMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ0ZBUea1j+iniOWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICflv6vpgJ/mkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ+WFgeiuuOS9v+eUqOmAmumFjeespuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfpq5jnuqfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ+WtkOexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICdGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfmsqHmnInmib7liLDlrZDnsbvliKsuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YnfSA9ICfljoblj7InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn5Y6G5Y+y5YC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfliJvlu7rml7bpl7QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSm91cm5hbE92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBKb3VybmFsIGRhdGEgZm91bmQuJ30gPSAn5rKh5pyJ5om+5YiwRkFR5pel5b+X5pWw5o2u44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUxhbmd1YWdlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTGFuZ3VhZ2UgTWFuYWdlbWVudCd9ID0gJ0ZBUeivreiogOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIExhbmd1YWdlJ30gPSAn5re75YqgRkFR6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIExhbmd1YWdlJ30gPSAn57yW6L6RRkFR6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZSB0aGlzIGZlYXR1cmUgaWYgeW91IHdhbnQgdG8gd29yayB3aXRoIG11bHRpcGxlIGxhbmd1YWdlcy4nfSA9CiAgICAgICAgJ+WmguaenOimgeS9v+eUqOWkmuivreiogOWwseS9v+eUqOacrOWKn+iDveOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgbGFuZ3VhZ2UnfSA9ICfmt7vliqDor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIExhbmd1YWdlJ30gPSAn5re75Yqg6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgTGFuZ3VhZ2UnfSA9ICfnvJbovpHor63oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGxhbmd1YWdlPyd9ID0gJ+S9oOehruWumuimgeWIoOmZpOi/meS4quivreiogOWQlz8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISd9ID0KICAgICAgICAn5L2g5LiN6IO95Yig6Zmk6L+Z5Liq6K+t6KiA77yM6Iez5bCR5pyJ5LiA56+HRkFR5paH56ug5L2/55So6K+l6K+t6KiAISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+S4i+WIl0ZBUeaWh+eroOS9v+eUqOivpeivreiogCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+S4iuS4i+aWh+iuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfmr4/pobXmmL7npLrnmoRGQVHmlofnq6DmlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGRhdGEgZm91bmQuJ30gPSAn5rKh5pyJ5om+5YiwRkFR5pWw5o2u44CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3V0IG9mIDUnfSA9ICcoNeWIhuWItiknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXl3b3JkJ30gPSAn5YWz6ZSu5a2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCknfSA9ICfmipXnpajmlbAgKOS+i+Wmgu+8jD0gMTAg5oiWID49IDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICfor4TliIYgKOS+i+Wmgu+8jD0gMTAlIOaIliA+PSA3NSUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmVkJ30gPSAn6YCa6L+H5a6h5om5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+S4iuasoeS/ruaUueS6uic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ0ZBUeaWh+eroOWIm+W7uuaXtumXtCjnm7jlr7kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ0ZBUeaWh+eroOWIm+W7uuaXtumXtCjnu53lr7kpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAnRkFR5paH56ug5L+u5pS55pe26Ze0KOebuOWvuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnRkFR5paH56ug5L+u5pS55pe26Ze0KOe7neWvuSknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUUZ1bGx0ZXh0J30gPSAnRkFR5YWo5paHJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaFNtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgU2VhcmNoJ30gPSAnRkFR5pCc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2ZpbGUgU2VsZWN0aW9uJ30gPSAn6YWN572u6YCJ5oupJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUnfSA9ICfmipXnpagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZSBzZXR0aW5ncyd9ID0gJ+aXoOaKleelqOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyB2b3Rlcyd9ID0gJ+aMh+WumuaKleelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjAnfSA9ICfkvovlpoLvvJrnrYnkuo4xMOaIluiAheWkp+S6jjYwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGUnfSA9ICfor4TliIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZXR0aW5ncyd9ID0gJ+aXoOivhOWIhuiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVjaWZpYyByYXRlJ30gPSAn5oyH5a6a6K+E5YiGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlJ30gPSAn5L6L5aaC77ya562J5LqOMjUl5oiW5aSn5LqONzUlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lJ30gPSAnRkFR5paH56ug5Yib5bu65pe26Ze0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENoYW5nZSBUaW1lJ30gPSAnRkFR5paH56ug5L+u5pS55pe26Ze0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJbmZvcm1hdGlvbid9ID0gJ0ZBUeivpue7huS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRpbmcnfSA9ICfor4TliIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZXMnfSA9ICfmipXnpajmrKHmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhJ30gPSAn6L+Y5rKh5pyJ5oqV56WoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuJ30gPSAn6L+Y5rKh5pyJ5oqV56WoISDov5nlsIbmmK/or6UgRkFRIOaWh+eroOeahOesrOS4gOS4quaKleelqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAn5LiL6L296ZmE5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAn6KaB5omT5byA5LiL6Z2i5o+P6L+w5Lit55qE6ZO+5o6l77yM5L2g5Y+v6IO96ZyA6KaB5Zyo5Y2V5Ye76ZO+5o6l55qE5ZCM5pe25oyJ5L2PIEN0cmwg5oiWIENtZCDmiJYgU2hpZnQg6ZSuIO+8iOWPluWGs+S6juaCqOeahOa1j+iniOWZqOWSjOaTjeS9nOezu+e7nyDvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSG93IGhlbHBmdWwgd2FzIHRoaXMgYXJ0aWNsZT8gUGxlYXNlIGdpdmUgdXMgeW91ciByYXRpbmcgYW5kIGhlbHAgdG8gaW1wcm92ZSB0aGUgRkFRIERhdGFiYXNlLiBUaGFuayBZb3UhJ30gPQogICAgICAgICfmraTmlofmoaPlr7nmgqjmnInluK7liqnlkJfvvJ/or7fnu5nlh7rmgqjnmoTor4Tku7fvvIzluK7liqnmiJHku6zlrozlloTnn6Xor4blupPvvIzosKLosKLvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGhlbHBmdWwnfSA9ICfmsqHmnInluK7liqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsndmVyeSBoZWxwZnVsJ30gPSAn5b6I5pyJ5biu5YqpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVpvb21TbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSB0aXRsZSB0byBhcnRpY2xlIHN1YmplY3QnfSA9ICflop7liqBGQVHmoIfpopjliLDmlofnq6DkuLvpopjkuK0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0J30gPSAn5o+S5YWlRkFR5paH5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGdWxsIEZBUSd9ID0gJ+aPkuWFpeWujOaVtEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRkFRIExpbmsnfSA9ICfmj5LlhaVGQVHpk77mjqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBUZXh0ICYgTGluayd9ID0gJ+aPkuWFpUZBUeato+aWh+WSjOmTvuaOpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEgJiBMaW5rJ30gPSAn5o+S5YWl5a6M5pW0RkFR5ZKM6ZO+5o6lJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUUV4cGxvcmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBGQVEgYXJ0aWNsZXMgZm91bmQuJ30gPSAn5pyq5om+5YiwRkFR5paH56ug44CCJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBtaWdodCBiZSBoZWxwZnVsJ30gPSAn6L+Z5pyJ5Yqp5LqOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvdW5kIG5vIGhlbHBmdWwgcmVzb3VyY2VzIGZvciB0aGUgc3ViamVjdCBhbmQgdGV4dC4nfSA9ICfmsqHmnInmib7liLDmnInnlKjnmoTkuLvpopjlkozmraPmlofotYTmupDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSBhIHN1YmplY3Qgb3IgdGV4dCB0byBnZXQgYSBsaXN0IG9mIGhlbHBmdWwgcmVzb3VyY2VzLid9ID0gJ+mUruWFpeS4u+mimOaIluato+aWh+S7peiOt+WPluacieeUqOeahOi1hOa6kOa4heWNleOAgic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFTZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Z1bGx0ZXh0IHNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMgKGUuIGcuICJKb2huKm4iIG9yICJXaWxsKiIpJ30gPSAn5ZyoRkFR5Lit6L+b6KGM5YWo5paH5pys5pCc57Si77yI5L6L5aaC77ya4oCcSm9obipu4oCd5oiW4oCcV2lsbCrigJ3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSByZXN0cmljdGlvbnMnfSA9ICfmipXnpajpmZDliLbmnaHku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCB2b3Rlcy4uLid9ID0gJ+S7hUZBUeaWh+eroOeahOaKleelqOaVsOKApuKApic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIHJlc3RyaWN0aW9ucyd9ID0gJ+ivhOWIhumZkOWItuadoeS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4nfSA9ICfku4VGQVHmlofnq6DnmoTor4TliIbigKbigKYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSByZXN0cmljdGlvbnMnfSA9ICfml7bpl7Tmn6Xor6LmnaHku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCd9ID0gJ+S7hUZBUeaWh+eroOeahOWIm+W7uuaXtumXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4nfSA9ICfku4XlnKjku6XkuIvml7bpl7TmrrXliJvlu7rnmoRGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoLVByb2ZpbGUgYXMgVGVtcGxhdGU/J30gPSAn5bCG5pCc57Si6YWN572u6K6+572u5Li65qih5p2/77yfJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lckZBUVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FydGljbGUgTnVtYmVyJ30gPSAn5paH56ug57yW5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBmb3IgYXJ0aWNsZXMgd2l0aCBrZXl3b3JkJ30gPSAn5L2/55So5YWz6ZSu5a2X5pCc57Si5paH56ugJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyd9ID0gJ+WFrOW8gCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoUmVzdWx0U2hvcnQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2sgdG8gRkFRIEV4cGxvcmVyJ30gPSAn6L+U5ZueRkFR5rWP6KeI5ZmoJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnfSA9ICfkvaDpnIDopoFyd+adg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJ30gPSAn5rKh5pyJ5om+5Yiw55So5oi35pyJ6K+75YaZ5p2D6ZmQ55qE57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLid9ID0gJ+ayoeacieaJvuWIsOm7mOiupOivreiogOS4lOaXoOazleWIm+W7uuaWsOeahOivreiogOOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFDYXRlZ29yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBDYXRlZ29yeUlEISd9ID0gJ+mcgOimgUNhdGVnb3J5SUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBzaG91bGQgaGF2ZSBhIG5hbWUhJ30gPSAn5b+F6aG76L6T5YWl57G75Yir5ZCN56ewISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJ30gPSAn57G75Yir5bey5a2Y5ZyoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJ30gPSAn6K+l57G75Yir5bey5a2Y5Zyo77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENhdGVnb3J5SUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6aQ2F0ZWdvcnlJRCDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY2F0ZWdvcnkgJXMhJ30gPSAn5LiN6IO95Yig6Zmk57G75YirJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAnRkFR57G75Yir5bey5pu05pawISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAnRkFR57G75Yir5bey5re75YqgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICfliKDpmaTnsbvliKsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6aSXRlbUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAn5L2g5rKh5pyJ5p2D6ZmQ5L2/55So5q2k57G75Yir77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJ+S4jeiDveWIoOmZpOefpeivhuW6k+aWh+eroCVz77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUV4cGxvcmVyLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLid9ID0gJ0NhdGVnb3J5SUQgJXPml6DmlYjjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+S4jeiDveaYvuekuuWOhuWPsuS/oeaBr++8jOWboOS4uuayoeacieaMh+Wumkl0ZW1JRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJ0ZBUeWOhuWPsic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ0ZBUeaXpeW/lyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICfpnIDopoHphY3nva7pgInpoblGQVE6OkZyb250ZW5kOjpPdmVydmlld+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJ30gPQogICAgICAgICfphY3nva7pgInpoblGQVE6OkZyb250ZW5kOjpPdmVydmlld+mcgOimgeaYr+S4gOS4quWTiOW4jOW8leeUqO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiISd9ID0gJ+ayoeacieaJvuWIsOinhuWbvuKAnCVz4oCd55qE6YWN572u6YCJ6aG577yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+Wumkxhbmd1YWdlSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJ30gPSAn5ZCN56ew5piv5b+F6ZyA55qEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzISd9ID0gJ+ivpeivreiogOW3sue7j+WtmOWcqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgbGFuZ3VhZ2UgJXMhJ30gPSAn5LiN6IO95Yig6Zmk6K+t6KiAJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAnRkFR6K+t6KiA5bey5pu05pawISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAnRkFR6K+t6KiA5bey5re75YqgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICfliKDpmaTor63oqIAgJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ+e7k+aenCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ+S4iuasoeabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICdGQVHliqjmgIHlrZfmrrUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+WumiVz77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBsb2FkIExhbmd1YWdlT2JqZWN0ISd9ID0gJ+S4jeiDvei9veWFpeivreiogOWvueixoe+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfml6Dnu5PmnpzvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE51bWJlcid9ID0gJ0ZBUee8luWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IENoYW5nZWQgYnknfSA9ICfmnIDlkI7kv67mlLnkuronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ3JlYXRlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICfnn6Xor4blupPmnaHnm67liJvlu7rml7bpl7TvvIjlnKguLi7kuYvliY0v5LmL5ZCO77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKSd9ID0gJ+efpeivhuW6k+adoeebruWIm+W7uuaXtumXtO+8iOWcqC4uLuS5i+mXtO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ+efpeivhuW6k+adoeebruS/ruaUueaXtumXtO+8iOWcqC4uLuS5i+WJjS/kuYvlkI7vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAn55+l6K+G5bqT5p2h55uu5L+u5pS55pe26Ze077yI5ZyoLi4u5LmL6Ze077yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJ+etieS6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICflpKfkuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJ+Wkp+S6juetieS6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICflsI/kuo4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJ+Wwj+S6juetieS6jic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICfpnIDopoFGaWxlSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn5oSf6LCi5oKo55qE5oqV56WoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ+aCqOW3sue7j+aKleelqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfmsqHmnInpgInmi6nmipXnpaghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJ+aKleelqOacuuWItuayoeacieWQr+eUqO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJ+ayoeacieWumuS5ieaKleelqOeahOacgOWkp+ivhOWIhuaVsO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICdGQVHmlofnq6DmiZPljbAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICflnKguLi7kuYvpl7TliJvlu7onOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAn6ZyA6KaBSXRlbUlE77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICdGQVHmlofnq6Ao5paw5Yib5bu655qEKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJ30gPSAnRkFR5paH56ugKOacgOi/keS/ruaUueeahCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChUb3AgMTApJ30gPSAnRkFR5paH56ugKOWJjTEw5ZCNKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+Wumuexu+Wei++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICfnsbvlnovlv4XpobvmmK/mnIDlkI7liJvlu7rjgIHmnIDlkI7kv67mlLnmiJZUb3AxMO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlISd9ID0gJ+S4jeiDveWIm+W7ulJTU+aWh+S7tu+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQWdlbnRGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIChGQVFGdWxsdGV4dCknfSA9ICclc++8iEZBUeWFqOaWh++8iSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvQ3VzdG9tZXJGQVFTZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKCVzKSd9ID0gJyVzIC0g5a6i5oi377yIJXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJ30gPSAnJXMgLSDlrqLmiLfvvIhGQVHlhajmlofvvIknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL1B1YmxpY0ZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKCVzKSd9ID0gJyVzIC0g5YWs5byA77yIJXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBQdWJsaWMgKEZBUUZ1bGx0ZXh0KSd9ID0gJyVzIC0g5YWs5byA77yIRkFR5YWo5paH77yJJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L0ZBUS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCByYXRlISd9ID0gJ+ivt+ivhOWIhu+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGFydGljbGUgaXMgZW1wdHkhJ30gPSAn5paH56ug5peg5YaF5a6577yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOi/keWIm+W7uueahEZBUeaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfmnIDov5Hkv67mlLnnmoRGQVHmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOW4uOeUqOeahOaWh+eroCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0xpbmtPYmplY3QvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZW50IFR5cGUnfSA9ICflhoXlrrnnsbvlnosnOwoKICAgICMgRGF0YWJhc2UgWE1MIERlZmluaXRpb246IEZBUS5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCd9ID0gJ+WGhemDqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydleHRlcm5hbCd9ID0gJ+WklumDqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwdWJsaWMnfSA9ICflhazlvIAnOwoKICAgICMgSlMgRmlsZTogRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICfnoa7lrponOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGZpbHRlciBmb3IgSFRNTCBvdXRwdXQgdG8gYWRkIGxpbmtzIGJlaGluZCBhIGRlZmluZWQgc3RyaW5nLiBUaGUgZWxlbWVudCBJbWFnZSBhbGxvd3MgdHdvIGlucHV0IGtpbmRzLiBGaXJzdCB0aGUgbmFtZSBvZiBhbiBpbWFnZSAoZS5nLiBmYXEucG5nKS4gSW4gdGhpcyBjYXNlIHRoZSBPVFJTIGltYWdlIHBhdGggd2lsbCBiZSB1c2VkLiBUaGUgc2Vjb25kIHBvc3NpYmlsaXR5IGlzIHRvIGluc2VydCB0aGUgbGluayB0byB0aGUgaW1hZ2UuJ30gPQogICAgICAgICflnKhIVE1M6L6T5Ye657uT5p6c5Lit5Li66aKE5a6a5LmJ5a2X56ym5Liy5re75Yqg6ZO+5o6l55qE6L+H5ruk5Zmo44CC5Zu+5YOP5YWD57Sg5YWB6K645Lik56eN6L6T5YWl5pa55byP77ya56ys5LiA56eN5piv55So5Zu+5YOP55qE5ZCN56ew77yI5aaCZmFxLnBuZ++8ie+8jOWcqOi/meenjeaDheWGteS4i+S8muS9v+eUqE9UUlPnmoTlm77lg4/ot6/lvoTvvJvnrKzkuoznp43mmK/mj5LlhaXlm77lg4/nmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEZBUSBhcnRpY2xlJ30gPSAn5re75YqgRkFR5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NTUyBjb2xvciBmb3IgdGhlIHZvdGluZyByZXN1bHQuJ30gPSAn5oqV56Wo57uT5p6c55qEQ1NT6aKc6Imy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhY2hlIFRpbWUgVG8gTGVhdmUgZm9yIEZBUSBpdGVtcy4nfSA9ICdGQVHmlofnq6Dog73mmL7npLrnmoTml7bpl7TjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+euoeeQhuexu+WIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50Lid9ID0gJ+euoeeQhuexu+WIq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgUHJpbnQuJ30gPSAn5a6i5oi3RkFR5omT5Y2w44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzJ30gPSAn5a6i5oi3RkFR55u45YWz55qE5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBSZWxhdGVkIEFydGljbGVzLid9ID0gJ+WuouaIt0ZBUeebuOWFs+eahOaWh+eroOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgWm9vbS4nfSA9ICflrqLmiLdGQVHor6bmg4XjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIHNlYXJjaC4nfSA9ICflrqLmiLdGQVHmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRLid9ID0gJ+WuouaIt0ZBUeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWNpbWFsIHBsYWNlcyBvZiB0aGUgdm90aW5nIHJlc3VsdC4nfSA9ICfku6XljYHliIbliLbmmL7npLror4TliIbnu5PmnpzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBjYXRlZ29yeSBuYW1lLid9ID0gJ+m7mOiupOeahOebruW9leWQjeensOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGxhbmd1YWdlIGZvciBGQVEgYXJ0aWNsZXMgb24gc2luZ2xlIGxhbmd1YWdlIG1vZGUuJ30gPSAn5Y2V6K+t6KiA5qih5byP5LiLRkFR5paH56ug55qE6buY6K6k6K+t6KiA44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93bi4nfSA9CiAgICAgICAgJ0ZBUeaWh+eroOm7mOiupOaYvuekuuagh+mimOeahOacgOWkp+Wtl+espuaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHByaW9yaXR5IG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPQogICAgICAgICdGQVEg5paH56ug5a6h5om56K+35rGC5bel5Y2V55qE6buY6K6k5LyY5YWI57qn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgZm9yIEZBUSBlbnRyeS4nfSA9ICdGQVHmlofnq6DnmoTpu5jorqTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdGF0ZSBvZiB0aWNrZXRzIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ0ZBUSDmlofnq6Dor7fmsYLmibnlh4blt6XljZXnmoTpu5jorqTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAnRkFRIOaWh+eroOivt+axguaJueWHhuW3peWNleeahOm7mOiupOexu+Wei+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHZhbHVlIGZvciB0aGUgQWN0aW9uIHBhcmFtZXRlciBmb3IgdGhlIHB1YmxpYyBmcm9udGVuZC4gVGhlIEFjdGlvbiBwYXJhbWV0ZXIgaXMgdXNlZCBpbiB0aGUgc2NyaXB0cyBvZiB0aGUgc3lzdGVtLid9ID0KICAgICAgICAn5YWs5YWx5YmN56uv55WM6Z2i5oyH5Luk5Y+C5pWw55qE6buY6K6k5YC877yM5oyH5Luk5Y+C5pWw55So5LqO57O757uf6ISa5pys44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICflrprkuYnpk77mjqXlr7nosaHlsI/pg6jku7YoTGlua09iamVjdDo6Vmlld01vZGUgPSBcImNvbXBsZXhcIinorr7nva7mjInpkq7kuK3nmoTmk43kvZzjgILor7fms6jmhI/vvIzov5nkupvmk43kvZzlv4Xpobvlt7Lnu4/lnKjku6XkuItKU+WSjENTU+aWh+S7tuS4reazqOWGjO+8mkNvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz44CBQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc+OAgSBDb3JlLlVJLlRhYmxlLlNvcnQuanPjgIFDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qc+WSjENvcmUuQWdlbnQuTGlua09iamVjdC5qc+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJ+WumuS5iUZBUeagh+mimOaYr+WQpuimgeWKoOWIsOaWh+eroOS4u+mimOS4reOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICflrprkuYnpk77mjqXnmoTnn6Xor4blupPlsI/pg6jku7bkuK3mmL7npLrlk6rkupvliJfvvIhMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4Iu+8ieOAgiDms6jmhI/vvJrlj6rmnInnn6Xor4blupPlsZ7mgKflkozliqjmgIHlrZfmrrXvvIhEeW5hbWljRmllbGRfTmFtZVjvvInmiY3lhYHorrjnlKjkvZwgRGVmYXVsdENvbHVtbnPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAn5a6a5LmJ5LiA5Liq5pi+56S6RkFR5pel5b+X566A5rSB6KeG5Zu+55qE5qaC6KeI5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ+WumuS5ieS4gOS4quaYvuekukZBUeWIl+ihqOeugOa0geinhuWbvueahOamguiniOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i55qERkFR5pCc57Si57uT5p6c5Lit5o6S5bqP55qE6buY6K6kRkFR5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlnKjlrqLmiLfnlYzpnaLnmoRGQVHmkJzntKLnu5PmnpzkuK3mjpLluo/nmoTpu5jorqRGQVHlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlnKjlhazlhbHnlYzpnaLnmoRGQVHmkJzntKLnu5PmnpzkuK3mjpLluo/nmoTpu5jorqRGQVHlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlnKjmnI3liqHkurrlkZjnlYzpnaLnmoRGQVHmtY/op4jlmajkuK3mjpLluo/nmoTpu5jorqRGQVHlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlnKjlrqLmiLfnlYzpnaLnmoRGQVHmtY/op4jlmajkuK3mjpLluo/nmoTpu5jorqRGQVHlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5YWs5YWx55WM6Z2i55qERkFR5rWP6KeI5Zmo5Lit5o6S5bqP55qE6buY6K6kRkFR5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i55qERkFR5rWP6KeI5Zmo5Lit5pi+56S6RkFR55qE6aG65bqP44CC5ZCR5LiK77ya5pyA5pep55qE5Zyo5pyA5LiK6Z2i77yM5ZCR5LiL77ya5pyA5paw55qE5Zyo5pyA5LiK6Z2i44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5a6i5oi355WM6Z2i55qERkFR5rWP6KeI5Zmo5Lit5pi+56S6RkFR55qE6aG65bqP44CC5ZCR5LiK77ya5pyA5pep55qE5Zyo5pyA5LiK6Z2i77yM5ZCR5LiL77ya5pyA5paw55qE5Zyo5pyA5LiK6Z2i44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOWFrOWFseeVjOmdoueahEZBUea1j+iniOWZqOS4reaYvuekukZBUeeahOmhuuW6j+OAguWQkeS4iu+8muacgOaXqeeahOWcqOacgOS4iumdou+8jOWQkeS4i++8muacgOaWsOeahOWcqOacgOS4iumdouOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnlnKjmnI3liqHkurrlkZjnlYzpnaLnmoRGQVHmkJzntKLnu5PmnpzkuK3nmoTmmL7npLrpobrluo/jgILlkJHkuIrvvJrmnIDml6nnmoTlnKjmnIDkuIrpnaLvvIzlkJHkuIvvvJrmnIDmlrDnmoTlnKjmnIDkuIrpnaLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5Zyo5a6i5oi355WM6Z2i55qERkFR5pCc57Si57uT5p6c5Lit55qE5pi+56S66aG65bqP44CC5ZCR5LiK77ya5pyA5pep55qE5Zyo5pyA5LiK6Z2i77yM5ZCR5LiL77ya5pyA5paw55qE5Zyo5pyA5LiK6Z2i44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnlnKjlhazlhbHnlYzpnaLnmoRGQVHmkJzntKLnu5PmnpzkuK3nmoTmmL7npLrpobrluo/jgILlkJHkuIrvvJrmnIDml6nnmoTlnKjmnIDkuIrpnaLvvIzlkJHkuIvvvJrmnIDmlrDnmoTlnKjmnIDkuIrpnaLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYlGQVHmkJzntKLnqpflj6PkuK3pu5jorqTnmoTnlKjkuo7mkJzntKLnmoRGQVHlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAn5a6a5LmJ5Z+65LqORkFR55qE5bel5Y2V5Lit6KaB5o+S5YWl55qE5L+h5oGv44CC4oCc5a6M5pW0RkFR4oCd5YyF5ous5paH5pys44CB6ZmE5Lu25ZKM5YaF5bWM5Zu+5YOP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJ+WumuS5ieS7quihqOadv+eahOWQjuerr+WPguaVsOOAguKAnOmZkOWItuKAneWumuS5iem7mOiupOaYvuekuuadoeebrueahOaVsOmHj+OAguKAnOe7hOKAneeUqOS6juaOp+WItuiDveiuv+mXruatpOaooeWdl+eahOe7hO+8iOWmgu+8mmFkbWluO2dyb3VwMTtncm91cDLnu4TvvInjgILigJzpu5jorqTigJ3ooajnpLrmraTmqKHlnZfpu5jorqTkuLrlj6/nlKjmiJbpnIDopoHnlKjmiLfmiYvliqjlkK/nlKjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIEV4cGxvcmVyLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn5a6a5LmJ5ZyoRkFR5rWP6KeI5Zmo5Lit6KaB5pi+56S655qE5YiX44CC6L+Z5Liq6YCJ6aG55LiN5Lya5b2x5ZON5YiX55qE5L2N572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBqb3VybmFsLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn5a6a5LmJ5ZyoRkFR5pel5b+X5Lit6KaB5pi+56S655qE5YiX44CC6L+Z5Liq6YCJ6aG55LiN5Lya5b2x5ZON5YiX55qE5L2N572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIEZBUSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICflrprkuYnlnKhGQVHmkJzntKLnu5PmnpzkuK3opoHmmL7npLrnmoTliJfjgILov5nkuKrpgInpobnkuI3kvJrlvbHlk43liJfnmoTkvY3nva7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGVyZSB0aGUgXCdJbnNlcnQgRkFRXCcgbGluayB3aWxsIGJlIGRpc3BsYXllZC4nfSA9ICflrprkuYnigJzmj5LlhaVGQVHigJ3pk77mjqXlnKjkvZXlpITmmL7npLrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBvZiBGQVEgaXRlbSBmcmVlIHRleHQgZmllbGQuJ30gPSAn5a6a5LmJIEZBUSDmnaHnm67nmoTkuI3lj5fpmZDmloflrZflrZfmrrUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSB0aGlzIEZBUSd9ID0gJ+WIoOmZpOi/meevh0ZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGFkZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoua3u+WKoEZBUeeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIGVkaXQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLnvJbovpFGQVHnqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdokZBUeamguiniOeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOWFseeVjOmdokZBUeamguiniOeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5omT5Y2wRkFR56qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLmiZPljbBGQVHnqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLmiZPljbBGQVHnqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLmkJzntKJGQVHnqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLmkJzntKJGQVHnqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5pCc57SiRkFR56qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgc21hbGwgZm9ybWF0IG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2iRkFR5qaC6KeI566A5rSB5qC85byP56qX5Y+j5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdokZBUeivpuaDheeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaJGQVHor6bmg4Xnqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOWFseeVjOmdokZBUeivpuaDheeql+WPo+S4reaYvuekuueahOWKqOaAgeWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHRoaXMgRkFRJ30gPSAn57yW6L6RRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBtdWx0aXBsZSBsYW5ndWFnZXMgb24gRkFRIG1vZHVsZS4nfSA9ICflnKhGQVHmqKHlnZfkuK3lkK/nlKjlpJrnp43or63oqIDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBmb3IgdGhlIGN1c3RvbWVyIGZyb250ZW5kLid9ID0KICAgICAgICAn5ZCv55So5a6i5oi35YmN56uv55qE55u45YWz5paH56ug5Yqf6IO944CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSB2b3RpbmcgbWVjaGFuaXNtIG9uIEZBUSBtb2R1bGUuJ30gPSAn5ZyoRkFR5qih5Z2X5Lit5ZCv55So5oqV56Wo5py65Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGxvcmVyJ30gPSAn5rWP6KeIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlcid9ID0gJ0ZBUSBBSkFYIFJlc3BvbmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQUpBWCBSZXNwb25kZXIgZm9yIFJpY2h0ZXh0Lid9ID0gJ+eUqOS6jkZBUeWvjOaWh+acrOeahEFKQVggUmVzcG9uZGVy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnRkFR5Yy65Z+fJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJ0ZBUeWMuuWfn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJ0ZBUeWIoOmZpOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICdGQVHnvJbovpHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnRkFR5Y6G5Y+y44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVHml6Xlv5fmpoLop4jigJznroDmtIHop4blm77igJ3pmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdGQVHmpoLop4jigJznroDmtIHop4blm77igJ3pmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIFByaW50Lid9ID0gJ0ZBUeaJk+WNsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAn5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yMRkFR5pCc57Si55qE5ZCO5Y+w6YCJ6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNCd9ID0gJ+Wtl+autTQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGQ1J30gPSAn5a2X5q61NSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsIEZBUSd9ID0gJ+WujOaVtEZBUSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcm91cCBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfmibnlh4YgRkFRIOaWh+eroOivt+axgueahOe+pOe7hOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIHRoaXMgRkFRJ30gPSAnRkFR5paH56ug55qE5Y6G5Y+y5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGUgaW50ZXJuYWwgZmllbGRzIG9uIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICflnKjln7rkuo5GQVHmlofnq6DnmoTlt6XljZXkuK3ljIXlkKvlhoXpg6jlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSB0aGUgbmFtZSBvZiBlYWNoIGZpZWxkIGluIGEgRkFRIGJhc2VkIFRpY2tldC4nfSA9ICflnKjln7rkuo5GQVHmlofnq6DnmoTlt6XljZXkuK3ljIXlkKvmr4/kuKrlrZfmrrXnmoTlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJmYWNlcyB3aGVyZSB0aGUgcXVpY2sgc2VhcmNoIHNob3VsZCBiZSBzaG93bi4nfSA9ICflv6vpgJ/mkJzntKLml7bmmL7npLrnmoTnlYzpnaInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSm91cm5hbCd9ID0gJ+aXpeW/lyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn566h55CG6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQuJ30gPSAn566h55CG6K+t6KiAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciB0aGUgc2VhcmNoIHRvIGJ1aWxkIHRoZSBrZXl3b3JkIEZBUSBhcnRpY2xlIGxpc3QuJ30gPSAn5Li65bu656uL5YWz6ZSu5a2XRkFR5paH56ug5YiX6KGo55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgYW5vdGhlciBvYmplY3QgdG8gdGhpcyBGQVEgaXRlbSd9ID0gJ+mTvuaOpeWvueixoeWIsOi/meS4qkZBUeadoeebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHF1ZXVlIG5hbWVzIGZvciB3aGljaCB0aGUgcmVsYXRlZCBhcnRpY2xlIGZlYXR1cmUgaXMgZW5hYmxlZC4nfSA9CiAgICAgICAgJ+WQr+eUqOebuOWFs+aWh+eroOWKn+iDveeahOmYn+WIl+WQjeensOWIl+ihqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3og73lpJ/kvb/nlKjnmoTnirbmgIHnsbvlnovliJfooajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5Lit6IO95aSf5L2/55So55qE54q25oCB57G75Z6L5YiX6KGo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLkuK3og73lpJ/kvb/nlKjnmoTnirbmgIHnsbvlnovliJfooajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJ+WFrOWFseeVjOmdoueahOWKoOi9veaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIxGQVHmtY/op4jlmajog73lpJ/mmL7npLpGQVHmlofnq6DnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5Lit77yMRkFR5rWP6KeI5Zmo6IO95aSf5pi+56S6RkFR5paH56ug55qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLkuK3vvIxGQVHmtY/op4jlmajog73lpJ/mmL7npLpGQVHmlofnq6DnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIGpvdXJuYWwgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jEZBUeaXpeW/l+iDveWkn+aYvuekukZBUeaWh+eroOeahOacgOWkp+aVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jEZBUeaQnOe0oue7k+aenOiDveWkn+aYvuekuueahOacgOWkp+aVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS4re+8jEZBUeaQnOe0oue7k+aenOiDveWkn+aYvuekuueahOacgOWkp+aVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgYSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLkuK3vvIxGQVHmkJzntKLnu5Pmnpzog73lpJ/mmL7npLrnmoTmnIDlpKfmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIxGQVHmtY/op4jlmajmmL7npLpGQVHmlofnq6DmoIfpopjnmoTmnIDplb/lrZfnrKbmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLkuK3vvIxGQVHmtY/op4jlmajmmL7npLpGQVHmlofnq6DmoIfpopjnmoTmnIDplb/lrZfnrKbmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIEV4cGxvcmVyIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5Lit77yMRkFR5rWP6KeI5Zmo5pi+56S6RkFR5paH56ug5qCH6aKY55qE5pyA6ZW/5a2X56ym5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jEZBUeaQnOe0oue7k+aenOaYvuekukZBUeaWh+eroOagh+mimOeahOacgOmVv+Wtl+espuaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLkuK3vvIxGQVHmkJzntKLnu5PmnpzmmL7npLpGQVHmlofnq6DmoIfpopjnmoTmnIDplb/lrZfnrKbmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOWFseeVjOmdouS4re+8jEZBUeaQnOe0oue7k+aenOaYvuekukZBUeaWh+eroOagh+mimOeahOacgOmVv+Wtl+espuaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yMRkFR5pel5b+X6KeG5Zu+5pi+56S6RkFR5paH56ug5qCH6aKY55qE5pyA6ZW/5a2X56ym5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBIVE1MIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5Lit77yM55So5LqO566A55+t55qERkFR5pCc57Si6ICM55Sf5oiQSFRNTOW8gOaUvuW8j+aQnOe0oumFjee9ruaWh+S7tueahOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSFRNTCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2ggaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlhazlhbHnlYzpnaLkuK3vvIzkuLrkvJjljJZGQVHmkJzntKLnlKjkuo7nlJ/miJBIVE1M5byA5pS+5pCc57Si77yIT3BlblNlYXJjaO+8iemFjee9rueahOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgaHRtbCBPcGVuU2VhcmNoIHByb2ZpbGUgZm9yIHNob3J0IEZBUSBzZWFyY2guJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIznlKjkuo7nroDnn63nmoRGQVHmkJzntKLogIznlJ/miJBIVE1M5byA5pS+5byP5pCc57Si6YWN572u5paH5Lu255qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgQXJ0aWNsZS4nfSA9ICfliJvlu7pGQVHmlofnq6DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IEZBUSBhcnRpY2xlcyBuZWVkIGFwcHJvdmFsIGJlZm9yZSB0aGV5IGdldCBwdWJsaXNoZWQuJ30gPSAn5paw5bu655qERkFR5paH56ug5Zyo5Y+R5biD5LmL5YmN6ZyA6KaB5a6h5om544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS4re+8jEZBUea1j+iniOWZqOinhuWbvuaYvuekuueahEZBUeaWh+eroOaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5Lit77yMRkFR5rWP6KeI5Zmo6KeG5Zu+5pi+56S655qERkFR5paH56ug5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIG9uIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS4re+8jEZBUeaQnOe0oue7k+aenOavj+mhteaYvuekuueahEZBUeaWh+eroOaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5Lit77yMRkFR5pCc57Si57uT5p6c5q+P6aG15pi+56S655qERkFR5paH56ug5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNoYW5nZXMuJ30gPSAn5pi+56S65pyA6L+R5pu05pS55p2h55uu55qE5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiBsYXN0IGNyZWF0ZWQuJ30gPSAn5pi+56S65pyA5paw5Yib5bu65p2h55uu55qE5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBzaG93biBpdGVtcyBpbiB0aGUgdG9wIDEwIGZlYXR1cmUuJ30gPSAn5oyJVG9wMTDmoLzlvI/mmL7npLrnmoTmnaHnm67mlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGZpbHRlciB0byBhZGQgSmF2YS1zY3JpcHQgdG8gQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIHNjcmVlbi4nfSA9CiAgICAgICAgJ+a3u+WKoEphdmFzY3JpcHTliLDlrqLmiLflt6XljZXmtojmga/nqpflj6PnmoTovpPlh7rov4fmu6TlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAn55u45YWzRkFR5paH56ug55qE6L6T5Ye66ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJ+aYvuekukZBUeadoeebrueahOW+ruWei0ZBUeaXpeW/l+amguiniOeahOmhtemdouWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAn5pi+56S6RkFR5p2h55uu55qERkFR5qaC6KeI566A5rSB6KeG5Zu+55qE6aG16Z2i5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn5omT5Y2w6L+Z56+HRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAn5YWs5byARkFR5omT5Y2w44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICflhazlvIBGQVHor6bmg4XjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAn5YWs5byARkFR5pCc57Si44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAn5YWs5byARkFR44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+WuoeaJuSBGQVEg5paH56ug55qE6Zif5YiX44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGVzIGZvciB2b3RpbmcuIEtleSBtdXN0IGJlIGluIHBlcmNlbnQuJ30gPSAn5aW96K+E546HLCDplK7lgLzlv4Xpobvku6Xnmb7liIbmr5TooajnpLrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUyd9ID0gJ+eugOa0gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggRkFRJ30gPSAn5pCc57SiRkFRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEgU21hbGwuJ30gPSAn5pCc57SiRkFR77yI566A5rSB5qC85byP77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEuJ30gPSAn5pCc57SiRkFR44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBob3cgbWFueSBpdGVtcyBzaG91bGQgYmUgc2hvd24gaW4gSm91cm5hbCBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICfpgInmi6nmnJ/liIrmpoLop4jvvIjnroDmtIHmoLzlvI/vvInkuK3pu5jorqTnmoTmmL7npLrmnaHnm67mlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBPdmVydmlldyAiU21hbGwiIGJ5IGRlZmF1bHQuJ30gPQogICAgICAgICfpgInmi6nmpoLop4jvvIjnroDmtIHmoLzlvI/vvInkuK3pu5jorqTnmoTmmL7npLrmnaHnm67mlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBkZWZhdWx0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn5Zyo4oCdQWdlbnRGQVFab29t4oCc5Lit77yM6K6+572u5YaF572uSFRNTOWtl+auteeahOm7mOiupOmrmOW6pu+8iOWNleS9je+8muWDj+e0oO+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt0ZBUeivpuaDheWSjOWFrOW8gEZBUeivpuaDheS4re+8jOiuvue9ruWGhee9rkhUTUzlrZfmrrXnmoTpu5jorqTpq5jluqbvvIjmjInlg4/ntKDvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGYRkFR6K+m5oOF5Lit77yM6K6+572u5YaF572uSFRNTOWtl+auteeahOacgOWkp+mrmOW6pu+8iOaMieWDj+e0oO+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIG1heGltdW0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBDdXN0b21lckZBUVpvb20gKGFuZCBQdWJsaWNGQVFab29tKS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt0ZBUeivpuaDheWSjOWFrOW8gEZBUeivpuaDheS4re+8jOiuvue9ruWGhee9rkhUTUzlrZfmrrXnmoTmnIDlpKfpq5jluqbvvIjmjInlg4/ntKDvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBMaW5rIiBCdXR0b24gaW4gQWdlbnRGQVFab29tU21hbGwgZm9yIHB1YmxpYyBGQVEgQXJ0aWNsZXMuJ30gPQogICAgICAgICflr7nkuo7lhazlvIDnmoRGQVHmlofnq6DvvIzlnKjmnI3liqHkurrlkZhGQVHor6bmg4Xnqpflj6PkuK3mmL7npLrigJzmj5LlhaVGQVHpk77mjqXigJ3mjInpkq7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyAiSW5zZXJ0IEZBUSBUZXh0ICYgTGluayIgLyAiSW5zZXJ0IEZ1bGwgRkFRICYgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAn5a+55LqO5YWs5byA55qERkFR5paH56ug77yM5Zyo5pyN5Yqh5Lq65ZGYRkFR6K+m5oOF56qX5Y+j5Lit5pi+56S64oCc5o+S5YWlRkFR5paH5pys5ZKM6ZO+5o6l4oCdL+KAnOaPkuWFpeWujOaVtEZBUeWSjOmTvuaOpeKAneaMiemSruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGYRkFR6K+m5oOF56qX5Y+j5Lit5pi+56S64oCc5o+S5YWlRkFR5paH5pys4oCdL+KAnOaPkuWFpeWujOaVtEZBUeKAneaMiemSruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBBcnRpY2xlIHdpdGggSFRNTC4nfSA9ICfku6UgSFRNTCDmoLzlvI/mmL7npLogRkFRIOaWh+eroOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IEZBUSBwYXRoIHllcy9uby4nfSA9ICfmmK8v5ZCm5pi+56S6IEZBUSDot6/lvoTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpbnZhbGlkIGl0ZW1zIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIzlnKhGQVHmtY/op4jlmajnu5PmnpzkuK3mmL7npLrml6DmlYjmnaHnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBpdGVtcyBvZiBzdWJjYXRlZ29yaWVzLid9ID0gJ+aYvuekuuWtkOebruW9leeahOadoeebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY2hhbmdlIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICflnKjlrprkuYnnmoTnlYzpnaLkuIrmmL7npLrmnIDov5Hmm7TmlLnnmoTmnaHnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBsYXN0IGNyZWF0ZWQgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOWumuS5ieeahOeVjOmdouS4iuaYvuekuuacgOaWsOWIm+W7uueahOadoeebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHRoZSBzdGFycyBmb3IgdGhlIGFydGljbGVzIHdpdGggYSByYXRpbmcgZXF1YWwgb3IgZ3JlYXRlciBsaWtlIHRoZSBkZWZpbmVkIHZhbHVlIChzZXQgdmFsdWUgXCcwXCcgdG8gZGVhY3RpdmF0ZSB0aGUgb3V0cHV0KS4nfSA9CiAgICAgICAgJ+aYvuekuuaYn+e6p+Wkp+S6juaIluetieS6juWumuS5ieWAvOeahOaWh+eroO+8iOiuvue9ruWAvFwnMFwn5Lul56aB55So6L6T5Ye677yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICflnKjlrprkuYnnmoTnlYzpnaLkuIrmmL7npLrngrnlh7vph4/liY3ljYHkuKrmnaHnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyB2b3RpbmcgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+WcqOWumuS5ieeahOeVjOmdouS4iuaYvuekuuaWh+eroOivhOWIhuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIEZBUSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSB6b29tIHZpZXcgb2Ygc3VjaCBGQVEgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jOWcqOivpUZBUeivpuaDheeql+WPo+iPnOWNleS4reaYvuekuuWFgeiuuOWwhkZBUemTvuaOpeWIsOWPpuS4gOS4quWvueixoeeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgdG8gZGVsZXRlIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jOWcqOivpUZBUeeahOivpuaDheeql+WPo+iPnOWNleS4reaYvuekuuWFgeiuuOWIoOmZpEZBUeeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgRkFRIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouS4re+8jOWcqOivpUZBUeeahOivpuaDheeql+WPo+iPnOWNleS4reaYvuekuuiuv+mXrkZBUeWOhuWPsueahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIEZBUSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5Lit77yM5Zyo6K+lRkFR55qE6K+m5oOF56qX5Y+j6I+c5Y2V5Lit5pi+56S657yW6L6RRkFR55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBGQVEgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLkuK3vvIzlnKjor6VGQVHnmoTor6bmg4Xnqpflj6Poj5zljZXkuK3mmL7npLrlkI7pgIDnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLnmoTor6bmg4Xnqpflj6Poj5zljZXkuK3vvIzmmL7npLrmiZPljbBGQVHnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29sdXRpb24nfSA9ICfop6PlhrPmlrnmoYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ltcHRvbSd9ID0gJ+eXh+eKtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXh0IE9ubHknfSA9ICfku4XmlofmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAn55u45YWzRkFR5paH56ug55qE6buY6K6k6K+t6KiA44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIEZBUSwgZS5nLiBGQVEjLCBLQiMsIE15RkFRIy4gVGhlIGRlZmF1bHQgaXMgRkFRIy4nfSA9CiAgICAgICAgJ0ZBUSDnmoTmoIfor4bnrKYsIOS+i+WmgiAo5bi46KeB6Zeu6aKY6Kej562UKUZBUSMsICjnn6Xor4blupMpS0IjLCDpu5jorqTkuLogRkFRI+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfor6Xorr7nva7lrprkuYnkuobkuIDkuKrog73pgJrov4figJzmma7pgJrvvIhOb3JtYWzvvInigJ3nmoTpk77mjqXnsbvlnovkuI7lhbbku5ZGQVHlr7nosaHov57mjqXnmoRGQVHlr7nosaHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ0ZBUVwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfor6Xorr7nva7lrprkuYnkuobkuIDkuKrog73pgJrov4figJzniLblrZDvvIhQYXJlbnRDaGlsZO+8ieKAneeahOmTvuaOpeexu+Wei+S4juWFtuS7lkZBUeWvueixoei/nuaOpeeahEZBUeWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfor6Xorr7nva7lrprkuYnkuobkuIDkuKrog73pgJrov4figJzmma7pgJrvvIhOb3JtYWzvvInigJ3nmoTpk77mjqXnsbvlnovkuI7lhbbku5blt6XljZXlr7nosaHov57mjqXnmoRGQVHlr7nosaHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICfor6Xorr7nva7lrprkuYnkuobkuIDkuKrog73pgJrov4figJzniLblrZDvvIhQYXJlbnRDaGlsZO+8ieKAneeahOmTvuaOpeexu+Wei+S4juWFtuS7luW3peWNleWvueixoei/nuaOpeeahEZBUeWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgYm9keSBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnRkFRIOaWh+eroOWuoeaJueivt+axgueahOW3peWNleato+aWh+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnRkFRIOaWh+eroOWuoeaJueivt+axgueahOW3peWNleagh+mimOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb29sYmFyIEl0ZW0gZm9yIGEgc2hvcnRjdXQuJ30gPSAn5b+r5o236ZSu55qE5bel5YW35qCP5p2h55uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsIChjdXN0b21lciknfSA9ICflpJbpg6go55So5oi3KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn5YaF6YOoKOacjeWKoeS6uuWRmCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChhbGwpJ30gPSAn5YWs5byAKOWGheWkliknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAn5YWs5byA77yI5YWs5byA77yJJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX1RXX0ZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIEFydGljbGUnfSA9ICfmt7vliqDluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZHMnfSA9ICfpl5zpjbXlrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4nfSA9ICfnm67pjITliIbpoZ7ngrrlv4XpoIjnmoQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcHJvdmFsJ30gPSAn5a+p5om5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUUNhdGVnb3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQ2F0ZWdvcnkgTWFuYWdlbWVudCd9ID0gJ+W4uOimi+WVj+mhjOebrumMhOWIhumhnueuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgRkFRIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgRkFRIENhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBjYXRlZ29yeSd9ID0gJ+a3u+WKoOebrumMhOWIhumhnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQ2F0ZWdvcnknfSA9ICfmt7vliqDnm67pjITliIbpoZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBDYXRlZ29yeSd9ID0gJ+e3qOi8r+ebrumMhOWIhumhnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJjYXRlZ29yeSBvZid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBwZXJtaXNzaW9uIGdyb3VwLid9ID0gJ+iri+mBuOaTh+iHs+WwkeS4gOWAi+asiumZkOe1hOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZ2VudCBncm91cHMgdGhhdCBjYW4gYWNjZXNzIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkuJ30gPSAn5Y+v5Lul5a2Y5Y+W5q2k55uu6YyE5YiG6aGe5paH56ug55qE5pyN5YuZ5ZOh57WE5Yil44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dpbGwgYmUgc2hvd24gYXMgY29tbWVudCBpbiBFeHBsb3Jlci4nfSA9ICflnKjngI/opr3lmajkuK3lsIfmnIPpoa/npLrngrroqZXoqIDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNhdGVnb3J5Pyd9ID0gJ+aCqOeiuuWumuimgeWIqumZpOatpOebrumMhOWIhumhnu+8nyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnknfSA9CiAgICAgICAgJ+aCqOeEoeazleWIqumZpOatpOebrumMhOWIhumhnuOAguiHs+Wwkeiiq+S4gOevh+W4uOimi+WVj+mhjOaWh+eroOWcqOatpOebrumMhOWIhumhnuWFp++8jOWPii/miJblroPmmK/oh7PlsJHkuIDlgIvlhbbku5bnm67pjITliIbpoZ7mmK/lroPnmoTmr43nm67pjITliIbpoZ7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyB1c2VkIGluIHRoZSBmb2xsb3dpbmcgRkFRIGFydGljbGUocyknfSA9ICfku6XkuIvnmoTluLjopovllY/poYzmlofnq6Dkvb/nlKjmraTnm67poZ7liIbpoZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzJ30gPSAn5Lul5LiL55uu6YyE5YiG6aGe5piv5q2k55uu6YyE5YiG6aGe55qE5a2Q55uu6YyE5YiG6aGeJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyd9ID0gJ+aCqOeiuuWumuimgeWIqumZpOatpOW4uOimi+WVj+mhjOaWh+eroO+8nyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEnfSA9ICfluLjopovllY/poYwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRRXhwbG9yZXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBFeHBsb3Jlcid9ID0gJ+aOoue0ouW4uOimi+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWljayBTZWFyY2gnfSA9ICflv6vpgJ/mkJzlsIsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2lsZGNhcmRzIGFyZSBhbGxvd2VkLid9ID0gJ+WuueioseS9v+eUqOmAmumFjeespuiZn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZHZhbmNlZCBTZWFyY2gnfSA9ICfpgLLpmo7mkJzlsIsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3ViY2F0ZWdvcmllcyd9ID0gJ+WtkOebrumMhOWIhumhnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMnfSA9ICfluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4nfSA9ICfmspLmnInmib7liLDlrZDnm67pjITliIbpoZ7jgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZid9ID0gJ+att+WPsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfmrbflj7LlhoXlrrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WJteW7uuaZgumWkyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZC4nfSA9ICfmspLmnInmib7liLDluLjopovllY/poYzml6Xoqozmlbjmk5rjgIInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRTGFuZ3VhZ2UKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50J30gPSAn5bi46KaL5ZWP6aGM6Kqe6KiA566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBGQVEgTGFuZ3VhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBsYW5ndWFnZSd9ID0gJ+a3u+WKoOiqnuiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTGFuZ3VhZ2UnfSA9ICfmt7vliqDoqp7oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBMYW5ndWFnZSd9ID0gJ+e3qOi8r+iqnuiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/J30gPSAn5oKo56K65a6a6KaB5Yiq6Zmk5q2k6Kqe6KiA77yfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBjYW4gbm90IGRlbGV0ZSB0aGlzIGxhbmd1YWdlLiBJdCBpcyB1c2VkIGluIGF0IGxlYXN0IG9uZSBGQVEgYXJ0aWNsZSEnfSA9CiAgICAgICAgJ+aCqOeEoeazleWIqumZpOatpOiqnuiogOOAguWug+iiq+iHs+WwkeS4gOevh+W4uOimi+WVj+mhjOaWh+eroOS9v+eUqOS4reOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSd9ID0gJ+S7peS4i+W4uOimi+WVj+mhjOaWh+eroOato+S9v+eUqOatpOebrumMhOWIhumhnic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+S4iuS4i+aWh+ioree9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgYXJ0aWNsZXMgcGVyIHBhZ2UnfSA9ICfluLjopovllY/poYzmlofnq6Av6aCBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIEZBUSBkYXRhIGZvdW5kLid9ID0gJ+aykuacieaJvuWIsOW4uOimi+WVj+mhjOaVuOaTmuOAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J291dCBvZiA1J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudEZBUVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5d29yZCd9ID0gJ+mXnOmNteWtlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIChlLiBnLiBFcXVhbHMgMTAgb3IgR3JlYXRlclRoYW4gNjApJ30gPSAn5oqV56WoICjkvovvvJrnrYnmlrwxMOaIluWkp+aWvDYwKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlIChlLiBnLiBFcXVhbHMgMjUlIG9yIEdyZWF0ZXJUaGFuIDc1JSknfSA9ICfoqZXliIYgKOS+i++8muetieaWvDI1JeaIluWkp+aWvDc1JSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwcm92ZWQnfSA9ICflt7LpgJrpgY7lr6nmibknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5pyA5b6M5L+u5pS55pa8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJ30gPSAn5bi46KaL5ZWP6aGM5paH56ug5Ym15bu65pmC6ZaTICjkuYvliY0v5LmL5b6MKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICfluLjopovllY/poYzmlofnq6DlibXlu7rmmYLplpMo5LmL6ZaTKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJ+W4uOimi+WVj+mhjOaWh+eroOabtOaWsOaZgumWkyjkuYvliY0v5LmL5b6MKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZSBDaGFuZ2UgVGltZSAoYmV0d2VlbiknfSA9ICfluLjopovllY/poYzmlofnq6Dmm7TmlrDmmYLplpMo5LmL6ZaTKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRRnVsbHRleHQnfSA9ICfluLjopovllY/poYzlhajmloflhaflrrknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRU2VhcmNoU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBTZWFyY2gnfSA9ICfluLjopovllY/poYzmkJzlsIsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZmlsZSBTZWxlY3Rpb24nfSA9ICfmqpTmoYjos4fmlpnpgbjpoIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSd9ID0gJ+aKleelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlIHNldHRpbmdzJ30gPSAn5rKS5pyJ5oqV56Wo6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHZvdGVzJ30gPSAn5oyH5a6a6YG456WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2UuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCd9ID0gJ+S+i++8muetieaWvDEw5oiW5aSn5pa8NjAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSd9ID0gJ+ipleWIhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByYXRlIHNldHRpbmdzJ30gPSAn5rKS5pyJ6KmV5YiG6Kit5a6aJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWNpZmljIHJhdGUnfSA9ICfmjIflrproqZXliIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUnfSA9ICfkvovvvJrnrYnmlrwyNSXmiJblpKfmlrw3NSUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUnfSA9ICfluLjopovllY/poYzmlofnq6DlibXlu7rmmYLplpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUnfSA9ICfluLjopovllY/poYzmlofnq6Dnt6jovK/mmYLplpMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50RkFRWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEluZm9ybWF0aW9uJ30gPSAn5bi46KaL5ZWP6aGM6LOH6KiKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhdGluZyd9ID0gJ+ipleWIhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3Rlcyd9ID0gJ+mBuOelqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2b3RlcyBmb3VuZCEnfSA9ICfmspLmnInmib7liLDpgbjnpajvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdm90ZXMgZm91bmQhIEJlIHRoZSBmaXJzdCBvbmUgdG8gcmF0ZSB0aGlzIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb3dubG9hZCBBdHRhY2htZW50J30gPSAn5LiL6LyJ6ZmE5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBoZWxwZnVsJ30gPSAn5rKS5pyJ5bmr5YqpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ZlcnkgaGVscGZ1bCd9ID0gJ+W+iOacieW5q+WKqSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRGQVFab29tU21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgdGl0bGUgdG8gYXJ0aWNsZSBzdWJqZWN0J30gPSAn5re75Yqg5bi46KaL5ZWP6aGM5qiZ6aGM5Yiw5paH56ug5qiZ6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCd9ID0gJ+aPkuWFpeW4uOimi+WVj+mhjOaWh+Wtlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnQgRnVsbCBGQVEnfSA9ICfmj5LlhaXlhajpg6jluLjopovllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZBUSBMaW5rJ30gPSAn5o+S5YWl5bi46KaL5ZWP6aGM6YCj57WQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydCBGQVEgVGV4dCAmIExpbmsnfSA9ICfmj5LlhaXluLjopovllY/poYzmloflrZflj4rpgKPntZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0IEZ1bGwgRkFRICYgTGluayd9ID0gJ+aPkuWFpeWFqOmDqOW4uOimi+WVj+mhjOWPiumAo+e1kCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFFeHBsb3JlcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gRkFRIGFydGljbGVzIGZvdW5kLid9ID0gJ+aykuacieaJvuWIsOW4uOimi+WVj+mhjOaWh+eroOOAgic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbWlnaHQgYmUgaGVscGZ1bCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgYSBzdWJqZWN0IG9yIHRleHQgdG8gZ2V0IGEgbGlzdCBvZiBoZWxwZnVsIHJlc291cmNlcy4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVyRkFRU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiAiSm9obipuIiBvciAiV2lsbCoiKSd9ID0gJ+W4uOimi+WVj+mhjOaWh+eroOWFqOaWh+aqoue0oiAo5L6L77yaIkpvaG4qbiIg5oiWICJXaWxsKiIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgcmVzdHJpY3Rpb25zJ30gPSAn5oqV56Wo6ZmQ5Yi25qKd5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4nfSA9ICflj6rmmK/mnInooqvmipXpgbjnmoTluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmF0ZSByZXN0cmljdGlvbnMnfSA9ICfoqZXliIbpmZDliLbmop3ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgd2l0aCByYXRlLi4uJ30gPSAn5Y+q5piv5pyJ6KmV5YiG55qE5bi46KaL5ZWP6aGM5paH56ugJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgcmVzdHJpY3Rpb25zJ30gPSAn5pmC6ZaT5p+l6Kmi5qKd5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQnfSA9ICflj6rmmK/lt7LlibXlu7rnmoTluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn5Y+q5piv5bi46KaL5ZWP6aGM5paH56ug5Ym15bu65pa8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaC1Qcm9maWxlIGFzIFRlbXBsYXRlPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJGQVFab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcnRpY2xlIE51bWJlcid9ID0gJ+aWh+eroOe3qOiZnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCd9ID0gJ+eUqOmXnOmNteWtl+aQnOWwi+aWh+eroCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMnfSA9ICflhazplosnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY0ZBUVNlYXJjaFJlc3VsdFNob3J0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrIHRvIEZBUSBFeHBsb3Jlcid9ID0gJ+WbnuWIsOW4uOimi+WVj+mhjOeAj+imveWZqCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNhdGVnb3JpZXMgZm91bmQgd2hlcmUgdXNlciBoYXMgcmVhZC93cml0ZSBwZXJtaXNzaW9ucyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmYXVsdCBsYW5ndWFnZSBmb3VuZCBhbmQgY2FuXCd0IGNyZWF0ZSBhIG5ldyBvbmUuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUNhdGVnb3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIENhdGVnb3J5SUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgY2F0ZWdvcnkgc2hvdWxkIGhhdmUgYSBuYW1lISd9ID0gJ+ebrumMhOWIhumhnuW/hemgiOacieWQjeeosSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjYXRlZ29yeSBhbHJlYWR5IGV4aXN0cyd9ID0gJ+atpOebrumMhOWIhumhnuW3sue2k+WtmOWcqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDYXRlZ29yeUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGNhdGVnb3J5IHVwZGF0ZWQhJ30gPSAn5bi46KaL5ZWP6aGM55uu6YyE5YiG6aGe5bey5pu05pawISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgY2F0ZWdvcnkgYWRkZWQhJ30gPSAn5bi46KaL5ZWP6aGM55uu6YyE5YiG6aGe5bey5re75YqgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ2F0ZWdvcnknfSA9ICfliKrpmaTnm67pjITliIbpoZ4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIEZBUSBhcnRpY2xlICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIENhdGVnb3J5SUQgJXMgaXMgaW52YWxpZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgYXMgbm8gSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSGlzdG9yeSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFKb3VybmFsLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSm91cm5hbCd9ID0gJ+W4uOimi+WVj+mhjOaXpeiqjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIG9wdGlvbiBGQVE6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICIlcyIhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudEZBUUxhbmd1YWdlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBMYW5ndWFnZUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBpcyByZXF1aXJlZCEnfSA9ICflkI3nqLHngrrlv4XpoIjnmoQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMhJ30gPSAn5q2k6Kqe6KiA5bey5a2Y5ZyoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIGxhbmd1YWdlIHVwZGF0ZWQhJ30gPSAn5bi46KaL5ZWP6aGM6Kqe6KiA5bey5pu05pawISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgbGFuZ3VhZ2UgYWRkZWQhJ30gPSAn5bi46KaL5ZWP6aGM6Kqe6KiA5bey5re75YqgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgTGFuZ3VhZ2UgJXMnfSA9ICfliKrpmaToqp7oqIAgJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdCd9ID0gJ+e1kOaenCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IHVwZGF0ZSd9ID0gJ+acgOW+jOabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRHluYW1pYyBGaWVsZHMnfSA9ICfluLjopovllY/poYzli5XmhYvmrITkvY0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRUmljaFRleHQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vICVzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3QgbG9hZCBMYW5ndWFnZU9iamVjdCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn5rKS5pyJ57WQ5p6cISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgTnVtYmVyJ30gPSAn5bi46KaL5ZWP6aGM57eo6JmfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgQ2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmVmb3JlL2FmdGVyKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgSXRlbSBDcmVhdGUgVGltZSAoYmV0d2VlbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmVhdGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JlYXRlciB0aGFuIGVxdWFscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTbWFsbGVyIHRoYW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU21hbGxlciB0aGFuIGVxdWFscyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRGQVFab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEZpbGVJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmtzIGZvciB5b3VyIHZvdGUhJ30gPSAn5oSf6Kyd5oKo55qE5oqV56WoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkISd9ID0gJ+aCqOW3see2k+aKleelqCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmF0ZSBzZWxlY3RlZCEnfSA9ICfmspLmnInpgbjlj5boqZXliIYhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJGQVFQcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGUgUHJpbnQnfSA9ICfluLjopovllY/poYzmlofnq6DliJfljbAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIGJldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVyRkFRWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBJdGVtSUQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNGQVFFeHBsb3Jlci5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknfSA9ICfluLjopovllY/poYzmlofnq6AgKOaWsOa3u+WKoCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKSd9ID0gJ+W4uOimi+WVj+mhjOaWh+eroCAo5pyA6L+R5pu05pawKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgQXJ0aWNsZXMgKFRvcCAxMCknfSA9ICfluLjopovllY/poYzmlofnq6AgKOmmljEw56+HKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljRkFRUlNTLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBUeXBlIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IGNyZWF0ZSBSU1MgZmlsZSEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9IZWFkZXJNZXRhL0FnZW50RkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAoRkFRRnVsbHRleHQpJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSGVhZGVyTWV0YS9DdXN0b21lckZBUVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnJXMgLSBDdXN0b21lciAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gQ3VzdG9tZXIgKEZBUUZ1bGx0ZXh0KSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0hlYWRlck1ldGEvUHVibGljRkFRU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyclcyAtIFB1YmxpYyAoJXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JyVzIC0gUHVibGljIChGQVFGdWxsdGV4dCknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvRkFRLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIHJhdGUhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgYXJ0aWNsZSBpcyBlbXB0eSEnfSA9ICfmraTmlofnq6Dngrrnqbrnmb0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcyd9ID0gJ+acgOi/kea3u+WKoOeahOW4uOimi+WVj+mhjOaWh+eroCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnfSA9ICfmnIDov5Hmm7TmlrDluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG9wIDEwIEZBUSBhcnRpY2xlcyd9ID0gJ+mmljEw56+H5bi46KaL5ZWP6aGM5paH56ugJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvTGlua09iamVjdC9GQVEucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRlbnQgVHlwZSd9ID0gJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgRGVmaW5pdGlvbjogRkFRLnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2ludGVybmFsJ30gPSAn5YWn6YOo55qEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2V4dGVybmFsJ30gPSAn5aSW6YOo55qEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyd9ID0gJ+WFrOmWi+eahCc7CgogICAgIyBKUyBGaWxlOiBGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBmaWx0ZXIgZm9yIEhUTUwgb3V0cHV0IHRvIGFkZCBsaW5rcyBiZWhpbmQgYSBkZWZpbmVkIHN0cmluZy4gVGhlIGVsZW1lbnQgSW1hZ2UgYWxsb3dzIHR3byBpbnB1dCBraW5kcy4gRmlyc3QgdGhlIG5hbWUgb2YgYW4gaW1hZ2UgKGUuZy4gZmFxLnBuZykuIEluIHRoaXMgY2FzZSB0aGUgT1RSUyBpbWFnZSBwYXRoIHdpbGwgYmUgdXNlZC4gVGhlIHNlY29uZCBwb3NzaWJpbGl0eSBpcyB0byBpbnNlcnQgdGhlIGxpbmsgdG8gdGhlIGltYWdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBGQVEgYXJ0aWNsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDU1MgY29sb3IgZm9yIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+mBuOelqOe1kOaenOS9v+eUqOeahENTUyDpoY/oibInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FjaGUgVGltZSBUbyBMZWF2ZSBmb3IgRkFRIGl0ZW1zLid9ID0gJ+mboumWi+W4uOimi+WVj+mhjOmgheebrueahOe3qeWtmOaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXRlZ29yeSBNYW5hZ2VtZW50J30gPSAn55uu6YyE5YiG6aGe566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhdGVnb3J5IE1hbmFnZW1lbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgRkFRIFJlbGF0ZWQgQXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIEZBUSBab29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEgc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlY2ltYWwgcGxhY2VzIG9mIHRoZSB2b3RpbmcgcmVzdWx0Lid9ID0gJ+mBuOelqOe1kOaenOWwj+aVuOS9jSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGNhdGVnb3J5IG5hbWUuJ30gPSAn6buY6Kix55uu6YyE5YiG6aGe5ZCN56ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgbGFuZ3VhZ2UgZm9yIEZBUSBhcnRpY2xlcyBvbiBzaW5nbGUgbGFuZ3VhZ2UgbW9kZS4nfSA9ICfllq7kuIDoqp7oqIDmqKHlvI/kuIvnmoTluLjopovllY/poYzmlofnq6Dpu5joqLHoqp7oqIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBtYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duLid9ID0KICAgICAgICAn6buY6Kix5bi46KaL5ZWP6aGM5paH56ug5qiZ6aGM6aGv56S655qE5pyA5aSn5YC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgcHJpb3JpdHkgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9CiAgICAgICAgJ+etieW+heWvqeaJueW4uOimi+WVj+mhjOaWh+eroOW3peWWrumgkOioreWEquWFiOWAvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN0YXRlIGZvciBGQVEgZW50cnkuJ30gPSAn5bi46KaL5ZWP6aGM5qKd55uu6aCQ6Kit54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3RhdGUgb2YgdGlja2V0cyBmb3IgdGhlIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlcy4nfSA9ICfnrYnlvoXlr6nmibnluLjopovllY/poYzmlofnq6DnmoTlt6Xllq7pu5joqLHni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB0eXBlIG9mIHRpY2tldHMgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn562J5b6F5a+p5om55bi46KaL5ZWP6aGM5paH56ug55qE5bel5Zau6buY6Kix6aGe5YilJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgdmFsdWUgZm9yIHRoZSBBY3Rpb24gcGFyYW1ldGVyIGZvciB0aGUgcHVibGljIGZyb250ZW5kLiBUaGUgQWN0aW9uIHBhcmFtZXRlciBpcyB1c2VkIGluIHRoZSBzY3JpcHRzIG9mIHRoZSBzeXN0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgaWYgdGhlIEZBUSB0aXRsZSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHRvIGFydGljbGUgc3ViamVjdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgd2hpY2ggY29sdW1ucyBhcmUgc2hvd24gaW4gdGhlIGxpbmtlZCBGQVFzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOb3RlOiBPbmx5IEZBUSBhdHRyaWJ1dGVzIGFuZCBkeW5hbWljIGZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZCBmb3IgRGVmYXVsdENvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIEZBUSBqb3VybmFsLid9ID0KICAgICAgICAn6Kit5a6a6aGv56S65bi46KaL5ZWP6aGM5pel6KqM5bCP5qqi6Zax5qih5byP55qE5qaC5rOB5qih57WEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBGQVEgbGlzdC4nfSA9CiAgICAgICAgJ+ioreWumumhr+ekuuW4uOimi+WVj+mhjOWIl+ihqOWwj+aqoumWseaooeW8j+eahOamguazgeaooee1hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBhdHRyaWJ1dGUgZm9yIEZBUSBzb3J0aW5nIGluIGEgRkFRIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIGF0dHJpYnV0ZSBmb3IgRkFRIHNvcnRpbmcgaW4gYSBGQVEgc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiBhIEZBUSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgYXR0cmlidXRlIGZvciBGQVEgc29ydGluZyBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IEZBUSBvcmRlciBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBGQVEgb3JkZXIgb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgRkFRIG9yZGVyIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBGQVEgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgRkFRIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaW5mb3JtYXRpb24gdG8gYmUgaW5zZXJ0ZWQgaW4gYSBGQVEgYmFzZWQgVGlja2V0LiAiRnVsbCBGQVEiIGluY2x1ZGVzIHRleHQsIGF0dGFjaG1lbnRzIGFuZCBpbmxpbmUgaW1hZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZC4gIkxpbWl0IiBkZWZpbmVzIHRoZSBudW1iZXIgb2YgZW50cmllcyBkaXNwbGF5ZWQgYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgaW5kaWNhdGVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBGQVEgRXhwbG9yZXIuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIGpvdXJuYWwuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgRkFRIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoZXJlIHRoZSBcJ0luc2VydCBGQVFcJyBsaW5rIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ+ioreWumiBcJ+aPkuWFpeW4uOimi+WVj+mhjFwnIOmhr+ekuuS9jee9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIG9mIEZBUSBpdGVtIGZyZWUgdGV4dCBmaWVsZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHRoaXMgRkFRJ30gPSAn5Yiq6Zmk5q2k5bi46KaL5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgYWRkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgZWRpdCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgcHJpbnQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBwcmludCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHByaW50IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHNlYXJjaCBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSBzbWFsbCBmb3JtYXQgb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIEZBUSB6b29tIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBGQVEgem9vbSBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgRkFRIHpvb20gc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgdGhpcyBGQVEnfSA9ICfnt6jovK/mraTluLjopovllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG11bHRpcGxlIGxhbmd1YWdlcyBvbiBGQVEgbW9kdWxlLid9ID0gJ+WVk+eUqOW4uOimi+WVj+mhjOaooee1hOWkmueoruiqnuiogCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgdGhlIHJlbGF0ZWQgYXJ0aWNsZSBmZWF0dXJlIGZvciB0aGUgY3VzdG9tZXIgZnJvbnRlbmQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHZvdGluZyBtZWNoYW5pc20gb24gRkFRIG1vZHVsZS4nfSA9ICfllZPnlKjluLjopovllY/poYzmqKHntYTmipXnpajmqZ/liLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwbG9yZXInfSA9ICfngI/opr3lmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEFKQVggUmVzcG9uZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBSkFYIFJlc3BvbmRlciBmb3IgUmljaHRleHQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBBcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRGVsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGQVEgRWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIEhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfluLjopovllY/poYzml6XoqozmpoLms4EgIuWwjyIg5qih5byP6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn5bi46KaL5ZWP6aGM5qaC5rOBICLlsI8i5qih5byP6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZBUSBQcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRkFRIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZDQnfSA9ICfmrITkvY00JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkNSd9ID0gJ+ashOS9jTUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnVsbCBGQVEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JvdXAgZm9yIHRoZSBhcHByb3ZhbCBvZiBGQVEgYXJ0aWNsZXMuJ30gPSAn5bi46KaL5ZWP6aGM5paH56ug5a+p5om555So5oi257WEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgdGhpcyBGQVEnfSA9ICfmraTluLjopovllY/poYzmrbflj7InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZSBpbnRlcm5hbCBmaWVsZHMgb24gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ+W4uOimi+WVj+mhjOeCuuacrOeahOW3peWWruWMheWQq+eahOWFp+mDqOashOS9jSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlIHRoZSBuYW1lIG9mIGVhY2ggZmllbGQgaW4gYSBGQVEgYmFzZWQgVGlja2V0Lid9ID0gJ+W4uOimi+WVj+mhjOeCuuacrOeahOW3peWWruWMheWQq+eahOavj+S4gOashOS9jeWQjeeosSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcmZhY2VzIHdoZXJlIHRoZSBxdWljayBzZWFyY2ggc2hvdWxkIGJlIHNob3duLid9ID0gJ+mhr+ekuuW/q+mAn+aQnOWwi+eahOS7i+mdoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydKb3VybmFsJ30gPSAn5pel6KqMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmd1YWdlIE1hbmFnZW1lbnQnfSA9ICfoqp7oqIDnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZ3VhZ2UgTWFuYWdlbWVudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIHRoZSBzZWFyY2ggdG8gYnVpbGQgdGhlIGtleXdvcmQgRkFRIGFydGljbGUgbGlzdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBhbm90aGVyIG9iamVjdCB0byB0aGlzIEZBUSBpdGVtJ30gPSAn6YCj57WQ5YW25LuW54mp5Lu25Yiw5q2k5bi46KaL5ZWP6aGM54mp5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgcXVldWUgbmFtZXMgZm9yIHdoaWNoIHRoZSByZWxhdGVkIGFydGljbGUgZmVhdHVyZSBpcyBlbmFibGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2Ygc3RhdGUgdHlwZXMgd2hpY2ggY2FuIGJlIHVzZWQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWLmeWToeS7i+mdouWPr+S9v+eUqOeahOeLgOaFi+WIhumhnuWIl+ihqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIHN0YXRlIHR5cGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLbku4vpnaLlj6/kvb/nlKjnmoTni4DmhYvliIbpoZ7liJfooagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBzdGF0ZSB0eXBlcyB3aGljaCBjYW4gYmUgdXNlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOmWi+S7i+mdouWPr+S9v+eUqOeahOeLgOaFi+WIhumhnuWIl+ihqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWLmeWToeS7i+mdouWPr+mhr+ekuuaWvOW4uOimi+WVj+mhjOeAj+imveWZqOe1kOaenOeahOW4uOimi+WVj+mhjOaWh+eroOacgOWkmuaVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgRXhwbG9yZXIgcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLbku4vpnaLlj6/poa/npLrmlrzluLjopovllY/poYzngI/opr3lmajntZDmnpznmoTluLjopovllY/poYzmlofnq6DmnIDlpKfmlbjph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOmWi+S7i+mdouWPr+mhr+ekuuaWvOW4uOimi+WVj+mhjOeAj+imveWZqOe1kOaenOeahOW4uOimi+WVj+mhjOaWh+eroOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBGQVEgam91cm5hbCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5YuZ5ZOh5LuL6Z2i5Y+v6aGv56S65pa85bi46KaL5ZWP6aGM5pel6KqM55qE5bi46KaL5ZWP6aGM5paH56ug5pyA5aSn5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5YuZ5ZOh5LuL6Z2i5Y+v6aGv56S65pa85pCc5bCL57WQ5p6c55qE5bi46KaL5ZWP6aGM5paH56ug5pyA5aSn5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi25LuL6Z2i5Y+v6aGv56S65pa85pCc5bCL57WQ5p6c55qE5bi46KaL5ZWP6aGM5paH56ug5pyA5aSn5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiBhIHNlYXJjaCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWFrOmWi+S7i+mdouWPr+mhr+ekuuaWvOaQnOWwi+e1kOaenOeahOW4uOimi+WVj+mhjOaWh+eroOacgOWkp+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgRXhwbG9yZXIgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBzaXplIG9mIHRoZSB0aXRsZXMgaW4gYSBGQVEgYXJ0aWNsZSB0byBiZSBzaG93biBpbiB0aGUgRkFRIFNlYXJjaCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBTZWFyY2ggaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIHNpemUgb2YgdGhlIHRpdGxlcyBpbiBhIEZBUSBhcnRpY2xlIHRvIGJlIHNob3duIGluIHRoZSBGQVEgU2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gc2l6ZSBvZiB0aGUgdGl0bGVzIGluIGEgRkFRIGFydGljbGUgdG8gYmUgc2hvd24gaW4gdGhlIEZBUSBqb3VybmFsIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIEhUTUwgT3BlblNlYXJjaCBwcm9maWxlIGZvciBzaG9ydCBGQVEgc2VhcmNoIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBodG1sIE9wZW5TZWFyY2ggcHJvZmlsZSBmb3Igc2hvcnQgRkFRIHNlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgRkFRIEFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBGQVEgYXJ0aWNsZXMgbmVlZCBhcHByb3ZhbCBiZWZvcmUgdGhleSBnZXQgcHVibGlzaGVkLid9ID0gJ+aWsOW4uOimi+WVj+mhjOaWh+eroOeZvOS9iOWJjemcgOimgee2k+mBjuWvqeaJuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgRkFRIEV4cGxvcmVyIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEZBUSBFeHBsb3JlciBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgRkFRIGFydGljbGVzIHRvIGJlIGRpc3BsYXllZCBvbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIEZBUSBhcnRpY2xlcyB0byBiZSBkaXNwbGF5ZWQgb24gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjaGFuZ2VzLid9ID0gJ+acgOi/keabtOaWsOmhr+ekuumgheebruaVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gbGFzdCBjcmVhdGVkLid9ID0gJ+acgOi/keWJteW7uumhr+ekuumgheebruaVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2Ygc2hvd24gaXRlbXMgaW4gdGhlIHRvcCAxMCBmZWF0dXJlLid9ID0gJ+mmljEw56+H5Yqf6IO96aGv56S66aCF55uu5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dCBmaWx0ZXIgdG8gYWRkIEphdmEtc2NyaXB0IHRvIEN1c3RvbWVyVGlja2V0TWVzc2FnZSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0IGxpbWl0IGZvciB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIEZBUSBpdGVtcyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBGQVEgam91cm5hbCBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBGQVEgaXRlbXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgRkFRIG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50IHRoaXMgRkFRJ30gPSAn5YiX5Y2w5q2k5bi46KaL5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgUHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEgWm9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIEZBUSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBGQVEuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXVlIGZvciB0aGUgYXBwcm92YWwgb2YgRkFRIGFydGljbGVzLid9ID0gJ+W4uOimi+WVj+mhjOaWh+eroOWvqeaJueS9h+WIlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYXRlcyBmb3Igdm90aW5nLiBLZXkgbXVzdCBiZSBpbiBwZXJjZW50Lid9ID0gJ+aKleelqOipleWIhuOAguaVuOWAvOW/hemgiOeCuueZvuWIhueOh+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBGQVEnfSA9ICfmkJzlsIvluLjopovllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUSBTbWFsbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIEZBUS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGhvdyBtYW55IGl0ZW1zIHNob3VsZCBiZSBzaG93biBpbiBKb3VybmFsIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgaG93IG1hbnkgaXRlbXMgc2hvdWxkIGJlIHNob3duIGluIE92ZXJ2aWV3ICJTbWFsbCIgYnkgZGVmYXVsdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGRlZmF1bHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIGlubGluZSBIVE1MIGZpZWxkcyBpbiBBZ2VudEZBUVpvb20uJ30gPQogICAgICAgICfoqK3lrprlnKhBZ2VudEZBUVpvb23kuK3lhafltYxIVE1M5qyE5L2N6buY6Kix6auY5bqmICjlg4/ntKApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgZGVmYXVsdCBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAn6Kit5a6a5ZyoQ3VzdG9tZXJGQVFab29tICjlj4pQdWJsaWNGQVFab29tKeS4reWFp+W1jEhUTUzmrITkvY3pu5joqLHpq5jluqYgKOWDj+e0oCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBtYXhpbXVtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiBpbmxpbmUgSFRNTCBmaWVsZHMgaW4gQWdlbnRGQVFab29tLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgbWF4aW11bSBoZWlnaHQgKGluIHBpeGVscykgb2YgaW5saW5lIEhUTUwgZmllbGRzIGluIEN1c3RvbWVyRkFRWm9vbSAoYW5kIFB1YmxpY0ZBUVpvb20pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgTGluayIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsIGZvciBwdWJsaWMgRkFRIEFydGljbGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgIkluc2VydCBGQVEgVGV4dCAmIExpbmsiIC8gIkluc2VydCBGdWxsIEZBUSAmIExpbmsiIEJ1dHRvbiBpbiBBZ2VudEZBUVpvb21TbWFsbCBmb3IgcHVibGljIEZBUSBBcnRpY2xlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93ICJJbnNlcnQgRkFRIFRleHQiIC8gIkluc2VydCBGdWxsIEZBUSIgQnV0dG9uIGluIEFnZW50RkFRWm9vbVNtYWxsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgRkFRIEFydGljbGUgd2l0aCBIVE1MLid9ID0gJ+S7pUhUTUzmoLzlvI/poa/npLrluLjopovllY/poYzmlofnq6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBGQVEgcGF0aCB5ZXMvbm8uJ30gPSAn6aGv56S65bi46KaL5ZWP6aGM6Lev5b6RICjmmK8v5ZCmKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGludmFsaWQgaXRlbXMgaW4gdGhlIEZBUSBFeHBsb3JlciByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGl0ZW1zIG9mIHN1YmNhdGVnb3JpZXMuJ30gPSAn6aGv56S65a2Q55uu6YyE5YiG6aGe6aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbGFzdCBjaGFuZ2UgaXRlbXMgaW4gZGVmaW5lZCBpbnRlcmZhY2VzLid9ID0gJ+mhr+ekuuaMh+WumuS7i+mdoueahOacgOi/keabtOaWsOmgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGxhc3QgY3JlYXRlZCBpdGVtcyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn6aGv56S65oyH5a6a5LuL6Z2i55qE5pyA6L+R5Ym15bu66aCF55uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdGhlIHN0YXJzIGZvciB0aGUgYXJ0aWNsZXMgd2l0aCBhIHJhdGluZyBlcXVhbCBvciBncmVhdGVyIGxpa2UgdGhlIGRlZmluZWQgdmFsdWUgKHNldCB2YWx1ZSBcJzBcJyB0byBkZWFjdGl2YXRlIHRoZSBvdXRwdXQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgdG9wIDEwIGl0ZW1zIGluIGRlZmluZWQgaW50ZXJmYWNlcy4nfSA9ICfpoa/npLrmjIflrprku4vpnaLnmoTpppYxMOWAi+mgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IHZvdGluZyBpbiBkZWZpbmVkIGludGVyZmFjZXMuJ30gPSAn6aGv56S65oyH5a6a5LuL6Z2i55qE5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgRkFRIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIHpvb20gdmlldyBvZiBzdWNoIEZBUSBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyB0byBkZWxldGUgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBGQVEgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgRkFRIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIEZBUSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBGQVEgaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2x1dGlvbid9ID0gJ+ino+axuuaWueahiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTeW1wdG9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RleHQgT25seSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBsYW5ndWFnZXMgZm9yIHRoZSByZWxhdGVkIEZBUSBhcnRpY2xlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgRkFRLCBlLmcuIEZBUSMsIEtCIywgTXlGQVEjLiBUaGUgZGVmYXVsdCBpcyBGQVEjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgc2V0dGluZyBkZWZpbmVzIHRoYXQgYSBcJ0ZBUVwnIG9iamVjdCBjYW4gYmUgbGlua2VkIHdpdGggb3RoZXIgXCdGQVFcJyBvYmplY3RzIHVzaW5nIHRoZSBcJ05vcm1hbFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnRkFRXCcgb2JqZWN0cyB1c2luZyB0aGUgXCdQYXJlbnRDaGlsZFwnIGxpbmsgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIHNldHRpbmcgZGVmaW5lcyB0aGF0IGEgXCdGQVFcJyBvYmplY3QgY2FuIGJlIGxpbmtlZCB3aXRoIG90aGVyIFwnVGlja2V0XCcgb2JqZWN0cyB1c2luZyB0aGUgXCdOb3JtYWxcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBzZXR0aW5nIGRlZmluZXMgdGhhdCBhIFwnRkFRXCcgb2JqZWN0IGNhbiBiZSBsaW5rZWQgd2l0aCBvdGhlciBcJ1RpY2tldFwnIG9iamVjdHMgdXNpbmcgdGhlIFwnUGFyZW50Q2hpbGRcJyBsaW5rIHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGJvZHkgZm9yIGFwcHJvdmFsIG9mIEZBUSBhcnRpY2xlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgc3ViamVjdCBmb3IgYXBwcm92YWwgb2YgRkFRIGFydGljbGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvb2xiYXIgSXRlbSBmb3IgYSBzaG9ydGN1dC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9ID0gJ+WklumDqCAo5a6i5oi2KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbnRlcm5hbCAoYWdlbnQpJ30gPSAn5YWn6YOoICjmnI3li5nlk6EpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3B1YmxpYyAoYWxsKSd9ID0gJ+WFrOmWiyAgKOWFqOmDqCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHVibGljIChwdWJsaWMpJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFBZGQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlLgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKSB8fCAnJzsKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuLgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIFBlcm1pc3Npb24gY2hlY2suCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1J3fSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcncgcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIEdldCBwYXJhbWV0ZXJzIGZyb20gd2ViIHJlcXVlc3QuCiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgcXcoVGl0bGUgQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVmFsaWRJRCBLZXl3b3JkcyBBcHByb3ZlZCBGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikKICAgICAgICApCiAgICB7CiAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgfQoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBHZXQgY2F0ZWdvcmllcyAod2l0aCBjYXRlZ29yeSBsb25nIG5hbWVzKSB3aGVyZSB1c2VyIGhhcyByaWdodHMuCiAgICBteSAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIENoZWNrIHRoYXQgdGhlcmUgYXJlIGNhdGVnb3JpZXMgYXZhaWxhYmxlIGZvciB0aGlzIHVzZXIuCiAgICBpZiAoCiAgICAgICAgISRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcwogICAgICAgIHx8IHJlZiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgbmUgJ0hBU0gnCiAgICAgICAgfHwgISV7JFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBjYXRlZ29yaWVzIGZvdW5kIHdoZXJlIHVzZXIgaGFzIHJlYWQvd3JpdGUgcGVybWlzc2lvbnMhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgR2V0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvcm0gaHR0cCByZXF1ZXN0LgogICAgbXkgJUR5bmFtaWNGaWVsZFZhbHVlczsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgRXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmb3JtIHRoZSB3ZWIgcmVxdWVzdC4KICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKCiAgICBteSAkRm9ybUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKICAgIGlmICggISRGb3JtSUQgKSB7CiAgICAgICAgJEZvcm1JRCA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQ3JlYXRlKCk7CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgY29udGVudCB0eXBlCiAgICBteSAkQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CiAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CiAgICAgICAgJENvbnRlbnRUeXBlID0gJ3RleHQvaHRtbCc7CiAgICB9CgogICAgbXkgJFF1ZXVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBTaG93IHRoZSBGQVEgYWRkIHNjcmVlbi4KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBDcmVhdGUgSFRNTCBzdHJpbmdzIGZvciBhbGwgZHluYW1pYyBmaWVsZHMuCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIEdldCBmaWVsZCBIVE1MLgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyLAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgIyBHZXQgQXBwcm92YWwgcXVldWUgbmFtZS4KICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxRdWV1ZScpIHx8ICcnOwoKICAgICAgICAgICAgIyBDaGVjayBpZiBBcHByb3ZhbCBxdWV1ZSBleGlzdHMuCiAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlSUQgPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgUXVldWUgPT4gJEFwcHJvdmFsUXVldWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNob3cgbm90aWZpY2F0aW9uIGlmIEFwcHJvdmFsIHF1ZXVlIGRvZXMgbm90IGV4aXN0cy4KICAgICAgICAgICAgaWYgKCAhJEFwcHJvdmFsUXVldWVJRCApIHsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gIkZBUSBBcHByb3ZhbCBpcyBlbmFibGVkIGJ1dCBxdWV1ZSAnJEFwcHJvdmFsUXVldWUnIGRvZXMgbm90IGV4aXN0cyIsCiAgICAgICAgICAgICAgICAgICAgTGluayAgICAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAgICAgICAgICAgICAuICdBY3Rpb249QWRtaW5TeXN0ZW1Db25maWd1cmF0aW9uO1N1YmFjdGlvbj1WaWV3Q3VzdG9tR3JvdXA7TmFtZXM9RkFROjpBcHByb3ZhbFF1ZXVlJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICBVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcyA9PiAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgICAgICAgID0+IFwlRHluYW1pY0ZpZWxkSFRNTCwKCiAgICAgICAgICAgICMgTGFzdCB2aWV3ZWQgY2F0ZWdvcnkgZnJvbSBzZXNzaW9uICh3cml0dGVuIGJ5IEZBUSBleHBsb3JlcikuCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+ICRTZWxmLT57TGFzdFZpZXdlZENhdGVnb3J5fSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICk7CgogICAgICAgICMgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBTYXZlIHRoZSBGQVEuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoVGl0bGUgQ2F0ZWdvcnlJRCkpIHsKCiAgICAgICAgICAgICMgSWYgcmVxdWlyZWQgZmllbGQgaXMgbm90IGdpdmVuLCBhZGQgc2VydmVyIGVycm9yIGNsYXNzLgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcy4KICAgICAgICBteSAlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRWYWxpZGF0aW9uUmVzdWx0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkVmFsaWRhdGlvblJlc3VsdCkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgcGVyZm9ybSB2YWxpZGF0aW9uIG9uIGZpZWxkICVzIScsCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFByb3BhZ2F0ZSB2YWxpZGF0aW9uIGVycm9yIHRvIHRoZSBFcnJvciB2YXJpYWJsZSB0byBiZSBkZXRlY3RlZCBieSB0aGUgZnJvbnRlbmQuCiAgICAgICAgICAgIGlmICggJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJyBTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IGZpZWxkIEhUTUwuCiAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICBTZXJ2ZXJFcnJvciAgPT4gJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gIHx8ICcnLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57RXJyb3JNZXNzYWdlfSB8fCAnJywKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFNlbmQgc2VydmVyIGVycm9yIGlmIGFueSByZXF1aXJlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZy4KICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIEdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhLgogICAgICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIEFwcHJvdmFsIHF1ZXVlIGV4aXN0cy4KICAgICAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlSUQgPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFF1ZXVlID0+ICRBcHByb3ZhbFF1ZXVlLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIFNob3cgbm90aWZpY2F0aW9uIGlmIEFwcHJvdmFsIHF1ZXVlIGRvZXMgbm90IGV4aXN0cy4KICAgICAgICAgICAgICAgIGlmICggISRBcHByb3ZhbFF1ZXVlSUQgKSB7CiAgICAgICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIEluZm8gPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQVEgQXBwcm92YWwgaXMgZW5hYmxlZCBidXQgcXVldWUgJyRBcHByb3ZhbFF1ZXVlJyBkb2VzIG5vdCBleGlzdHMiLAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZG1pblN5c3RlbUNvbmZpZ3VyYXRpb247U3ViYWN0aW9uPVZpZXdDdXN0b21Hcm91cDtOYW1lcz1GQVE6OkFwcHJvdmFsUXVldWUnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAgICAgVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgICAgICAgPT4gXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gXCVEeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICA9PiAkQ29udGVudFR5cGUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCB0aGUgbmV3IEZBUSBpdGVtLgogICAgICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBTaG93IGVycm9yIGlmIEZBUSBpdGVtIGNvdWxkIG5vdCBiZSBhZGRlZC4KICAgICAgICBpZiAoICEkSXRlbUlEICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IGFsbCBhdHRhY2htZW50cyBmcm9tIHVwbG9hZCBjYWNoZS4KICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBXcml0ZSBhdHRhY2htZW50cwogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgYXR0YWNobWVudCBpcyBhbiBpbmxpbmUgYXR0YWNobWVudC4KICAgICAgICAgICAgbXkgJElubGluZSA9IDA7CiAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICkgewoKICAgICAgICAgICAgICAgICMgUmVtZW1iZXIgdGhhdCBpdCBpcyBpbmxpbmUuCiAgICAgICAgICAgICAgICAkSW5saW5lID0gMTsKCiAgICAgICAgICAgICAgICAjIFJlbWVtYmVyIGlmIHRoaXMgaW5saW5lIGF0dGFjaG1lbnQgaXMgdXNlZCBpbiBhbnkgRkFRIGFydGljbGUuCiAgICAgICAgICAgICAgICBteSAkQ29udGVudElERm91bmQ7CgogICAgICAgICAgICAgICAgIyBDaGVjayBhbGwgZmllbGRzIGZvciBjb250ZW50LWlkLgogICAgICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJEZpZWxkID0gJEdldFBhcmFteyAnRmllbGQnIC4gJE51bWJlciB9OwoKICAgICAgICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgZmllbGRzLgogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZDsKCiAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGZpZWxkcyB0aGF0IGRvIG5vdCBjb250YWluIHRoZSBjb250ZW50LWlkLgogICAgICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgJEZpZWxkICF+IG17ICRBdHRhY2htZW50LT57Q29udGVudElEfSB9eG1zOwoKICAgICAgICAgICAgICAgICAgICAkQ29udGVudElERm91bmQgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRklFTEQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBXZSBkbyBub3Qgd2FudCB0byBrZWVwIHRoaXMgYXR0YWNobWVudCwgYmVjYXVzZSBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgcmljaC10ZXh0IGVkaXRvcgogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkQ29udGVudElERm91bmQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRGaWxlSUQgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIElubGluZSA9PiAkSW5saW5lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJEZpbGVJRCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJElubGluZTsKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fTsKCiAgICAgICAgICAgICMgUmV3cml0ZSB0aGUgVVJMcyBvZiB0aGUgaW5saW5lIGltYWdlcyBmb3IgdGhlIHVwbG9hZGVkIHBpY3R1cmVzLgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUoCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LAogICAgICAgICAgICAgICAgRm9ybUlEICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgRmlsZUlEICAgICA9PiAkRmlsZUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSB0aGUgaW5saW5lIGltYWdlIFVSTHMgZm9yIEZBUSBJdGVtIyAnJEl0ZW1JRCchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRoZSB1cGxvYWQgY2FjaGUuCiAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmUoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICk7CgogICAgICAgICMgU2V0IGR5bmFtaWMgZmllbGRzLgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBSZWRpcmVjdCB0byBGQVEgem9vbS4KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICdBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0nIC4gJEl0ZW1JRCApOwogICAgfQp9CgpzdWIgX01hc2tOZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIEdldCBsaXN0IHR5cGUuCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgIyBHZXQgdmFsaWQgbGlzdC4KICAgIG15ICVWYWxpZExpc3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgbXkgJURhdGE7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEJ1aWxkIHZhbGlkIHNlbGVjdGlvbi4KICAgICREYXRhe1ZhbGlkT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17VmFsaWRJRH0gfHwgJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgU2V0IG5vIHNlcnZlciBlcnJvciBjbGFzcyBhcyBkZWZhdWx0LgogICAgJFBhcmFte0NhdGVnb3J5SURTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgQnVpbGQgY2F0ZWdvcnkgc2VsZWN0aW9uLgogICAgJERhdGF7Q2F0ZWdvcnlPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRQYXJhbXtVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lc30sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeUlEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplICcgLiAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICk7CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlTGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgR2V0IHRoZSBzZWxlY3RlZCBsYW5ndWFnZS4KICAgIG15ICRTZWxlY3RlZExhbmd1YWdlOwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gJiYgJExhbmd1YWdlc3sgJFBhcmFte0xhbmd1YWdlSUR9IH0gKSB7CgogICAgICAgICMgR2V0IGxhbmd1YWdlIGZyb20gZ2l2ZW4gTGFuZ3VhZ2VJRC4KICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgVXNlIHRoZSB1c2VyIGxhbmd1YWdlLCBvciBpZiBub3QgZm91bmQgJ2VuJwogICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX0gfHwgJ2VuJzsKCiAgICAgICAgIyBHZXQgdXNlciBMYW5ndWFnZUlECiAgICAgICAgbXkgJFNlbGVjdGVkTGFuZ3VhZ2VJRCA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRTZWxlY3RlZExhbmd1YWdlLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgTGFuZHVhZ2VJRCBkb2VzIG5vdCBleGlzdHMKICAgICAgICBpZiAoICEkU2VsZWN0ZWRMYW5ndWFnZUlEICkgewoKICAgICAgICAgICAgIyBHZXQgdGhlIGxvd2VzdCBsYW5ndWFnZUlEIGZyb20gdGhlIEZBUSBsYW5ndWFnZXMgbGlzdAogICAgICAgICAgICBteSBATGFuZ3VhZ2VJRHMgPSBzb3J0IGtleXMgJUxhbmd1YWdlczsKICAgICAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2VJRCA9ICRMYW5ndWFnZUlEc1swXTsKCiAgICAgICAgICAgICMgU2V0IHRoZSBsYW5ndWFnZSB3aXRoIGxvd2VzdCBMYW5ndWFnZUlEIGFzIHNlbGVjdGVkIGxhbmd1YWdlLAogICAgICAgICAgICAjICAgYXMgdGhpcyBpcyB0aGUgZmlyc3QgYW5kICh3ZSBhc3N1bWVkKSB0aGUgbW9zdCB1c2VkIGxhbmd1YWdlCiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlID0gJExhbmd1YWdlc3skU2VsZWN0ZWRMYW5ndWFnZUlEfTsKICAgICAgICB9CiAgICB9CgogICAgIyBCdWlsZCB0aGUgbGFuZ3VhZ2Ugc2VsZWN0aW9uLgogICAgJERhdGF7TGFuZ3VhZ2VPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdMYW5ndWFnZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZExhbmd1YWdlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSBAU3RhdGVUeXBlcyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpOwogICAgbXkgJVN0YXRlcyAgICAgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVHlwZXMgID0+IEBTdGF0ZVR5cGVzLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgR2V0IHRoZSBzZWxlY3RlZCBzdGF0ZS4KICAgIG15ICRTZWxlY3RlZFN0YXRlOwogICAgaWYgKCAkUGFyYW17U3RhdGVJRH0gJiYgJFN0YXRlc3sgJFBhcmFte1N0YXRlSUR9IH0gKSB7CgogICAgICAgICMgR2V0IHN0YXRlIGZyb20gZ2l2ZW4gU3RhdGVJRC4KICAgICAgICAkU2VsZWN0ZWRTdGF0ZSA9ICRTdGF0ZXN7ICRQYXJhbXtTdGF0ZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgR2V0IGRlZmF1bHQgc3RhdGUuCiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6U3RhdGUnKSB8fCAnaW50ZXJuYWwgKGFnZW50KSc7CiAgICB9CgogICAgIyBCdWlsZCB0aGUgc3RhdGUgc2VsZWN0aW9uLgogICAgJERhdGF7U3RhdGVPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVN0YXRlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdTdGF0ZUlEJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRTZWxlY3RlZFN0YXRlLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIFNob3cgYXR0YWNobWVudHMuCiAgICBBVFRBQ0hNRU5UOgogICAgbXkgQEF0dGFjaG1lbnRMaXN0OwogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAjIERvIG5vdCBzaG93IGlubGluZSBpbWFnZXMgYXMgYXR0YWNobWVudHMgKHRoZXkgaGF2ZSBhIENvbnRlbnRJRCkuCiAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgIHB1c2ggQHsgJFBhcmFte0F0dGFjaG1lbnRMaXN0fSB9LCAkQXR0YWNobWVudDsKICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGQVFBZGQnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgU2hvdyBsYW5ndWFnZXMgZmllbGQuCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBHZXQgZGVmYXVsdCBsYW5ndWFnZS4KICAgICAgICBteSAkRGVmYXVsdExhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkRlZmF1bHQ6Okxhbmd1YWdlJykgfHwgJ2VuJzsKCiAgICAgICAgIyBHZXQgZGVmYXVsdCBMYW5ndWFnZUlECiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAkRGVmYXVsdExhbmd1YWdlLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIGRlZmF1bHQgbGFuZ3VhZ2UgaWYgaXQgd2FzIGRlbGV0ZWQgb3IgZG9lcyBub3QgZXhpc3RzLgogICAgICAgIGlmICggISRMYW5ndWFnZUlEICkgewogICAgICAgICAgICBteSAkSW5zZXJ0TGFuZ3VhZ2UgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkRGVmYXVsdExhbmd1YWdlLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkSW5zZXJ0TGFuZ3VhZ2UgKSB7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gd2l0aCBlcnJvciBzY3JlZW4uCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIGRlZmF1bHQgbGFuZ3VhZ2UgZm91bmQgYW5kIGNhblwndCBjcmVhdGUgYSBuZXcgb25lLicpLAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IGRlZmF1bHQgTGFuZ3VhZ2VJRC4KICAgICAgICAgICAgJExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmF1bHRMYW5ndWFnZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtMYW5ndWFnZUlEfSA9ICRMYW5ndWFnZUlEOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9MYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNob3cgYXBwcm92YWwgZmllbGQuCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgKSB7CgogICAgICAgICMgQ2hlY2sgcGVybWlzc2lvbi4KICAgICAgICBteSAlR3JvdXBzID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICAgICApOwoKICAgICAgICAjIEdldCB0aGUgRkFRIGFwcHJvdmFsIGdyb3VwIGZyb20gY29uZmlnLgogICAgICAgIG15ICRBcHByb3ZhbEdyb3VwID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKSB8fCAnJzsKCiAgICAgICAgIyBCdWlsZCB0aGUgYXBwcm92YWwgc2VsZWN0aW9uIGlmIHVzZXIgaXMgaW4gdGhlIGFwcHJvdmFsIGdyb3VwLgogICAgICAgIGlmICggJEdyb3Vwc3skQXBwcm92YWxHcm91cH0gKSB7CgogICAgICAgICAgICAkRGF0YXtBcHByb3ZhbE9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIDAgPT4gVHJhbnNsYXRhYmxlKCdObycpLAogICAgICAgICAgICAgICAgICAgIDEgPT4gVHJhbnNsYXRhYmxlKCdZZXMnKSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtBcHByb3ZlZH0gfHwgMCwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXBwcm92YWwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIEdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlLgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IikgfHwgJyc7CgogICAgIyBBZGQgcmljaCB0ZXh0IGVkaXRvciBKYXZhU2NyaXB0IG9ubHkgaWYgYWN0aXZhdGVkIGFuZCB0aGUgYnJvd3NlciBjYW4gaGFuZGxlIGl0CiAgICAjICAgb3RoZXJ3aXNlIGp1c3QgYSB0ZXh0LWFyZWEgaXMgc2hvd24KICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gJiYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKSApIHsKCiAgICAgICAgIyBVc2UgaGVpZ2h0L3dpZHRoIGRlZmluZWQgZm9yIHRoaXMgc2NyZWVuLgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkQ29uZmlnLT57UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRDb25maWctPntSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgIyBTZXQgdXAgcmljaCB0ZXh0IGVkaXRvci4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5TZXRSaWNoVGV4dFBhcmFtZXRlcnMoCiAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgU2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzLgogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+IEBTdGF0ZVR5cGVzLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgU2hvdyBGQVEgQ29udGVudC4KICAgICRMYXlvdXRPYmplY3QtPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgRHluYW1pYyBmaWVsZHMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBTa2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZC4KICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoCiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICk7CgogICAgICAgICMgR2V0IHRoZSBIVE1MIHN0cmluZ3MgZm9ybSAkUGFyYW0uCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkUGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgRmllbGQgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntGaWVsZH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBFeGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgRmllbGQgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntGaWVsZH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFBZGQnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFDYXRlZ29yeTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBydyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgR2V0IHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhDYXRlZ29yeUlEIE5hbWUgUGFyZW50SUQgQ29tbWVudCBWYWxpZElEKSkgewogICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKICAgIH0KCiAgICAjIFNldCBkZWZhdWx0cwogICAgJEdldFBhcmFte0NhdGVnb3J5SUR9IHx8PSAwOwogICAgJEdldFBhcmFte1BhcmVudElEfSAgIHx8PSAwOwoKICAgICMgR2V0IGFycmF5IHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgIEB7ICRHZXRQYXJhbXtQZXJtaXNzaW9uR3JvdXBzfSB9ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ1Blcm1pc3Npb25Hcm91cHMnICk7CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIENoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CgogICAgICAgIGlmICggISRHZXRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIENhdGVnb3J5SUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIEdldCBwZXJtaXNzaW9uIGdyb3Vwcy4KICAgICAgICAkQ2F0ZWdvcnlEYXRhe1Blcm1pc3Npb25Hcm91cHN9ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHcm91cEdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkR2V0UGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBDaGFuZ2UgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2hhbmdlQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhcmVudElEIFZhbGlkSUQpKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewoKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTmVlZCAlcyEnLCAkUGFyYW1OYW1lICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlRXJyb3I7CiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE5hbWUgQ29tbWVudCBQZXJtaXNzaW9uR3JvdXBzKSkgewoKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewoKICAgICAgICAgICAgICAgICMgQWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcy4KICAgICAgICAgICAgICAgICRFcnJvcnsgJFBhcmFtTmFtZSAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CgogICAgICAgICAgICAgICAgIyBBZGQgc2VydmVyIGVycm9yIHN0cmluZyBmb3IgY2F0ZWdvcnkgbmFtZSBmaWVsZC4KICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gKSB7CgogICAgICAgICAgICAjIENoZWNrIGZvciBkdXBsaWNhdGUgY2F0ZWdvcnkgbmFtZSB3aXRoIHRoZSBzYW1lIHBhcmVudCBjYXRlZ29yeS4KICAgICAgICAgICAgbXkgJENhdGVnb3J5RXhpc3RzQWxyZWFkeSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJEdldFBhcmFte05hbWV9LAogICAgICAgICAgICAgICAgUGFyZW50SUQgICA9PiAkR2V0UGFyYW17UGFyZW50SUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkQ2F0ZWdvcnlFeGlzdHNBbHJlYWR5KSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGlzIGNhdGVnb3J5IGFscmVhZHkgZXhpc3RzJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgU2VuZCBzZXJ2ZXIgZXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtZXRlciBpcyBtaXNzaW5nIG9yIHdyb25nLgogICAgICAgIGlmICglRXJyb3IpIHsKCiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgIG15ICRDYXRlZ29yeVVwZGF0ZVN1Y2Nlc3NmdWwgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVVwZGF0ZSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJENhdGVnb3J5VXBkYXRlU3VjY2Vzc2Z1bCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRHZXRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiAkR2V0UGFyYW17UGVybWlzc2lvbkdyb3Vwc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07Tm90aWZpY2F0aW9uPVVwZGF0ZSIgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEFkZAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZCcgKSB7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0FkZCcsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFkZCBhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIENoZWNrIHJlcXVpcmVkIHBhcmFtZXRlcnMuCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhcmVudElEIFZhbGlkSUQpKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzIScsICRQYXJhbU5hbWUgKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoTmFtZSBDb21tZW50IFBlcm1pc3Npb25Hcm91cHMpKSB7CgogICAgICAgICAgICAjIElmIHJlcXVpcmVkIGZpZWxkIGlzIG5vdCBnaXZlbi4KICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewoKICAgICAgICAgICAgICAgICMgQWRkIHZhbGlkYXRpb24gY2xhc3MgYW5kIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcy4KICAgICAgICAgICAgICAgICRFcnJvcnsgJFBhcmFtTmFtZSAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CgogICAgICAgICAgICAgICAgIyBBZGQgc2VydmVyIGVycm9yIHN0cmluZyBmb3IgY2F0ZWdvcnkgbmFtZSBmaWVsZC4KICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdBIGNhdGVnb3J5IHNob3VsZCBoYXZlIGEgbmFtZSEnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gKSB7CgogICAgICAgICAgICAjIENoZWNrIGZvciBkdXBsaWNhdGUgY2F0ZWdvcnkgbmFtZSB3aXRoIHRoZSBzYW1lIHBhcmVudCBjYXRlZ29yeQogICAgICAgICAgICBteSAkQ2F0ZWdvcnlFeGlzdHNBbHJlYWR5ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEdXBsaWNhdGVDaGVjaygKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEdldFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgID0+ICRHZXRQYXJhbXtQYXJlbnRJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCRDYXRlZ29yeUV4aXN0c0FscmVhZHkpIHsKICAgICAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgY2F0ZWdvcnkgYWxyZWFkeSBleGlzdHMhJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgU2VuZCBzZXJ2ZXIgZXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtZXRlcnMgYXJlIG1pc3Npbmcgb3Igd3JvbmcKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjIEhUTUwgb3V0cHV0CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQWRkJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRQ2F0ZWdvcnknLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCBuZXcgY2F0ZWdvcnkuCiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiAkR2V0UGFyYW17UGVybWlzc2lvbkdyb3Vwc30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07Tm90aWZpY2F0aW9uPUFkZCIgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERlbGV0ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZScgKSB7CgogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5SUQnICkgfHwgJyc7CiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDYXRlZ29yeUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISVDYXRlZ29yeURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgYWxsIGFmZmVjdGVkIEZBUSBhcnRpY2xlcwogICAgICAgIG15IEBBZmZlY3RlZEl0ZW1zID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICAgICBDYXRlZ29yeUlEcyA9PiBbJENhdGVnb3J5SURdLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgR2V0IGFsbCBhZmZlY3RlZCBTdWJDY2F0ZWdvcmllcy4KICAgICAgICBteSAkQWZmZWN0ZWRTdWJDYXRlZ29yaWVzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4geyVDYXRlZ29yeURhdGF9LAogICAgICAgICk7CgogICAgICAgICMgU2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vLgogICAgICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgICAgICMgRGlzcGxheSBsaXN0IG9mIGFmZmVjdGVkIEZBUSBhcnRpY2xlcyBvciBTdWJDYXRlZ29yaWVzLgogICAgICAgIGlmICggQEFmZmVjdGVkSXRlbXMgfHwgQHskQWZmZWN0ZWRTdWJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgICAgICMgU2V0IHRoZSBkaWFsb2cgdHlwZSB0byBoYXZlIG9ubHkgMSBidXR0b246IE9LLgogICAgICAgICAgICAkRGlhbG9nVHlwZSA9ICdNZXNzYWdlJzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgRGlzcGxheSBBZmZlY3RlZCBGQVEgYXJ0aWNsZXMuCiAgICAgICAgICAgIGlmIChAQWZmZWN0ZWRJdGVtcykgewoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FmZmVjdGVkSXRlbXMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIElURU1JRDoKICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbUlEIChAQWZmZWN0ZWRJdGVtcykgewoKICAgICAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJVEVNSUQgaWYgISVGQVFEYXRhOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtc1JvdycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEaXNwbGF5IEFmZmVjdGVkIFN1YmNhdGVnb3JpZXMuCiAgICAgICAgICAgIGlmICggQHskQWZmZWN0ZWRTdWJDYXRlZ29yaWVzfSApIHsKCiAgICAgICAgICAgICAgICAjIEdldCBjYXRlZ29yaWVzIGxvbmcgbmFtZXMuCiAgICAgICAgICAgICAgICBteSAkQ2F0ZWdvcnlMb25nTmFtZXMgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZFN1YkNhdGVnb3JpZXMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIEB7JEFmZmVjdGVkU3ViQ2F0ZWdvcmllc30gKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICVDYXRlZ29yeURhdGEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBTZXQgY2F0ZWdvcnkgbG9uZyBuYW1lLgogICAgICAgICAgICAgICAgICAgICRDYXRlZ29yeURhdGF7TG9uZ05hbWV9ID0gJENhdGVnb3J5TG9uZ05hbWVzLT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISVDYXRlZ29yeURhdGE7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBZmZlY3RlZFN1YkNhdGVnb3JpZXNSb3cnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0FmZmVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVDYXRlZ29yeURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgICAgICk7CgogICAgICAgICMgQnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlLgogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIERpYWxvZ1R5cGUgPT4gJERpYWxvZ1R5cGUsCiAgICAgICAgKTsKCiAgICAgICAgIyBSZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUuCiAgICAgICAgbXkgJE91dHB1dEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBkZWxldGUgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyApIHsKCiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAnJzsKCiAgICAgICAgaWYgKCAhJENhdGVnb3J5SUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDYXRlZ29yeUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRoZSBjYXRlZ29yeS4KICAgICAgICBteSAkQ291bGREZWxldGVDYXRlZ29yeSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlQ2F0ZWdvcnkpIHsKCiAgICAgICAgICAgICMgUmVkaXJlY3QgdG8gZXhwbG9yZXIsIHdoZW4gdGhlIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsLgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50RkFRQ2F0ZWdvcnkiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgU2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQuCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjYXRlZ29yeSAlcyEnLAogICAgICAgICAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgT3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICBteSAkTm90aWZpY2F0aW9uICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOb3RpZmljYXRpb24nICkgfHwgJyc7CiAgICAgICAgbXkgJU5vdGlmaWNhdGlvblRleHQgPSAoCiAgICAgICAgICAgIFVwZGF0ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBjYXRlZ29yeSB1cGRhdGVkIScpLAogICAgICAgICAgICBBZGQgICAgPT4gVHJhbnNsYXRhYmxlKCdGQVEgY2F0ZWdvcnkgYWRkZWQhJyksCiAgICAgICAgKTsKICAgICAgICBpZiAoICROb3RpZmljYXRpb24gJiYgJE5vdGlmaWNhdGlvblRleHR7JE5vdGlmaWNhdGlvbn0gKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KCBJbmZvID0+ICROb3RpZmljYXRpb25UZXh0eyROb3RpZmljYXRpb259ICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFDYXRlZ29yeScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9FZGl0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0FjdGlvbkxpc3QnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgIG15ICVWYWxpZExpc3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgbXkgJURhdGE7CgogICAgIyBCdWlsZCB0aGUgdmFsaWQgc2VsZWN0aW9uLgogICAgJERhdGF7VmFsaWRPcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgID0+ICdWYWxpZElEJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtWYWxpZElEfSB8fCAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBHZXQgYWxsIHZhbGlkIGdyb3Vwcy4KICAgIG15ICVHcm91cHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMaXN0KAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgU2V0IG5vIHNlcnZlciBlcnJvciBjbGFzcyBhcyBkZWZhdWx0LgogICAgJFBhcmFte1Blcm1pc3Npb25Hcm91cHNTZXJ2ZXJFcnJvcn0gfHw9ICcnOwoKICAgICMgQnVpbGQgdGhlIGdyb3VwIHNlbGVjdGlvbi4KICAgICREYXRhe0dyb3VwT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlR3JvdXBzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdQZXJtaXNzaW9uR3JvdXBzJywKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkIE1vZGVybml6ZSAnIC4gJFBhcmFte1Blcm1pc3Npb25Hcm91cHNTZXJ2ZXJFcnJvcn0sCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1Blcm1pc3Npb25Hcm91cHN9LAogICAgKTsKCiAgICAjIEdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMuCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgQnVpbGQgdGhlIGNhdGVnb3J5IHNlbGVjdGlvbi4KICAgICREYXRhe0NhdGVnb3J5T3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgID0+ICRDYXRlZ29yeVRyZWUsCiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1BhcmVudElEJywKICAgICAgICBTZWxlY3RlZElEICAgICA9PiAkUGFyYW17UGFyZW50SUR9LAogICAgICAgIFBvc3NpYmxlTm9uZSAgID0+IDEsCiAgICAgICAgRGlzYWJsZWRCcmFuY2ggPT4gJENhdGVnb3J5VHJlZS0+eyAkUGFyYW17Q2F0ZWdvcnlJRH0gfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld1VwZGF0ZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnQ2hhbmdlJyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyRWRpdCcsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJBZGQnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfT3ZlcnZpZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0ID0gJyc7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdBY3Rpb25MaXN0JywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0FjdGlvbkFkZCcsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIEdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMuCiAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIElmIHRoZXJlIGFyZSBhbnkgY2F0ZWdvcmllcywgdGhleSBhcmUgc2hvd24uCiAgICBpZiAoICRDYXRlZ29yeVRyZWUgJiYgcmVmICRDYXRlZ29yeVRyZWUgZXEgJ0hBU0gnICYmICV7JENhdGVnb3J5VHJlZX0gKSB7CgogICAgICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CgogICAgICAgICMgU29ydCB0aGUgY2F0ZWdvcnkgaWRzIGJ5IHRoZSBsb25nIGNhdGVnb3J5IG5hbWUuCiAgICAgICAgbXkgQENhdGVnb3J5SURzU29ydGVkID0gc29ydCB7ICRDYXRlZ29yeVRyZWUtPnskYX0gY21wICRDYXRlZ29yeVRyZWUtPnskYn0gfSBrZXlzICV7JENhdGVnb3J5VHJlZX07CgogICAgICAgIG15ICVKU0RhdGE7CgogICAgICAgICMgU2hvdyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKEBDYXRlZ29yeUlEc1NvcnRlZCkgewoKICAgICAgICAgICAgIyBDcmVhdGUgc3RydWN0dXJlIGZvciBKUy4KICAgICAgICAgICAgJEpTRGF0YXskQ2F0ZWdvcnlJRH0gPSB7CiAgICAgICAgICAgICAgICBFbGVtZW50SUQgICAgICAgICAgICAgICAgICA9PiAnRGVsZXRlQ2F0ZWdvcnlJRCcgLiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIEVsZW1lbnRTZWxlY3RvciAgICAgICAgICAgID0+ICcjRGVsZXRlQ2F0ZWdvcnlJRCcgLiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIERpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZyAgID0+ICdBY3Rpb249QWdlbnRGQVFDYXRlZ29yeTtTdWJhY3Rpb249RGVsZXRlO0NhdGVnb3J5SUQ9JyAuICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgQ29uZmlybWVkQWN0aW9uUXVlcnlTdHJpbmcgPT4gJ0FjdGlvbj1BZ2VudEZBUUNhdGVnb3J5O1N1YmFjdGlvbj1EZWxldGVBY3Rpb247Q2F0ZWdvcnlJRD0nCiAgICAgICAgICAgICAgICAgICAgLiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIERpYWxvZ1RpdGxlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVsZXRlIENhdGVnb3J5JyksCiAgICAgICAgICAgIH07CgogICAgICAgICAgICAjIEdldCBjYXRlZ29yeSBkYXRhLgogICAgICAgICAgICBteSAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdldCB2YWxpZCBzdHJpbmcgYmFzZWQgb24gVmFsaWRJRC4KICAgICAgICAgICAgJENhdGVnb3J5RGF0YXtWYWxpZH0gPSAkVmFsaWRMaXN0eyAkQ2F0ZWdvcnlEYXRhe1ZhbGlkSUR9IH07CgogICAgICAgICAgICAjIE92ZXJ3cml0ZSB0aGUgbmFtZSB3aXRoIHRoZSBsb25nIG5hbWUuCiAgICAgICAgICAgICRDYXRlZ29yeURhdGF7TmFtZX0gPSAkQ2F0ZWdvcnlUcmVlLT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgIyBPdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEuCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNhdGVnb3J5RGF0YX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdGQVFEYXRhJywKICAgICAgICAgICAgVmFsdWUgPT4gXCVKU0RhdGEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQuCiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9EYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFEZWxldGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIFBlcm1pc3Npb24gY2hlY2suCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIEdldCBuZWVkZWQgSXRlbUlECiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgQ2hlY2sgdXNlciBwZXJtaXNzaW9uLgogICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBUeXBlICAgICAgID0+ICdydycsCiAgICApOwogICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlJyApIHsKCiAgICAgICAgIyBEZWxldGUgdGhlIEZBUSBhcnRpY2xlLgogICAgICAgIG15ICRDb3VsZERlbGV0ZUl0ZW0gPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ291bGREZWxldGVJdGVtKSB7CgogICAgICAgICAgICAjIFJlZGlyZWN0IHRvIGV4cGxvcmVyLCB3aGVuIHRoZSBkZWxldGlvbiB3YXMgc3VjY2Vzc2Z1bC4KICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JEZBUURhdGF7Q2F0ZWdvcnlJRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgU2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQuCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSAlcyEnLAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIFNldCB0aGUgZGlhbG9nIHR5cGUuIEFzIGRlZmF1bHQsIHRoZSBkaWFsb2cgd2lsbCBoYXZlIDIgYnV0dG9uczogWWVzIGFuZCBOby4KICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgQnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlLgogICAgbXkgJURhdGEgPSAoCiAgICAgICAgSFRNTCAgICAgICA9PiAkT3V0cHV0LAogICAgICAgIERpYWxvZ1R5cGUgPT4gJERpYWxvZ1R5cGUsCiAgICApOwoKICAgICMgUmV0dXJuIEpTT04tU3RyaW5nIGJlY2F1c2Ugb2YgQUpBWC1Nb2RlLgogICAgbXkgJE91dHB1dEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFZGl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBHZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZS4KICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IikgfHwgJyc7CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbi4KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRTZWxmLT57Q29uZmlnfS0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBQZXJtaXNzaW9uIGNoZWNrLgogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSd30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJ3IHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBHZXQgcGFyYW1ldGVycyBmcm9tIHdlYiByZXF1ZXN0LgogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRQYXJhbU5hbWUgKAogICAgICAgIHF3KEl0ZW1JRCBUaXRsZSBDYXRlZ29yeUlEIFN0YXRlSUQgTGFuZ3VhZ2VJRCBWYWxpZElEIEtleXdvcmRzIEFwcHJvdmVkIEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KQogICAgICAgICkKICAgIHsKICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CiAgICB9CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBJdGVtRmllbGRzICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICMgQ2hlY2sgdXNlciBwZXJtaXNzaW9uLgogICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBUeXBlICAgICAgID0+ICdydycsCiAgICApOwogICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIEdldCBkeW5hbWljIGZpZWxkIHZhbHVlcyBmb3JtIHdlYiByZXF1ZXN0LgogICAgbXkgJUR5bmFtaWNGaWVsZFZhbHVlczsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBFeHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZvcm0gdGhlIHdlYiByZXF1ZXN0LgogICAgICAgICREeW5hbWljRmllbGRWYWx1ZXN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgIG15ICRGb3JtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybUlEJyApOwogICAgaWYgKCAhJEZvcm1JRCApIHsKICAgICAgICAkRm9ybUlEID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURDcmVhdGUoKTsKICAgIH0KCiAgICAjIEdldCBzY3JlZW4gdHlwZS4KICAgIG15ICRTY3JlZW5UeXBlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NjcmVlblR5cGUnICkgfHwgJyc7CgogICAgbXkgJFF1ZXVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzaG93IHRoZSBGQVEgZWRpdCBzY3JlZW4KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgbXkgJE91dHB1dDsKCiAgICAgICAgIyBTaG93IGEgcG9wLXVwIHNjcmVlbi4KICAgICAgICBpZiAoICRTY3JlZW5UeXBlIGVxICdQb3B1cCcgKSB7CgogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydFNtYWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU2hvdyBhIG5vcm1hbCB3aW5kb3cuCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydE5vcm1hbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEdldCBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMgKHdpdGhvdXQgaW5saW5lIGF0dGFjaG1lbnRzKS4KICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIENvcHkgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzIHRvIHVwbG9hZCBjYWNoZS4KICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIEdldCB0aGUgZXhpc3RpbmcgYXR0YWNobWVudCBkYXRhLgogICAgICAgICAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgR2V0IGNvbnRlbnQgZGlzcG9zaXRpb24gKGlmIGl0cyBhbiBpbmxpbmUgYXR0YWNobWVudCkuCiAgICAgICAgICAgIG15ICREaXNwb3NpdGlvbiA9ICRBdHRhY2htZW50LT57SW5saW5lfSA/ICdpbmxpbmUnIDogJyc7CgogICAgICAgICAgICAjIEFkZCBhdHRhY2htZW50cyB0byB0aGUgdXBsb2FkIGNhY2hlLgogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGV7RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpbGV7Q29udGVudH0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkRmlsZXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAkRGlzcG9zaXRpb24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhIGZyb20gdXBsb2FkIGNhY2hlLgogICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICBGb3JtSUQgPT4gJEZvcm1JRCwKICAgICAgICApOwoKICAgICAgICAjIFJld3JpdGUgb2xkIHN0eWxlIGlubGluZSBpbWFnZSBVUkxzLgogICAgICAgIEZJRUxEOgogICAgICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewoKICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZBUURhdGF7JEZpZWxkfTsKCiAgICAgICAgICAgICMgUmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbiwgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54LgogICAgICAgICAgICAkRkFRRGF0YXskRmllbGR9ID1+IHN7CiAgICAgICAgICAgICAgICBBY3Rpb249QWdlbnRGQVEgWyZdKGFtcDspPyBTdWJhY3Rpb249RG93bmxvYWQgWyZdKGFtcDspPwogICAgICAgICAgICB9e0FjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIEhUTUwgc3RyaW5ncyBmb3IgYWxsIGR5bmFtaWMgZmllbGRzLgogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIFRvIHN0b3JlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSBkYXRhYmFzZSAob3IgdW5kZWZpbmVkKS4KICAgICAgICAgICAgbXkgJFZhbHVlID0gJEZBUURhdGF7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgIyBHZXQgZmllbGQgSFRNTC4KICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0KICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID09IDIsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAgICAgbXkgJEFwcHJvdmFsUXVldWUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxRdWV1ZScpIHx8ICcnOwoKICAgICAgICAgICAgIyBDaGVjayBpZiBBcHByb3ZhbCBxdWV1ZSBleGlzdHMuCiAgICAgICAgICAgIG15ICRBcHByb3ZhbFF1ZXVlSUQgPSAkUXVldWVPYmplY3QtPlF1ZXVlTG9va3VwKAogICAgICAgICAgICAgICAgUXVldWUgPT4gJEFwcHJvdmFsUXVldWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNob3cgbm90aWZpY2F0aW9uIGlmIEFwcHJvdmFsIHF1ZXVlIGRvZXMgbm90IGV4aXN0cy4KICAgICAgICAgICAgaWYgKCAhJEFwcHJvdmFsUXVldWVJRCApIHsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gIkZBUSBBcHByb3ZhbCBpcyBlbmFibGVkIGJ1dCBxdWV1ZSAnJEFwcHJvdmFsUXVldWUnIGRvZXMgbm90IGV4aXN0cyIsCiAgICAgICAgICAgICAgICAgICAgTGluayAgICAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAgICAgICAgICAgICAuICdBY3Rpb249QWRtaW5TeXN0ZW1Db25maWd1cmF0aW9uO1N1YmFjdGlvbj1WaWV3Q3VzdG9tR3JvdXA7TmFtZXM9RkFROjpBcHByb3ZhbFF1ZXVlJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPl9NYXNrTmV3KAogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICA9PiBcQEF0dGFjaG1lbnRzLAogICAgICAgICAgICBTY3JlZW5UeXBlICAgICAgID0+ICRTY3JlZW5UeXBlLAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgID0+ICRGb3JtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gXCVEeW5hbWljRmllbGRIVE1MLAogICAgICAgICk7CgogICAgICAgIGlmICggJFNjcmVlblR5cGUgZXEgJ1BvcHVwJyApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdFbmRTbWFsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0VuZE5vcm1hbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBTYXZlIHRoZSBGQVEKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRPdXRwdXQ7CgogICAgICAgICMgU2hvdyBhIHBvcC11cCBzY3JlZW4uCiAgICAgICAgaWYgKCAkU2NyZWVuVHlwZSBlcSAnUG9wdXAnICkgewogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGFydFNtYWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU2hvdyBhIG5vcm1hbCB3aW5kb3cuCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnROb3JtYWwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUVycm9yOwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhUaXRsZSBDYXRlZ29yeUlEKSkgewoKICAgICAgICAgICAgIyBJZiByZXF1aXJlZCBmaWVsZCBpcyBub3QgZ2l2ZW4sIGFkZCBzZXJ2ZXIgZXJyb3IgY2xhc3MuCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgICAgICRFcnJvcnsgJFBhcmFtTmFtZSAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgIyBDaGVjayBpZiBhbiBhdHRhY2htZW50IG11c3QgYmUgZGVsZXRlZC4KICAgICAgICAjIG15IEBBdHRhY2htZW50SURzID0gbWFwIHsKICAgICAgICAjICAgICBteSAoJElEKSA9ICRfID1+IG17IFxBIEF0dGFjaG1lbnREZWxldGUgKFxkKykgXHogfXhtczsKICAgICAgICAjICAgICAkSUQgPyAkSUQgOiAoKTsKICAgICAgICAjIH0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbU5hbWVzKCk7CgogICAgICAgICMgQ09VTlQ6CiAgICAgICAgIyBmb3IgbXkgJENvdW50ICggcmV2ZXJzZSBzb3J0IEBBdHRhY2htZW50SURzICkgewoKICAgICAgICAjICAgICAjIGNoZWNrIGlmIHRoZSBkZWxldGUgYnV0dG9uIHdhcyBwcmVzc2VkIGZvciB0aGlzIGF0dGFjaG1lbnQKICAgICAgICAjICAgICBteSAkRGVsZXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIkF0dGFjaG1lbnREZWxldGUkQ291bnQiICk7CgogICAgICAgICMgICAgICMgY2hlY2sgbmV4dCBhdHRhY2htZW50IGlmIGl0IHdhcyBub3QgcHJlc3NlZAogICAgICAgICMgICAgIG5leHQgQ09VTlQgaWYgISREZWxldGU7CgogICAgICAgICMgICAgICMgcmVtZW1iZXIgdGhhdCB3ZSBuZWVkIHRvIHNob3cgdGhlIHBhZ2UgYWdhaW4KICAgICAgICAjICAgICAkRXJyb3J7QXR0YWNobWVudH0gPSAxOwoKICAgICAgICAjICAgICAjIHJlbW92ZSB0aGUgYXR0YWNobWVudCBmcm9tIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAjICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JRFJlbW92ZUZpbGUoCiAgICAgICAgIyAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICMgICAgICAgICBGaWxlSUQgPT4gJENvdW50LAogICAgICAgICMgICAgICk7CiAgICAgICAgIyB9CgogICAgICAgICMgIyBjaGVjayBpZiB0aGVyZSB3YXMgYW4gYXR0YWNobWVudCB1cGxvYWQKICAgICAgICAjIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0F0dGFjaG1lbnRVcGxvYWQnICkgKSB7CgogICAgICAgICMgICAgICMgcmVtZW1iZXIgdGhhdCB3ZSBuZWVkIHRvIHNob3cgdGhlIHBhZ2UgYWdhaW4KICAgICAgICAjICAgICAkRXJyb3J7QXR0YWNobWVudH0gPSAxOwoKICAgICAgICAjICAgICAjIGdldCB0aGUgdXBsb2FkZWQgYXR0YWNobWVudAogICAgICAgICMgICAgIG15ICVVcGxvYWRTdHVmZiA9ICRQYXJhbU9iamVjdC0+R2V0VXBsb2FkQWxsKAogICAgICAgICMgICAgICAgICBQYXJhbSAgPT4gJ0ZpbGVVcGxvYWQnLAogICAgICAgICMgICAgICAgICBTb3VyY2UgPT4gJ3N0cmluZycsCiAgICAgICAgIyAgICAgKTsKCiAgICAgICAgIyAgICAgIyBhZGQgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlCiAgICAgICAgIyAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICMgICAgICAgICBGb3JtSUQgPT4gJEZvcm1JRCwKICAgICAgICAjICAgICAgICAgJVVwbG9hZFN0dWZmLAogICAgICAgICMgICAgICk7CiAgICAgICAgIyB9CgogICAgICAgICMgQ3JlYXRlIEhUTUwgc3RyaW5ncyBmb3IgYWxsIGR5bmFtaWMgZmllbGRzLgogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkVmFsaWRhdGlvblJlc3VsdCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5FZGl0RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbGlkYXRpb25SZXN1bHQpICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IHBlcmZvcm0gdmFsaWRhdGlvbiBvbiBmaWVsZCAlcyEnLAogICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQcm9wYWdhdGUgdmFsaWRhdGlvbiBlcnJvciB0byB0aGUgRXJyb3IgdmFyaWFibGUgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlIGZyb250ZW5kLgogICAgICAgICAgICBpZiAoICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9ICkgewogICAgICAgICAgICAgICAgJEVycm9yeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICcgU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEdldCBmaWVsZCBIVE1MLgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9PSAyLAogICAgICAgICAgICAgICAgU2VydmVyRXJyb3IgID0+ICRWYWxpZGF0aW9uUmVzdWx0LT57U2VydmVyRXJyb3J9ICB8fCAnJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkVmFsaWRhdGlvblJlc3VsdC0+e0Vycm9yTWVzc2FnZX0gfHwgJycsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBTZW5kIHNlcnZlciBlcnJvciBpZiBhbnkgcmVxdWlyZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmcKICAgICAgICBpZiAoJUVycm9yKSB7CgogICAgICAgICAgICAjICMgaWYgdGhlcmUgd2FzIGFuIGF0dGFjaG1lbnQgZGVsZXRlIG9yIHVwbG9hZAogICAgICAgICAgICAjICMgd2UgZG8gbm90IHdhbnQgdG8gc2hvdyB2YWxpZGF0aW9uIGVycm9ycyBmb3Igb3RoZXIgZmllbGRzCiAgICAgICAgICAgICMgaWYgKCAkRXJyb3J7QXR0YWNobWVudH0gKSB7CiAgICAgICAgICAgICMgICAgICVFcnJvciA9ICgpOwogICAgICAgICAgICAjIH0KCiAgICAgICAgICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgICAgID0+ICRGb3JtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+IFwlRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFF1ZXVlJykgfHwgJyc7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiBBcHByb3ZhbCBxdWV1ZSBleGlzdHMuCiAgICAgICAgICAgICAgICBteSAkQXBwcm92YWxRdWV1ZUlEID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICBRdWV1ZSA9PiAkQXBwcm92YWxRdWV1ZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTaG93IG5vdGlmaWNhdGlvbiBpZiBBcHByb3ZhbCBxdWV1ZSBkb2VzIG5vdCBleGlzdHMuCiAgICAgICAgICAgICAgICBpZiAoICEkQXBwcm92YWxRdWV1ZUlEICkgewogICAgICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBJbmZvID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkFRIEFwcHJvdmFsIGlzIGVuYWJsZWQgYnV0IHF1ZXVlICckQXBwcm92YWxRdWV1ZScgZG9lcyBub3QgZXhpc3RzIiwKICAgICAgICAgICAgICAgICAgICAgICAgTGluayA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdBY3Rpb249QWRtaW5TeXN0ZW1Db25maWd1cmF0aW9uO1N1YmFjdGlvbj1WaWV3Q3VzdG9tR3JvdXA7TmFtZXM9RkFROjpBcHByb3ZhbFF1ZXVlJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5fTWFza05ldygKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICAgICBTY3JlZW5UeXBlICAgICAgID0+ICRTY3JlZW5UeXBlLAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICA9PiAkRm9ybUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSFRNTCA9PiBcJUR5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRTY3JlZW5UeXBlIGVxICdQb3B1cCcgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdFbmRTbWFsbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRW5kTm9ybWFsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBTZXQgdGhlIGNvbnRlbnQgdHlwZS4KICAgICAgICBteSAkQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CiAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpICkgewogICAgICAgICAgICAkQ29udGVudFR5cGUgPSAndGV4dC9odG1sJzsKICAgICAgICB9CgogICAgICAgICMgVXBkYXRlIHRoZSBuZXcgRkFRIGl0ZW0uCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBTaG93IGVycm9yIGlmIEZBUSBpdGVtIGNvdWxkIG5vdCBiZSB1cGRhdGVkLgogICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IGFsbCBhdHRhY2htZW50cyBmcm9tIHVwbG9hZCBjYWNoZS4KICAgICAgICBteSBAQXR0YWNobWVudHMgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzRGF0YSgKICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzLgogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBTaG93SW5saW5lID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgTG9va3VwIG9sZCBpbmxpbmUgYXR0YWNobWVudHMgKGluaXRpYWxseSBsb2FkZWQgdG8gQWdlbnRGQVFFZGl0LnBtIHNjcmVlbikKICAgICAgICAjIGFuZCBwdXNoIHRvIEF0dGFjaG1lbnRzIGFycmF5IGlmIHRoZXkgc3RpbGwgZXhpc3QgaW4gdGhlIGZvcm0uCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRBdHRhY2htZW50LT57SW5saW5lfTsKCiAgICAgICAgICAgIE5VTUJFUjoKICAgICAgICAgICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRheyAnRmllbGQnIC4gJE51bWJlciB9CiAgICAgICAgICAgICAgICAgICAgPX4gbXsgQWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD0kR2V0UGFyYW17SXRlbUlEfTtGaWxlSUQ9JEF0dGFjaG1lbnQtPntGaWxlSUR9IH1tc3gKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgR2V0IHRoZSBleGlzdGluZyBpbmxpbmUgYXR0YWNobWVudCBkYXRhLgogICAgICAgICAgICAgICAgICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWxle0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkRmlsZXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxle0ZpbGVuYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgPT4gJEZpbGV7RmlsZXNpemV9LAogICAgICAgICAgICAgICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUlEICAgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgIGxhc3QgTlVNQkVSOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEJ1aWxkIGEgbG9va3VwIGhhc2ggb2YgdGhlIG5ldyBhdHRhY2htZW50cy4KICAgICAgICBteSAlTmV3QXR0YWNobWVudDsKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgIyBUaGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlLgogICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZX0KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAjIEFwcGVuZCBjb250ZW50IGlkIGlmIGF2YWlsYWJsZSAoZm9yIG5ldyBpbmxpbmUgaW1hZ2VzKS4KICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gKSB7CiAgICAgICAgICAgICAgICAkS2V5IC49ICRBdHRhY2htZW50LT57Q29udGVudElEfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTdG9yZSBhbGwgb2YgdGhlIG5ldyBhdHRhY2htZW50IGRhdGEuCiAgICAgICAgICAgICROZXdBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIHRoZSBleGlzdGluZyBhdHRhY2htZW50cy4KICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAjIFRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemVyYXcgKyBjb250ZW50IHR5cGUgKG5vIGNvbnRlbnQgaWQsIGFzIGV4aXN0aW5nIGF0dGFjaG1lbnRzIGRvbid0IGhhdmUgaXQpLgogICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZVJhd30KICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAjIEF0dGFjaG1lbnQgaXMgYWxyZWFkeSBleGlzdGluZywgd2UgY2FuIGRlbGV0ZSBpdCBmcm9tIHRoZSBuZXcgYXR0YWNobWVudCBoYXNoLgogICAgICAgICAgICBpZiAoICROZXdBdHRhY2htZW50eyRLZXl9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEV4aXN0aW5nIGF0dGFjaG1lbnQgaXMgbm8gbG9uZ2VyIGluIG5ldyBhdHRhY2htZW50cyBoYXNoLgogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIERlbGV0ZSB0aGUgZXhpc3RpbmcgYXR0YWNobWVudC4KICAgICAgICAgICAgICAgIG15ICREZWxldGVTdWNjZXNzZnVsID0gJEZBUU9iamVjdC0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50LT57RmlsZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISREZWxldGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgV3JpdGUgdGhlIG5ldyBhdHRhY2htZW50cy4KICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIHZhbHVlcyAlTmV3QXR0YWNobWVudCApIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgYXR0YWNobWVudCBpcyBhbiBpbmxpbmUgYXR0YWNobWVudC4KICAgICAgICAgICAgbXkgJElubGluZSA9IDA7CiAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKSB7CgogICAgICAgICAgICAgICAgIyBSZW1lbWJlciB0aGF0IGl0IGlzIGlubGluZS4KICAgICAgICAgICAgICAgICRJbmxpbmUgPSAxOwoKICAgICAgICAgICAgICAgICMgUmVtZW1iZXIgaWYgdGhpcyBpbmxpbmUgYXR0YWNobWVudCBpcyBhbHJlYWR5IHVzZWQgaW4gYW55IEZBUSBpdGVtLgogICAgICAgICAgICAgICAgbXkgJElubGluZUF0dGFjaG1lbnRGb3VuZDsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGFsbCBmaWVsZHMgZm9yIHRoZSBpbmxpbmUgYXR0YWNobWVudC4KICAgICAgICAgICAgICAgIE5VTUJFUjoKICAgICAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICAgICAjIEdldCBGQVEgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgbXkgJEZpZWxkID0gJEdldFBhcmFteyAnRmllbGQnIC4gJE51bWJlciB9OwoKICAgICAgICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgZmllbGRzLgogICAgICAgICAgICAgICAgICAgIG5leHQgTlVNQkVSIGlmICEkRmllbGQ7CgogICAgICAgICAgICAgICAgICAgICMgU2tpcCBpZiB0aGUgZmllbGQgaXMgbm90IG5ldyAoYWRkZWQpIG9yIG9sZCAoaW5pdGlhbGx5IGxvYWRlZCkgaW5saW5lIGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkRmllbGQgIX4gbXsgJEF0dGFjaG1lbnQtPntDb250ZW50SUR9IH14bXMKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJEZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICF+IG17IEFjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9JEdldFBhcmFte0l0ZW1JRH07RmlsZUlEPSRBdHRhY2htZW50LT57RmlsZUlEfSB9eG1zCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgTlVNQkVSOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBGb3VuZCB0aGUgaW5saW5lIGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgJElubGluZUF0dGFjaG1lbnRGb3VuZCA9IDE7CgogICAgICAgICAgICAgICAgICAgICMgV2UgZG8gbm90IG5lZWQgdG8gc2VhcmNoIGZ1cnRoZXIuCiAgICAgICAgICAgICAgICAgICAgbGFzdCBOVU1CRVI7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBXZSBkbyBub3Qgd2FudCB0byBrZWVwIHRoaXMgYXR0YWNobWVudCwgYmVjYXVzZSBpdCB3YXMgZGVsZXRlZCBpbiB0aGUgcmljaC10ZXh0IGVkaXRvci4KICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJElubGluZUF0dGFjaG1lbnRGb3VuZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBZGQgYXR0YWNobWVudC4KICAgICAgICAgICAgbXkgJEZpbGVJRCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIElubGluZSA9PiAkSW5saW5lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJEZpbGVJRCApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJElubGluZTsKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fTsKCiAgICAgICAgICAgICMgUmV3cml0ZSB0aGUgVVJMcyBvZiB0aGUgaW5saW5lIGltYWdlcyBmb3IgdGhlIHVwbG9hZGVkIHBpY3R1cmVzLgogICAgICAgICAgICBteSAkT0sgPSAkRkFRT2JqZWN0LT5GQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlSUQgICAgID0+ICRGaWxlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJE9LICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSB0aGUgaW5saW5lIGltYWdlIFVSTHMgIgogICAgICAgICAgICAgICAgICAgICAgICAuICJmb3IgRkFRIEl0ZW0jICckR2V0UGFyYW17SXRlbUlEfSchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRoZSB1cGxvYWQgY2FjaGUuCiAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURSZW1vdmUoIEZvcm1JRCA9PiAkRm9ybUlEICk7CgogICAgICAgICMgU2V0IGR5bmFtaWMgZmllbGRzLgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIFNldCB0aGUgdmFsdWUuCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpZiB3ZSBuZWVkIHRvIGNsb3NlIGEgcG9wLXVwIHNjcmVlbiBvciBub3QuCiAgICAgICAgaWYgKCAkU2NyZWVuVHlwZSBlcSAnUG9wdXAnICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UG9wdXBDbG9zZSgKICAgICAgICAgICAgICAgIFVSTCA9PiAiQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEdldFBhcmFte0l0ZW1JRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRHZXRQYXJhbXtJdGVtSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0KCnN1YiBfTWFza05ldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IGxpc3QgdHlwZS4KICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICBteSAlVmFsaWRMaXN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgIG15ICVEYXRhOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCB2YWxpZCBzZWxlY3Rpb24uCiAgICAkRGF0YXtWYWxpZE9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlVmFsaWRMaXN0LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1ZhbGlkSUQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte1ZhbGlkSUR9IHx8ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgR2V0IGNhdGVnb3JpZXMgKHdpdGggY2F0ZWdvcnkgbG9uZyBuYW1lcykgd2hlcmUgdXNlciBoYXMgcmlnaHRzLgogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBTZXQgbm8gc2VydmVyIGVycm9yIGNsYXNzIGFzIGRlZmF1bHQuCiAgICAkUGFyYW17Q2F0ZWdvcnlJRFNlcnZlckVycm9yfSB8fD0gJyc7CgogICAgIyBCdWlsZCBjYXRlZ29yeSBzZWxlY3Rpb24uCiAgICAkRGF0YXtDYXRlZ29yeU9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2F0ZWdvcnlJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ1ZhbGlkYXRlX1JlcXVpcmVkIE1vZGVybml6ZSAnIC4gJFBhcmFte0NhdGVnb3J5SURTZXJ2ZXJFcnJvcn0sCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgVHJlZVZpZXcgICAgID0+ICRUcmVlVmlldywKICAgICk7CgogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIEdldCB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UuCiAgICBteSAkU2VsZWN0ZWRMYW5ndWFnZTsKICAgIGlmICggJFBhcmFte0xhbmd1YWdlSUR9ICYmICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9ICkgewoKICAgICAgICAjIEdldCBsYW5ndWFnZSBmcm9tIGdpdmVuIExhbmd1YWdlSUQKICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYW5ndWFnZXN7ICRQYXJhbXtMYW5ndWFnZUlEfSB9OwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgVXNlIHRoZSB1c2VyIGxhbmd1YWdlLCBvciBpZiBub3QgZm91bmQgJ2VuJy4KICAgICAgICAkU2VsZWN0ZWRMYW5ndWFnZSA9ICRMYXlvdXRPYmplY3QtPntVc2VyTGFuZ3VhZ2V9IHx8ICdlbic7CgogICAgICAgICMgR2V0IHVzZXIgTGFuZ3VhZ2VJRAogICAgICAgIG15ICRTZWxlY3RlZExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAkU2VsZWN0ZWRMYW5ndWFnZSwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIExhbmd1YWdlSUQgZG9lcyBub3QgZXhpc3RzLgogICAgICAgIGlmICggISRTZWxlY3RlZExhbmd1YWdlSUQgKSB7CgogICAgICAgICAgICAjIEdldCB0aGUgbG93ZXN0IExhbmd1YWdlSUQgZm9ybSB0aGUgRkFRIGxhbmd1YWdlIGxpc3QgYXMgaXRzIHRoZSBmaXJzdCBhZGRlZCBhbmQKICAgICAgICAgICAgIyAgICh3ZSBhc3N1bWUpIHRoZSBtb3N0IGZyZXF1ZW50bHkgdXNlZC4KICAgICAgICAgICAgbXkgQExhbmd1YWdlSURzID0gc29ydCBrZXlzICVMYW5ndWFnZXM7CiAgICAgICAgICAgICRTZWxlY3RlZExhbmd1YWdlSUQgPSAkTGFuZ3VhZ2VJRHNbMF07CgogICAgICAgICAgICAjIFNldCB0aGUgbGFuZ3VhZ2Ugd2l0aCBsb3dlc3QgbGFuZ3VhZ2VJRCBhcyBzZWxlY3RlZCBsYW5ndWFnZS4KICAgICAgICAgICAgJFNlbGVjdGVkTGFuZ3VhZ2UgPSAkTGFuZ3VhZ2VzeyRTZWxlY3RlZExhbmd1YWdlSUR9OwogICAgICAgIH0KICAgIH0KCiAgICAjIEJ1aWxkIHRoZSBsYW5ndWFnZSBzZWxlY3Rpb24uCiAgICAkRGF0YXtMYW5ndWFnZU9wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgID0+IFwlTGFuZ3VhZ2VzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0xhbmd1YWdlSUQnLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkTGFuZ3VhZ2UsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15IEBTdGF0ZVR5cGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyk7CiAgICBteSAlU3RhdGVzICAgICA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gQFN0YXRlVHlwZXMsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBHZXQgdGhlIHNlbGVjdGVkIHN0YXRlLgogICAgbXkgJFNlbGVjdGVkU3RhdGU7CiAgICBpZiAoICRQYXJhbXtTdGF0ZUlEfSAmJiAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfSApIHsKCiAgICAgICAgIyBHZXQgc3RhdGUgZnJvbSBnaXZlbiBTdGF0ZUlECiAgICAgICAgJFNlbGVjdGVkU3RhdGUgPSAkU3RhdGVzeyAkUGFyYW17U3RhdGVJRH0gfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIEdldCBkZWZhdWx0IHN0YXRlLgogICAgICAgICRTZWxlY3RlZFN0YXRlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkRlZmF1bHQ6OlN0YXRlJykgfHwgJ2ludGVybmFsIChhZ2VudCknOwogICAgfQoKICAgICMgQnVpbGQgdGhlIHN0YXRlIHNlbGVjdGlvbi4KICAgICREYXRhe1N0YXRlT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTdGF0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnU3RhdGVJRCcsCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRTdGF0ZSwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBHZXQgc2NyZWVuIHR5cGUuCiAgICBteSAkU2NyZWVuVHlwZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTY3JlZW5UeXBlJyApIHx8ICcnOwoKICAgIG15ICRGaWVsZHNldENsYXNzID0gJyc7CiAgICBpZiAoICRTY3JlZW5UeXBlIGVxICdQb3B1cCcgKSB7CiAgICAgICAgJEZpZWxkc2V0Q2xhc3MgPSAnRml4ZWRMYWJlbCc7CiAgICB9CgogICAgIyBTaG93IGF0dGFjaG1lbnRzLgogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50c30gfSApIHsKCiAgICAgICAgIyBEbyBub3Qgc2hvdyBpbmxpbmUgaW1hZ2VzIGFzIGF0dGFjaG1lbnRzICh0aGV5IGhhdmUgYSBjb250ZW50IGlkKQogICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50SUR9ICYmICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQ7CiAgICAgICAgfQoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtBdHRhY2htZW50TGlzdH0gfSwgJEF0dGFjaG1lbnQ7CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRRWRpdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgIEZpZWxkc2V0Q2xhc3MgPT4gJEZpZWxkc2V0Q2xhc3MsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBTaG93IGxhbmd1YWdlcyBmaWVsZC4KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgU2hvdyBhcHByb3ZhbCBmaWVsZC4KICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKCiAgICAgICAgIyBDaGVjayBwZXJtaXNzaW9uLgogICAgICAgIG15ICVHcm91cHMgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgR2V0IHRoZSBGQVEgYXBwcm92YWwgZ3JvdXAgZnJvbSBjb25maWcuCiAgICAgICAgbXkgJEFwcHJvdmFsR3JvdXAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxHcm91cCcpIHx8ICcnOwoKICAgICAgICAjIEJ1aWxkIHRoZSBhcHByb3ZhbCBzZWxlY3Rpb24gaWYgdXNlciBpcyBpbiB0aGUgYXBwcm92YWwgZ3JvdXAuCiAgICAgICAgaWYgKCAkR3JvdXBzeyRBcHByb3ZhbEdyb3VwfSApIHsKCiAgICAgICAgICAgICREYXRhe0FwcHJvdmFsT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXBwcm92ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgMCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgIDEgPT4gJ1llcycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17QXBwcm92ZWR9IHx8IDAsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0FwcHJvdmFsJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBHZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZS4KICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpIHx8ICcnOwoKICAgICMgQWRkIHJpY2ggdGV4dCBlZGl0b3IgSmF2YVNjcmlwdCBvbmx5IGlmIGFjdGl2YXRlZCBhbmQgdGhlIGJyb3dzZXIgY2FuIGhhbmRsZSBpdAogICAgIyAgIG90aGVyd2lzZSBqdXN0IGEgdGV4dC1hcmVhIGlzIHNob3duCiAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CgogICAgICAgICMgVXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbi4KICAgICAgICAkUGFyYW17UmljaFRleHRIZWlnaHR9ID0gJENvbmZpZy0+e1JpY2hUZXh0SGVpZ2h0fSB8fCAwOwogICAgICAgICRQYXJhbXtSaWNoVGV4dFdpZHRofSAgPSAkQ29uZmlnLT57UmljaFRleHRXaWR0aH0gIHx8IDA7CgogICAgICAgICMgU2V0IHVwIHJpY2ggdGV4dCBlZGl0b3IuCiAgICAgICAgJExheW91dE9iamVjdC0+U2V0UmljaFRleHRQYXJhbWV0ZXJzKAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncy4KICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiBAU3RhdGVUeXBlcywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIFNob3cgRkFRIENvbnRlbnQuCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBEeW5hbWljIGZpZWxkcy4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBTa2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZC4KICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoCiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICk7CgogICAgICAgICMgR2V0IHRoZSBIVE1MIHN0cmluZ3MgZm9ybSAkUGFyYW0KICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgTGFiZWwgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIEV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgTGFiZWwgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJFNjcmVlblR5cGUgbmUgJ1BvcHVwJyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRW5kTm9ybWFsJywKICAgICAgICApOwogICAgfQoKICAgIGlmICggJFNjcmVlblR5cGUgZXEgJ1BvcHVwJyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRW5kU21hbGwnLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRRWRpdCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBHZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZS4KICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIEdldCBjb25maWcgZGF0YS4KICAgIG15ICRTdGFydEhpdCAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgIG15ICRTZWFyY2hMaW1pdCA9ICRDb25maWctPntTZWFyY2hMaW1pdH0gfHwgNTAwOwogICAgbXkgJEZpbHRlciAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgIG15ICRWaWV3ICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwogICAgbXkgJFNvcnRCeSAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIEdldCBDYXRlZ29yeUlELgogICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgQ2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgIG15ICRDYXRlZ29yeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeScgKSB8fCAnJzsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgVHJ5IHRvIGdldCB0aGUgQ2F0ZWdvcnlJRCBmcm9tIGNhdGVnb3J5IG5hbWUgaWYgbm8gQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnkgJiYgISRDYXRlZ29yeUlEICkgewoKICAgICAgICAjIEdldCB0aGUgY2F0ZWdvcnkgdHJlZS4KICAgICAgICBteSAkQ2F0ZWdvcnlUcmVlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIFJldmVyc2UgdGhlIGhhc2ggZm9yIGVhc3kgbG9va3VwLgogICAgICAgIG15ICVSZXZlcnNlQ2F0ZWdvcnlUcmVlID0gcmV2ZXJzZSAleyRDYXRlZ29yeVRyZWV9OwoKICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlUcmVleyRDYXRlZ29yeX0gfHwgMDsKICAgIH0KCiAgICAjIEdldCBuYXZpZ2F0aW9uIGJhciBvcHRpb24uCiAgICBteSAkTmF2ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hdicgKSB8fCAnJzsKCiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgU2F2ZSBDYXRlZ29yeUlEIHRvIHNlc3Npb24sIHRvIGJlIHVzZWQgaW4gRkFRIGFkZCBzY3JlZW4uCiAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0Vmlld2VkQ2F0ZWdvcnknLAogICAgICAgIFZhbHVlICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICk7CgogICAgIyBTdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbiAoZm9yIGJhY2sgbWVudSBhY3Rpb24pIGJ1dCBvbmx5IGlmIHRoZSBGQVEgZXhwbG9yZXIgaXMgbm90IHNob3duIGFzIG92ZXJsYXkuCiAgICBpZiAoICEkTmF2IHx8ICROYXYgbmUgJ05vbmUnICkgewoKICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO1NvcnRCeT0kU29ydEJ5IgogICAgICAgICAgICAuICI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRDtOYXY9JE5hdiIKICAgICAgICAgICAgLiAiO09yZGVyQnk9JE9yZGVyQnk7U3RhcnRIaXQ9JFN0YXJ0SGl0IjsKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICB9CgogICAgIyBUcnkgdG8gZ2V0IHRoZSBjYXRlZ29yeSBkYXRhLgogICAgbXkgJUNhdGVnb3J5RGF0YTsKICAgIGlmICgkQ2F0ZWdvcnlJRCkgewoKICAgICAgICAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdUaGUgQ2F0ZWdvcnlJRCAlcyBpcyBpbnZhbGlkLicsICRDYXRlZ29yeUlEICksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIHVzZXIgcGVybWlzc2lvbi4KICAgICAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFR5cGUgICAgICAgPT4gJ3JvJywKICAgICAgICApOwogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgY2F0ZWdvcnkhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkT3V0cHV0OwogICAgaWYgKCAkTmF2ICYmICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJEZBUU9iamVjdCwKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIE5hdiAgICAgICAgPT4gJE5hdiwKICAgICk7CgogICAgIyBHZXQgYWxsIGRpcmVjdCBzdWJjYXRlZ29yaWVzIG9mIHRoZSBzZWxlY3RlZCBjYXRlZ29yeS4KICAgIG15ICRDYXRlZ29yeUlEc1JlZiA9ICRGQVFPYmplY3QtPkFnZW50Q2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgVXNlcklEICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTdWJjYXRlZ29yaWVzJywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKCiAgICAjIFNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncy4KICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFnZW50OjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBHZXQgYWxsIGl0ZW1zICh2YWxpZCBhbmQgaW52YWxpZCkgaWYgU3lTQ29uZmlnIGlzIHNldC4KICAgIG15ICRWYWxpZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwogICAgbXkgQFZhbGlkSURzOwogICAgbXkgJFZhbGlkID0gMTsKICAgIGlmICggJENvbmZpZy0+e1Nob3dJbnZhbGlkRkFRSXRlbXN9ICkgewogICAgICAgIG15ICVWYWxpZExpc3QgPSAkVmFsaWRPYmplY3QtPlZhbGlkTGlzdCgpOwogICAgICAgIEBWYWxpZElEcyA9IGtleXMgJVZhbGlkTGlzdDsKICAgICAgICAkVmFsaWQgICAgPSAwOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQFZhbGlkSURzID0gKCAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKCBWYWxpZCA9PiAndmFsaWQnICkgKTsKICAgIH0KCiAgICAjIENoZWNrIGlmIHRoZXJlIGFyZSBzdWJjYXRlZ29yaWVzLgogICAgaWYgKCAkQ2F0ZWdvcnlJRHNSZWYgJiYgcmVmICRDYXRlZ29yeUlEc1JlZiBlcSAnQVJSQVknICYmIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgIyBTaG93IGRhdGEgZm9yIGVhY2ggc3ViY2F0ZWdvcnkuCiAgICAgICAgZm9yIG15ICRTdWJDYXRlZ29yeUlEICggQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAgICAgbXkgJVN1YkNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgdGhlIG51bWJlciBvZiBzdWJjYXRlZ29yaWVzIG9mIHRoaXMgc3ViY2F0ZWdvcnkuCiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7U3ViQ2F0ZWdvcnlDb3VudH0gPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUNvdW50KAogICAgICAgICAgICAgICAgUGFyZW50SURzID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgdGhlIG51bWJlciBvZiBGQVEgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4KICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtBcnRpY2xlQ291bnR9ID0gJEZBUU9iamVjdC0+RkFRQ291bnQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICAgICAgT25seUFwcHJvdmVkID0+IDAsCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICAgPT4gJFZhbGlkLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgT3V0cHV0IHRoZSBjYXRlZ29yeSBkYXRhLgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hdiA9PiAkTmF2LAogICAgICAgICAgICAgICAgICAgICVTdWJDYXRlZ29yeURhdGEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIE90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQuCiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9EYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CgogICAgIyBTZWFyY2ggYWxsIEZBUSBpdGVtcyB3aXRoaW4gdGhlIGdpdmVuIGNhdGVnb3J5LgogICAgbXkgQFZpZXdhYmxlSXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFskU29ydEJ5XSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFskT3JkZXJCeV0sCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEludGVyZmFjZSAgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+IFskQ2F0ZWdvcnlJRF0sCiAgICAgICAgVmFsaWRJRHMgICAgICAgICA9PiBcQFZhbGlkSURzLAogICAgKTsKCiAgICAjIEJ1aWxkIG5lY2Vzc2FyeSBzdHVmZiBmb3IgdGhlIEZBUSBhcnRpY2xlIGxpc3QuCiAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkVmlldykKICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgLiAnO1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU29ydEJ5KQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwogICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRGaWx0ZXIpCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwogICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJE9yZGVyQnkpCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgIC4gJztDYXRlZ29yeUlEPScgLiAkQ2F0ZWdvcnlJRAogICAgICAgIC4gJzsnOwoKICAgICMgRmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24uCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRDb25maWctPntTaG93Q29sdW1uc30gKSB7CgogICAgICAgICMgR2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnLgogICAgICAgIG15ICVQb3NzaWJsZUNvbHVtbiA9ICV7ICRDb25maWctPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgIyBHZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bi4KICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFBvc3NpYmxlQ29sdW1ueyROYW1lfTsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgIH0KCiAgICAgICAgIyBFbmZvcmNlIEZBUSBudW1iZXIgY29sdW1uIHNpbmNlIGlzIHRoZSBsaW5rIE1hc3RlckFjdGlvbiBob29rLgogICAgICAgIGlmICggISRQb3NzaWJsZUNvbHVtbnsnTnVtYmVyJ30gKSB7CiAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAnTnVtYmVyJzsKICAgICAgICB9CiAgICB9CgogICAgIyBCdWlsZCB0aGUgdGl0bGUgdmFsdWUgKG9uIHRvcCBvZiB0aGUgYXJ0aWNsZSBsaXN0KS4KICAgIG15ICRUaXRsZSA9ICRDYXRlZ29yeURhdGF7TmFtZX0KICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RGVmYXVsdDo6Um9vdENhdGVnb3J5TmFtZScpCiAgICAgICAgfHwgJyc7CgogICAgIyBCdWlsZCB0aGUgSFRNTCBmb3IgdGhlIGxpc3Qgb2YgRkFRIGFydGljbGVzIGluIHRoZSBnaXZlbiBjYXRlZ29yeS4KICAgIG15ICRGQVFJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5GQVFMaXN0U2hvdygKICAgICAgICBGQVFJRHMgICAgID0+IFxAVmlld2FibGVJdGVtSURzLAogICAgICAgIFRvdGFsICAgICAgPT4gc2NhbGFyIEBWaWV3YWJsZUl0ZW1JRHMsCiAgICAgICAgVmlldyAgICAgICA9PiAkVmlldywKICAgICAgICBFbnYgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgPT4gJExpbmtTb3J0LAogICAgICAgIExpbmtGaWx0ZXIgPT4gJEZpbHRlckxpbmssCgogICAgICAgIFRpdGxlTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdGQVEgQXJ0aWNsZXMnKSwKICAgICAgICBUaXRsZVZhbHVlID0+ICRUaXRsZSwKCiAgICAgICAgTGltaXQgICAgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICBGaWx0ZXIgICAgICAgPT4gJEZpbHRlciwKICAgICAgICBGaWx0ZXJMaW5rICAgPT4gJEZpbHRlckxpbmssCiAgICAgICAgT3JkZXJCeSAgICAgID0+ICRPcmRlckJ5LAogICAgICAgIFNvcnRCeSAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIFNob3dDb2x1bW5zICA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgIE91dHB1dCAgICAgICA9PiAxLAogICAgICAgIE5hdiAgICAgICAgICA9PiAkTmF2LAogICAgICAgIEZBUVRpdGxlU2l6ZSA9PiAkQ29uZmlnLT57VGl0bGVTaXplfSwKICAgICk7CgogICAgIyBTaG93IHRoZSBGQVEgYXJ0aWNsZSBsaXN0LgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRSXRlbUxpc3QnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGQVFJdGVtTGlzdEhUTUwgPT4gJEZBUUl0ZW1MaXN0SFRNTCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIFNldCBRdWlja1NlYXJjaCBtb2RlLgogICAgbXkgJE1vZGUgPSAnQWdlbnQnOwogICAgaWYgKCAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkTW9kZSA9ICdBZ2VudFNtYWxsJzsKICAgIH0KCiAgICAjIFNob3cgUXVpY2tTZWFyY2guCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93UXVpY2tTZWFyY2goCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICRNb2RlLAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICROYXYsCiAgICApOwoKICAgIG15ICVJbmZvQm94UmVzdWx0czsKCiAgICAjIFNob3cgbGFzdCBhZGRlZCBhbmQgbGFzdCB1cGRhdGVkIGFydGljbGVzLgogICAgZm9yIG15ICRUeXBlIChxdyhMYXN0Q3JlYXRlIExhc3RDaGFuZ2UpKSB7CgogICAgICAgIG15ICRTaG93T2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJE5hdiwKICAgICAgICApOwogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBTdG9yZSB0aGUgTmV3c0JveFJlc3VsdC4KICAgICAgICAkSW5mb0JveFJlc3VsdHN7JFR5cGV9ID0gJFNob3dPazsKICAgIH0KCiAgICAjIFNob3cgdG9wIHRlbiBhcnRpY2xlcy4KICAgIG15ICRTaG93T2sgPSAkTGF5b3V0T2JqZWN0LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZ2VudCcsCiAgICAgICAgQ2F0ZWdvcnlJRCAgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICROYXYsCiAgICApOwogICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIFN0b3JlIHRoZSBOZXdzQm94UmVzdWx0LgogICAgJEluZm9Cb3hSZXN1bHRze1RvcDEwfSA9ICRTaG93T2s7CgogICAgIyBTZXQgdGhlIFNpZGViYXIgd2lkdGguCiAgICBteSAkU2lkZWJhckNsYXNzID0gJ0xhcmdlJzsKCiAgICAjIENoZWNrIGlmIGFsbCBJbmZvQm94ZXMgYXJlIGVtcHR5IGFuZCBoaWRlIHRoZSBTaWRlYmFyLgogICAgaWYgKAogICAgICAgICRJbmZvQm94UmVzdWx0c3tMYXN0Q3JlYXRlfSBlcSAtMQogICAgICAgICYmICRJbmZvQm94UmVzdWx0c3tMYXN0Q2hhbmdlfSBlcSAtMQogICAgICAgICYmICRJbmZvQm94UmVzdWx0c3tUb3AxMH0gZXEgLTEKICAgICAgICApCiAgICB7CiAgICAgICAgJFNpZGViYXJDbGFzcyA9ICdIaWRkZW4nOwogICAgfQoKICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKICAgICAgICAkU2lkZWJhckNsYXNzID0gJ01lZGl1bSc7CiAgICB9CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUV4cGxvcmVyJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgU2lkZWJhckNsYXNzID0+ICRTaWRlYmFyQ2xhc3MsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkTmF2ICYmICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICB9CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFIaXN0b3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBQZXJtaXNzaW9uIGNoZWNrLgogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBHZXQgbmVlZGVkIEl0ZW1JRAogICAgJEdldFBhcmFte0l0ZW1JRH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApOwoKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NhblwndCBzaG93IGhpc3RvcnksIGFzIG5vIEl0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIENoZWNrIHVzZXIgcGVybWlzc2lvbi4KICAgIG15ICRQZXJtaXNzaW9uID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgVHlwZSAgICAgICA9PiAncm8nLAogICAgKTsKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIGNhdGVnb3J5IScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEhpc3RvcnkgPSAkRkFRT2JqZWN0LT5GQVFIaXN0b3J5R2V0KAogICAgICAgIEl0ZW1JRCA9PiAkRkFRRGF0YXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGZvciBteSAkSGlzdG9yeUVudHJ5ICggQHskSGlzdG9yeX0gKSB7CgogICAgICAgICMgUmVwbGFjZSBJRCB3aXRoIGZ1bGwgdXNlciBuYW1lIG9uIENyZWF0ZWRCeSBrZXkKICAgICAgICBteSAlVXNlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0sCiAgICAgICAgICAgIENhY2hlZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEhpc3RvcnlFbnRyeS0+e0NyZWF0ZWRCeX0gPSAiJFVzZXJ7VXNlckxvZ2lufSAoJFVzZXJ7VXNlckZ1bGxuYW1lfSkiOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAleyRIaXN0b3J5RW50cnl9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUeXBlICA9PiAnU21hbGwnLAogICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEhpc3RvcnknKSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRSGlzdG9yeScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICB9LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFKb3VybmFsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgR2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQuCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICBteSAkSm91cm5hbExpbWl0ID0gJENvbmZpZy0+e0pvdXJuYWxMaW1pdH0gfHwgNTAwOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBQZXJtaXNzaW9uIGNoZWNrLgogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEdldCBKb3VybmFsIGVudHJpZXMuCiAgICBteSAkSm91cm5hbCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRSm91cm5hbEdldCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKSAvLyBbXTsKCiAgICAjIEZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duLgogICAgbXkgQFNob3dDb2x1bW5zOwogICAgaWYgKCAkQ29uZmlnLT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAjIEdldCBhbGwgcG9zc2libGUgY29sdW1ucyBmcm9tIGNvbmZpZy4KICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkQ29uZmlnLT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICMgR2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24uCiAgICAgICAgQ09MVU1OTkFNRToKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJVBvc3NpYmxlQ29sdW1uICkgewogICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRQb3NzaWJsZUNvbHVtbnskTmFtZX07CiAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zLCAkTmFtZTsKICAgICAgICB9CgogICAgICAgICMgRW5mb3JjZSBGQVEgbnVtYmVyIGNvbHVtbiBzaW5jZSBpcyB0aGUgbGluayBNYXN0ZXJBY3Rpb24gaG9vay4KICAgICAgICBpZiAoICEkUG9zc2libGVDb2x1bW57J051bWJlcid9ICkgewogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdGQVEgSm91cm5hbCcpLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICRPdXRwdXQgLj0gJFNlbGYtPl9GQVFKb3VybmFsU2hvdygKICAgICAgICBKb3VybmFsICAgICAgICAgID0+ICRKb3VybmFsLAogICAgICAgIFRvdGFsICAgICAgICAgICAgPT4gc2NhbGFyIEB7JEpvdXJuYWx9LAogICAgICAgIFRpdGxlTmFtZSAgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgSm91cm5hbCcpLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJEpvdXJuYWxMaW1pdCwKICAgICAgICBTaG93Q29sdW1ucyAgICAgID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgSm91cm5hbFRpdGxlU2l6ZSA9PiAkQ29uZmlnLT57VGl0bGVTaXplfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0ZBUUpvdXJuYWxTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBMb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlLgogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VyRkFRSm91cm5hbE92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgU2V0IGZyb250ZW5kLgogICAgbXkgJEZyb250ZW5kID0gJ0FnZW50JzsKCiAgICAjIFNldCBkZWZhdWx0IHZpZXcgbW9kZSB0byAnc21hbGwnLgogICAgbXkgJFZpZXcgPSAkUGFyYW17Vmlld30gfHwgJ1NtYWxsJzsKCiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgU3RvcmUgbGF0ZXN0IHZpZXcgbW9kZS4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ1VzZXJGQVFKb3VybmFsT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIFZhbHVlICAgICA9PiAkVmlldywKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGcm9udGVuZDo6Sm91cm5hbE92ZXJ2aWV3Jyk7CiAgICBpZiAoICEkQmFja2VuZHMgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIGNvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnKSwKICAgICAgICApOwogICAgfQogICAgaWYgKCByZWYgJEJhY2tlbmRzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvbmZpZyBvcHRpb24gRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgYSBIQVNIIHJlZiEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgQ2hlY2sgZm9yIGNvbmZpZyBrZXkuCiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgIiVzIiEnLCAkVmlldyApLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFN0YXJ0SGl0ID0gaW50KCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwoKICAgICMgR2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQuCiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlckZBUUpvdXJuYWxPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0ZBUUpvdXJuYWxPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwoKICAgICMgQ2hlY2sgc3RhcnQgb3B0aW9uLCBpZiBoaWdoZXIgdGhlbiBlbGVtZW50cyBhdmFpbGFibGUsIHNldCBpdCB0byB0aGUgbGFzdCBvdmVydmlldyBwYWdlCiAgICAjICAgKFRoYW5rcyB0byBTdGVmYW4gU2NobWlkdCEpCiAgICBpZiAoICRTdGFydEhpdCA+ICRQYXJhbXtUb3RhbH0gKSB7CiAgICAgICAgbXkgJFBhZ2VzID0gaW50KCAoICRQYXJhbXtUb3RhbH0gLyAkUGFnZVNob3duICkgKyAwLjk5OTk5ICk7CiAgICAgICAgJFN0YXJ0SGl0ID0gKCAoICRQYWdlcyAtIDEgKSAqICRQYWdlU2hvd24gKSArIDE7CiAgICB9CgogICAgIyBHZXQgZGF0YSBzZWxlY3Rpb24uCiAgICBteSAlRGF0YTsKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1ByZWZlcmVuY2VzR3JvdXBzJyk7CiAgICBpZiAoICRDb25maWcgJiYgJENvbmZpZy0+eyRHcm91cH0gJiYgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSApIHsKICAgICAgICAlRGF0YSA9ICV7ICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gfTsKICAgIH0KCiAgICAjIFNldCBwYWdlIGxpbWl0IGFuZCBidWlsZCBwYWdlIG5hdmlnYXRpb24uCiAgICBteSAkTGltaXQgICA9ICRQYXJhbXtMaW1pdH0gfHwgMjBfMDAwOwogICAgbXkgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgIyBCdWlsZCBzaG93biBGQVEgYXJ0aWNsZXMgb24gYSBwYWdlLgogICAgJFBhcmFte1JlcXVlc3RlZFVSTH0gICAgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgID0+ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICA9PiBcJURhdGEsCiAgICApOwoKICAgICMgU3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4gKGZvciBiYWNrIG1lbnUgYWN0aW9uKS4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRQYXJhbXtSZXF1ZXN0ZWRVUkx9LAogICAgKTsKICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFBhcmFte1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgQnVpbGQgbmF2aWdhdGlvbiBiYXIgY29udGVudC4KICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgIGZvciBteSAkQmFja2VuZCAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CgogICAgICAgICMgQnVpbGQgbmF2aWdhdGlvbiBiYXIgdmlldyBtb2RlLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIEN1cnJlbnQgdmlldyBpcyBjb25maWd1cmVkIGluIGJhY2tlbmQuCiAgICAgICAgaWYgKCAkVmlldyBlcSAkQmFja2VuZCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIGlmIHBhZ2UgbmF2aWdhdGlvbiBpcyBhdmFpbGFibGUuCiAgICBpZiAoJVBhZ2VOYXYpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhZ2VOYXYsCiAgICAgICAgKTsKCiAgICAgICAgIyBEb24ndCBzaG93IGNvbnRleHQgc2V0dGluZ3MgaW4gQUpBWCBjYXNlIChlLiBnLiBpbiBjdXN0b21lciBGQVEgaGlzdG9yeSksIGJlY2F1c2UgdGhlCiAgICAgICAgIyAgIHN1Ym1pdCB3aXRoIHBhZ2UgcmVsb2FkIHdpbGwgbm90IHdvcmsgdGhlcmUKICAgICAgICBpZiAoICEkUGFyYW17QUpBWH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXROYXZCYXIgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUU92ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBWaWV3ID0+ICRWaWV3LAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJE91dHB1dFJhdyA9ICRPdXRwdXROYXZCYXI7CgogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfSApICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBDaGVjayBmb3IgYmFja2VuZCBvYmplY3QuCiAgICBteSAkT2JqZWN0ID0gJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfS0+bmV3KCAleyRTZWxmfSApOwogICAgcmV0dXJuIGlmICEkT2JqZWN0OwoKICAgICMgUnVuIG1vZHVsZS4KICAgIG15ICRPdXRwdXQgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEZyb250ZW5kICA9PiAkRnJvbnRlbmQsCiAgICAgICAgVGl0bGVTaXplID0+ICRQYXJhbXtKb3VybmFsVGl0bGVTaXplfSwKICAgICk7CgogICAgJE91dHB1dFJhdyAuPSAkT3V0cHV0OwoKICAgICMgQ3JlYXRlIG92ZXJ2aWV3IG5hdmlnYXRpb24gYmFyLgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgUmV0dXJuIGNvbnRlbnQgaWYgYXZhaWxhYmxlLgogICAgcmV0dXJuICRPdXRwdXRSYXc7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFMYW5ndWFnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUnd9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBydyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJUdldFBhcmFtOwoKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICBteSAkRkFRT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBDaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICYmICRNdWx0aUxhbmd1YWdlICkgewoKICAgICAgICAjIEdldCB0aGUgTGFuZ3VhZ2VJRAogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0xhbmd1YWdlSUQnICkgfHwgJyc7CgogICAgICAgICMgQ2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycy4KICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlTGFuZ3VhZ2VEYXRhID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICBBY3Rpb24gPT4gJ0NoYW5nZScsCiAgICAgICAgICAgICVMYW5ndWFnZURhdGEsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBDaGFuZ2UgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2hhbmdlQWN0aW9uJyAmJiAkTXVsdGlMYW5ndWFnZSApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgbXkgJUVycm9yOwogICAgICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhMYW5ndWFnZUlEIE5hbWUpKSB7CgogICAgICAgICAgICAjIFN0b3JlIG5lZWRlZCBwYXJhbWV0ZXJzIGluICVHZXRQYXJhbSB0byBtYWtlIGl0IHJlLWxvYWRhYmxlCiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgIGlmICggISRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKCiAgICAgICAgICAgICAgICAjIEFkZCB2YWxpZGF0aW9uIGNsYXNzIGFuZCBzZXJ2ZXIgZXJyb3IgZXJyb3IgY2xhc3MuCiAgICAgICAgICAgICAgICAkRXJyb3J7ICRQYXJhbU5hbWUgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwoKICAgICAgICAgICAgICAgICMgQWRkIHNlcnZlciBlcnJvciBzdHJpbmcgZm9yIGNhdGVnb3J5IG5hbWUgZmllbGQuCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU5hbWUgZXEgJ05hbWUnICkgewogICAgICAgICAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte05hbWV9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlIGxhbmd1YWdlIG5hbWUKICAgICAgICAgICAgbXkgJExhbmd1YWdlRXhpc3RzQWxyZWFkeSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlRHVwbGljYXRlQ2hlY2soCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJEdldFBhcmFte0xhbmd1YWdlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkTGFuZ3VhZ2VFeGlzdHNBbHJlYWR5KSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzIScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJUVycm9yKSB7CiAgICAgICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVFcnJvciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRTGFuZ3VhZ2UnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICMgVXBkYXRlIHRoZSBsYW5ndWFnZS4KICAgICAgICBteSAkTGFuZ3VhZ2VVcGRhdGVTdWNjZXNzZnVsID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VVcGRhdGUoCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRMYW5ndWFnZVVwZGF0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtOb3RpZmljYXRpb249VXBkYXRlIiApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQWRkCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkJyAmJiAkTXVsdGlMYW5ndWFnZSApIHsKCiAgICAgICAgIyBHZXQgdGhlIG5ldyBuYW1lLgogICAgICAgICRHZXRQYXJhbXtOYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYW1lJyApOwoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQWRkIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZEFjdGlvbicgJiYgJE11bHRpTGFuZ3VhZ2UgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgR2V0IHRoZSBuYW1lLgogICAgICAgICRHZXRQYXJhbXtOYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYW1lJyApOwoKICAgICAgICBteSAlRXJyb3I7CgogICAgICAgICMgY2hlY2sgZm9yIG5hbWUKICAgICAgICBpZiAoICEkR2V0UGFyYW17TmFtZX0gKSB7CiAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgaXMgcmVxdWlyZWQhJyk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBDaGVjayBmb3IgZHVwbGljYXRlIGxhbmd1YWdlIG5hbWUuCiAgICAgICAgICAgIG15ICRMYW5ndWFnZUV4aXN0c0FscmVhZHkgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0sCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRHZXRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJExhbmd1YWdlRXhpc3RzQWxyZWFkeSkgewogICAgICAgICAgICAgICAgJEVycm9ye05hbWVTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhpcyBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cyEnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCVFcnJvcikgewogICAgICAgICAgICAkU2VsZi0+X0VkaXQoCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gJ0FkZCcsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCB0aGUgbmV3IGxhbmd1YWdlLgogICAgICAgIG15ICRMYW5ndWFnZUFkZFN1Y2Nlc3NmdWwgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUFkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJExhbmd1YWdlQWRkU3VjY2Vzc2Z1bCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O05vdGlmaWNhdGlvbj1BZGQiICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEZWxldGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZWxldGUnICYmICRNdWx0aUxhbmd1YWdlICkgewoKICAgICAgICAjIEdldCB0aGUgTGFuZ3VhZ2VJRC4KICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdMYW5ndWFnZUlEJyApIHx8ICcnOwoKICAgICAgICBpZiAoICEkTGFuZ3VhZ2VJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIExhbmd1YWdlSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlTGFuZ3VhZ2VEYXRhID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VHZXQoCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVMYW5ndWFnZURhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgbXkgQEFmZmVjdGVkSXRlbXMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgIExhbmd1YWdlSURzID0+IFskTGFuZ3VhZ2VJRF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4geyVMYW5ndWFnZURhdGF9LAogICAgICAgICk7CgogICAgICAgICMgU2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vLgogICAgICAgIG15ICREaWFsb2dUeXBlID0gJ0NvbmZpcm1hdGlvbic7CgogICAgICAgICMgRGlzcGxheSBsaXN0IG9mIGFmZmVjdGVkIEZBUSBhcnRpY2xlcy4KICAgICAgICBpZiAoQEFmZmVjdGVkSXRlbXMpIHsKCiAgICAgICAgICAgICMgU2V0IHRoZSBkaWFsb2cgdHlwZSB0byBoYXZlIG9ubHkgMSBidXR0b246IE9LLgogICAgICAgICAgICAkRGlhbG9nVHlwZSA9ICdNZXNzYWdlJzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQEFmZmVjdGVkSXRlbXMpIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IElURU1JRCBpZiAhJUZBUURhdGE7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQWZmZWN0ZWRJdGVtc1JvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTm9BZmZlY3RlZEl0ZW1zJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVMYW5ndWFnZURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgICAgICk7CgogICAgICAgICMgQnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlLgogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIERpYWxvZ1R5cGUgPT4gJERpYWxvZ1R5cGUsCiAgICAgICAgKTsKCiAgICAgICAgIyBSZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUuCiAgICAgICAgbXkgJE91dHB1dEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+IFwlRGF0YSApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEZWxldGUgYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyAmJiAkTXVsdGlMYW5ndWFnZSApIHsKCiAgICAgICAgIyBHZXQgdGhlIExhbmd1YWdlSUQuCiAgICAgICAgbXkgJExhbmd1YWdlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFuZ3VhZ2VJRCcgKSB8fCAnJzsKCiAgICAgICAgaWYgKCAhJExhbmd1YWdlSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBMYW5ndWFnZUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlR2V0KAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElTGFuZ3VhZ2VEYXRhICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRoZSBsYW5ndWFnZS4KICAgICAgICBteSAkQ291bGREZWxldGVMYW5ndWFnZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlRGVsZXRlKAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlTGFuZ3VhZ2UpIHsKCiAgICAgICAgICAgICMgUmVkaXJlY3QgdG8gZXhwbG9yZXIsIHdoZW4gdGhlIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsLgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgU2hvdyBlcnJvciBtZXNzYWdlLCB3aGVuIGRlbGV0ZSBmYWlsZWQuCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBsYW5ndWFnZSAlcyEnLAogICAgICAgICAgICAgICAgICAgICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgT3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICBteSAkTm90aWZpY2F0aW9uICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOb3RpZmljYXRpb24nICkgfHwgJyc7CiAgICAgICAgbXkgJU5vdGlmaWNhdGlvblRleHQgPSAoCiAgICAgICAgICAgIFVwZGF0ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBsYW5ndWFnZSB1cGRhdGVkIScpLAogICAgICAgICAgICBBZGQgICAgPT4gVHJhbnNsYXRhYmxlKCdGQVEgbGFuZ3VhZ2UgYWRkZWQhJyksCiAgICAgICAgKTsKICAgICAgICBpZiAoICROb3RpZmljYXRpb24gJiYgJE5vdGlmaWNhdGlvblRleHR7JE5vdGlmaWNhdGlvbn0gKSB7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KCBJbmZvID0+ICROb3RpZmljYXRpb25UZXh0eyROb3RpZmljYXRpb259ICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X092ZXJ2aWV3KCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9FZGl0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0FjdGlvbkxpc3QnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VXBkYXRlJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckVkaXQnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyQWRkJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX092ZXJ2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dCA9ICcnOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25MaXN0JywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25BZGQnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICBteSAlTGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15ICVKU0RhdGE7CgogICAgICAgICMgSWYgdGhlcmUgYXJlIGFueSBsYW5ndWFnZXMsIHRoZXkgYXJlIHNob3duLgogICAgICAgIGlmICglTGFuZ3VhZ2VzKSB7CiAgICAgICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIHNvcnQgeyAkTGFuZ3VhZ2VzeyRhfSBjbXAgJExhbmd1YWdlc3skYn0gfSBrZXlzICVMYW5ndWFnZXMgKSB7CgogICAgICAgICAgICAgICAgIyBDcmVhdGUgc3RydWN0dXJlIGZvciBKUy4KICAgICAgICAgICAgICAgICRKU0RhdGF7JExhbmd1YWdlSUR9ID0gewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRJRCAgICAgICAgICAgICAgICAgID0+ICdEZWxldGVMYW5ndWFnZUlEJyAuICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRTZWxlY3RvciAgICAgICAgICAgID0+ICcjRGVsZXRlTGFuZ3VhZ2VJRCcgLiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICBEaWFsb2dDb250ZW50UXVlcnlTdHJpbmcgICA9PiAnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPURlbGV0ZTtMYW5ndWFnZUlEPScgLiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyA9PiAnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPURlbGV0ZUFjdGlvbjtMYW5ndWFnZUlEPScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGFuZ3VhZ2VJRCwKICAgICAgICAgICAgICAgICAgICBEaWFsb2dUaXRsZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICdEZWxldGUgTGFuZ3VhZ2UgJXMnLAogICAgICAgICAgICAgICAgICAgICAgICAkTGFuZ3VhZ2VzeyRMYW5ndWFnZUlEfSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAjIEdldCBsYW5ndWFnZXMgcmVzdWx0LgogICAgICAgICAgICAgICAgbXkgJUxhbmd1YWdlRGF0YSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlR2V0KAogICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslTGFuZ3VhZ2VEYXRhfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdGQVFEYXRhJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFwlSlNEYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBPdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkLgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0Rpc2FibGVkJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFQcmludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBQZXJtaXNzaW9uIGNoZWNrLgogICAgaWYgKCAhJFNlbGYtPntBY2Nlc3NSb30gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBuZWVkIHJvIHBlcm1pc3Npb24hJyksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkT3V0cHV0OwoKICAgICMgR2V0IHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBDaGVjayB1c2VyIHBlcm1pc3Npb24uCiAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFR5cGUgICAgICAgPT4gJ3JvJywKICAgICk7CiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAjIEdldCBsaW5rZWQgb2JqZWN0cy4KICAgIG15ICRMaW5rTGlzdFdpdGhEYXRhID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIEtleSAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICBTdGF0ZSAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIEdldCBsaW5rIHR5cGUgbGlzdC4KICAgIG15ICVMaW5rVHlwZUxpc3QgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBHZXQgdGhlIGxpbmsgZGF0YS4KICAgIG15ICVMaW5rRGF0YTsKICAgIGlmICggJExpbmtMaXN0V2l0aERhdGEgJiYgcmVmICRMaW5rTGlzdFdpdGhEYXRhIGVxICdIQVNIJyAmJiAleyRMaW5rTGlzdFdpdGhEYXRhfSApIHsKICAgICAgICAlTGlua0RhdGEgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgICAgIFZpZXdNb2RlICAgICAgICAgPT4gJ1NpbXBsZVJhdycsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIFByZXBhcmUgZmllbGRzIGRhdGEuCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgTm8gcXVvdGluZyBpZiBIVE1MIHZpZXcgaXMgZW5hYmxlZC4KICAgICAgICBuZXh0IEZJRUxEIGlmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJyk7CgogICAgICAgICMgSFRNTCBxdW90aW5nLgogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgR2V0IHVzZXIgaW5mbyAoQ3JlYXRlZEJ5KS4KICAgIG15ICVVc2VySW5mbyA9ICRVc2VyT2JqZWN0LT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEZBUURhdGF7Q3JlYXRlZEJ5fQogICAgKTsKICAgICRQYXJhbXtDcmVhdGVkQnlMb2dpbn0gPSAkVXNlckluZm97VXNlckxvZ2lufTsKCiAgICAjIEdldCB1c2VyIGluZm8gKENoYW5nZWRCeSkuCiAgICAlVXNlckluZm8gPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRGQVFEYXRhe0NoYW5nZWRCeX0KICAgICk7CiAgICAkUGFyYW17Q2hhbmdlZEJ5TG9naW59ID0gJFVzZXJJbmZve1VzZXJMb2dpbn07CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIEdlbmVyYXRlIFBERiBvdXRwdXQuCiAgICBteSAkUHJpbnRlZEJ5ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdwcmludGVkIGJ5Jyk7CiAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwogICAgbXkgJVBhZ2U7CgogICAgIyBHZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMuCiAgICAkUGFnZXtNYXhQYWdlc30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgIGlmICggISRQYWdle01heFBhZ2VzfSB8fCAkUGFnZXtNYXhQYWdlc30gPCAxIHx8ICRQYWdle01heFBhZ2VzfSA+IDEwMDAgKSB7CiAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgfQogICAgbXkgJEhlYWRlclJpZ2h0ICA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJykgLiAkRkFRRGF0YXtOdW1iZXJ9OwogICAgbXkgJEhlYWRsaW5lTGVmdCA9ICRIZWFkZXJSaWdodDsKICAgIG15ICRUaXRsZSAgICAgICAgPSAkSGVhZGVyUmlnaHQ7CiAgICBpZiAoICRGQVFEYXRhe1RpdGxlfSApIHsKICAgICAgICAkSGVhZGxpbmVMZWZ0ID0gJEZBUURhdGF7VGl0bGV9OwogICAgICAgICRUaXRsZSAuPSAnIC8gJyAuICRGQVFEYXRhe1RpdGxlfTsKICAgIH0KCiAgICAkUGFnZXtNYXJnaW5Ub3B9ICAgID0gMzA7CiAgICAkUGFnZXtNYXJnaW5SaWdodH0gID0gNDA7CiAgICAkUGFnZXtNYXJnaW5Cb3R0b219ID0gNDA7CiAgICAkUGFnZXtNYXJnaW5MZWZ0fSAgID0gNDA7CiAgICAkUGFnZXtIZWFkZXJSaWdodH0gID0gJEhlYWRlclJpZ2h0OwogICAgJFBhZ2V7Rm9vdGVyTGVmdH0gICA9ICcnOwogICAgJFBhZ2V7UGFnZVRleHR9ICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgJFBhZ2V7UGFnZUNvdW50fSAgICA9IDE7CgogICAgIyBDcmVhdGUgbmV3IFBERiBkb2N1bWVudC4KICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgRW5jb2RlID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICApOwoKICAgICMgQ3JlYXRlIGZpcnN0IFBERiBwYWdlLgogICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAlUGFnZSwKICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgKTsKICAgICRQYWdle1BhZ2VDb3VudH0rKzsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIE91dHB1dCB0aXRsZS4KICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgIEZvbnRTaXplID0+IDEzLAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIE91dHB1dCAicHJpbnRlZCBieSIuCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgPT4gJFByaW50ZWRCeSAuICcgJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckZ1bGxuYW1lfSAuICcgKCcKICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJFbWFpbH0gLiAnKScKICAgICAgICAgICAgLiAnLCAnIC4gJFRpbWUsCiAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTQsCiAgICApOwoKICAgICMgT3V0cHV0IEZBUSBpbmZvcm1hdGlvbi4KICAgICRTZWxmLT5fUERGT3V0cHV0RkFRSGVhZGVySW5mbygKICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgKTsKCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dEtleXdvcmRzKAogICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICMgT3V0cHV0IEZBUSBkeW5hbWljIGZpZWxkcy4KICAgICRTZWxmLT5fUERGT3V0cHV0RkFRRHluYW1pY0ZpZWxkcygKICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgKTsKCiAgICAkU2VsZi0+X1BERk91cHV0RkFRQ29udGVudCgKICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgKTsKCiAgICAjIE91dHB1dCBsaW5rZWQgb2JqZWN0cy4KICAgIGlmICglTGlua0RhdGEpIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dExpbmtlZE9iamVjdHMoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIExpbmtEYXRhICAgICA9PiBcJUxpbmtEYXRhLAogICAgICAgICAgICBMaW5rVHlwZUxpc3QgPT4gXCVMaW5rVHlwZUxpc3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFJldHVybiB0aGUgUERGIGRvY3VtZW50LgogICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV8nIC4gJEZBUURhdGF7TnVtYmVyfTsKCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgIG15ICREYXRlVGltZSAgICAgICA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CiAgICBteSAkWSAgICAgICAgICAgICAgPSAkRGF0ZVRpbWUtPntZZWFyfTsKICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICBteSAkRCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0RheX0gKTsKICAgIG15ICRoICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57SG91cn0gKTsKICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwoKICAgIG15ICRQREZTdHJpbmcgPSAkUERGT2JqZWN0LT5Eb2N1bWVudE91dHB1dCgpOwogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwoKfQoKc3ViIF9QREZPdXRwdXRGQVFIZWFkZXJJbmZvIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBDcmVhdGUgbGVmdCB0YWJsZS4KICAgIG15ICRUYWJsZUxlZnQgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NhdGVnb3J5JykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfSApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7U3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBMYW5ndWFnZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZC4KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgIG15ICRSb3cgPSB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFuZ3VhZ2UnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRkFRRGF0YXtMYW5ndWFnZX0gKSwKICAgICAgICB9OwogICAgICAgIHB1c2ggQHskVGFibGVMZWZ0fSwgJFJvdzsKICAgIH0KCiAgICAjIEFwcHJvdmFsIHN0YXRlIHJvdywgZmVhdHVyZSBpcyBlbmFibGVkLgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewogICAgICAgICRGQVFEYXRhe0FwcHJvdmFsfSA9ICRGQVFEYXRhe0FwcHJvdmVkfSA/ICdZZXMnIDogJ05vJzsKICAgICAgICBteSAkUm93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0FwcHJvdmFsJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7QXBwcm92YWx9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBDcmVhdGUgcmlnaHQgdGFibGUuCiAgICBteSAkVGFibGVSaWdodDsKCiAgICBteSAkVm90aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgVm90aW5nIHJvd3MsIGZlYXR1cmUgaXMgZW5hYmxlZC4KICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJFRhYmxlUmlnaHQgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVm90ZXMnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdSZXN1bHQnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9IC4gIiAlIiwKICAgICAgICAgICAgfSwKICAgICAgICBdOwogICAgfQoKICAgICMgTGFzdCB1cGRhdGUgcm93LgogICAgcHVzaCBAeyRUYWJsZVJpZ2h0fSwgewogICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCB1cGRhdGUnKSAuICc6JywKICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAkRkFRRGF0YXtDaGFuZ2VkfSwKICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgIyBPdXRwdXQgdGFibGUuCiAgICBQQUdFOgogICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICMgT3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KS4KICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBTdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlLgogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0TGlua2VkT2JqZWN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBMaW5rRGF0YSBMaW5rVHlwZUxpc3QpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZSAgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVHlwZUxpc3QgPSAleyAkUGFyYW17TGlua1R5cGVMaXN0fSB9OwogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGZvciBteSAkTGlua1R5cGVMaW5rRGlyZWN0aW9uICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJXsgJFBhcmFte0xpbmtEYXRhfSB9ICkgewoKICAgICAgICAjIEludmVzdGlnYXRlIGxpbmsgdHlwZSBuYW1lLgogICAgICAgIG15IEBMaW5rRGF0YSAgICAgPSBzcGxpdCBxezo6fSwgJExpbmtUeXBlTGlua0RpcmVjdGlvbjsKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJFR5cGVMaXN0eyAkTGlua0RhdGFbMF0gfS0+eyAkTGlua0RhdGFbMV0gLiAnTmFtZScgfTsKICAgICAgICAkTGlua1R5cGVOYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMaW5rVHlwZU5hbWUpOwoKICAgICAgICAjIERlZmluZSBoZWFkbGluZS4KICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gPSAkTGlua1R5cGVOYW1lIC4gJzonOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAnJzsKCiAgICAgICAgIyBFeHRyYWN0IG9iamVjdCBsaXN0LgogICAgICAgIG15ICRPYmplY3RMaXN0ID0gJFBhcmFte0xpbmtEYXRhfS0+eyRMaW5rVHlwZUxpbmtEaXJlY3Rpb259OwoKICAgICAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7JE9iamVjdExpc3R9ICkgewoKICAgICAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJE9iamVjdExpc3QtPnskT2JqZWN0fSB9ICkgewoKICAgICAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSB8fD0gJyc7CiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkSXRlbS0+e1RpdGxlfSB8fCAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICAgICAkUm93Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MzE7CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBPdXRwdXQgaGVhZGxpbmUuCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGlua2VkIE9iamVjdHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBTZXQgbmV3IHBvc2l0aW9uLgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyBUYWJsZSBwYXJhbXMuCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIE91dHB1dCB0YWJsZS4KICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBPdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLgogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAjIFN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UuCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRLZXl3b3JkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBPdXRwdXQgaGVhZGxpbmUuCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdLZXl3b3JkcycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIFRhYmxlIHBhcmFtcy4KICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICMgT3V0cHV0IHRhYmxlLgogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIE91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkuCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgU3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZS4KICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dEZBUUR5bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgbXkgJE91dHB1dCA9IDA7CiAgICBteSAlRkFRICAgID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgIG15ICVUYWJsZVBhcmFtOwogICAgbXkgJFJvdyA9IDA7CgogICAgIyBHZXQgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZS4KICAgIG15ICREeW5hbWljRmllbGRGaWx0ZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRUHJpbnQiKS0+e0R5bmFtaWNGaWVsZH07CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0LgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnRkFRJ10sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJER5bmFtaWNGaWVsZEZpbHRlciB8fCB7fSwKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEdlbmVyYXRlIHRhYmxlLgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkRkFRe0ZBUUlEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJFZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRWYWx1ZSBlcSAiIjsKCiAgICAgICAgIyBHZXQgcHJpbnQgc3RyaW5nIGZvciB0aGlzIGR5bmFtaWMgZmllbGQuCiAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9CiAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkKICAgICAgICAgICAgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRWYWx1ZVN0cmctPntWYWx1ZX07CgogICAgICAgICRSb3crKzsKICAgICAgICAkT3V0cHV0ID0gMTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgT3V0cHV0IEZBUSBkeW5hbWljIGZpZWxkcy4KICAgIGlmICgkT3V0cHV0KSB7CgogICAgICAgICMgU2V0IG5ldyBwb3NpdGlvbi4KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgICMgT3V0cHV0IGhlYWRsaW5lLAogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRkFRIER5bmFtaWMgRmllbGRzJyksCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC00LAogICAgICAgICk7CgogICAgICAgICMgVGFibGUgcGFyYW1zLgogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIE91dHB1dCB0YWJsZS4KICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBPdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLgogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICMgU3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZS4KICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3VwdXRGQVFDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwoKICAgICMgR2V0IHRoZSBjb25maWcgb2YgRkFRIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bi4KICAgIG15ICVGaWVsZHM7CiAgICBGSUVMRDoKICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAjIEdldCBjb25maWcgb2YgRkFRIGZpZWxkLgogICAgICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBTa2lwIG92ZXIgbm90IHNob3duIGZpZWxkcy4KICAgICAgICBuZXh0IEZJRUxEIGlmICEkQ29uZmlnLT57U2hvd307CgogICAgICAgICMgU3RvcmUgb25seSB0aGUgY29uZmlnIG9mIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bi4KICAgICAgICAkRmllbGRzeyAiRmllbGQiIC4gJE51bWJlciB9ID0gJENvbmZpZzsKICAgIH0KCiAgICAjIFNvcnQgc2hvd24gZmllbGRzIGJ5IHByaW9yaXR5LgogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgR2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZC4KICAgICAgICBteSAkU3RhdGVUeXBlRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgQ29udmVydCBIVE1MIHRvIEFTQ0lJLgogICAgICAgIG15ICRBc2NpaUZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICBTdHJpbmcgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICApOwoKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkQXNjaWlGaWVsZCB8fCAnJzsKICAgICAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICMgU2V0IG5ldyBwb3NpdGlvbi4KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgICAgICMgVHJhbnNsYXRlIHRoZSBmaWVsZCBuYW1lIGFuZCBzdGF0ZS4KICAgICAgICBteSAkRmllbGROYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRmllbGRzeyRGaWVsZH0tPnsnQ2FwdGlvbid9ICkKICAgICAgICAgICAgLiAnICgnCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkU3RhdGVUeXBlRGF0YS0+e05hbWV9ICkKICAgICAgICAgICAgLiAnKSc7CgogICAgICAgICMgT3V0cHV0IGhlYWRsaW5lLgogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIFNldCBuZXcgcG9zaXRpb24uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC00LAogICAgICAgICk7CgogICAgICAgICMgVGFibGUgcGFyYW1zLgogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIE91dHB1dCB0YWJsZS4KICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBPdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpLgogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICMgU3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZS4KICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRKU09OID0gJyc7CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRTdWJqZWN0ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1YmplY3QnICk7CiAgICBteSAkQm9keSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdCb2R5JyApOwoKICAgIG15IEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3Q7CiAgICBteSAkUmVsYXRlZEZBUUFydGljbGVGb3VuZE5vdGhpbmc7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBpZiAoICRTdWJqZWN0IHx8ICRCb2R5ICkgewoKICAgICAgICAjIEdldCB0aGUgbGFuZ3VhZ2UgZnJvbSB0aGUgdXNlciBhbmQgYWRkIHRoZSBkZWZhdWx0IGxhbmd1YWdlcyBmcm9tIHRoZSBjb25maWcuCiAgICAgICAgbXkgJFJlbGF0ZWRBcnRpY2xlTGFuZ3VhZ2VzID0gJENvbmZpZy0+eydEZWZhdWx0TGFuZ3VhZ2VzJ30gfHwgW107CgogICAgICAgICMgQ2hlY2sgaWYgdGhlIHVzZXIgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMuCiAgICAgICAgbXkgJUxvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlc0xhbmd1YWdlID0gbWFwIHsgJF8gPT4gMSB9IEB7JFJlbGF0ZWRBcnRpY2xlTGFuZ3VhZ2VzfTsKICAgICAgICBpZiAoICEkTG9va3VwUmVsYXRlZEZBUUFydGljbGVzTGFuZ3VhZ2V7ICRMYXlvdXRPYmplY3QtPntVc2VyTGFuZ3VhZ2V9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQHskUmVsYXRlZEFydGljbGVMYW5ndWFnZXN9LCAkTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfTsKICAgICAgICB9CgogICAgICAgIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPlJlbGF0ZWRBZ2VudEFydGljbGVMaXN0KAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJFN1YmplY3QsCiAgICAgICAgICAgIEJvZHkgICAgICA9PiAkQm9keSwKICAgICAgICAgICAgTGFuZ3VhZ2VzID0+ICRSZWxhdGVkQXJ0aWNsZUxhbmd1YWdlcywKICAgICAgICAgICAgTGltaXQgICAgID0+ICRDb25maWctPntTaG93TGltaXR9IHx8IDEwLAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggIUBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgKSB7CiAgICAgICAgICAgICRSZWxhdGVkRkFRQXJ0aWNsZUZvdW5kTm90aGluZyA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChAUmVsYXRlZEZBUUFydGljbGVMaXN0KSB7CgogICAgICAgICMgR2VuZXJhdGUgdGhlIGh0bWwgZm9yIHRoZSB3aWRnZXQuCiAgICAgICAgbXkgJEFnZW50UmVsYXRlZEZBUUFydGljbGVzSFRNTFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcycsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QgICAgICAgICA9PiBcQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCwKICAgICAgICAgICAgICAgIFJlbGF0ZWRGQVFBcnRpY2xlRm91bmROb3RoaW5nID0+ICRSZWxhdGVkRkFRQXJ0aWNsZUZvdW5kTm90aGluZywKICAgICAgICAgICAgICAgIFZvdGVTdGFyc1Zpc2libGUgICAgICAgICAgICAgID0+ICRDb25maWctPntWb3RlU3RhcnNWaXNpYmxlfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQWdlbnRSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nID0+ICRBZ2VudFJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcsCiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlbmQgSlNPTiByZXNwb25zZQogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFSaWNoVGV4dDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgR2V0IHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdAogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRLZXkgKHF3KEl0ZW1JRCkpIHsKICAgICAgICAkR2V0UGFyYW17JEtleX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkS2V5ICk7CiAgICAgICAgaWYgKCAhJEdldFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vICVzIGlzIGdpdmVuIScsICRLZXkgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRSXRlbSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykgfHwgJ290cnMvJzsKICAgIG15ICRVUkxSZWdleCAgICA9ICcvJyAuICRTY3JpcHRBbGlhcyAuICdpbmRleC5wbFw/QWN0aW9uPUFnZW50RkFRWm9vbTsnCiAgICAgICAgLiAnU3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtJdGVtSUQ9JyAuICRHZXRQYXJhbXtJdGVtSUR9IC4gJztGaWxlSUQ9WzAtOV0rJzsKICAgIG15ICRFbGVtUmVnZXggPSAnc3JjPSIoJyAuICRVUkxSZWdleCAuICcpIic7CgogICAgbXkgQEZpZWxkczsKCiAgICBteSAkTG9hZGVkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgKICAgICAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICApOwoKICAgIGlmICggISRMb2FkZWQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IGxvYWQgTGFuZ3VhZ2VPYmplY3QhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRGQVFMYW5ndWFnZU9iamVjdCA9IEtlcm5lbDo6TGFuZ3VhZ2UtPm5ldygKICAgICAgICBVc2VyTGFuZ3VhZ2UgPT4gJEZBUUl0ZW17TGFuZ3VhZ2V9LAogICAgKTsKCiAgICAjIEdldCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIFRpY2tldCBDb21wb3NlLgogICAgbXkgJFRpY2tldENvbXBvc2VDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6VGlja2V0Q29tcG9zZScpOwoKICAgIG15ICRJbnRlcm5hbFN0YXRlVHlwZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAkSW50ZXJuYWxTdGF0ZUlEID0gJEludGVybmFsU3RhdGVUeXBlLT57U3RhdGVJRH07CgogICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKCiAgICBteSAkRm9ybUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Zvcm1JRCcgKTsKICAgIGlmICggISRGb3JtSUQgKSB7CiAgICAgICAgJEZvcm1JRCA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQ3JlYXRlKCk7CiAgICB9CgogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggMSAuLiA2ICkgewoKICAgICAgICAjIERvbid0IHdhc3RlIGFueSBmdXJ0aGVyIHByb2Nlc3NpbmcgcG93ZXIsIGlmIHRoZSBjdXJyZW50IGZpZWxkIGRvZXNuJ3QgaGF2ZSBhbnkgY29udGVudC4KICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRSXRlbXsgJ0ZpZWxkJyAuICRGaWVsZCB9OwoKICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJEZBUUl0ZW17ICdGaWVsZCcgLiAkRmllbGQgfTsKCiAgICAgICAgIyBHZXQgY29uZmlnIG9mIGN1cnJlbnQgRkFRIGZpZWxkIGZyb20gU3lzQ29uZmlnLgogICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCggJ0ZBUTo6SXRlbTo6RmllbGQnIC4gJEZpZWxkICk7CgogICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZENvbmZpZzsKICAgICAgICBuZXh0IEZJRUxEIGlmIHJlZiAkRmllbGRDb25maWcgbmUgJ0hBU0gnOwogICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZENvbmZpZy0+e1Nob3d9OwoKICAgICAgICBteSAkU3RhdGVUeXBlRGF0YSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRGaWVsZENvbmZpZy0+e1Nob3d9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgY3VycmVudCBmaWVsZCBpcyBpbnRlcm5hbC4KICAgICAgICBteSAkSXNJbnRlcm5hbDsKICAgICAgICBpZiAoICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gPT0gJEludGVybmFsU3RhdGVJRCApIHsKICAgICAgICAgICAgJElzSW50ZXJuYWwgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IGZpZWxkIHNob3VsZCBiZSB2aXNpYmxlIHRvIHRoZSBwdWJsaWMsIHRodXMgYmUgaW5zZXJ0ZWQgaW50byBhCiAgICAgICAgIyAgIHJlc3BvbnNlIHRvIGEgY3VzdG9tZXIgb3Igbm90LgogICAgICAgIGlmICggISRUaWNrZXRDb21wb3NlQ29uZmlnLT57SW5jbHVkZUludGVybmFsfSAmJiAkSXNJbnRlcm5hbCApIHsKICAgICAgICAgICAgbmV4dCBGSUVMRDsKICAgICAgICB9CgogICAgICAgICMgRXh0cmFjdCBhbGwgVVJMcyB3aGljaCBwb2ludCB0byBhbiBlbWJlZGRlZCBpbWFnZS4KICAgICAgICBteSBATWF0Y2hlZFVSTHMgPSAoICRGaWVsZENvbnRlbnQgPX4gbXskRWxlbVJlZ2V4fXhnbXMgKTsKICAgICAgICBmb3IgbXkgJFVSTCAoQE1hdGNoZWRVUkxzKSB7CgogICAgICAgICAgICAjIEV4dHJhY3QgdGhlIElEIG9mIHRoZSBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICgkRmlsZUlEKSA9ICRVUkwgPX4gbXsgRmlsZUlEPShbMC05XSspIH1tc3g7CgogICAgICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmlsZUlEOiAkRmlsZUlEIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IHRoZSBhdHRhY2htZW50IHRvIHdoaWNoIHRoZSBjdXJyZW50IFVSTCBwb2ludHMuCiAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgIEZpbGVJRCA9PiAkRmlsZUlELAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBBdHRhY2htZW50TWV0YSA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRmlsZW5hbWVUbXAgICAgPSAkQXR0YWNobWVudHtGaWxlbmFtZX07CiAgICAgICAgICAgIG15ICRTdWZmaXhUbXAgICAgICA9IDA7CiAgICAgICAgICAgIG15ICRVbmlxdWVGaWxlbmFtZSA9ICcnOwoKICAgICAgICAgICAgIyBDcmVhdGUgbm93IGFuIGFydGljbGUgYXR0YWNobWVudCAoaW5saW5lKSBiYXNlZCBvbiB0aGUgZGF0YSBvZiAlQXR0YWNobWVudCAoRkFRKS4KICAgICAgICAgICAgaWYgKCVBdHRhY2htZW50KSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiBuYW1lIGFscmVhZHkgZXhpc3RzLgogICAgICAgICAgICAgICAgd2hpbGUgKCAhJFVuaXF1ZUZpbGVuYW1lICkgewogICAgICAgICAgICAgICAgICAgICRVbmlxdWVGaWxlbmFtZSA9ICRGaWxlbmFtZVRtcDsKICAgICAgICAgICAgICAgICAgICBORVdOQU1FOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoIHJldmVyc2UgQEF0dGFjaG1lbnRNZXRhICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IE5FV05BTUUgaWYgJEZpbGVuYW1lVG1wIG5lICRBdHRhY2htZW50LT57RmlsZW5hbWV9OwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBOYW1lIGV4aXN0cyAtPiBjaGFuZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgICsrJFN1ZmZpeFRtcDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudHtGaWxlbmFtZX0gPX4gbXtcQSAoLiopIFwuICguKz8pIFx6fW1zeCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWxlbmFtZVRtcCA9ICIkMS0kU3VmZml4VG1wLiQyIjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWxlbmFtZVRtcCA9ICIkQXR0YWNobWVudHtGaWxlbmFtZX0tJFN1ZmZpeFRtcCI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJFVuaXF1ZUZpbGVuYW1lID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgTkVXTkFNRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnR7RmlsZW5hbWV9ID0gJEZpbGVuYW1lVG1wOwogICAgICAgICAgICAgICAgZGVsZXRlICRBdHRhY2htZW50e0NvbnRlbnRJRH07CgogICAgICAgICAgICAgICAgIyBBZGQgdGhlIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZSBvZiB0aGUgY3VycmVudCB0aWNrZXQuCiAgICAgICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICAgICAgICAgICAgICAlQXR0YWNobWVudCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb3VsZG5cJ3QgZ2V0IEZBUSBhdHRhY2htZW50ICcKICAgICAgICAgICAgICAgICAgICAgICAgLiAiKEl0ZW1JRDogJEdldFBhcmFte0l0ZW1JRH0sIEZpbGVJRDogJEZpbGVJRCkhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBHZXQgbmV3IENvbnRlbnRJRAogICAgICAgICAgICBteSAkQ29udGVudElETmV3ID0gJyc7CiAgICAgICAgICAgIEBBdHRhY2htZW50TWV0YSA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50TWV0YSkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICRGaWxlbmFtZVRtcCBuZSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfTsKICAgICAgICAgICAgICAgICRDb250ZW50SUROZXcgPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgICAgICBsYXN0IEFUVEFDSE1FTlQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJENvbnRlbnRJRE5ldyBlcSAnJyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkbid0IGRldGVybWluZSBhIG5ldyBDb250ZW50SUQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBFeHRyYWN0IHRoZSBhY3R1YWwgTUlNRSB0eXBlIGZyb20gdGhlIGNvbnRlbnQgdHlwZSwgd2hpY2ggYWxzbyBjb250YWlucyB0aGUgZmlsZW5hbWUuCiAgICAgICAgICAgIG15ICgkTWltZVR5cGUpID0gJEF0dGFjaG1lbnR7Q29udGVudFR5cGV9ID1+IG17XiguKy8uKyk7IFsgXSBuYW1lPS4rJH14bXM7CgogICAgICAgICAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAgICAgJFNlc3Npb24gPSAnJicgLiAkU2VsZi0+e1Nlc3Npb25OYW1lfSAuICc9JyAuICRTZWxmLT57U2Vzc2lvbklEfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDcmVhdGUgdGhlIG5ldyBpbmxpbmUgaW1hZ2UgVVJMLgogICAgICAgICAgICBteSAkSW5saW5lSW1hZ2UgPSAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAuICJBY3Rpb249UGljdHVyZVVwbG9hZDtGb3JtSUQ9JEZvcm1JRDtDb250ZW50SUQ9JENvbnRlbnRJRE5ldyRTZXNzaW9uIjsKCiAgICAgICAgICAgICMgUmVwbGFjZSB0aGUgaW1hZ2UgVVJMIHdpdGggdGhlIGlubGluZSBpbWFnZS4KICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9fiBze1xRJFVSTFxFfXskSW5saW5lSW1hZ2V9eG1zOwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgdGhlIG5hbWUgb2YgdGhlIGZpZWxkIGFzIGhlYWRlci4KICAgICAgICBpZiAoICRGaWVsZENvbmZpZy0+e0NhcHRpb259ICYmICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0ZpZWxkTmFtZXN9ICkgewoKICAgICAgICAgICAgIyBUcmFuc2xhdGUgdGhlIGNhcHRpb24gdG8gdGhlIGxhbmd1YWdlIG9mIHRoZSBGQVEgaXRlbS4KICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRDYXB0aW9uID0gJEZBUUxhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoICRGaWVsZENvbmZpZy0+e0NhcHRpb259ICk7CgogICAgICAgICAgICBpZiAoJFRyYW5zbGF0ZWRDYXB0aW9uKSB7CiAgICAgICAgICAgICAgICAkRmllbGRDb250ZW50ID0gJzxoMj4nIC4gJFRyYW5zbGF0ZWRDYXB0aW9uIC4gJzo8L2gyPicgLiAkRmllbGRDb250ZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHB1c2ggQEZpZWxkcywgJEZpZWxkQ29udGVudDsKICAgIH0KCiAgICBteSAkRkFRSFRNTCA9IGpvaW4oICc8YnIgLz4nLCBARmllbGRzICk7CgogICAgIyBHZXQgYWxsIG5vbi1pbmxpbmUgYXR0YWNobWVudHMgb2YgdGhlIEZBUSBpdGVtLgogICAgbXkgQEF0dGFjaG1lbnRzID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgU2hvd0lubGluZSA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSBARGF0YSA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNNZXRhKAogICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgKTsKCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRBdHRhY2htZW50RGF0YSAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgIG15ICVBdHRhY2htZW50ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJUF0dGFjaG1lbnQpIHsKCiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiBncmVwIHsgJEF0dGFjaG1lbnR7RmlsZW5hbWV9IGVxICRfLT57RmlsZW5hbWV9IH0gQERhdGE7CgogICAgICAgICAgICAjIEFkZCB0aGUgYXR0YWNobWVudCB0byB0aGUgdXBsb2FkIGNhY2hlIG9mIHRoZSBjdXJyZW50IHRpY2tldC4KICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICAgICAgICAgICAgICAlQXR0YWNobWVudCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb3VsZG5cJ3QgZ2V0IEZBUSBhdHRhY2htZW50ICcKICAgICAgICAgICAgICAgICAgICAuICIoSXRlbUlEOiAkR2V0UGFyYW17SXRlbUlEfSwgRmlsZUlEOiAkQXR0YWNobWVudERhdGEtPntGaWxlSUR9KSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CiAgICB9CgogICAgIyBTZW5kIGEgbGlzdCBvZiBhdHRhY2htZW50cyBpbiB0aGUgdXBsb2FkIGNhY2hlIGJhY2sgdG8gdGhlIGNsaWVudCBzaWRlIEphdmFTY3JpcHQgd2hpY2gKICAgICMgICByZW5kZXJzIHRoZW4gdGhlIGxpc3Qgb2YgY3VycmVudGx5IHVwbG9hZGVkIGF0dGFjaG1lbnRzLgogICAgbXkgQFRpY2tldEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgRm9ybUlEID0+ICRGb3JtSUQsCiAgICApOwoKICAgIG15IEBGaWx0ZXJlZFRpY2tldEF0dGFjaG1lbnRzOwoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKSApIHsKCiAgICAgICAgIyBSZW1vdmUgdGhlIGlubGluZS1hdHRhY2htZW50cyB3aGljaCBzaG91bGRuJ3QgYmUgc2hvd24gaW4gdGhlIHJlZ3VsYXIgYXR0YWNobWVudCBsaXN0LgogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAVGlja2V0QXR0YWNobWVudHMpIHsKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRBdHRhY2htZW50LT57Q29udGVudElEfSAmJiAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH0gPX4gbXtcQSBpbmxpbmV9bXN4ICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHB1c2ggQEZpbHRlcmVkVGlja2V0QXR0YWNobWVudHMsICRBdHRhY2htZW50OwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIElmIHJpY2gtdGV4dCBpcyBub3QgYWN0aXZlIHRoZW4gc2V0IGFsc28gaW5saW5lIGF0dGFjaG1lbnRzIGFzIHJlZ3VsYXIgYXR0YWNobWVudHMuCiAgICAgICAgQEZpbHRlcmVkVGlja2V0QXR0YWNobWVudHMgPSBAVGlja2V0QXR0YWNobWVudHM7CiAgICB9CgogICAgZm9yIG15ICRBdHRhY2htZW50IChARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50cykgewogICAgICAgICRBdHRhY2htZW50LT57RmlsZXNpemV9ID0gJExheW91dE9iamVjdC0+SHVtYW5SZWFkYWJsZURhdGFTaXplKAogICAgICAgICAgICBTaXplID0+ICRBdHRhY2htZW50LT57RmlsZXNpemV9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEpTT04gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5FbmNvZGUoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEZBUVRpdGxlICAgICAgICAgID0+ICRGQVFJdGVte1RpdGxlfSwKICAgICAgICAgICAgRkFRQ29udGVudCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKCBTdHJpbmcgPT4gJEZBUUhUTUwgKSB8fCAnJywKICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgICAgPT4gJEZBUUhUTUwsCiAgICAgICAgICAgIFRpY2tldEF0dGFjaG1lbnRzID0+IFxARmlsdGVyZWRUaWNrZXRBdHRhY2htZW50cywKICAgICAgICAgICAgTG9jYWxpemF0aW9uICAgICAgPT4gewogICAgICAgICAgICAgICAgRGVsZXRlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVsZXRlJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT04sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEdldCBjb25maWcgZm9yIGZyb250ZW5kLgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIEZBUSBvYmplY3QuCiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICBGaWVsZEZpbHRlciA9PiAkU2VsZi0+e0NvbmZpZ30tPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIEdldCBjb25maWcgZnJvbSBjb25zdHJ1Y3Rvci4KICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ307CgogICAgIyBHZXQgY29uZmlnIGRhdGEuCiAgICBteSAkU3RhcnRIaXQgICAgPSBpbnQoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CiAgICBteSAkU2VhcmNoTGltaXQgPSAkQ29uZmlnLT57U2VhcmNoTGltaXR9IHx8IDUwMDsKICAgIG15ICRTb3J0QnkgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CiAgICBteSAkUHJvZmlsZSAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKSAgICAgICAgfHwgJyc7CiAgICBteSAkU2F2ZVByb2ZpbGUgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgICAgfHwgJyc7CiAgICBteSAkVGFrZUxhc3RTZWFyY2ggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVGFrZUxhc3RTZWFyY2gnICkgfHwgJyc7CiAgICBteSAkRXJhc2VUZW1wbGF0ZSAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXJhc2VUZW1wbGF0ZScgKSAgfHwgJyc7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgRkFRIG51bWJlci4KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEJ1aWxkIG91dHB1dCBmb3Igb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gYnkgZnVsbC10ZXh0LgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgU2VhcmNoIHdpdGggYSBzYXZlZCB0ZW1wbGF0ZS4KICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlYXJjaFRlbXBsYXRlJyApICYmICRQcm9maWxlICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtUYWtlTGFzdFNlYXJjaD0xO1NhdmVQcm9maWxlPTE7UHJvZmlsZT0kUHJvZmlsZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlR2V0UGFyYW07CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkU2VhcmNoUHJvZmlsZU9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgIyBMb2FkIHByb2ZpbGVzIHN0cmluZyBwYXJhbXMgKHByZXNzIGxvYWQgcHJvZmlsZSkuCiAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdMb2FkUHJvZmlsZScgJiYgJFByb2ZpbGUgKSB8fCAkVGFrZUxhc3RTZWFyY2ggKSB7CiAgICAgICAgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKS4KICAgIGVsc2UgewoKICAgICAgICAjIEdldCBzY2FsYXIgc2VhcmNoIHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgICAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgICAgIHF3KE51bWJlciBUaXRsZSBLZXl3b3JkIEZ1bGx0ZXh0IFJlc3VsdEZvcm0gVm90ZVNlYXJjaCBWb3RlU2VhcmNoVHlwZSBSYXRlU2VhcmNoCiAgICAgICAgICAgIFJhdGVTZWFyY2hUeXBlIEFwcHJvdmVkU2VhcmNoCiAgICAgICAgICAgIFRpbWVTZWFyY2hUeXBlIENoYW5nZVRpbWVTZWFyY2hUeXBlCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgSXRlbUNyZWF0ZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdCBJdGVtQ2hhbmdlVGltZVBvaW50CiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0YXJ0IEl0ZW1DaGFuZ2VUaW1lU3RhcnREYXkgSXRlbUNoYW5nZVRpbWVTdGFydE1vbnRoCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RhcnRZZWFyCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RvcCBJdGVtQ2hhbmdlVGltZVN0b3BEYXkgSXRlbUNoYW5nZVRpbWVTdG9wTW9udGgKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdG9wWWVhcgogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgUmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQuCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXHMrIFx6IH17fXhtczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBHZXQgYXJyYXkgc2VhcmNoIHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtICgKICAgICAgICAgICAgcXcoQ2F0ZWdvcnlJRHMgTGFuZ3VhZ2VJRHMgVmFsaWRJRHMgU3RhdGVJRHMgQ3JlYXRlZFVzZXJJRHMgTGFzdENoYW5nZWRVc2VySURzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW0gKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEdldCBEeW5hbWljIGZpZWxkcyBmcm9tIHBhcmFtIG9iamVjdC4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSB3ZWIgcmVxdWVzdC4KICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiBHZXRQYXJhbSB0byBzdG9yZSBpdCBsYXRlciBpbiB0aGUgc2VhcmNoIHByb2ZpbGUuCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IGFwcHJvdmVkIG9wdGlvbi4KICAgIGlmICggJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSAmJiAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9IGVxICdZZXMnICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ05vJyApIHsKICAgICAgICAkR2V0UGFyYW17QXBwcm92ZWR9ID0gMDsKICAgIH0KCiAgICAjIEdldCBjcmVhdGUgdGltZSBvcHRpb24uCiAgICBpZiAoICEkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9IDE7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9IDE7CiAgICB9CgogICAgIyBHZXQgY2hhbmdlIHRpbWUgb3B0aW9uLgogICAgaWYgKCAhJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Q2hhbmdlVGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAxOwogICAgfQoKICAgICMgU2V0IHJlc3VsdCBmb3JtIEVOVi4KICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgU2hvdyByZXN1bHQgc2l0ZS4KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2gnICYmICEkRXJhc2VUZW1wbGF0ZSApIHsKCiAgICAgICAgIyBGaWxsIHVwIHByb2ZpbGUgbmFtZSAoZS5nLiB3aXRoIGxhc3Qtc2VhcmNoKS4KICAgICAgICBpZiAoICEkUHJvZmlsZSB8fCAhJFNhdmVQcm9maWxlICkgewogICAgICAgICAgICAkUHJvZmlsZSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICAgICAjIFN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuLgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giCiAgICAgICAgICAgIC4gIjtQcm9maWxlPSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKQogICAgICAgICAgICAuICI7U29ydEJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgIC4gIjtPcmRlckJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAuICI7VGFrZUxhc3RTZWFyY2g9MSIKICAgICAgICAgICAgLiAiO1N0YXJ0SGl0PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTdGFydEhpdCk7CgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKCiAgICAgICAgIyBTYXZlIHNlYXJjaCBwcm9maWxlICh1bmRlciBsYXN0LXNlYXJjaCBvciByZWFsIHByb2ZpbGUgbmFtZSkuCiAgICAgICAgJFNhdmVQcm9maWxlID0gMTsKCiAgICAgICAgIyBSZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMuCiAgICAgICAgaWYgKCAkU2F2ZVByb2ZpbGUgJiYgJFByb2ZpbGUgKSB7CgogICAgICAgICAgICAjIFJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZi4KICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBJbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1ldGVycy4KICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRHZXRQYXJhbXskS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlVGltZU1hcCA9ICgKICAgICAgICAgICAgSXRlbUNyZWF0ZSA9PiAnVGltZScsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2UgPT4gJ0NoYW5nZVRpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSApIHsKCiAgICAgICAgICAgICAgICAjIERvIG5vdGhpbmcgd2l0aCB0aW1lIHN0dWZmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KE1vbnRoIERheSkpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21pbnV0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdkYXknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd3ZWVrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogNzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd5ZWFyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzY1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdCZWZvcmUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBNb3JlIHRoYW4gLi4uIGFnby4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdOZXh0JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgV2l0aGluIG5leHQuCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gLSRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIyBXaXRoaW4gbGFzdCAuLi4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlck1pbnV0ZXMnIH0gPSAkVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRHluYW1pYyBmaWVsZHMgc2VhcmNoIHBhcmFtZXRlcnMgZm9yIEZBUSBzZWFyY2guCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIEdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMuCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgU2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gJUR5bmFtaWNGaWVsZFZhbHVlcyB0byBkaXNjYXJkIHRob3NlIHdoZXJlIHRoZQogICAgICAgICAgICAgICAgIyAgIHZhbHVlIHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIGdldC4KICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKTsKCiAgICAgICAgICAgICAgICAjIEV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgcHJvZmlsZS4KICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXIgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTZXQgc2VhcmNoIHBhcmFtZXRlci4KICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFByZXBhcmUgZnVsbC10ZXh0IHNlYXJjaC4KICAgICAgICBpZiAoICRHZXRQYXJhbXtGdWxsdGV4dH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtDb250ZW50U2VhcmNofSA9ICdPUic7CiAgICAgICAgICAgICRHZXRQYXJhbXtXaGF0fSAgICAgICAgICA9ICRHZXRQYXJhbXtGdWxsdGV4dH07CiAgICAgICAgfQoKICAgICAgICBteSAlVmFsaWRMaXN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CiAgICAgICAgbXkgQEFsbFZhbGlkSURzID0ga2V5cyAlVmFsaWRMaXN0OwoKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBTZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MuCiAgICAgICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgUHJlcGFyZSBzZWFyY2ggc3RhdGVzLgogICAgICAgIG15ICRTZWFyY2hTdGF0ZXM7CiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMgPSAkSW50ZXJmYWNlU3RhdGVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgU1RBVEVUWVBFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlSUQgKCBAeyAkR2V0UGFyYW17U3RhdGVJRHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkU3RhdGVUeXBlSUQ7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkSW50ZXJmYWNlU3RhdGVzLT57JFN0YXRlVHlwZUlEfTsKICAgICAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMtPnskU3RhdGVUeXBlSUR9ID0gJEludGVyZmFjZVN0YXRlcy0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtWb3RlU2VhcmNofSApICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtSYXRlU2VhcmNofSApICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgVXNlckNhdGVnb3J5R3JvdXAgSGFzaC4KICAgICAgICAjIFRoaXMgcmV0dXJucyBhIEhhc2ggb2YgdGhlIGZvbGxvd2luZyBzYW1wbGUgZGF0YSBzdHJ1Y3R1cmU6CiAgICAgICAgIwogICAgICAgICMgJFVzZXJDYXRHcm91cCA9IHsKICAgICAgICAjICAgJzEnID0+IHsKICAgICAgICAjICAgICAgICAgICczJyA9PiAnTWlzY1N1YicKICAgICAgICAjICAgICAgICB9LAogICAgICAgICMgICAnMycgPT4ge30sCiAgICAgICAgIyAgICcwJyA9PiB7CiAgICAgICAgIyAgICAgICAgICAgICcxJyA9PiAnTWlzYycsCiAgICAgICAgIyAgICAgICAgICAgICcyJyA9PiAnc2VjcmV0JwogICAgICAgICMgICAgICAgICAgfSwKICAgICAgICAjICAgJzInID0+IHt9CiAgICAgICAgIyB9OwogICAgICAgICMKICAgICAgICAjIEtleXMgb2YgdGhlIG91dGVyIGhhc2ggaW5mb3JtIGFib3V0IHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIyAgIDAgU2hvd3MgdG9wIGxldmVsIENhdGVnb3J5SURzLgogICAgICAgICMgICAxIFNob3dzIHRoZSBTdWJjYXRlZ29yeUlEcyBvZiBDYXRlZ29yeSAxLgogICAgICAgICMgICAyIGFuZCAzIGFyZSBlbXB0eSBoYXNoZXMgYmVjYXVzZSB0aGVzZSBjYXRlZ29yaWVzIGRvbid0IGhhdmUgc3ViY2F0ZWdvcmllcy4KICAgICAgICAjCiAgICAgICAgIyBLZXlzIG9mIHRoZSBpbm5lciBoYXNoZXMgYXJlIENhdGVnb3J5SURzIGEgdXNlciBpcyBhbGxvd2VkIHRvIGhhdmUgcm8gYWNjZXNzIHRvLgogICAgICAgICMgVmFsdWVzIGFyZSB0aGUgQ2F0ZWdvcnkgbmFtZXMuCgogICAgICAgIG15ICRVc2VyQ2F0R3JvdXAgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBGaW5kIENhdGVnb3J5SURzIHRoZSBjdXJyZW50IFVzZXIgaXMgYWxsb3dlZCB0byB2aWV3LgogICAgICAgIG15ICVBbGxvd2VkQ2F0ZWdvcnlJRHMgPSAoKTsKCiAgICAgICAgaWYgKCAkVXNlckNhdEdyb3VwICYmIHJlZiAkVXNlckNhdEdyb3VwIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICMgU28gbm93IHdlIGhhdmUgdG8gZXh0cmFjdCBhbGwgQ2F0ZWdvcnkgSUQncyBvZiB0aGUgImlubmVyIGhhc2hlcyIKICAgICAgICAgICAgIyAgIC0+IExvb3AgdGhyb3VnaCB0aGUgb3V0ZXIgY2F0ZWdvcnkgSUQncy4KICAgICAgICAgICAgZm9yIG15ICRMZXZlbCAoIHNvcnQga2V5cyAleyRVc2VyQ2F0R3JvdXB9ICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIFZhbHVlIG9mIHRoZSBjdXJyZW50IGhhc2gga2V5IGlzIGEgaGFzaCByZWYuCiAgICAgICAgICAgICAgICBpZiAoICRVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9ICYmIHJlZiAkVXNlckNhdEdyb3VwLT57JExldmVsfSBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgTWFwIHRoZSBrZXlzIG9mIHRoZSBpbm5lciBoYXNoIHRvIGEgVGVtcElEcyBoYXNoLgogICAgICAgICAgICAgICAgICAgICMgT3JpZ2luYWwgRGF0YSBzdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgICAgIyAgIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcxJyA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAgICAgICAgICAgICAjICAgfQogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjICAgYWZ0ZXIgbWFwcGluZzoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcxJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICMgICAgICAgJzInID0+IDEnCiAgICAgICAgICAgICAgICAgICAgIyAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJVRlbXBJRHMgPSBtYXAgeyAkXyA9PiAxIH0ga2V5cyAleyAkVXNlckNhdEdyb3VwLT57JExldmVsfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIFB1dCB0aGUgVGVtcElEcyBvdmVyIHRoZSBmb3JtYWxseSBmb3VuZCBBbGxvd2VkQ2F0ZWdvcnlzIHRvIHByb2R1Y2UgYSBoYXNoCiAgICAgICAgICAgICAgICAgICAgIyAgIHRoYXQgaG9sZHMgYWxsIENhdGVnb3J5SUQgYXMga2V5cyBhbmQgdGhlIG51bWJlciAxIGFzIHZhbHVlcy4KICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzLAogICAgICAgICAgICAgICAgICAgICAgICAlVGVtcElEcwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRm9yIHRoZSBkYXRhYmFzZSBxdWVyeSBpdCdzIG5lY2Vzc2FyeSB0byBoYXZlIGFuIGFycmF5IG9mIENhdGVnb3J5SURzLgogICAgICAgIG15IEBDYXRlZ29yeUlEcyA9ICgpOwoKICAgICAgICBpZiAoJUFsbG93ZWRDYXRlZ29yeUlEcykgewogICAgICAgICAgICBAQ2F0ZWdvcnlJRHMgPSBzb3J0IGtleXMgJUFsbG93ZWRDYXRlZ29yeUlEczsKICAgICAgICB9CgogICAgICAgICMgQ2F0ZWdvcmllcyBnb3QgZnJvbSB0aGUgd2ViIHJlcXVlc3QgY291bGQgaW5jbHVkZSBhIG5vdCBhbGxvd2VkIGNhdGVnb3J5IGlmIHRoZSB1c2VyCiAgICAgICAgIyAgICB0ZW1wZXIgd2l0aCB0aGUgY2F0ZWdvcmllcyBkcm9wLWJveCwgYSBjaGVjayBpcyBuZWVkZWQuCiAgICAgICAgIwogICAgICAgICMgIk1hcCIgY29weSBmcm9tIG9uZSBhcnJheSB0byBhbm90aGVyLCB3aGlsZSAiZ3JlcCIgd2lsbCBvbmx5IGxldCBwYXNzIHRoZSBjYXRlZ29yaWVzCiAgICAgICAgIyAgICB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSAlQWxsb3dlZENhdGVnb3J5SURzIGhhc2guCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gKSApIHsKICAgICAgICAgICAgQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9ID0gbWFwIHskX30gZ3JlcCB7ICRBbGxvd2VkQ2F0ZWdvcnlJRHN7JF99IH0gQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBKdXN0IHNlYXJjaCBpZiB3ZSBkbyBoYXZlIGNhdGVnb3JpZXMsIHdlIGhhdmUgYWNjZXNzIHRvLgogICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYW55IGNhdGVnb3J5LCBhIHNlYXJjaCB3aXRoIG5vIENhdGVnb3J5SURzCiAgICAgICAgIyAgIHdvdWxkIHJlc3VsdCBpbiBmaW5kaW5nIGFsbCBjYXRlZ29yaWVzLgogICAgICAgICMKICAgICAgICAjIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgRkFRJ3Mgd2l0aG91dCBjYXRlZ29yaWVzCiAgICAgICAgIyAgIHNvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeSBoYXMgdG8gYmUgcHJlc2VudAoKICAgICAgICBteSBAVmlld2FibGVJdGVtSURzID0gKCk7CgogICAgICAgIGlmIChAQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgICAgICMgUGVyZm9ybSBGQVEgc2VhcmNoLgogICAgICAgICAgICAjIERlZmF1bHQgc2VhcmNoIG9uIGFsbCB2YWxpZCBpZHMsIHRoaXMgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5ICVHZXRQYXJhbS4KICAgICAgICAgICAgQFZpZXdhYmxlSXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICA9PiBbJE9yZGVyQnldLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIFN0YXRlcyAgICAgICAgICAgICAgPT4gJFNlYXJjaFN0YXRlcywKICAgICAgICAgICAgICAgIEludGVyZmFjZSAgICAgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICAgICAgQ29udGVudFNlYXJjaFN1ZmZpeCA9PiAnKicsCiAgICAgICAgICAgICAgICBWYWxpZElEcyAgICAgICAgICAgID0+IFxAQWxsVmFsaWRJRHMsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgICAgICAgID0+IFxAQ2F0ZWdvcnlJRHMsCiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAgICAgIyBDU1YgYW5kIEV4Y2VsIG91dHB1dC4KICAgICAgICBpZiAoCiAgICAgICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnQ1NWJwogICAgICAgICAgICB8fCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0V4Y2VsJwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSBAVG1wQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkhlYWQ7CiAgICAgICAgICAgIG15IEBDU1ZEYXRhOwoKICAgICAgICAgICAgIyBHZXQgdGhlIEZBUSBkeW5hbWljIGZpZWxkcyBmb3IgQ1NWIGRpc3BsYXkuCiAgICAgICAgICAgIG15ICRDU1ZEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgICAgICAgICBGaWVsZEZpbHRlciA9PiAkQ29uZmlnLT57U2VhcmNoQ1NWRHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkSXRlbUlEIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgICAgICAgICAgIyBHZXQgRkFRIGRhdGEgZGV0YWlscy4KICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIEdldCBpbmZvIGZvciBDU1Ygb3V0cHV0LgogICAgICAgICAgICAgICAgbXkgJUNTVkluZm8gPSAoJUZBUURhdGEpOwoKICAgICAgICAgICAgICAgICRDU1ZJbmZve0NoYW5nZWR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+Rm9ybWF0VGltZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAkRkFRRGF0YXtDaGFuZ2VkfSwKICAgICAgICAgICAgICAgICAgICAnRGF0ZUZvcm1hdCcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgQ1NWIHF1b3RlLgogICAgICAgICAgICAgICAgaWYgKCAhQENTVkhlYWQgKSB7CiAgICAgICAgICAgICAgICAgICAgQFRtcENTVkhlYWQgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKICAgICAgICAgICAgICAgICAgICBAQ1NWSGVhZCAgICA9IHF3KCBGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICAgICAjIEluc2VydCBsYW5ndWFnZSBoZWFkZXIuCiAgICAgICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICBxdyhTdGF0ZSBDaGFuZ2VkKTsKCiAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHRoZSBzZWxlY3RlZCBkeW5hbWljIGZpZWxkcyBvbiBDVlMgcmVzdWx0cy4KICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBlcSAnJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBJbnNlcnQgZGF0YS4KICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBUbXBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgaGVhZGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgZ2V0IHRoZSB2YWx1ZSBmcm9tIGR5bmFtaWMgZmllbGQgYmFja2VuZAogICAgICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciA9fiBte1xBIER5bmFtaWNGaWVsZF8gKCBbYS16QS1aXGRdKyApIFx6fXhtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgTG9vcCBvdmVyIHRoZSBkeW5hbWljIGZpZWxkcyBjb25maWd1cmVkIGZvciBDU1Ygb3V0cHV0LgogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgd2l0aCBvdXQgdGhlICdEeW5hbWljRmllbGRfJyBwcmVmaXguCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRDU1ZJbmZveyRIZWFkZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQERhdGEsICRWYWx1ZVN0cmctPntWYWx1ZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlIHJldHJpZXZlIGRhdGEgZnJvbSBGQVEgaXRlbS4KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J051bWJlcid9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEhlYWRlciBlcSAnQ2F0ZWdvcnknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J0NhdGVnb3J5TmFtZSd9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97JEhlYWRlcn07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ1NWIHF1b3RlLgogICAgICAgICAgICAjIFRyYW5zbGF0ZSBub24gZXhpc3RpbmcgaGVhZGVyIG1heSByZXN1bHQgaW4gYSBnYXJiYWdlIGZpbGUuCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQFRtcENTVkhlYWQgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwogICAgICAgICAgICAgICAgQENTVkhlYWQgICAgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICMgSW5zZXJ0IGxhbmd1YWdlIGhlYWRlci4KICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgIHF3KFN0YXRlIENoYW5nZWQpOwoKICAgICAgICAgICAgICAgICMgSW5jbHVkZSB0aGUgc2VsZWN0ZWQgZHluYW1pYyBmaWVsZHMgb24gQ1ZTIHJlc3VsdHMuCiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBHZXQgU2VwYXJhdG9yIGZyb20gbGFuZ3VhZ2UgZmlsZS4KICAgICAgICAgICAgbXkgJFVzZXJDU1ZTZXBhcmF0b3IgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT57U2VwYXJhdG9yfTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpLT57Q1NWU2VwYXJhdG9yfS0+e0FjdGl2ZX0gKSB7CiAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggJFVzZXJEYXRhe1VzZXJDU1ZTZXBhcmF0b3J9ICkgewogICAgICAgICAgICAgICAgICAgICRVc2VyQ1NWU2VwYXJhdG9yID0gJFVzZXJEYXRhe1VzZXJDU1ZTZXBhcmF0b3J9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRyYW5zbGF0ZSBoZWFkZXJzLgogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIFJlcGxhY2UgRkFRTnVtYmVyIGhlYWRlciB3aXRoIHRoZSBjdXJyZW50IEZBUUhvb2sgZnJvbSBjb25maWcuCiAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgZXEgJ0ZBUU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRIZWFkZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFJldHVybiBDU1YgdG8gZG93bmxvYWQuCiAgICAgICAgICAgIG15ICRGaWxlTmFtZSA9ICdGQVFfc2VhcmNoJzsKCiAgICAgICAgICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICAgICBteSAkRGF0ZVRpbWUgICAgICAgPSAkRGF0ZVRpbWVPYmplY3QtPkdldCgpOwogICAgICAgICAgICBteSAkWSAgICAgICAgICAgICAgPSAkRGF0ZVRpbWUtPntZZWFyfTsKICAgICAgICAgICAgbXkgJE0gICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntNb250aH0gKTsKICAgICAgICAgICAgbXkgJEQgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntEYXl9ICk7CiAgICAgICAgICAgIG15ICRoICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57SG91cn0gKTsKICAgICAgICAgICAgbXkgJG0gICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntNaW51dGV9ICk7CgogICAgICAgICAgICBteSAkQ1NWT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNTVicpOwoKICAgICAgICAgICAgIyBHZW5lcmF0ZSBDU1Ygb3V0cHV0LgogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnQ1NWJyApIHsKCiAgICAgICAgICAgICAgICBteSAkQ1NWID0gJENTVk9iamVjdC0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgICAgIEhlYWQgICAgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgICAgICBTZXBhcmF0b3IgPT4gJFVzZXJDU1ZTZXBhcmF0b3IsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgUmV0dXJuIENTViB0byBkb3dubG9hZCwKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlTmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0uY3N2IiwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAidGV4dC9jc3Y7IGNoYXJzZXQ9IiAuICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJENTViwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2VuZXJhdGUgRXhjZWwgb3V0cHV0LgogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnICkgewogICAgICAgICAgICAgICAgbXkgJEV4Y2VsID0gJENTVk9iamVjdC0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgICAgIEhlYWQgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJ0V4Y2VsJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gRXhjZWwgdG8gZG93bmxvYWQuCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkRmlsZU5hbWUgLiAiXyIgLiAiJFktJE0tJEQiIC4gIl8iIC4gIiRoLSRtLnhsc3giLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCIsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRXhjZWwsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CgogICAgICAgICAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICAgICAgICAgbXkgQFBERkRhdGE7CiAgICAgICAgICAgIGZvciBteSAkSXRlbUlEIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTZXQgY2hhbmdlIGRhdGUgdG8gbG9uZyBmb3JtYXQuCiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBDcmVhdGUgUERGIFJvd3MuCiAgICAgICAgICAgICAgICBteSBAUERGUm93OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0NhdGVnb3J5TmFtZX07CgogICAgICAgICAgICAgICAgIyBDcmVhdGUgbGFuZ3VhZ2Ugcm93LgogICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtMYW5ndWFnZX07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAgJEZBUURhdGF7U3RhdGV9OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAgJENoYW5nZWQ7CiAgICAgICAgICAgICAgICBwdXNoIEBQREZEYXRhLCBcQFBERlJvdzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQREYgT3V0cHV0LgogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQcmludGVkQnkgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3ByaW50ZWQgYnknKTsKICAgICAgICAgICAgbXkgJFBhZ2UgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgICAgICAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBHZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMuCiAgICAgICAgICAgIG15ICRNYXhQYWdlcyA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgICAgICAgICBpZiAoICEkTWF4UGFnZXMgfHwgJE1heFBhZ2VzIDwgMSB8fCAkTWF4UGFnZXMgPiAxMDAwICkgewogICAgICAgICAgICAgICAgJE1heFBhZ2VzID0gMTAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENyZWF0ZSB0aGUgaGVhZGVyLgogICAgICAgICAgICBteSAkQ2VsbERhdGE7CgogICAgICAgICAgICAjIE91dHB1dCAnTm8gUmVzdWx0JywgaWYgbm8gY29udGVudCB3YXMgZ2l2ZW4uCiAgICAgICAgICAgIGlmIChAUERGRGF0YSkgewoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1RpdGxlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzFdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NhdGVnb3J5Jyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBTdG9yZSB0aGUgY29ycmVjdCBoZWFkZXIgaW5kZXguCiAgICAgICAgICAgICAgICBteSAkTmV4dEhlYWRlckluZGV4ID0gMzsKCiAgICAgICAgICAgICAgICAjIEFkZCBsYW5ndWFnZSBoZWFkZXIuCiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhbmd1YWdlJyk7CiAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgICAgICROZXh0SGVhZGVySW5kZXggICAgICAgICAgICAgICA9IDQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyAkTmV4dEhlYWRlckluZGV4ICsgMSBdLT57Rm9udH0gPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBDcmVhdGUgdGhlIGNvbnRlbnQgYXJyYXkuCiAgICAgICAgICAgICAgICBteSAkQ291bnRlclJvdyA9IDE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoQFBERkRhdGEpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ291bnRlckNvbHVtbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb250ZW50ICggQHskUm93fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bJENvdW50ZXJSb3ddLT5bJENvdW50ZXJDb2x1bW5dLT57Q29udGVudH0gPSAkQ29udGVudDsKICAgICAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJDb2x1bW4rKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXJSb3crKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTm8gUmVzdWx0IScpOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBQYWdlIHBhcmFtcy4KICAgICAgICAgICAgbXkgJVBhZ2VQYXJhbTsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtQYWdlT3JpZW50YXRpb259ID0gJ2xhbmRzY2FwZSc7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luVG9wfSAgICAgICA9IDMwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpblJpZ2h0fSAgICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Cb3R0b219ICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luTGVmdH0gICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte0hlYWRlclJpZ2h0fSAgICAgPSAkVGl0bGU7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGxpbmVMZWZ0fSAgICA9ICRUaXRsZTsKCiAgICAgICAgICAgICMgVGFibGUgcGFyYW1zLgogICAgICAgICAgICBteSAlVGFibGVQYXJhbTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9ICAgICAgICAgICAgPSAkQ2VsbERhdGE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSA9ICcjREREREREJzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAgICAgICAgICMgQ3JlYXRlIG5ldyBQREYgZG9jdW1lbnQuCiAgICAgICAgICAgICRQREZPYmplY3QtPkRvY3VtZW50TmV3KAogICAgICAgICAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICAgICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBTdGFydCB0YWJsZSBvdXRwdXQuCiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIE91dHB1dCB0aXRsZS4KICAgICAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgICAgIFRleHQgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIEZvbnRTaXplID0+IDEzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIE91dHB1dCAicHJpbnRlZCBieSIuCiAgICAgICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgICAgICBUZXh0ID0+ICRQcmludGVkQnkgLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckZ1bGxuYW1lfSAuICcgKCcKICAgICAgICAgICAgICAgICAgICAuICRTZWxmLT57VXNlckVtYWlsfSAuICcpJwogICAgICAgICAgICAgICAgICAgIC4gJywgJyAuICRUaW1lLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC0xNCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBBR0U6CiAgICAgICAgICAgIGZvciAoIDIgLi4gJE1heFBhZ2VzICkgewoKICAgICAgICAgICAgICAgICMgT3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KS4KICAgICAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgICAgICMgU3RvcCBvdXRwdXQgb3IgYW5vdGhlciBwYWdlLgogICAgICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAgICAgJVBhZ2VQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnICcgLiAkXywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFJldHVybiB0aGUgUERGIGRvY3VtZW50LgogICAgICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRX3NlYXJjaCc7CgogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJERhdGVUaW1lICAgICAgID0gJERhdGVUaW1lT2JqZWN0LT5HZXQoKTsKICAgICAgICAgICAgbXkgJFkgICAgICAgICAgICAgID0gJERhdGVUaW1lLT57WWVhcn07CiAgICAgICAgICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICAgICAgICAgIG15ICREICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57RGF5fSApOwogICAgICAgICAgICBteSAkaCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0hvdXJ9ICk7CiAgICAgICAgICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwoKICAgICAgICAgICAgbXkgJFBERlN0cmluZyA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBTdGFydCBIVE1MIHBhZ2UuCiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPlByaW50KAogICAgICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0LAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0ID0gJyc7CgogICAgICAgICAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgICAgICAgICAgbXkgJFZpZXcgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CgogICAgICAgICAgICAjIFNob3cgRkFRJ3MuCiAgICAgICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRGaWx0ZXIpCiAgICAgICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkVmlldykKICAgICAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFNvcnRCeSkKICAgICAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRWaWV3KQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtGaWx0ZXIgPSAnVGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoO1Byb2ZpbGU9JwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKQogICAgICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgICAgIG15ICRMaW5rQmFjayA9ICdTdWJhY3Rpb249TG9hZFByb2ZpbGU7UHJvZmlsZT0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpCiAgICAgICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTsnOwoKICAgICAgICAgICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRWaWV3KQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgICAgICAuICc7JzsKCiAgICAgICAgICAgICMgRmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24uCiAgICAgICAgICAgIG15IEBTaG93Q29sdW1uczsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAgICAgICAgICMgR2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnLgogICAgICAgICAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJENvbmZpZy0+e1Nob3dDb2x1bW5zfSB9OwoKICAgICAgICAgICAgICAgICMgR2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24uCiAgICAgICAgICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgICAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRQb3NzaWJsZUNvbHVtbnskTmFtZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgRW5mb3JjZSBGQVEgbnVtYmVyIGNvbHVtbiBzaW5jZSBpcyB0aGUgbGluayBNYXN0ZXJBY3Rpb24gaG9vay4KICAgICAgICAgICAgICAgIGlmICggISRQb3NzaWJsZUNvbHVtbnsnTnVtYmVyJ30gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICdOdW1iZXInOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZBUUxpc3RTaG93KAogICAgICAgICAgICAgICAgRkFRSURzID0+IFxAVmlld2FibGVJdGVtSURzLAogICAgICAgICAgICAgICAgVG90YWwgID0+IHNjYWxhciBAVmlld2FibGVJdGVtSURzLAoKICAgICAgICAgICAgICAgIFZpZXcgPT4gJFZpZXcsCgogICAgICAgICAgICAgICAgRW52ICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICAgICAgTGlua1NvcnQgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgICAgICBMaW5rRmlsdGVyID0+ICRMaW5rRmlsdGVyLAogICAgICAgICAgICAgICAgTGlua0JhY2sgICA9PiAkTGlua0JhY2ssCiAgICAgICAgICAgICAgICBQcm9maWxlICAgID0+ICRQcm9maWxlLAoKICAgICAgICAgICAgICAgIFRpdGxlTmFtZSA9PiBUcmFuc2xhdGFibGUoJ1NlYXJjaCBSZXN1bHQnKSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VhcmNoTGltaXQsCgogICAgICAgICAgICAgICAgRmlsdGVyICAgICA9PiAkRmlsdGVyLAogICAgICAgICAgICAgICAgRmlsdGVyTGluayA9PiAkRmlsdGVyTGluaywKCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgU29ydEJ5ICA9PiAkU29ydEJ5LAoKICAgICAgICAgICAgICAgIFNob3dDb2x1bW5zICA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgICAgICAgICAgRkFRVGl0bGVTaXplID0+ICRDb25maWctPntUaXRsZVNpemV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQogICAgfQoKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYUHJvZmlsZURlbGV0ZScgKSB7CiAgICAgICAgbXkgJFByb2ZpbGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHJvZmlsZScgKTsKCiAgICAgICAgIyBSZW1vdmUgb2xkIHByb2ZpbGUgc3R1ZmYuCiAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gMSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWCcgKSB7CgogICAgICAgIG15ICRPdXRwdXQgPSAkU2VsZi0+X01hc2tGb3JtKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDaGFyc2V0ICAgICA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgU2hvdyBkZWZhdWx0IHNlYXJjaCBzY3JlZW4uCiAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIFNlbmQgZGF0YSB0byBKUy4KICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnQWdlbnRGQVFTZWFyY2gnLAogICAgICAgIFZhbHVlID0+IDEsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICByZXR1cm4gJE91dHB1dDsKCn0KCnN1YiBfTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRQcm9maWxlICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQcm9maWxlJyApIHx8ICcnOwogICAgbXkgJEVtcHR5U2VhcmNoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VtcHR5U2VhcmNoJyApOwogICAgaWYgKCAhJFByb2ZpbGUgKSB7CiAgICAgICAgJEVtcHR5U2VhcmNoID0gMTsKICAgIH0KCiAgICBteSAkU2VhcmNoUHJvZmlsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgbXkgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKCiAgICAjIEdldCBjb25maWcgZnJvbSBjb25zdHJ1Y3Rvci4KICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ307CgogICAgIyBJZiBubyBwcm9maWxlIGlzIHVzZWQsIHNldCBkZWZhdWx0IHBhcmFtcyBvZiBkZWZhdWx0IGF0dHJpYnV0ZXMuCiAgICBpZiAoICEkUHJvZmlsZSApIHsKICAgICAgICBpZiAoICRDb25maWctPntEZWZhdWx0c30gKSB7CiAgICAgICAgICAgIEFUVFJJQlVURToKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXsgJENvbmZpZy0+e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRDb25maWctPntEZWZhdWx0c30tPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICRBdHRyaWJ1dGUgZXEgJ0R5bmFtaWNGaWVsZCc7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gPSAkQ29uZmlnLT57RGVmYXVsdHN9LT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBTZXQgYXR0cmlidXRlcyBzdHJpbmcuCiAgICBteSBAQXR0cmlidXRlcyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBOdW1iZXInKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0Z1bGx0ZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdGdWxsdGV4dCcpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1RpdGxlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdLZXl3b3JkJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdLZXl3b3JkJyksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBTaG93IExhbmd1YWdlcyBhdHRyaWJ1dGUuCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0xhbmd1YWdlJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0NhdGVnb3J5JyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdWYWxpZElEcycsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnVmFsaWRpdHknKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ1N0YXRlSURzJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdTdGF0ZScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1ZvdGVzJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdSYXRlU2VhcmNoVHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnUmF0ZScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQXBwcm92ZWRTZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0FwcHJvdmVkJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDcmVhdGVkVXNlcklEcycsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnQ3JlYXRlZCBieScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTGFzdENoYW5nZWRVc2VySURzJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdMYXN0IENoYW5nZWQgYnknKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnQnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJdGVtQ3JlYXRlVGltZVNsb3QnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0ZBUSBJdGVtIENyZWF0ZSBUaW1lIChiZXR3ZWVuKScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludCcsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJlZm9yZS9hZnRlciknKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lU2xvdCcsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEl0ZW0gQ2hhbmdlIFRpbWUgKGJldHdlZW4pJyksCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZFNlcGFyYXRvciA9IDE7CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIENyZWF0ZSBkeW5hbWljIGZpZWxkcyBzZWFyY2ggb3B0aW9ucyBmb3IgYXR0cmlidXRlIHNlbGVjdC4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAjIENyZWF0ZSBhIHNlcGFyYXRvciBmb3IgZHluYW1pYyBmaWVsZHMgYXR0cmlidXRlcy4KICAgICAgICBpZiAoJER5bmFtaWNGaWVsZFNlcGFyYXRvcikgewogICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlcGFyYXRvciA9IDA7CiAgICAgICAgfQoKICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgbXkgJFRyYW5zbGF0ZWREeW5hbWljRmllbGRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSwKICAgICAgICApOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRTdWZmaXggPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkUHJlZmVyZW5jZS0+e0xhYmVsU3VmZml4fSwKICAgICAgICAgICAgKSB8fCAnJzsKCiAgICAgICAgICAgIGlmICgkVHJhbnNsYXRlZFN1ZmZpeCkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRTdWZmaXggPSAnICgnIC4gJFRyYW5zbGF0ZWRTdWZmaXggLiAnKSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQEF0dHJpYnV0ZXMsICgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1NlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAuICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFRyYW5zbGF0ZWREeW5hbWljRmllbGRMYWJlbCAuICRUcmFuc2xhdGVkU3VmZml4LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDcmVhdGUgYSBzZXBhcmF0b3IgaWYgYSBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZSB3YXMgcHVzaGVkLgogICAgaWYgKCAhJER5bmFtaWNGaWVsZFNlcGFyYXRvciApIHsKICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgQ3JlYXRlIEhUTUwgc3RyaW5ncyBmb3IgYWxsIGR5bmFtaWMgZmllbGRzLgogICAgbXkgJUR5bmFtaWNGaWVsZEhUTUw7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgIyBHZXQgZmllbGQgSFRNTC4KICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfQogICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZy0+e0RlZmF1bHRzfS0+e0R5bmFtaWNGaWVsZH0KICAgICAgICAgICAgICAgICAgICAtPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBEcm9wLWRvd24gbWVudSBmb3IgJ2F0dHJpYnV0ZXMnLgogICAgJFBhcmFte0F0dHJpYnV0ZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIERhdGEgICAgICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdBdHRyaWJ1dGUnLAogICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CiAgICAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIERhdGEgICAgICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdBdHRyaWJ1dGVPcmlnJywKICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIERyb3AtZG93biBtZW51IGZvciAnbGFuZ3VhZ2VzJy4KICAgICRQYXJhbXtMYW5ndWFnZXNTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVMYW5ndWFnZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTGFuZ3VhZ2VJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17TGFuZ3VhZ2VJRHN9IHx8IFtdLAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgR2V0IGNhdGVnb3JpZXMgKHdpdGggY2F0ZWdvcnkgbG9uZyBuYW1lcykgd2hlcmUgdXNlciBoYXMgcmlnaHRzLgogICAgbXkgJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBCdWlsZCB0aGUgY2F0ZWdvcnkgc2VsZWN0aW9uLgogICAgJFBhcmFte0NhdGVnb3JpZXNTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcywKICAgICAgICBOYW1lICAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte0NhdGVnb3J5SURzfSB8fCBbXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgVHJlZVZpZXcgICAgPT4gJFRyZWVWaWV3LAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwoKICAgICMgQnVpbGQgdGhlIHZhbGlkIHNlbGVjdGlvbi4KICAgICRQYXJhbXtWYWxpZFNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1ZhbGlkSURzJywKICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtWYWxpZElEc30gfHwgW10sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIENyZWF0ZSBhIG1peCBvZiBzdGF0ZSBhbmQgc3RhdGUgdHlwZXMgaGFzaCBpbiBvcmRlciB0byBoYXZlIHRoZSBzdGF0ZSB0eXBlIElEcyB3aXRoIHN0YXRlIG5hbWVzLgogICAgbXkgJVN0YXRlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAlU3RhdGVzOwogICAgZm9yIG15ICRTdGF0ZUlEICggc29ydCBrZXlzICVTdGF0ZUxpc3QgKSB7CiAgICAgICAgbXkgJVN0YXRlRGF0YSA9ICRGQVFPYmplY3QtPlN0YXRlR2V0KAogICAgICAgICAgICBTdGF0ZUlEID0+ICRTdGF0ZUlELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRTdGF0ZXN7ICRTdGF0ZURhdGF7VHlwZUlEfSB9ID0gJFN0YXRlRGF0YXtOYW1lfTsKICAgIH0KCiAgICAkUGFyYW17U3RhdGVTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlU3RhdGVzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdTdGF0ZUlEcycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMywKICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17U3RhdGVJRHN9IHx8IFtdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgJVZvdGluZ09wZXJhdG9ycyA9ICgKICAgICAgICBFcXVhbHMgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0VxdWFscycpLAogICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IFRyYW5zbGF0YWJsZSgnR3JlYXRlciB0aGFuJyksCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gVHJhbnNsYXRhYmxlKCdHcmVhdGVyIHRoYW4gZXF1YWxzJyksCiAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTbWFsbGVyIHRoYW4nKSwKICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiBUcmFuc2xhdGFibGUoJ1NtYWxsZXIgdGhhbiBlcXVhbHMnKSwKICAgICk7CgogICAgJFBhcmFte1ZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2hUeXBlJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKICAgICRQYXJhbXtSYXRlU2VhcmNoU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMCAgID0+ICcwJScsCiAgICAgICAgICAgIDI1ICA9PiAnMjUlJywKICAgICAgICAgICAgNTAgID0+ICc1MCUnLAogICAgICAgICAgICA3NSAgPT4gJzc1JScsCiAgICAgICAgICAgIDEwMCA9PiAnMTAwJScsCiAgICAgICAgfSwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY0tleScsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2gnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte0FwcHJvdmVkU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm8gID0+IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICAgICAgWWVzID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgICA9PiAnQXBwcm92ZWRTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gfHwgJ1llcycsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIEdldCBhIGxpc3Qgb2YgYWxsIHVzZXJzIHRvIGRpc3BsYXkuCiAgICBteSAlU2hvd25Vc2VycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMaXN0KAogICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICBteSAkRnJvbnRlbmRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKTsKICAgIG15ICRGQVFBZGRHcm91cHMgICA9ICRGcm9udGVuZENvbmZpZy0+e0FnZW50RkFRQWRkfS0+e0dyb3VwfSB8fCBbXTsKCiAgICBteSAlRkFRQWRkVXNlcnMgPSAlU2hvd25Vc2VyczsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRGQVFBZGRHcm91cHMpICkgewoKICAgICAgICBteSAlR3JvdXBVc2VyczsKICAgICAgICBmb3IgbXkgJEdyb3VwICggQHskRkFRQWRkR3JvdXBzfSApIHsKCiAgICAgICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICAgICAgICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKICAgICAgICAgICAgbXkgJVVzZXJzICAgPSAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdydycsCiAgICAgICAgICAgICAgICBSZXN1bHQgID0+ICdIQVNIJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJUdyb3VwVXNlcnMgPSAoICVHcm91cFVzZXJzLCAlVXNlcnMgKTsKICAgICAgICB9CgogICAgICAgICMgUmVtb3ZlIGFsbCB1c2VycyB0aGF0IGFyZSBub3QgaW4gdGhlIEZBUSBvciBmYXFfYWRtaW4gZ3JvdXBzLgogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVGQVFBZGRVc2VycyApIHsKICAgICAgICAgICAgaWYgKCAhJEdyb3VwVXNlcnN7JFVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJEZBUUFkZFVzZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgJFBhcmFte0NyZWF0ZWRVc2VyU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+IFwlRkFRQWRkVXNlcnMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ3JlYXRlZFVzZXJJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17Q3JlYXRlZFVzZXJJRHN9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICRGQVFFZGl0R3JvdXBzID0gJEZyb250ZW5kQ29uZmlnLT57QWdlbnRGQVFFZGl0fS0+e0dyb3VwfSB8fCBbXTsKCiAgICBteSAlRkFRRWRpdFVzZXJzID0gJVNob3duVXNlcnM7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkRkFRRWRpdEdyb3VwcykgKSB7CgogICAgICAgIG15ICVHcm91cFVzZXJzOwogICAgICAgIGZvciBteSAkR3JvdXAgKCBAeyRGQVFFZGl0R3JvdXBzfSApIHsKCiAgICAgICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICAgICAgICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKICAgICAgICAgICAgbXkgJVVzZXJzICAgPSAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdydycsCiAgICAgICAgICAgICAgICBSZXN1bHQgID0+ICdIQVNIJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJUdyb3VwVXNlcnMgPSAoICVHcm91cFVzZXJzLCAlVXNlcnMgKTsKICAgICAgICB9CgogICAgICAgICMgUmVtb3ZlIGFsbCB1c2VycyB0aGF0IGFyZSBub3QgaW4gdGhlIEZBUSBvciBmYXFfYWRtaW4gZ3JvdXBzLgogICAgICAgIGZvciBteSAkVXNlcklEICggc29ydCBrZXlzICVGQVFFZGl0VXNlcnMgKSB7CiAgICAgICAgICAgIGlmICggISRHcm91cFVzZXJzeyRVc2VySUR9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRGQVFFZGl0VXNlcnN7JFVzZXJJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJFBhcmFte0xhc3RDaGFuZ2VkVXNlclN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUZBUUVkaXRVc2VycywKICAgICAgICBOYW1lICAgICAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17TGFzdENoYW5nZWRVc2VySURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJ0xhc3QnICAgPT4gVHJhbnNsYXRhYmxlKCd3aXRoaW4gdGhlIGxhc3QgLi4uJyksCiAgICAgICAgICAgICdCZWZvcmUnID0+IFRyYW5zbGF0YWJsZSgnbW9yZSB0aGFuIC4uLiBhZ28nKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSB8fCAnTGFzdCcsCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gVHJhbnNsYXRhYmxlKCdtaW51dGUocyknKSwKICAgICAgICAgICAgaG91ciAgID0+IFRyYW5zbGF0YWJsZSgnaG91cihzKScpLAogICAgICAgICAgICBkYXkgICAgPT4gVHJhbnNsYXRhYmxlKCdkYXkocyknKSwKICAgICAgICAgICAgd2VlayAgID0+IFRyYW5zbGF0YWJsZSgnd2VlayhzKScpLAogICAgICAgICAgICBtb250aCAgPT4gVHJhbnNsYXRhYmxlKCdtb250aChzKScpLAogICAgICAgICAgICB5ZWFyICAgPT4gVHJhbnNsYXRhYmxlKCd5ZWFyKHMpJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggICA9PiAnSXRlbUNyZWF0ZVRpbWVTdGFydCcsCiAgICAgICAgRm9ybWF0ICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgRGlmZlRpbWUgPT4gLSggKCA2MCAqIDYwICogMjQgKSAqIDMwICksCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggPT4gJ0l0ZW1DcmVhdGVUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgKTsKCiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJ0xhc3QnICAgPT4gVHJhbnNsYXRhYmxlKCd3aXRoaW4gdGhlIGxhc3QgLi4uJyksCiAgICAgICAgICAgICdCZWZvcmUnID0+IFRyYW5zbGF0YWJsZSgnbW9yZSB0aGFuIC4uLiBhZ28nKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludFN0YXJ0fSB8fCAnTGFzdCcsCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBtaW51dGUgPT4gVHJhbnNsYXRhYmxlKCdtaW51dGUocyknKSwKICAgICAgICAgICAgaG91ciAgID0+IFRyYW5zbGF0YWJsZSgnaG91cihzKScpLAogICAgICAgICAgICBkYXkgICAgPT4gVHJhbnNsYXRhYmxlKCdkYXkocyknKSwKICAgICAgICAgICAgd2VlayAgID0+IFRyYW5zbGF0YWJsZSgnd2VlayhzKScpLAogICAgICAgICAgICBtb250aCAgPT4gVHJhbnNsYXRhYmxlKCdtb250aChzKScpLAogICAgICAgICAgICB5ZWFyICAgPT4gVHJhbnNsYXRhYmxlKCd5ZWFyKHMpJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0JywKICAgICAgICBTZWxlY3RlZElEID0+ICRHZXRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVTdGFydFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggICA9PiAnSXRlbUNoYW5nZVRpbWVTdGFydCcsCiAgICAgICAgRm9ybWF0ICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgRGlmZlRpbWUgPT4gLSggKCA2MCAqIDYwICogMjQgKSAqIDMwICksCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lU3RvcFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBQcmVmaXggPT4gJ0l0ZW1DaGFuZ2VUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgKTsKCiAgICBteSAlUHJvZmlsZXMgPSAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUxpc3QoCiAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICApOwogICAgZGVsZXRlICRQcm9maWxlc3snJ307CiAgICBkZWxldGUgJFByb2ZpbGVzeydsYXN0LXNlYXJjaCd9OwogICAgaWYgKCRFbXB0eVNlYXJjaCkgewogICAgICAgICRQcm9maWxlc3snJ30gPSAnLSc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUHJvZmlsZXN7J2xhc3Qtc2VhcmNoJ30gPSAnLSc7CiAgICB9CiAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVQcm9maWxlcywKICAgICAgICBOYW1lICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICBJRCAgICAgICAgID0+ICdTZWFyY2hQcm9maWxlJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQcm9maWxlLAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtSZXN1bHRGb3JtU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm9ybWFsID0+IFRyYW5zbGF0YWJsZSgnTm9ybWFsJyksCiAgICAgICAgICAgIFByaW50ICA9PiBUcmFuc2xhdGFibGUoJ1ByaW50JyksCiAgICAgICAgICAgIENTViAgICA9PiBUcmFuc2xhdGFibGUoJ0NTVicpLAogICAgICAgICAgICBFeGNlbCAgPT4gVHJhbnNsYXRhYmxlKCdFeGNlbCcpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnUmVzdWx0Rm9ybScsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gfHwgJ05vcm1hbCcsCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoQUpBWCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBFbXB0eVNlYXJjaCA9PiAkRW1wdHlTZWFyY2gsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBPdXRwdXQgRHluYW1pYyBmaWVsZHMgYmxvY2tzLgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgR2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcy4KICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgdGhhdCBIVE1MIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQKICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57RmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBTaG93IGF0dHJpYnV0ZXMuCiAgICBteSBAU2VhcmNoQXR0cmlidXRlczsKICAgIG15ICVBbHJlYWR5U2hvd247CiAgICBpZiAoJFByb2ZpbGUpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdGQVFTZWFyY2hQcm9maWxlJywKICAgICAgICAgICAgVmFsdWUgPT4gJFByb2ZpbGUsCiAgICAgICAgKTsKICAgIH0KCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtIChAQXR0cmlidXRlcykgewogICAgICAgIG15ICRLZXkgPSAkSXRlbS0+e0tleX07CiAgICAgICAgbmV4dCBJVEVNIGlmICEkS2V5OwogICAgICAgIG5leHQgSVRFTSBpZiAhZGVmaW5lZCAkR2V0UGFyYW17JEtleX07CiAgICAgICAgbmV4dCBJVEVNIGlmICRHZXRQYXJhbXskS2V5fSBlcSAnJzsKCiAgICAgICAgbmV4dCBJVEVNIGlmICRBbHJlYWR5U2hvd257JEtleX07CiAgICAgICAgJEFscmVhZHlTaG93bnskS2V5fSA9IDE7CiAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgIH0KCiAgICAjIGlmIG5vIGF0dHJpYnV0ZSBpcyBzaG93biwgc2hvdyBmdWxsLXRleHQgc2VhcmNoLgogICAgaWYgKCAhJFByb2ZpbGUgKSB7CgogICAgICAgICMgTWVyZ2UgcmVndWxhciBzaG93L2hpZGUgc2V0dGluZ3MgYW5kIHRoZSBzZXR0aW5ncyBmb3IgdGhlIGR5bmFtaWMgZmllbGRzLgogICAgICAgIG15ICVEZWZhdWx0cyA9ICV7ICRDb25maWctPntEZWZhdWx0c30gfHwge30gfTsKCiAgICAgICAgZGVsZXRlICREZWZhdWx0c3tEeW5hbWljRmllbGR9OwoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZEl0ZW0gKCBzb3J0IGtleXMgJXsgJENvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30gfSApIHsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnLT57RHluYW1pY0ZpZWxkfS0+eyREeW5hbWljRmllbGRJdGVtfSA9PSAyICkgewogICAgICAgICAgICAgICAgJERlZmF1bHRzeyJTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRJdGVtIn0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJURlZmF1bHRzKSB7CiAgICAgICAgICAgIERFRkFVTFQ6CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVEZWZhdWx0cyApIHsKICAgICAgICAgICAgICAgIG5leHQgREVGQVVMVCBpZiAkS2V5IGVxICdEeW5hbWljRmllbGQnOyAgICAjIGlnbm9yZSBlbnRyeSBmb3IgREYgY29uZmlnCiAgICAgICAgICAgICAgICBuZXh0IERFRkFVTFQgaWYgJEFscmVhZHlTaG93bnskS2V5fTsKICAgICAgICAgICAgICAgICRBbHJlYWR5U2hvd257JEtleX0gPSAxOwogICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgSWYgbm8gYXR0cmlidXRlIGlzIHNob3duLCBzaG93IGZ1bGwtdGV4dCBzZWFyY2guCiAgICAgICAgICAgIGlmICggIWtleXMgJUFscmVhZHlTaG93biApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEF0dHJpYnV0ZXMsICdGdWxsdGV4dCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdTZWFyY2hBdHRyaWJ1dGVzJywKICAgICAgICBWYWx1ZSA9PiBcQFNlYXJjaEF0dHJpYnV0ZXMsCiAgICApOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgQUpBWCAgICAgICAgID0+IDEsCiAgICApOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFTZWFyY2hTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgR2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQuCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OkFnZW50RkFRU2VhcmNoIik7CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0LgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSB8fCB7fSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBHZXQgY29uZmlnIGZyb20gY29uc3RydWN0b3IuCiAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWd9OwoKICAgICMgR2V0IGNvbmZpZyBkYXRhLgogICAgbXkgJFN0YXJ0SGl0ICAgID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgbXkgJFNlYXJjaExpbWl0ID0gJENvbmZpZy0+e1NlYXJjaExpbWl0fSB8fCA1MDA7CiAgICBteSAkU29ydEJ5ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwogICAgbXkgJFByb2ZpbGUgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgICAgIHx8ICcnOwogICAgbXkgJFNhdmVQcm9maWxlICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NhdmVQcm9maWxlJyApICAgIHx8ICcnOwogICAgbXkgJFRha2VMYXN0U2VhcmNoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Rha2VMYXN0U2VhcmNoJyApIHx8ICcnOwogICAgbXkgJEVyYXNlVGVtcGxhdGUgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VyYXNlVGVtcGxhdGUnICkgIHx8ICcnOwogICAgbXkgJE5hdiAgICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hdicgKSAgICAgICAgICAgIHx8ICcnOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBTZWFyY2ggd2l0aCBhIHNhdmVkIHRlbXBsYXRlLgogICAgaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VhcmNoVGVtcGxhdGUnICkgJiYgJFByb2ZpbGUgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj1BZ2VudEZBUVNlYXJjaFNtYWxsO1N1YmFjdGlvbj1TZWFyY2g7VGFrZUxhc3RTZWFyY2g9MTtTYXZlUHJvZmlsZT0xO1Byb2ZpbGU9JFByb2ZpbGU7TmF2PSROYXYiCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEdldCBzaW5nbGUgcGFyYW1zLgogICAgbXkgJUdldFBhcmFtOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgbXkgJFNlYXJjaFByb2ZpbGVPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZScpOwoKICAgICMgTG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zIChwcmVzcyBsb2FkIHByb2ZpbGUpLgogICAgaWYgKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTG9hZFByb2ZpbGUnICYmICRQcm9maWxlICkgfHwgJFRha2VMYXN0U2VhcmNoICkgewogICAgICAgICVHZXRQYXJhbSA9ICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlR2V0KAogICAgICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgfQoKICAgICMgR2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1ldGVycyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpLgogICAgZWxzZSB7CgogICAgICAgICMgR2V0IHNjYWxhciBzZWFyY2ggcGFyYW1ldGVycyBmcm9tIHdlYiByZXF1ZXN0LgogICAgICAgIGZvciBteSAkUGFyYW1OYW1lICgKICAgICAgICAgICAgcXcoTnVtYmVyIFRpdGxlIEtleXdvcmQgRnVsbHRleHQgUmVzdWx0Rm9ybSBWb3RlU2VhcmNoIFZvdGVTZWFyY2hUeXBlIFZvdGVTZWFyY2hPcHRpb24KICAgICAgICAgICAgUmF0ZVNlYXJjaCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoT3B0aW9uIEFwcHJvdmVkU2VhcmNoCiAgICAgICAgICAgIFRpbWVTZWFyY2hUeXBlIENoYW5nZVRpbWVTZWFyY2hUeXBlCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgSXRlbUNyZWF0ZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdCBJdGVtQ2hhbmdlVGltZVBvaW50CiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZVN0YXJ0IEl0ZW1DaGFuZ2VUaW1lU3RhcnREYXkgSXRlbUNoYW5nZVRpbWVTdGFydE1vbnRoCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RhcnRZZWFyCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lU3RvcCBJdGVtQ2hhbmdlVGltZVN0b3BEYXkgSXRlbUNoYW5nZVRpbWVTdG9wTW9udGgKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVTdG9wWWVhcgogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICMgUmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQuCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXHMrIFx6IH17fXhtczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBHZXQgYXJyYXkgc2VhcmNoIHBhcmFtZXRlcnMgZnJvbSB3ZWIgcmVxdWVzdC4KICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtICgKICAgICAgICAgICAgcXcoQ2F0ZWdvcnlJRHMgTGFuZ3VhZ2VJRHMgVmFsaWRJRHMgU3RhdGVJRHMgQ3JlYXRlZFVzZXJJRHMgTGFzdENoYW5nZWRVc2VySURzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW0gKTsKICAgICAgICAgICAgaWYgKEBBcnJheSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPSBcQEFycmF5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEdldCBEeW5hbWljIGZpZWxkcyBmcm9tIHBhcmFtIG9iamVjdC4KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSB3ZWIgcmVxdWVzdC4KICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiBHZXRQYXJhbSB0byBzdG9yZSBpdCBsYXRlciBpbiB0aGUgc2VhcmNoIHByb2ZpbGUuCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IGFwcHJvdmVkIG9wdGlvbi4KICAgIGlmICggJEdldFBhcmFte0FwcHJvdmVkU2VhcmNofSAmJiAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9IGVxICdZZXMnICkgewogICAgICAgICRHZXRQYXJhbXtBcHByb3ZlZH0gPSAxOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17QXBwcm92ZWRTZWFyY2h9ICYmICRHZXRQYXJhbXtBcHByb3ZlZFNlYXJjaH0gZXEgJ05vJyApIHsKICAgICAgICAkR2V0UGFyYW17QXBwcm92ZWR9ID0gMDsKICAgIH0KCiAgICAjIEdldCB2b3RlIG9wdGlvbi4KICAgIGlmICggISRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSBlcSAnVm90ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIEdldCByYXRlIG9wdGlvbi4KICAgIGlmICggISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSBlcSAnUmF0ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1JhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIEdldCBjcmVhdGUgdGltZSBvcHRpb24uCiAgICBpZiAoICEkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBHZXQgY2hhbmdlIHRpbWUgb3B0aW9uLgogICAgaWYgKCAhJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSApIHsKICAgICAgICAkR2V0UGFyYW17J0NoYW5nZVRpbWVTZWFyY2hUeXBlOjpOb25lJ30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17Q2hhbmdlVGltZVNlYXJjaFR5cGV9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte0NoYW5nZVRpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICRHZXRQYXJhbXsnQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgU2V0IHJlc3VsdCBmb3JtIEVOVi4KICAgIGlmICggISRHZXRQYXJhbXtSZXN1bHRGb3JtfSApIHsKICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAnJzsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIFNob3cgcmVzdWx0IHNpdGUuCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJEVyYXNlVGVtcGxhdGUgKSB7CgogICAgICAgICMgRmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkuCiAgICAgICAgaWYgKCAhJFByb2ZpbGUgfHwgISRTYXZlUHJvZmlsZSApIHsKICAgICAgICAgICAgJFByb2ZpbGUgPSAnbGFzdC1zZWFyY2gnOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKCiAgICAgICAgIyBTdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbi4KICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudEZBUVNlYXJjaFNtYWxsO1N1YmFjdGlvbj1TZWFyY2giCiAgICAgICAgICAgIC4gIjtQcm9maWxlPSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKQogICAgICAgICAgICAuICI7U29ydEJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgIC4gIjtPcmRlckJ5PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAuICI7VGFrZUxhc3RTZWFyY2g9MSIKICAgICAgICAgICAgLiAiO1N0YXJ0SGl0PSIgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTdGFydEhpdCkKICAgICAgICAgICAgLiAiO05hdj0kTmF2IjsKCiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFVSTCwKICAgICAgICApOwoKICAgICAgICAjIFNhdmUgc2VhcmNoIHByb2ZpbGUgKHVuZGVyIGxhc3Qtc2VhcmNoIG9yIHJlYWwgcHJvZmlsZSBuYW1lKS4KICAgICAgICAkU2F2ZVByb2ZpbGUgPSAxOwoKICAgICAgICAjIFJlbWVtYmVyIGxhc3Qgc2VhcmNoIHZhbHVlcy4KICAgICAgICBpZiAoICRTYXZlUHJvZmlsZSAmJiAkUHJvZmlsZSApIHsKCiAgICAgICAgICAgICMgUmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmLgogICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEluc2VydCBuZXcgcHJvZmlsZSBwYXJhbWV0ZXJzLgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdGQVFTZWFyY2gnLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEdldFBhcmFteyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgUHJlcGFyZSB2b3RlcyBzZWFyY2guCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1ZvdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgUHJlcGFyZSByYXRlIHNlYXJjaC4KICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAlVGltZU1hcCA9ICgKICAgICAgICAgICAgSXRlbUNyZWF0ZSA9PiAnVGltZScsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2UgPT4gJ0NoYW5nZVRpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICAjIEdldCBjcmVhdGUgdGltZSBzZXR0aW5ncy4KICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gKSB7CgogICAgICAgICAgICAgICAgIyBEbyBub3RoaW5nIHdpdGggdGltZSBzdHVmZi4KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTW9udGggRGF5KSkgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0WWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlckRhdGUnIH0gPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcE1vbnRoJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BEYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDIzOjU5OjU5JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVNYXB7JFRpbWVUeXBlfSAuICdTZWFyY2hUeXBlJyB9IGVxICdUaW1lUG9pbnQnICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICRUaW1lID0gMDsKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbWludXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdob3VyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2RheScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3dlZWsnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiA3OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnbW9udGgnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ3llYXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQgKiAzNjU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ0JlZm9yZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIE1vcmUgdGhhbiAuLi4gYWdvLgogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ05leHQnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBXaXRoaW4gbmV4dC4KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAtJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIFdpdGhpbiBsYXN0IC4uLgogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBQcmVwYXJlIGZ1bGwtdGV4dCBzZWFyY2guCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RnVsbHRleHR9ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Q29udGVudFNlYXJjaH0gPSAnT1InOwogICAgICAgICAgICAkR2V0UGFyYW17V2hhdH0gICAgICAgICAgPSAkR2V0UGFyYW17RnVsbHRleHR9OwogICAgICAgIH0KCiAgICAgICAgbXkgJVZhbGlkTGlzdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgICAgIG15IEBBbGxWYWxpZElEcyA9IGtleXMgJVZhbGlkTGlzdDsKCiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBTZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MuCiAgICAgICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgUHJlcGFyZSBzZWFyY2ggc3RhdGVzLgogICAgICAgIG15ICRTZWFyY2hTdGF0ZXM7CiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17U3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMgPSAkSW50ZXJmYWNlU3RhdGVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgU1RBVEVUWVBFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdGVUeXBlSUQgKCBAeyAkR2V0UGFyYW17U3RhdGVJRHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkU3RhdGVUeXBlSUQ7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRFVFlQRUlEIGlmICEkSW50ZXJmYWNlU3RhdGVzLT57JFN0YXRlVHlwZUlEfTsKICAgICAgICAgICAgICAgICRTZWFyY2hTdGF0ZXMtPnskU3RhdGVUeXBlSUR9ID0gJEludGVyZmFjZVN0YXRlcy0+eyRTdGF0ZVR5cGVJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgUHJlcGFyZSB2b3RlcyBzZWFyY2guCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1ZvdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgUHJlcGFyZSByYXRlIHNlYXJjaC4KICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlfSA9IHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gPT4gJEdldFBhcmFte1JhdGVTZWFyY2h9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIER5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciBGQVEgc2VhcmNoLgogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgRXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlLgogICAgICAgICAgICAgICAgbXkgJFNlYXJjaFBhcmFtZXRlciA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIFNldCBzZWFyY2ggcGFyYW1ldGVyLgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRTZWFyY2hQYXJhbWV0ZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgR2V0IFVzZXJDYXRlZ29yeUdyb3VwIEhhc2guCiAgICAgICAgIyBUaGlzIHJldHVybnMgYSBIYXNoIG9mIHRoZSBmb2xsb3dpbmcgc2FtcGxlIGRhdGEgc3RydWN0dXJlOgogICAgICAgICMKICAgICAgICAjICRVc2VyQ2F0R3JvdXAgPSB7CiAgICAgICAgIyAgICcxJyA9PiB7CiAgICAgICAgIyAgICAgICAgICAnMycgPT4gJ01pc2NTdWInCiAgICAgICAgIyAgICAgICAgfSwKICAgICAgICAjICAgJzMnID0+IHt9LAogICAgICAgICMgICAnMCcgPT4gewogICAgICAgICMgICAgICAgICAgICAnMScgPT4gJ01pc2MnLAogICAgICAgICMgICAgICAgICAgICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAjICAgICAgICAgIH0sCiAgICAgICAgIyAgICcyJyA9PiB7fQogICAgICAgICMgfTsKICAgICAgICAjCiAgICAgICAgIyBLZXlzIG9mIHRoZSBvdXRlciBoYXNoIGluZm9ybSBhYm91dCBzdWJjYXRlZ29yaWVzLgogICAgICAgICMgICAwIFNob3dzIHRvcCBsZXZlbCBDYXRlZ29yeUlEcy4KICAgICAgICAjICAgMSBTaG93cyB0aGUgU3ViY2F0ZWdvcnlJRHMgb2YgQ2F0ZWdvcnkgMS4KICAgICAgICAjICAgMiBhbmQgMyBhcmUgZW1wdHkgaGFzaGVzIGJlY2F1c2UgdGhlc2UgY2F0ZWdvcmllcyBkb24ndCBoYXZlIHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgaW5uZXIgaGFzaGVzIGFyZSBDYXRlZ29yeUlEcyBhIHVzZXIgaXMgYWxsb3dlZCB0byBoYXZlIHJ3IGFjY2VzcyB0by4KICAgICAgICAjIFZhbHVlcyBhcmUgdGhlIENhdGVnb3J5IG5hbWVzLgoKICAgICAgICBteSAkVXNlckNhdEdyb3VwID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgRmluZCBDYXRlZ29yeUlEcyB0aGUgY3VycmVudCBVc2VyIGlzIGFsbG93ZWQgdG8gdmlldy4KICAgICAgICBteSAlQWxsb3dlZENhdGVnb3J5SURzID0gKCk7CgogICAgICAgIGlmICggJFVzZXJDYXRHcm91cCAmJiByZWYgJFVzZXJDYXRHcm91cCBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAjIFNvIG5vdyB3ZSBoYXZlIHRvIGV4dHJhY3QgYWxsIENhdGVnb3J5SUQncyBvZiB0aGUgImlubmVyIGhhc2hlcyIKICAgICAgICAgICAgIyAgIC0+IExvb3AgdGhyb3VnaCB0aGUgb3V0ZXIgQ2F0ZWdvcnlJRCdzLgogICAgICAgICAgICBmb3IgbXkgJExldmVsICggc29ydCBrZXlzICV7JFVzZXJDYXRHcm91cH0gKSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgVmFsdWUgb2YgdGhlIGN1cnJlbnQgaGFzaCBrZXkgaXMgYSBoYXNoIHJlZgogICAgICAgICAgICAgICAgaWYgKCAkVXNlckNhdEdyb3VwLT57JExldmVsfSAmJiByZWYgJFVzZXJDYXRHcm91cC0+eyRMZXZlbH0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgICAgICAjIE1hcCB0aGUga2V5cyBvZiB0aGUgaW5uZXIgaGFzaCB0byBhIFRlbXBJRHMgaGFzaC4KICAgICAgICAgICAgICAgICAgICAjIE9yaWdpbmFsIERhdGFzdHJ1Y3R1cmU6CiAgICAgICAgICAgICAgICAgICAgIyAgIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcxJyA9PiAnTWlzYycsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAgICAgICAgICAgICAjICAgfQogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjICAgYWZ0ZXIgbWFwcGluZzoKICAgICAgICAgICAgICAgICAgICAjCiAgICAgICAgICAgICAgICAgICAgIyAgIHsKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcxJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICMgICAgICAgJzInID0+IDEnCiAgICAgICAgICAgICAgICAgICAgIyAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJVRlbXBJRHMgPSBtYXAgeyAkXyA9PiAxIH0ga2V5cyAleyAkVXNlckNhdEdyb3VwLT57JExldmVsfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIFB1dCB0aGUgVGVtcElEcyBvdmVyIHRoZSBmb3JtYWxseSBmb3VuZCBBbGxvd2VkQ2F0ZWdvcnlzIHRvIHByb2R1Y2UgYSBoYXNoCiAgICAgICAgICAgICAgICAgICAgIyAgIHRoYXQgaG9sZHMgYWxsIENhdGVnb3J5SUQgYXMga2V5cyBhbmQgdGhlIG51bWJlciAxIGFzIHZhbHVlcy4KICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAlQWxsb3dlZENhdGVnb3J5SURzLAogICAgICAgICAgICAgICAgICAgICAgICAlVGVtcElEcwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRm9yIHRoZSBkYXRhYmFzZSBxdWVyeSBpdCdzIG5lY2Vzc2FyeSB0byBoYXZlIGFuIGFycmF5IG9mIENhdGVnb3J5SURzLgogICAgICAgIG15IEBDYXRlZ29yeUlEcyA9ICgpOwoKICAgICAgICBpZiAoJUFsbG93ZWRDYXRlZ29yeUlEcykgewogICAgICAgICAgICBAQ2F0ZWdvcnlJRHMgPSBzb3J0IGtleXMgJUFsbG93ZWRDYXRlZ29yeUlEczsKICAgICAgICB9CgogICAgICAgICMgQ2F0ZWdvcmllcyBnb3QgZnJvbSB0aGUgd2ViIHJlcXVlc3QgY291bGQgaW5jbHVkZSBhIG5vdCBhbGxvd2VkIGNhdGVnb3J5IGlmIHRoZSB1c2VyCiAgICAgICAgIyAgICB0ZW1wZXIgd2l0aCB0aGUgY2F0ZWdvcmllcyBkcm9wLWJveCwgYSBjaGVjayBpcyBuZWVkZWQuCiAgICAgICAgIwogICAgICAgICMgIk1hcCIgY29weSBmcm9tIG9uZSBhcnJheSB0byBhbm90aGVyLCB3aGlsZSAiZ3JlcCIgd2lsbCBvbmx5IGxldCBwYXNzIHRoZSBjYXRlZ29yaWVzCiAgICAgICAgIyAgICB0aGF0IGFyZSBkZWZpbmVkIGluIHRoZSAlQWxsb3dlZENhdGVnb3J5SURzIGhhc2guCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gKSApIHsKICAgICAgICAgICAgQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9ID0gbWFwIHskX30gZ3JlcCB7ICRBbGxvd2VkQ2F0ZWdvcnlJRHN7JF99IH0gQHsgJEdldFBhcmFte0NhdGVnb3J5SURzfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBKdXN0IHNlYXJjaCBpZiB3ZSBkbyBoYXZlIGNhdGVnb3JpZXMsIHdlIGhhdmUgYWNjZXNzIHRvLgogICAgICAgICMgSWYgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYW55IGNhdGVnb3J5LCBhIHNlYXJjaCB3aXRoIG5vIENhdGVnb3J5SURzCiAgICAgICAgIyAgIHdvdWxkIHJlc3VsdCBpbiBmaW5kaW5nIGFsbCBjYXRlZ29yaWVzLgogICAgICAgICMKICAgICAgICAjIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgRkFRJ3Mgd2l0aG91dCBjYXRlZ29yaWVzCiAgICAgICAgIyAgIHNvIGF0IGxlYXN0IG9uZSBjYXRlZ29yeSBoYXMgdG8gYmUgcHJlc2VudC4KCiAgICAgICAgbXkgQFZpZXdhYmxlSXRlbUlEcyA9ICgpOwoKICAgICAgICBpZiAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICAgICAjIFBlcmZvcm0gRkFRIHNlYXJjaC4KICAgICAgICAgICAgIyBEZWZhdWx0IHNlYXJjaCBvbiBhbGwgdmFsaWQgaWRzLCB0aGlzIGNhbiBiZSBvdmVyd3JpdHRlbiBieSAlR2V0UGFyYW0uCiAgICAgICAgICAgIEBWaWV3YWJsZUl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgID0+IFskU29ydEJ5XSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgPT4gWyRPcmRlckJ5XSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgICAgID0+ICRTZWFyY2hTdGF0ZXMsCiAgICAgICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgICAgICBDb250ZW50U2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgICAgIENvbnRlbnRTZWFyY2hTdWZmaXggPT4gJyonLAogICAgICAgICAgICAgICAgVmFsaWRJRHMgICAgICAgICAgICA9PiBcQEFsbFZhbGlkSURzLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICAgICA9PiBcQENhdGVnb3J5SURzLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFN0YXJ0IEhUTUwgcGFnZS4KICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5QcmludCgKICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0LAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCA9ICcnOwoKICAgICAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgICAgICBteSAkVmlldyAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgICB8fCAnJzsKCiAgICAgICAgIyBTaG93IEZBUSdzLgogICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFNvcnRCeSkKICAgICAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJE9yZGVyQnkpCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CiAgICAgICAgICAgIC4gJzsnOwogICAgICAgIG15ICRMaW5rU29ydCA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJEZpbHRlcikKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFZpZXcpCiAgICAgICAgICAgIC4gJztQcm9maWxlPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAuICc7TmF2PScgLiAkTmF2CgogICAgICAgICAgICAuICc7JzsKICAgICAgICBteSAkTGlua0ZpbHRlciA9ICdUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2g7UHJvZmlsZT0nCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkUHJvZmlsZSkKICAgICAgICAgICAgLiAnO05hdj0nIC4gJE5hdgogICAgICAgICAgICAuICc7JzsKICAgICAgICBteSAkTGlua0JhY2sgPSAnU3ViYWN0aW9uPUxvYWRQcm9maWxlO1Byb2ZpbGU9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoJFByb2ZpbGUpCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnO1Rha2VMYXN0U2VhcmNoPTE7JzsKCiAgICAgICAgbXkgJEZpbHRlckxpbmsgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpCiAgICAgICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRPcmRlckJ5KQogICAgICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkVmlldykKICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRQcm9maWxlIC4gJztUYWtlTGFzdFNlYXJjaD0xO1N1YmFjdGlvbj1TZWFyY2gnCiAgICAgICAgICAgIC4gJztOYXY9JyAuICROYXYKICAgICAgICAgICAgLiAnOyc7CgogICAgICAgICMgRmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24uCiAgICAgICAgbXkgQFNob3dDb2x1bW5zOwogICAgICAgIGlmICggJENvbmZpZy0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgICAgICMgR2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnLgogICAgICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkQ29uZmlnLT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICAgICAjIEdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duLgogICAgICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJVBvc3NpYmxlQ29sdW1uICkgewogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEVuZm9yY2UgRkFRIG51bWJlciBjb2x1bW4gc2luY2UgaXMgdGhlIGxpbmsgTWFzdGVyQWN0aW9uIGhvb2suCiAgICAgICAgICAgIGlmICggISRQb3NzaWJsZUNvbHVtbnsnTnVtYmVyJ30gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJ051bWJlcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+RkFRTGlzdFNob3coCiAgICAgICAgICAgIEZBUUlEcyA9PiBcQFZpZXdhYmxlSXRlbUlEcywKICAgICAgICAgICAgVG90YWwgID0+IHNjYWxhciBAVmlld2FibGVJdGVtSURzLAoKICAgICAgICAgICAgVmlldyA9PiAkVmlldywKCiAgICAgICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICBMaW5rU29ydCAgID0+ICRMaW5rU29ydCwKICAgICAgICAgICAgTGlua0ZpbHRlciA9PiAkTGlua0ZpbHRlciwKICAgICAgICAgICAgTGlua0JhY2sgICA9PiAkTGlua0JhY2ssCiAgICAgICAgICAgIFByb2ZpbGUgICAgPT4gJFByb2ZpbGUsCgogICAgICAgICAgICBUaXRsZU5hbWUgPT4gVHJhbnNsYXRhYmxlKCdTZWFyY2ggUmVzdWx0JyksCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VhcmNoTGltaXQsCgogICAgICAgICAgICBGaWx0ZXIgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgICAgIEZpbHRlckxpbmsgPT4gJEZpbHRlckxpbmssCgogICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCgogICAgICAgICAgICBTaG93Q29sdW1ucyA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgICAgICBOYXYgICAgICAgICA9PiAkTmF2LAogICAgICAgICk7CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKCiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2tGb3JtKAogICAgICAgICAgICBOYXYgPT4gJE5hdiwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKc3ViIF9NYXNrRm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICBteSAlUHJvZmlsZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZScpLT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICBCYXNlICAgICAgPT4gJ0ZBUVNlYXJjaCcsCiAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEJ1aWxkIHByb2ZpbGVzIG91dHB1dCBsaXN0LgogICAgJFBhcmFte1Byb2ZpbGVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQcm9maWxlc30sCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdQcm9maWxlJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlTGFuZ3VhZ2VzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgRHJvcC1kb3duIG1lbnUgZm9yICdsYW5ndWFnZXMnLgogICAgJFBhcmFte0xhbmd1YWdlc1NlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUxhbmd1YWdlcywKICAgICAgICBOYW1lICAgICAgID0+ICdMYW5ndWFnZUlEcycsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtMYW5ndWFnZUlEc30gfHwgW10sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBHZXQgY2F0ZWdvcmllcyAod2l0aCBjYXRlZ29yeSBsb25nIG5hbWVzKSB3aGVyZSB1c2VyIGhhcyByaWdodHMuCiAgICBteSAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXMgPSAkRkFRT2JqZWN0LT5HZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIEJ1aWxkIHRoZSBjYXRlZ29yeSBzZWxlY3Rpb24uCiAgICAkUGFyYW17Q2F0ZWdvcmllc1NlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gJFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdDYXRlZ29yeUlEcycsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9IHx8IFtdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBUcmVlVmlldyAgICA9PiAkVHJlZVZpZXcsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CgogICAgIyBCdWlsZCB0aGUgdmFsaWQgc2VsZWN0aW9uLgogICAgJFBhcmFte1ZhbGlkU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgICA9PiAnVmFsaWRJRHMnLAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZhbGlkSURzfSB8fCBbXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgQ3JlYXRlIGEgbWl4IG9mIHN0YXRlIGFuZCBzdGF0ZSB0eXBlcyBoYXNoIGluIG9yZGVyIHRvIGhhdmUgdGhlIHN0YXRlIHR5cGUgSURzIHdpdGggc3RhdGUgbmFtZXMuCiAgICBteSAlU3RhdGVMaXN0ID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVTdGF0ZXM7CiAgICBmb3IgbXkgJFN0YXRlSUQgKCBzb3J0IGtleXMgJVN0YXRlTGlzdCApIHsKICAgICAgICBteSAlU3RhdGVEYXRhID0gJEZBUU9iamVjdC0+U3RhdGVHZXQoCiAgICAgICAgICAgIFN0YXRlSUQgPT4gJFN0YXRlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFN0YXRlc3sgJFN0YXRlRGF0YXtUeXBlSUR9IH0gPSAkU3RhdGVEYXRhe05hbWV9OwogICAgfQoKICAgICRQYXJhbXtTdGF0ZVNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVTdGF0ZXMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1N0YXRlSURzJywKICAgICAgICBTaXplICAgICAgICA9PiAzLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtTdGF0ZUlEc30gfHwgW10sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRXF1YWxzJyksCiAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gVHJhbnNsYXRhYmxlKCdHcmVhdGVyIHRoYW4nKSwKICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiBUcmFuc2xhdGFibGUoJ0dyZWF0ZXIgdGhhbiBlcXVhbHMnKSwKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1NtYWxsZXIgdGhhbicpLAogICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFRyYW5zbGF0YWJsZSgnU21hbGxlciB0aGFuIGVxdWFscycpLAogICAgKTsKCiAgICAkUGFyYW17Vm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlVm90aW5nT3BlcmF0b3JzLAogICAgICAgIE5hbWUgICAgICAgID0+ICdWb3RlU2VhcmNoVHlwZScsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17Vm90ZVNlYXJjaFR5cGV9IHx8ICcnLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte1JhdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1JhdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwogICAgJFBhcmFte1JhdGVTZWFyY2hTZWxlY3Rpb25TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAwICAgPT4gJzAlJywKICAgICAgICAgICAgMjUgID0+ICcyNSUnLAogICAgICAgICAgICA1MCAgPT4gJzUwJScsCiAgICAgICAgICAgIDc1ICA9PiAnNzUlJywKICAgICAgICAgICAgMTAwID0+ICcxMDAlJywKICAgICAgICB9LAogICAgICAgIFNvcnQgICAgICAgID0+ICdOdW1lcmljS2V5JywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaCcsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaH0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkUGFyYW17QXBwcm92ZWRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBObyAgPT4gVHJhbnNsYXRhYmxlKCdObycpLAogICAgICAgICAgICBZZXMgPT4gVHJhbnNsYXRhYmxlKCdZZXMnKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQXBwcm92ZWRTZWFyY2gnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17QXBwcm92ZWRTZWFyY2h9IHx8ICcnLAogICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBHZXQgYSBsaXN0IG9mIGFsbCB1c2VycyB0byBkaXNwbGF5LgogICAgbXkgJVNob3duVXNlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTGlzdCgKICAgICAgICBUeXBlICA9PiAnTG9uZycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgbXkgJEZyb250ZW5kQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyk7CiAgICBteSAkRkFRQWRkR3JvdXBzICAgPSAkRnJvbnRlbmRDb25maWctPntBZ2VudEZBUUFkZH0tPntHcm91cH0gfHwgW107CgogICAgbXkgJUZBUUFkZFVzZXJzID0gJVNob3duVXNlcnM7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkRkFRQWRkR3JvdXBzKSApIHsKCiAgICAgICAgbXkgJUdyb3VwVXNlcnM7CiAgICAgICAgZm9yIG15ICRHcm91cCAoIEB7JEZBUUFkZEdyb3Vwc30gKSB7CgogICAgICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgICAgIG15ICRHcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCggR3JvdXAgPT4gJEdyb3VwICk7CiAgICAgICAgICAgIG15ICVVc2VycyAgID0gJEdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHcm91cElELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAncncnLAogICAgICAgICAgICAgICAgUmVzdWx0ICA9PiAnSEFTSCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICVHcm91cFVzZXJzID0gKCAlR3JvdXBVc2VycywgJVVzZXJzICk7CiAgICAgICAgfQoKICAgICAgICAjIFJlbW92ZSBhbGwgdXNlcnMgdGhhdCBhcmUgbm90IGluIHRoZSBGQVEgb3IgZmFxX2FkbWluIGdyb3Vwcy4KICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlRkFRQWRkVXNlcnMgKSB7CiAgICAgICAgICAgIGlmICggISRHcm91cFVzZXJzeyRVc2VySUR9ICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRGQVFBZGRVc2Vyc3skVXNlcklEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgICRQYXJhbXtDcmVhdGVkVXNlclN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUZBUUFkZFVzZXJzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NyZWF0ZWRVc2VySURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0NyZWF0ZWRVc2VySURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkRkFRRWRpdEdyb3VwcyA9ICRGcm9udGVuZENvbmZpZy0+e0FnZW50RkFRRWRpdH0tPntHcm91cH0gfHwgW107CgogICAgbXkgJUZBUUVkaXRVc2VycyA9ICVTaG93blVzZXJzOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJEZBUUVkaXRHcm91cHMpICkgewoKICAgICAgICBteSAlR3JvdXBVc2VyczsKICAgICAgICBmb3IgbXkgJEdyb3VwICggQHskRkFRRWRpdEdyb3Vwc30gKSB7CgogICAgICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgICAgIG15ICRHcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCggR3JvdXAgPT4gJEdyb3VwICk7CiAgICAgICAgICAgIG15ICVVc2VycyAgID0gJEdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICBHcm91cElEID0+ICRHcm91cElELAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAncncnLAogICAgICAgICAgICAgICAgUmVzdWx0ICA9PiAnSEFTSCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICVHcm91cFVzZXJzID0gKCAlR3JvdXBVc2VycywgJVVzZXJzICk7CiAgICAgICAgfQoKICAgICAgICAjIFJlbW92ZSBhbGwgdXNlcnMgdGhhdCBhcmUgbm90IGluIHRoZSBGQVEgb3IgZmFxX2FkbWluIGdyb3Vwcy4KICAgICAgICBmb3IgbXkgJFVzZXJJRCAoIHNvcnQga2V5cyAlRkFRRWRpdFVzZXJzICkgewogICAgICAgICAgICBpZiAoICEkR3JvdXBVc2Vyc3skVXNlcklEfSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkRkFRRWRpdFVzZXJzeyRVc2VySUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVGQVFFZGl0VXNlcnMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTGFzdENoYW5nZWRVc2VySURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30sCiAgICAgICAgQ2xhc3MgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICdMYXN0JyAgID0+IFRyYW5zbGF0YWJsZSgnd2l0aGluIHRoZSBsYXN0IC4uLicpLAogICAgICAgICAgICAnQmVmb3JlJyA9PiBUcmFuc2xhdGFibGUoJ21vcmUgdGhhbiAuLi4gYWdvJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+IFRyYW5zbGF0YWJsZSgnbWludXRlKHMpJyksCiAgICAgICAgICAgIGhvdXIgICA9PiBUcmFuc2xhdGFibGUoJ2hvdXIocyknKSwKICAgICAgICAgICAgZGF5ICAgID0+IFRyYW5zbGF0YWJsZSgnZGF5KHMpJyksCiAgICAgICAgICAgIHdlZWsgICA9PiBUcmFuc2xhdGFibGUoJ3dlZWsocyknKSwKICAgICAgICAgICAgbW9udGggID0+IFRyYW5zbGF0YWJsZSgnbW9udGgocyknKSwKICAgICAgICAgICAgeWVhciAgID0+IFRyYW5zbGF0YWJsZSgneWVhcihzKScpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ3JlYXRlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gWyAxIC4uIDU5IF0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydFN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICdMYXN0JyAgID0+IFRyYW5zbGF0YWJsZSgnd2l0aGluIHRoZSBsYXN0IC4uLicpLAogICAgICAgICAgICAnQmVmb3JlJyA9PiBUcmFuc2xhdGFibGUoJ21vcmUgdGhhbiAuLi4gYWdvJyksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdJdGVtQ2hhbmdlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydH0gfHwgJ0xhc3QnLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0U3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+IFRyYW5zbGF0YWJsZSgnbWludXRlKHMpJyksCiAgICAgICAgICAgIGhvdXIgICA9PiBUcmFuc2xhdGFibGUoJ2hvdXIocyknKSwKICAgICAgICAgICAgZGF5ICAgID0+IFRyYW5zbGF0YWJsZSgnZGF5KHMpJyksCiAgICAgICAgICAgIHdlZWsgICA9PiBUcmFuc2xhdGFibGUoJ3dlZWsocyknKSwKICAgICAgICAgICAgbW9udGggID0+IFRyYW5zbGF0YWJsZSgnbW9udGgocyknKSwKICAgICAgICAgICAgeWVhciAgID0+IFRyYW5zbGF0YWJsZSgneWVhcihzKScpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICA9PiAnSXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SXRlbUNoYW5nZVRpbWVQb2ludEZvcm1hdH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lU3RhcnRTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ICAgPT4gJ0l0ZW1DaGFuZ2VUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZVN0b3BTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ2hhbmdlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgIyBDcmVhdGUgSFRNTCBzdHJpbmdzIGZvciBhbGwgZHluYW1pYyBmaWVsZHMuCiAgICBteSAlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgIyBHZXQgZmllbGQgSFRNTC4KICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfQogICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdHN9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2gnLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBHZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzLgogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgIyBTa2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZC4KICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgLT57RmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRU2VhcmNoU21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgbXkgJVVzZXJQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggIWRlZmluZWQgJFNlbGYtPntEb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ICkgewogICAgICAgIGlmICggJFVzZXJQcmVmZXJlbmNlc3tVc2VyQWdlbnREb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ICkgewogICAgICAgICAgICAkU2VsZi0+e0RvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX0gPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntEb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ID0gMDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIFBlcm1pc3Npb24gY2hlY2suCiAgICBpZiAoICEkU2VsZi0+e0FjY2Vzc1JvfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgcm8gcGVybWlzc2lvbiEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIEdldCBwYXJhbWV0ZXJzIGZyb20gd2ViIHJlcXVlc3QuCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CiAgICAkR2V0UGFyYW17UmF0ZX0gICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSYXRlJyApOwoKICAgICMgR2V0IG5hdmlnYXRpb24gYmFyIG9wdGlvbi4KICAgIG15ICROYXYgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmF2JyApIHx8ICcnOwoKICAgIGlmICggISRHZXRQYXJhbXtJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIEl0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwogICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBDaGVjayB1c2VyIHBlcm1pc3Npb24uCiAgICBteSAkUGVybWlzc2lvbiA9ICRGQVFPYmplY3QtPkNoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbigKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBDYXRlZ29yeUlEID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFR5cGUgICAgICAgPT4gJ3JvJywKICAgICk7CiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBjYXRlZ29yeSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgSFRNTFZpZXcgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ0dldCBwYXJhbWV0ZXJzIGZyb20gd2ViIHJlcXVlc3QuCiAgICAgICAgbXkgJEZpZWxkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIkZpZWxkIiApOwoKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoIEl0ZW1JRCBGaWVsZCApKSB7CiAgICAgICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgR2V0IHRoZSBGaWVsZCBjb250ZW50LgogICAgICAgIG15ICRGaWVsZENvbnRlbnQgPSAkRkFRT2JqZWN0LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmllbGQgID0+ICRGaWVsZCwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIFJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24sIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueC4KICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7fWd4bXM7CgogICAgICAgICMgQnVpbGQgYmFzZSBVUkwgZm9yIGluLWxpbmUgaW1hZ2VzLgogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVxkKztGaWxlSUQ9XGQrKQogICAgICAgICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgIH0KCiAgICAgICAgIyBDb252ZXJ0IGNvbnRlbnQgdG8gSFRNTCBpZiBuZWVkZWQuCiAgICAgICAgaWYgKAogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpCiAgICAgICAgICAgICYmICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9CiAgICAgICAgICAgICYmICRGQVFEYXRhe0NvbnRlbnRUeXBlfSBuZSAndGV4dC9odG1sJwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+VG9IVE1MKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgfQoKICAgICAgICAjIERldGVjdCBhbGwgcGxhaW4gdGV4dCBsaW5rcyBhbmQgcHV0IHRoZW0gaW50byBhbiBIVE1MIDxhPiB0YWcuCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgdGFyZ2V0PSJfYmxhbmsiIGF0dHJpYnV0ZSB0byBhbGwgSFRNTCA8YT4gdGFncyB0aGUgTGlua1F1b3RlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlCiAgICAgICAgIyAgIGNhbGxlZCBhZ2FpbgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUYXJnZXRBZGQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIEFkZCBuZWVkZWQgSFRNTCBoZWFkZXJzLgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIFJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQuCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgICRHZXRQYXJhbXtGaWxlSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVJRCcgKTsKCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkR2V0UGFyYW17RmlsZUlEfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBGaWxlSUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEdldCBhdHRhY2htZW50cy4KICAgICAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmlsZUlEID0+ICRHZXRQYXJhbXtGaWxlSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCVGaWxlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KCVGaWxlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEdldFBhcmFte0ZpbGVJRH0pISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBPdGhlciBzdWItYWN0aW9ucyBjb250aW51ZXMgaGVyZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIG15ICRPdXRwdXQ7CiAgICBpZiAoICROYXYgZXEgJ05vbmUnICkgewogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgVmFsdWUgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICB9CgogICAgIyBEZWZpbmUgZGlmZmVyZW50IG5vdGlmaWNhdGlvbnMuCiAgICBteSAlTm90aWZpY2F0aW9ucyA9ICgKICAgICAgICBUaGFua3MgPT4gewogICAgICAgICAgICBQcmlvcml0eSA9PiAnSW5mbycsCiAgICAgICAgICAgIEluZm8gICAgID0+IFRyYW5zbGF0YWJsZSgnVGhhbmtzIGZvciB5b3VyIHZvdGUhJyksCiAgICAgICAgfSwKICAgICAgICBBbHJlYWR5Vm90ZWQgPT4gewogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIGFscmVhZHkgdm90ZWQhJyksCiAgICAgICAgfSwKICAgICAgICBOb1JhdGUgPT4gewogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PiBUcmFuc2xhdGFibGUoJ05vIHJhdGUgc2VsZWN0ZWQhJyksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBPdXRwdXQgbm90aWZpY2F0aW9ucyBpZiBhbnkuCiAgICBteSAkTm90aWZ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05vdGlmeScgKSB8fCAnJzsKICAgIGlmICggJE5vdGlmeSAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJE5vdGlmaWNhdGlvbnN7JE5vdGlmeX0gKSApIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgJXsgJE5vdGlmaWNhdGlvbnN7JE5vdGlmeX0gfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IGRlZmF1bHQgb3B0aW9ucy4KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgIG15ICRWb3RpbmcgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgU2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzLgogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIEdldCBGQVEgdm90ZSBpbmZvcm1hdGlvbi4KICAgIG15ICRWb3RlRGF0YTsKICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJFZvdGVEYXRhID0gJEZBUU9iamVjdC0+Vm90ZUdldCgKICAgICAgICAgICAgQ3JlYXRlQnkgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRGQVFEYXRhe0l0ZW1JRH0sCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkSW50ZXJmYWNlLT57U3RhdGVJRH0sCiAgICAgICAgICAgIElQICAgICAgICA9PiAkRU5WeydSRU1PVEVfQUREUid9LAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBDaGVjayBpZiB1c2VyIGFscmVhZHkgdm90ZWQgdGhpcyBGQVEgaXRlbS4KICAgIG15ICRBbHJlYWR5Vm90ZWQ7CiAgICBpZiAoJFZvdGVEYXRhKSB7CgogICAgICAgIG15ICRJdGVtQ2hhbmdlZFN5c3RlbVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRkFRRGF0YXtDaGFuZ2VkfSB8fCAnJywKICAgICAgICAgICAgfQogICAgICAgICktPlRvRXBvY2goKTsKCiAgICAgICAgbXkgJFZvdGVDcmVhdGVkU3lzdGVtVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRWb3RlRGF0YS0+e0NyZWF0ZWR9IHx8ICcnLAogICAgICAgICAgICB9CiAgICAgICAgKS0+VG9FcG9jaCgpOwoKICAgICAgICBpZiAoICRJdGVtQ2hhbmdlZFN5c3RlbVRpbWUgPD0gJFZvdGVDcmVhdGVkU3lzdGVtVGltZSApIHsKICAgICAgICAgICAgJEFscmVhZHlWb3RlZCA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIFZvdGUgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdWb3RlJyApIHsKCiAgICAgICAgIyBVc2VyIGNhbid0IHVzZSB0aGlzIHN1Yi1hY3Rpb24gaWYgaXMgbm90IGVuYWJsZWQuCiAgICAgICAgaWYgKCAhJFZvdGluZyApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGUgdm90aW5nIG1lY2hhbmlzbSBpcyBub3QgZW5hYmxlZCEnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgVXNlciBjYW4gdm90ZSBvbmx5IG9uY2UgcGVyIEZBUSByZXZpc2lvbi4KICAgICAgICBpZiAoJEFscmVhZHlWb3RlZCkgewoKICAgICAgICAgICAgIyBSZWRpcmVjdCB0byBGQVEgem9vbS4KICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScKICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtJdGVtSUR9CiAgICAgICAgICAgICAgICAgICAgLiAnO05hdj0kTmF2O05vdGlmeT1BbHJlYWR5Vm90ZWQnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFNldCB0aGUgdm90ZSBpZiBhbnkuCiAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtSYXRlfSApIHsKCiAgICAgICAgICAgICMgR2V0IHJhdGVzIGNvbmZpZy4KICAgICAgICAgICAgbXkgJFZvdGluZ1JhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgICAgICAgICAgbXkgJFJhdGUgICAgICAgID0gJEdldFBhcmFte1JhdGV9OwoKICAgICAgICAgICAgIyBTZW5kIGVycm9yIGlmIHJhdGUgaXMgbm90IGRlZmluZWQgaW4gY29uZmlnLgogICAgICAgICAgICBpZiAoICEkVm90aW5nUmF0ZXMtPnskUmF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkIScpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBPdGhlcndpc2UgYWRkIHRoZSB2b3RlLgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRGQVFPYmplY3QtPlZvdGVBZGQoCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBSYXRlICAgICAgPT4gJEdldFBhcmFte1JhdGV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgRG8gbm90IHNob3cgdGhlIHZvdGluZyBmb3JtLgogICAgICAgICAgICAgICAgJEFscmVhZHlWb3RlZCA9IDE7CgogICAgICAgICAgICAgICAgIyBSZWZyZXNoIEZBUSBpdGVtIGRhdGEuCiAgICAgICAgICAgICAgICAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJUZBUURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBSZWRpcmVjdCB0byBGQVEgem9vbS4KICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgICAgICBPUCA9PiAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtJdGVtSUR9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJztOYXY9JE5hdjtOb3RpZnk9VGhhbmtzJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBVc2VyIGlzIGFibGUgdG8gdm90ZSBidXQgbm8gcmF0ZSBoYXMgYmVlbiBzZWxlY3RlZC4KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgUmVkaXJlY3QgdG8gRkFRIHpvb20KICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScgLiAkR2V0UGFyYW17SXRlbUlEfSAuICc7TmF2PSROYXY7Tm90aWZ5PU5vUmF0ZScKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBQcmVwYXJlIGZpZWxkcyBkYXRhIChTdGlsbCBuZWVkZWQgZm9yIFBsYWluVGV4dCkuCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgUmV3cml0ZSBoYW5kbGUgYW5kIGFjdGlvbiwgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54LgogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICB9e0FjdGlvbj1BZ2VudEZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBObyBxdW90aW5nIGlmIEhUTUwgdmlldyBpcyBlbmFibGVkLgogICAgICAgIG5leHQgRklFTEQgaWYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBIVE1MIHF1b3RpbmcuCiAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIE5ld0xpbmUgICAgICAgID0+IDAsCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgICAgIFZNYXggICAgICAgICAgID0+IDUwMDAsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBHZXQgdXNlciBpbmZvIChDcmVhdGVkQnkpLgogICAgbXkgJVVzZXJJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRkFRRGF0YXtDcmVhdGVkQnl9CiAgICApOwogICAgJFBhcmFte0NyZWF0ZWRCeVVzZXJ9ID0gIiRVc2VySW5mb3tVc2VyRnVsbG5hbWV9IjsKCiAgICAjIEdldCB1c2VyIGluZm8gKENoYW5nZWRCeSkuCiAgICAlVXNlckluZm8gPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRGQVFEYXRhe0NoYW5nZWRCeX0KICAgICk7CiAgICAkUGFyYW17Q2hhbmdlZEJ5VXNlcn0gPSAiJFVzZXJJbmZve1VzZXJGdWxsbmFtZX0iOwoKICAgICMgU2V0IHZvdGluZyByZXN1bHRzLgogICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICRMYXlvdXRPYmplY3QtPkdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IoCiAgICAgICAgUmF0ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICk7CgogICAgaWYgKCAhJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSB8fCAkRkFRRGF0YXtWb3Rlc30gZXEgJzAnICkgewogICAgICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAnR3JheSc7CiAgICB9CgogICAgaWYgKCAkTmF2IG5lICdOb25lJyApIHsKCiAgICAgICAgIyBSdW4gRkFRIG1lbnUgbW9kdWxlcy4KICAgICAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgIG15ICVNZW51cyAgID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlJykgfTsKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgICAgICBmb3IgbXkgJE1lbnUgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgICAgICMgTG9hZCBtb2R1bGUuCiAgICAgICAgICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNZW51c3skTWVudX0tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRNZW51c3skTWVudX0tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUURhdGF7SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIFNldCBDU1MgY2xhc3Nlcy4KICAgICAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWVudXN7JE1lbnV9LT57VGFyZ2V0fSBlcSAnUG9wVXAnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e0NsYXNzfSA9ICdBc1BvcHVwJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdCYWNrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbGFzc30gPSAnSGlzdG9yeUJhY2snOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0NvbmZpcm1hdGlvbkRpYWxvZycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57Q2xhc3N9ID0gJ0FzQ29uZmlybWF0aW9uRGlhbG9nJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgUnVuIG1vZHVsZS4KICAgICAgICAgICAgICAgICAgICAkQ291bnRlciA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBGQVFJdGVtID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIgPT4gJENvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZyAgPT4gJE1lbnVzeyRNZW51fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVudUlEICA9PiAnTWVudScgLiAkTWVudSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIE91dHB1dCBhcHByb3ZhbCBzdGF0ZS4KICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSApIHsKICAgICAgICAkUGFyYW17QXBwcm92YWx9ID0gJEZBUURhdGF7QXBwcm92ZWR9ID8gJ1llcycgOiAnTm8nOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdWaWV3QXBwcm92YWwnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCRWb3RpbmcpIHsKCiAgICAgICAgIyBPdXRwdXQgdm90ZXMgbnVtYmVyIGlmIGFueS4KICAgICAgICBpZiAoICRGQVFEYXRhe1ZvdGVzfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdWaWV3Vm90ZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBPdGhlcndpc2UgZGlzcGxheSBhIE5vIFZvdGVzIGZvdW5kIG1lc3NhZ2UuCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdWaWV3Tm9Wb3RlcycgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFNob3dGQVFQYXRoID0gJExheW91dE9iamVjdC0+RkFRUGF0aFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBDYXRlZ29yeUlEICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgUGF0aEZvckl0ZW0gPT4gMSwKICAgICAgICBOYXYgICAgICAgICA9PiAkTmF2LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aEl0ZW1FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICAgICBOYXYgID0+ICROYXYsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNob3cga2V5d29yZHMgYXMgc2VhcmNoIGxpbmtzLgogICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CgogICAgICAgICMgUmVwbGFjZSBjb21tYXMgYW5kIHNlbWljb2xvbnMuCiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvLC8gL2c7CiAgICAgICAgJEZBUURhdGF7S2V5d29yZHN9ID1+IHMvOy8gL2c7CgogICAgICAgIG15IEBLZXl3b3JkcyA9IHNwbGl0IC9ccysvLCAkRkFRRGF0YXtLZXl3b3Jkc307CiAgICAgICAgZm9yIG15ICRLZXl3b3JkIChAS2V5d29yZHMpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdLZXl3b3JkcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBTaG93IGxhbmd1YWdlcy4KICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE91dHB1dCByYXRpbmcgc3RhcnMuCiAgICBpZiAoJFZvdGluZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICAgICAgVm90ZVJlc3VsdCA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSwKICAgICAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggJE5hdiBuZSAnTm9uZScgKSB7CgogICAgICAgICMgT3V0cHV0IGV4aXN0aW5nIGF0dGFjaG1lbnRzLgogICAgICAgIG15IEBBdHRhY2htZW50SW5kZXggPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBPdXRwdXQgaGVhZGVyIGFuZCBhbGwgYXR0YWNobWVudHMuCiAgICAgICAgaWYgKEBBdHRhY2htZW50SW5kZXgpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50Um93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU2hvdyBtZXNzYWdlIGFib3V0IGxpbmtzIGluIGlmcmFtZXMsIGlmIHVzZXIgZGlkbid0IGNsb3NlIGl0IGFscmVhZHkuCiAgICBpZiAoICEkU2VsZi0+e0RvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZX0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0Jyb3dzZXJMaW5rTWVzc2FnZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNob3cgRkFRIENvbnRlbnQuCiAgICBteSAkRkFRQm9keSA9ICRMYXlvdXRPYmplY3QtPkZBUUNvbnRlbnRTaG93KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIEZBUURhdGEgICAgICAgICA9PiB7JUZBUURhdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgUmV0dXJuQ29udGVudCAgID0+IDEsCiAgICApOwoKICAgICMgR2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUuCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJGQVE6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuLgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIEdldCBwcmludCBzdHJpbmcgZm9yIHRoaXMgZHluYW1pYyBmaWVsZC4KICAgICAgICBteSAkVmFsdWVTdHJnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJEZBUURhdGF7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9LAogICAgICAgICAgICBWYWx1ZU1heENoYXJzICAgICAgPT4gMjUwLAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwoKICAgICAgICBteSAkTGFiZWwgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRkFRRHluYW1pY0ZpZWxkTGluaycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e0xpbmt9LAogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRkFRRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICROYXYgbmUgJ05vbmUnICkgewoKICAgICAgICAjIFNob3cgRkFRIFZvdGluZy4KICAgICAgICBpZiAoJFZvdGluZykgewoKICAgICAgICAgICAgIyBHZXQgdm90aW5nIGNvbmZpZy4KICAgICAgICAgICAgbXkgJFNob3dWb3RpbmdDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpTaG93Jyk7CiAgICAgICAgICAgIGlmICggJFNob3dWb3RpbmdDb25maWctPnsgJEludGVyZmFjZS0+e05hbWV9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBDaGVjayBpZiB0aGUgdXNlciBhbHJlYWR5IHZvdGVkIGFmdGVyIGxhc3QgY2hhbmdlLgogICAgICAgICAgICAgICAgaWYgKCAhJEFscmVhZHlWb3RlZCApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0ZBUVZvdGluZyggRkFRRGF0YSA9PiB7JUZBUURhdGF9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgR2V0IGxpbmtlZCBvYmplY3RzLgogICAgICAgIG15ICRMaW5rTGlzdFdpdGhEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15ICRMaW5rVGFibGVWaWV3TW9kZSA9ICRDb25maWdPYmplY3QtPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAgICAgIyBDcmVhdGUgdGhlIGxpbmsgdGFibGUuCiAgICAgICAgbXkgJExpbmtUYWJsZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgICAgIFZpZXdNb2RlICAgICAgICAgPT4gJExpbmtUYWJsZVZpZXdNb2RlLAogICAgICAgICAgICBPYmplY3QgICAgICAgICAgID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgICMgT3V0cHV0IHRoZSBsaW5rIHRhYmxlLgogICAgICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmtUYWJsZScgLiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMaW5rVGFibGVTdHJnID0+ICRMaW5rVGFibGVTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBMb2cgYWNjZXNzIHRvIHRoaXMgRkFRIGl0ZW0uCiAgICAkRkFRT2JqZWN0LT5GQVFMb2dBZGQoCiAgICAgICAgSXRlbUlEICAgID0+ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICksCiAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntOYW1lfSwKICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIFN0YXJ0IHRlbXBsYXRlIG91dHB1dC4KICAgIGlmICggJE5hdiAmJiAkTmF2IGVxICdOb25lJyApIHsKCiAgICAgICAgIyBPbmx5IGNvbnZlcnQgSFRNTCB0byBwbGFpbiB0ZXh0IGlmIHJpY2ggdGV4dCBlZGl0b3IgaXMgbm90IHVzZWQuCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICkgewogICAgICAgICAgICAkRkFRRGF0YXtGdWxsQm9keX0gPSAkRkFRQm9keTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRGQVFEYXRhe0Z1bGxCb2R5fSA9ICRIVE1MVXRpbHNPYmplY3QtPlRvQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZBUUJvZHksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0aGUgcHVibGljIHN0YXRlIHR5cGUuCiAgICAgICAgbXkgJFB1YmxpY1N0YXRlVHlwZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgUmVtb3ZlIGluLWxpbmUgaW1hZ2UgbGlua3MgdG8gRkFRIGltYWdlcy4KICAgICAgICAkRkFRRGF0YXtGdWxsQm9keX0KICAgICAgICAgICAgPX4gc3sgPGltZyBbXjw+XSsgQWN0aW9uPShBZ2VudHxDdXN0b21lcnxQdWJsaWMpRkFRIFtePD5dKyA+IH17fWd4bXM7CgogICAgICAgICMgR2V0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgVGlja2V0IENvbXBvc2UuCiAgICAgICAgbXkgJFRpY2tldENvbXBvc2VDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6VGlja2V0Q29tcG9zZScpOwoKICAgICAgICAkUGFyYW17VXBkYXRlQXJ0aWNsZVN1YmplY3R9ID0gJFRpY2tldENvbXBvc2VDb25maWctPntVcGRhdGVBcnRpY2xlU3ViamVjdH0gfHwgMDsKICAgICAgICBpZiAoICRQYXJhbXtVcGRhdGVBcnRpY2xlU3ViamVjdH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVXBkYXRlQXJ0aWNsZVN1YmplY3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU2VuZCBkYXRhIHRvIEpTLgogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldENvbXBvc2UuVXBkYXRlQXJ0aWNsZVN1YmplY3QnLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17VXBkYXRlQXJ0aWNsZVN1YmplY3R9LAogICAgICAgICk7CgogICAgICAgIG15ICRTaG93T3JCbG9jazsKCiAgICAgICAgIyBTaG93ICJJbnNlcnQgVGV4dCIgYnV0dG9uLgogICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntTaG93SW5zZXJ0VGV4dEJ1dHRvbn0gKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIGRlZmluZWQgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9CiAgICAgICAgICAgICAgICAmJiAkVGlja2V0Q29tcG9zZUNvbmZpZy0+e0luc2VydE1ldGhvZH0gZXEgJ0Z1bGwnCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luc2VydEZ1bGwnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0VGV4dCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTaG93T3JCbG9jayA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIEZBUSBhcnRpY2xlIGlzIHB1YmxpYy4KICAgICAgICBpZiAoICRGQVFEYXRhe1N0YXRlVHlwZUlEfSA9PSAkUHVibGljU3RhdGVUeXBlLT57U3RhdGVJRH0gKSB7CgogICAgICAgICAgICBteSAkSFRUUFR5cGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0h0dHBUeXBlJyk7CiAgICAgICAgICAgIG15ICRGUUROICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnRlFETicpOwogICAgICAgICAgICBteSAkQmFzZWxpbmsgPSAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9OwoKICAgICAgICAgICAgIyBSZXdyaXRlIGhhbmRsZS4KICAgICAgICAgICAgJEJhc2VsaW5rCiAgICAgICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSB9e3B1YmxpYy5wbD99Z3htczsKCiAgICAgICAgICAgICRGQVFEYXRhe1B1YmxpY2xpbmt9ID0gJEhUVFBUeXBlIC4gJzovLycgLiAkRlFETiAuICRCYXNlbGluawogICAgICAgICAgICAgICAgLiAiQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPSRGQVFEYXRhe0l0ZW1JRH0iOwoKICAgICAgICAgICAgI1NzaG93ICJJbnNlcnQgTGluayIgYnV0dG9uLgogICAgICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0luc2VydExpbmtCdXR0b259ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0TGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2hvd09yQmxvY2sgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNob3cgIkluc2VydCBUZXh0IGFuZCBMaW5rIiBidXR0b24uCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntTaG93SW5zZXJ0VGV4dEFuZExpbmtCdXR0b259ICkgewogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9CiAgICAgICAgICAgICAgICAgICAgJiYgJFRpY2tldENvbXBvc2VDb25maWctPntJbnNlcnRNZXRob2R9IGVxICdGdWxsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0RnVsbEFuZExpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5zZXJ0VGV4dEFuZExpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkU2hvd09yQmxvY2sgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ2FuY2VsQnV0dG9uQ2xhc3MgPSAnWm9vbVNtYWxsQnV0dG9uJzsKCiAgICAgICAgIyBTaG93IHRoZSAiT3IiIGJsb2NrIGJldHdlZW4gdGhlIGJ1dHRvbnMgYW5kIHRoZSBDYW5jZWwgJiBjbG9zZSB3aW5kb3cgbGFiZWwuCiAgICAgICAgaWYgKCRTaG93T3JCbG9jaykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ09yJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNldCB0aGUgJENhbmNlbEJ1dHRvbkNsYXNzIHRvICcnLgogICAgICAgICAgICAkQ2FuY2VsQnV0dG9uQ2xhc3MgPSAnJzsKICAgICAgICB9CgogICAgICAgICMgU2VuZCBkYXRhIHRvIEpTLgogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0FnZW50RkFRWm9vbVNtYWxsJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUVpvb21TbWFsbCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENhbmNlbEJ1dHRvbkNsYXNzID0+ICRDYW5jZWxCdXR0b25DbGFzcyB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFab29tJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBpZiAoICROYXYgJiYgJE5hdiBlcSAnTm9uZScgKSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIH0KCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9GQVFWb3RpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRkFRVm90aW5nJywKICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICApOwoKICAgICMgR2V0IFZvdGluZyByYXRlcyBzZXR0aW5nLgogICAgbXkgJFZvdGluZ1JhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgIGZvciBteSAkUmF0ZVZhbHVlICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskVm90aW5nUmF0ZXN9ICkgewoKICAgICAgICAjIENyZWF0ZSBkYXRhIHN0cnVjdHVyZSBmb3Igb3V0cHV0LgogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBWYWx1ZSA9PiAkUmF0ZVZhbHVlLAogICAgICAgICAgICBUaXRsZSA9PiAkVm90aW5nUmF0ZXMtPnskUmF0ZVZhbHVlfSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRVm90aW5nUmF0ZVJvdycsCiAgICAgICAgICAgIERhdGEgPT4geyVEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFFeHBsb3JlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICBteSAkU3RhcnRIaXQgICAgICAgID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgbXkgJFNlYXJjaExpbWl0ICAgICA9ICRDb25maWctPntTZWFyY2hMaW1pdH0gfHwgMjAwOwogICAgbXkgJFNlYXJjaFBhZ2VTaG93biA9ICRDb25maWctPntTZWFyY2hQYWdlU2hvd259IHx8IDM7CiAgICBteSAkU29ydEJ5ICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnRkFRSUQnOwogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXInICkKICAgICAgICB8fCAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgIyBjaGVjayBmb3Igbm9uIG51bWVyaWMgQ2F0ZWdvcnlJRAogICAgaWYgKCAkQ2F0ZWdvcnlJRCAhfiAvXGQrLyApIHsKICAgICAgICAkQ2F0ZWdvcnlJRCA9IDA7CiAgICB9CgogICAgIyBnZXQgY2F0ZWdvcnkgYnkgbmFtZQogICAgbXkgJENhdGVnb3J5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NhdGVnb3J5JyApIHx8ICcnOwoKICAgICMgdHJ5IHRvIGdldCB0aGUgQ2F0ZWdvcnkgSUQgZnJvbSBjYXRlZ29yeSBuYW1lIGlmIG5vIENhdGVnb3J5IElECiAgICBpZiAoICRDYXRlZ29yeSAmJiAhJENhdGVnb3J5SUQgKSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSB0cmVlCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXZlcnNlIHRoZSBoYXMgZm9yIGVhc3kgbG9va3VwCiAgICAgICAgbXkgJVJldmVyc2VDYXRlZ29yeVRyZWUgPSByZXZlcnNlICV7JENhdGVnb3J5VHJlZX07CgogICAgICAgICRDYXRlZ29yeUlEID0gJFJldmVyc2VDYXRlZ29yeVRyZWV7JENhdGVnb3J5fSB8fCAwOwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyB0cnkgdG8gZ2V0IHRoZSBjYXRlZ29yeSBkYXRhCiAgICBteSAlQ2F0ZWdvcnlEYXRhOwogICAgaWYgKCRDYXRlZ29yeUlEKSB7CgogICAgICAgICMgZ2V0IGNhdGVnb3J5IGRhdGEKICAgICAgICAlQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJUNhdGVnb3J5RGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdXNlciBwZXJtaXNzaW9uCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICBDYXRlZ29yeUlEICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzdG9yZSB0aGUgbGFzdCBzY3JlZW4gb3ZlcnZpZXcgaW4gc2Vzc2lvbgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgVmFsdWUgPT4gJycsCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKCiAgICAjIHNob3cgRkFRIHBhdGgKICAgICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgPT4gJEZBUU9iamVjdCwKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBhbGwgZGlyZWN0IHN1YmNhdGVnb3JpZXMgb2YgdGhlIHNlbGVjdGVkIGNhdGVnb3J5CiAgICBteSAkQ2F0ZWdvcnlJRHNSZWYgPSAkRkFRT2JqZWN0LT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgIFBhcmVudElEICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIE1vZGUgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBzdWJjYXRlZ29yaWVzIGxpc3QKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1N1YmNhdGVnb3JpZXMnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHQnLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgICMgZ2V0IGludGVyZmFjZSBzdGF0ZXMgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgdGhlcmUgYXJlIHN1YmNhdGVnb3JpZXMKICAgIGlmICggJENhdGVnb3J5SURzUmVmICYmIHJlZiAkQ2F0ZWdvcnlJRHNSZWYgZXEgJ0FSUkFZJyAmJiBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICMgc2hvdyBkYXRhIGZvciBlYWNoIHN1YmNhdGVnb3J5CiAgICAgICAgZm9yIG15ICRTdWJDYXRlZ29yeUlEICggQHskQ2F0ZWdvcnlJRHNSZWZ9ICkgewoKICAgICAgICAgICAgbXkgJVN1YkNhdGVnb3J5RGF0YSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIG51bWJlciBvZiBzdWJjYXRlZ29yaWVzIG9mIHRoaXMgc3ViY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtTdWJDYXRlZ29yeUNvdW50fSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5Q291bnQoCiAgICAgICAgICAgICAgICBQYXJlbnRJRHMgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIEZBUSBhcnRpY2xlcyBpbiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgICRTdWJDYXRlZ29yeURhdGF7QXJ0aWNsZUNvdW50fSA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgID0+IFskU3ViQ2F0ZWdvcnlJRF0sCiAgICAgICAgICAgICAgICBJdGVtU3RhdGVzICAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICAgICAgICAgIE9ubHlBcHByb3ZlZCA9PiAxLAogICAgICAgICAgICAgICAgVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHslU3ViQ2F0ZWdvcnlEYXRhfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2UgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9DYXRlZ29yeURhdGFGb3VuZE1zZycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2V4dGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNlYXJjaCBhbGwgRkFRIGFydGljbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgIG15IEBWaWV3YWJsZUl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJFNvcnRCeV0sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJE9yZGVyQnldLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICA9PiBbJENhdGVnb3J5SURdLAogICAgKTsKCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzCiAgICBteSAkU29ydENsYXNzOwoKICAgICMgdGhpcyBzZXRzIHRoZSBvcHBvc2l0ZSB0byB0aGUgT3JkZXJCeSBwYXJhbWV0ZXIKICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICB9CiAgICBlbHNpZiAoICRPcmRlckJ5IGVxICdVcCcgKSB7CiAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICB9CgogICAgIyBzZXQgdGhlIFNvcnRCeSBDbGFzcyB0byB0aGUgY29ycmVjdCBmaWVsZAogICAgbXkgJUNTU1NvcnQ7CiAgICBteSAkQ1NTU29ydEJ5ID0gJFNvcnRCeSAuICdTb3J0JzsKICAgICRDU1NTb3J0eyRDU1NTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICBteSAlTmV3T3JkZXIgPSAoCiAgICAgICAgRG93biA9PiAnVXAnLAogICAgICAgIFVwICAgPT4gJ0Rvd24nLAogICAgKTsKCiAgICAjIHNob3cgdGhlIEZBUSBhcnRpY2xlIGxpc3QKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUUl0ZW1MaXN0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnskT3JkZXJCeX0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIGlmIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgIGZvciBteSAkSXRlbUlEIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBidWlsZCBzZWFyY2ggcmVzdWx0CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTdGFydEhpdAogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRTZWFyY2hQYWdlU2hvd24gKyAkU3RhcnRIaXQgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJEZBUURhdGF7Q2xlYW5UaXRsZX0gPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgU2l6ZSAgPT4gJENvbmZpZy0+e1RpdGxlU2l6ZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRkFRRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRMaW5rID0gJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU29ydEJ5KSAuICc7JzsKICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkgLiAnOyc7CgogICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRTZWFyY2hQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRDb3VudGVyLAogICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD0kQ2F0ZWdvcnlJRCIsCiAgICAgICAgTGluayAgICAgID0+ICRMaW5rLAogICAgICAgIElEUHJlZml4ICA9PiAiQ3VzdG9tZXJGQVFFeHBsb3JlciIsCiAgICApOwoKICAgIGlmICggJFBhZ2VOYXZ7VG90YWxIaXRzfSA9fiBtLzxzcGFuXHNjbGFzcz0iUGFnaW5hdGlvbkxpbWl0Ij4oXGQuKik8XC9zcGFuPi9nICkgewogICAgICAgICRQYWdlTmF2e1RvdGFsSGl0c30gPSAkMTsKICAgIH0KCiAgICAjIHNob3cgZm9vdGVyIGZpbHRlciAtIHNob3cgb25seSBpZiBtb3JlIHRoZSBvbmUgcGFnZSBpcyBhdmFpbGFibGUKICAgIGlmICggZGVmaW5lZCAkUGFnZU5hdntUb3RhbEhpdHN9ICYmICggJFBhZ2VOYXZ7VG90YWxIaXRzfSA+ICRTZWFyY2hQYWdlU2hvd24gKSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUGFnaW5hdGlvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgUXVpY2tTZWFyY2gKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dRdWlja1NlYXJjaCgKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBDdXN0b21lclVzZXIgICAgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBsYXN0IGFkZGVkIGFuZCBsYXN0IHVwZGF0ZWQgYXJ0aWNsZXMKICAgIGZvciBteSAkVHlwZSAocXcoTGFzdENyZWF0ZSBMYXN0Q2hhbmdlKSkgewoKICAgICAgICBteSAkU2hvd09rID0gJExheW91dE9iamVjdC0+RkFRU2hvd0xhdGVzdE5ld3NCb3goCiAgICAgICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJFR5cGUsCiAgICAgICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBDdXN0b21lclVzZXIgICAgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdG9wIHRlbiBhcnRpY2xlcwogICAgbXkgJFNob3dPayA9ICRMYXlvdXRPYmplY3QtPkZBUVNob3dUb3AxMCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICBDdXN0b21lclVzZXIgICAgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRTaG93T2sgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUUV4cGxvcmVyJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICVDYXRlZ29yeURhdGEsCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFQcmludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgaWYgKCAhJEdldFBhcmFte0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIEl0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayB1c2VyIHBlcm1pc3Npb24KICAgIG15ICRQZXJtaXNzaW9uID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeUN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIENhdGVnb3J5SUQgICA9PiAkRkFRRGF0YXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBpbnRlcmZhY2Ugc3RhdGUgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpDdXN0b21lcjo6U3RhdGVUeXBlcycpLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2hvdyBubyBwZXJtaXNzaW9uIGVycm9yCiAgICBpZiAoCiAgICAgICAgISRQZXJtaXNzaW9uCiAgICAgICAgfHwgISRGQVFEYXRhe0FwcHJvdmVkfQogICAgICAgIHx8ICEkSW50ZXJmYWNlU3RhdGVzLT57ICRGQVFEYXRhe1N0YXRlVHlwZUlEfSB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgbGlua3MgdG8gZW1iZWRkZWQgaW1hZ2VzIGZvciBjdXN0b21lciBhbmQgcHVibGljIGludGVyZmFjZQogICAgICAgIGlmICggJEludGVyZmFjZS0+e05hbWV9IGVxICdleHRlcm5hbCcgKSB7CiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0KICAgICAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtjdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFab29tfWd4bXM7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBnZW5lcmF0ZSBQREYgb3V0cHV0CiAgICBteSAkUHJpbnRlZEJ5ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdwcmludGVkIGJ5Jyk7CiAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwogICAgbXkgJVBhZ2U7CgogICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICRQYWdle01heFBhZ2VzfSA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgaWYgKCAhJFBhZ2V7TWF4UGFnZXN9IHx8ICRQYWdle01heFBhZ2VzfSA8IDEgfHwgJFBhZ2V7TWF4UGFnZXN9ID4gMTAwMCApIHsKICAgICAgICAkUGFnZXtNYXhQYWdlc30gPSAxMDA7CiAgICB9CiAgICBteSAkSGVhZGVyUmlnaHQgID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKSAuICRGQVFEYXRhe051bWJlcn07CiAgICBteSAkSGVhZGxpbmVMZWZ0ID0gJEhlYWRlclJpZ2h0OwogICAgbXkgJFRpdGxlICAgICAgICA9ICRIZWFkZXJSaWdodDsKICAgIGlmICggJEZBUURhdGF7VGl0bGV9ICkgewogICAgICAgICRIZWFkbGluZUxlZnQgPSAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgJFRpdGxlIC49ICcgLyAnIC4gJEZBUURhdGF7VGl0bGV9OwogICAgfQoKICAgICRQYWdle01hcmdpblRvcH0gICAgID0gMzA7CiAgICAkUGFnZXtNYXJnaW5SaWdodH0gICA9IDQwOwogICAgJFBhZ2V7TWFyZ2luQm90dG9tfSAgPSA0MDsKICAgICRQYWdle01hcmdpbkxlZnR9ICAgID0gNDA7CiAgICAkUGFnZXtIZWFkZXJSaWdodH0gICA9ICRIZWFkZXJSaWdodDsKICAgICRQYWdle0hlYWRsaW5lUmlnaHR9ID0gJFByaW50ZWRCeSAuICcgJwogICAgICAgIC4gJFNlbGYtPntVc2VyRnVsbG5hbWV9IC4gJyAoJwogICAgICAgIC4gJFNlbGYtPntVc2VyRW1haWx9IC4gJykgJwogICAgICAgIC4gJFRpbWU7CiAgICAkUGFnZXtQYWdlVGV4dH0gID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAkUGFnZXtQYWdlQ291bnR9ID0gMTsKCiAgICAjIGNyZWF0ZSBuZXcgUERGIGRvY3VtZW50CiAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICBUaXRsZSAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0JykgLiAnOiAnIC4gJFRpdGxlLAogICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBmaXJzdCBQREYgcGFnZQogICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAlUGFnZSwKICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgKTsKICAgICRQYWdle1BhZ2VDb3VudH0rKzsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgRm9udFNpemUgPT4gMTMsCgogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCAicHJpbnRlZCBieSIKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCA9PiAkUHJpbnRlZEJ5IC4gJyAnCiAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRnVsbG5hbWV9IC4gJyAoJwogICAgICAgICAgICAuICRTZWxmLT57VXNlckVtYWlsfSAuICcpJwogICAgICAgICAgICAuICcsICcgLiAkVGltZSwKICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNCwKICAgICk7CgogICAgIyB0eXBlIG9mIHByaW50IHRhZwogICAgbXkgJFByaW50VGFnID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZSBQcmludCcpOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRQcmludFRhZywKICAgICAgICBIZWlnaHQgICA9PiA5LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkJywKICAgICAgICBBbGlnbiAgICA9PiAncmlnaHQnLAogICAgICAgIEZvbnRTaXplID0+IDksCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCBGQVEgaW5mb3JtYXRpb24KICAgICRTZWxmLT5fUERGT3V0cHV0RkFRSGVhZGVySW5mbygKICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgKTsKCiAgICBpZiAoICRGQVFEYXRhe0tleXdvcmRzfSApIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dEtleXdvcmRzKAogICAgICAgICAgICBQYWdlRGF0YSA9PiBcJVBhZ2UsCiAgICAgICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IEZBUSBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPl9QREZPdXRwdXRGQVFEeW5hbWljRmllbGRzKAogICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICApOwoKICAgICRTZWxmLT5fUERGT3VwdXRGQVFDb250ZW50KAogICAgICAgIFBhZ2VEYXRhICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IFwlRkFRRGF0YSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICk7CgogICAgIyBSZXR1cm4gdGhlIFBERiBkb2N1bWVudC4KICAgIG15ICRGaWxlbmFtZSA9ICdGQVFfJyAuICRGQVFEYXRhe051bWJlcn07CgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICBteSAkRGF0ZVRpbWUgICAgICAgPSAkRGF0ZVRpbWVPYmplY3QtPkdldCgpOwogICAgbXkgJFkgICAgICAgICAgICAgID0gJERhdGVUaW1lLT57WWVhcn07CiAgICBteSAkTSAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e01vbnRofSApOwogICAgbXkgJEQgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntEYXl9ICk7CiAgICBteSAkaCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0hvdXJ9ICk7CiAgICBteSAkbSAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e01pbnV0ZX0gKTsKCiAgICBteSAkUERGU3RyaW5nID0gJFBERk9iamVjdC0+RG9jdW1lbnRPdXRwdXQoKTsKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0ucGRmIiwKICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgKTsKfQoKc3ViIF9QREZPdXRwdXRGQVFIZWFkZXJJbmZvIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VEYXRhIEZBUURhdGEpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY3JlYXRlIGxlZnQgdGFibGUKICAgIG15ICRUYWJsZUxlZnQgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NhdGVnb3J5JykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfSApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7U3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZGVmYXVsdCBtdWx0aSBsYW5ndWFnZSBvcHRpb24KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIGxhbmd1YWdlIHJvdywgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICBteSAkUm93ID0gewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhbmd1YWdlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZBUURhdGF7TGFuZ3VhZ2V9ICksCiAgICAgICAgfTsKICAgICAgICBwdXNoIEB7JFRhYmxlTGVmdH0sICRSb3c7CiAgICB9CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0OwoKICAgICMgZ2V0IGRlZmF1bHQgdm90aW5nIG9wdGlvbgogICAgbXkgJFZvdGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICAjIHZvdGluZyByb3dzLCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJFRhYmxlUmlnaHQgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVm90ZXMnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdSZXN1bHQnKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9IC4gIiAlIiwKICAgICAgICAgICAgfSwKICAgICAgICBdOwogICAgfQoKICAgICMgbGFzdCB1cGRhdGUgcm93CiAgICBwdXNoIEB7JFRhYmxlUmlnaHR9LCB7CiAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IHVwZGF0ZScpIC4gJzonLAogICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICRGQVFEYXRhe0NoYW5nZWR9LAogICAgICAgICAgICAnRGF0ZUZvcm1hdCcsCiAgICAgICAgKSwKICAgIH07CgogICAgbXkgJFJvd3MgPSBAeyRUYWJsZUxlZnR9OwogICAgaWYgKCBAeyRUYWJsZVJpZ2h0fSA+ICRSb3dzICkgewogICAgICAgICRSb3dzID0gQHskVGFibGVSaWdodH07CiAgICB9CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBmb3IgbXkgJFJvdyAoIDEgLi4gJFJvd3MgKSB7CiAgICAgICAgJFJvdy0tOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e1ZhbHVlfTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17Q29udGVudH0gICAgICAgICA9ICcgJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMl17QmFja2dyb3VuZENvbG9yfSA9ICcjRkZGRkZGJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVs0XXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e1ZhbHVlfTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDE3MC41OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMl17V2lkdGh9ID0gNDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzNde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bNF17V2lkdGh9ID0gMTcwLjU7CgogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0S2V5d29yZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgIyBnZXQgUERGIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnS2V5d29yZHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0RkFRRHluYW1pY0ZpZWxkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIG15ICRPdXRwdXQgPSAwOwogICAgbXkgJUZBUSAgICA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3cgPSAwOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgY29uZmlnIGZvciBmcm9udGVuZCBtb2R1bGUKICAgIG15ICREeW5hbWljRmllbGRGaWx0ZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRUHJpbnQiKS0+e0R5bmFtaWNGaWVsZH07CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0CiAgICBteSAkRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydGQVEnXSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAkRHluYW1pY0ZpZWxkRmlsdGVyIHx8IHt9LAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2VuZXJhdGUgdGFibGUKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgc2tpcCBkeW5hbWljIGZpZWxkIGlmIGlzIG5vdCBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICAgICAgbXkgJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlOwoKICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJEZBUXtGQVFJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRWYWx1ZTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkVmFsdWUgZXEgIiI7CgogICAgICAgICMgZ2V0IHByaW50IHN0cmluZyBmb3IgdGhpcyBkeW5hbWljIGZpZWxkCiAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgKTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0KICAgICAgICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKQogICAgICAgICAgICAuICc6JzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgJFJvdysrOwogICAgICAgICRPdXRwdXQgPSAxOwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgb3V0cHV0IEZBUSBkeW5hbWljIGZpZWxkcwogICAgaWYgKCRPdXRwdXQpIHsKCiAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRkFRIER5bmFtaWMgRmllbGRzJyksCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91cHV0RkFRQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGQVFEYXRhID0gJXsgJFBhcmFte0ZBUURhdGF9IH07CiAgICBteSAlUGFnZSAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCB0aGUgY29uZmlnIG9mIEZBUSBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgIG15ICVGaWVsZHM7CiAgICBOVU1CRVI6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEZBUSBmaWVsZAogICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgTlVNQkVSIGlmICEkQ29uZmlnLT57U2hvd307CgogICAgICAgICMgc3RvcmUgb25seSB0aGUgY29uZmlnIG9mIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgICRGaWVsZHN7ICJGaWVsZCIgLiAkTnVtYmVyIH0gPSAkQ29uZmlnOwogICAgfQoKICAgIG15ICRGQVFPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CiAgICBteSAkUERGT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBzb3J0IHNob3duIGZpZWxkcyBieSBwcmlvcml0eQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCB7ICRGaWVsZHN7JGF9LT57UHJpb30gPD0+ICRGaWVsZHN7JGJ9LT57UHJpb30gfSBrZXlzICVGaWVsZHMgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlIGRhdGEgb2YgdGhpcyBmaWVsZAogICAgICAgIG15ICRTdGF0ZVR5cGVEYXRhID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBmaWVsZHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIGdpdmVuIGludGVyZmFjZQogICAgICAgIG5leHQgRklFTEQgaWYgISRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LT57ICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gfTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgY29udmVydCBIVE1MIHRvIEFTQ0lJCiAgICAgICAgbXkgJEFzY2lpRmllbGQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0FzY2lpKCBTdHJpbmcgPT4gJEZBUURhdGF7JEZpZWxkfSApOwoKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkQXNjaWlGaWVsZCB8fCAnJzsKICAgICAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGZpZWxkIG5hbWUgYW5kIHN0YXRlCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfSApCiAgICAgICAgICAgIC4gJyAoJwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFN0YXRlVHlwZURhdGEtPntOYW1lfSApCiAgICAgICAgICAgIC4gJyknOwoKICAgICAgICAjIG91dHB1dCBoZWFkbGluZQogICAgICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgICAgIFRleHQgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICAgICApOwoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTQsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWJsZSBwYXJhbXMKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUKICAgICAgICBQQUdFOgogICAgICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRKU09OID0gJyc7CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRTdWJqZWN0ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1YmplY3QnICk7CiAgICBteSAkQm9keSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdCb2R5JyApOwoKICAgIG15IEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3Q7CiAgICBteSAkUmVsYXRlZEZBUUFydGljbGVGb3VuZE5vdGhpbmc7CgogICAgbXkgJENvbmZpZyAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGlmICggJFN1YmplY3QgfHwgJEJvZHkgKSB7CgogICAgICAgICMgR2V0IHRoZSBsYW5ndWFnZSBmcm9tIHRoZSB1c2VyIGFuZCBhZGQgdGhlIGRlZmF1bHQgbGFuZ3VhZ2VzIGZyb20gdGhlIGNvbmZpZy4KICAgICAgICBteSAkUmVsYXRlZEFydGljbGVMYW5ndWFnZXMgPSAkQ29uZmlnLT57J0RlZmF1bHRMYW5ndWFnZXMnfSB8fCBbXTsKCiAgICAgICAgIyBDaGVjayBpZiB0aGUgdXNlciBsYW5ndWFnZSBhbHJlYWR5IGV4aXN0cy4KICAgICAgICBteSAlTG9va3VwUmVsYXRlZEZBUUFydGljbGVzTGFuZ3VhZ2UgPSBtYXAgeyAkXyA9PiAxIH0gQHskUmVsYXRlZEFydGljbGVMYW5ndWFnZXN9OwogICAgICAgIGlmICggISRMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXNMYW5ndWFnZXsgJExheW91dE9iamVjdC0+e1VzZXJMYW5ndWFnZX0gfSApIHsKICAgICAgICAgICAgcHVzaCBAeyRSZWxhdGVkQXJ0aWNsZUxhbmd1YWdlc30sICRMYXlvdXRPYmplY3QtPntVc2VyTGFuZ3VhZ2V9OwogICAgICAgIH0KCiAgICAgICAgQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+UmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QoCiAgICAgICAgICAgIFN1YmplY3QgICA9PiAkU3ViamVjdCwKICAgICAgICAgICAgQm9keSAgICAgID0+ICRCb2R5LAogICAgICAgICAgICBMYW5ndWFnZXMgPT4gJFJlbGF0ZWRBcnRpY2xlTGFuZ3VhZ2VzLAogICAgICAgICAgICBMaW1pdCAgICAgPT4gJENvbmZpZy0+e1Nob3dMaW1pdH0gfHwgMTAsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCApIHsKICAgICAgICAgICAgJFJlbGF0ZWRGQVFBcnRpY2xlRm91bmROb3RoaW5nID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBHZW5lcmF0ZSB0aGUgaHRtbCBmb3IgdGhlIHdpZGdldC4KICAgIG15ICRDdXN0b21lclJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgUmVsYXRlZEZBUUFydGljbGVMaXN0ICAgICAgICAgPT4gXEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QsCiAgICAgICAgICAgIFJlbGF0ZWRGQVFBcnRpY2xlRm91bmROb3RoaW5nID0+ICRSZWxhdGVkRkFRQXJ0aWNsZUZvdW5kTm90aGluZywKICAgICAgICAgICAgVm90ZVN0YXJzVmlzaWJsZSAgICAgICAgICAgICAgPT4gJENvbmZpZy0+e1ZvdGVTdGFyc1Zpc2libGV9LAogICAgICAgIH0sCiAgICApOwoKICAgICRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ3VzdG9tZXJSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nID0+ICRDdXN0b21lclJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBlbXB0eSBKU09OIG91dHB1dCBpZiBKU09OIGlzIGVtcHR5CiAgICBpZiAoICEkSlNPTiApIHsKICAgICAgICAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlbmQgSlNPTiByZXNwb25zZQogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJER5bmFtaWNGaWVsZEZpbHRlciA9ICRTZWxmLT57Q29uZmlnfS0+e0R5bmFtaWNGaWVsZH07CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBGQVEgb2JqZWN0CiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICBGaWVsZEZpbHRlciA9PiAkRHluYW1pY0ZpZWxkRmlsdGVyIHx8IHt9LAogICAgKTsKCiAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICBteSBAQ3VzdG9tZXJEeW5hbWljRmllbGRzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJywKICAgICAgICApOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGU7CgogICAgICAgIHB1c2ggQEN1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgIH0KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9IFxAQ3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIGZyb20gY29uc3RydWN0b3IKICAgIG15ICRDb25maWcgPSAkU2VsZi0+e0NvbmZpZ307CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICBteSAkU3RhcnRIaXQgICAgICAgID0gaW50KCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMSApOwogICAgbXkgJFNlYXJjaExpbWl0ICAgICA9ICRDb25maWctPntTZWFyY2hMaW1pdH0gfHwgMjAwOwogICAgbXkgJFNlYXJjaFBhZ2VTaG93biA9ICRDb25maWctPntTZWFyY2hQYWdlU2hvd259IHx8IDQwOwogICAgbXkgJFNvcnRCeSAgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgIG15ICRQcm9maWxlICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQcm9maWxlJyApICAgICAgICB8fCAnJzsKICAgIG15ICRTYXZlUHJvZmlsZSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTYXZlUHJvZmlsZScgKSAgICB8fCAnJzsKICAgIG15ICRUYWtlTGFzdFNlYXJjaCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKSB8fCAnJzsKICAgIG15ICRFcmFzZVRlbXBsYXRlICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFcmFzZVRlbXBsYXRlJyApICB8fCAnJzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2VhcmNoIHdpdGggYSBzYXZlZCB0ZW1wbGF0ZQogICAgaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VhcmNoVGVtcGxhdGUnICkgJiYgJFByb2ZpbGUgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPSRQcm9maWxlIiwKICAgICAgICApOwogICAgfQoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBGQVEgbnVtYmVyCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlci54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBidWlsZCBvdXRwdXQgZm9yIG9wZW4gc2VhcmNoIGRlc2NyaXB0aW9uIGJ5IGZ1bGwtdGV4dAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ09wZW5TZWFyY2hEZXNjcmlwdGlvbkZ1bGx0ZXh0JyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbFRleHQnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgcmVtZW1iZXIgZXhjbHVkZSBhdHRyaWJ1dGVzCiAgICBteSBARXhjbHVkZXMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnRXhjbHVkZScgKTsKCiAgICAjIGdldCBzaW5nbGUgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkU2VhcmNoUHJvZmlsZU9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgIyBsb2FkIHByb2ZpbGVzIHN0cmluZyBwYXJhbXMgKHByZXNzIGxvYWQgcHJvZmlsZSkKICAgIGlmICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRQcm9maWxlJyAmJiAkUHJvZmlsZSApIHx8ICRUYWtlTGFzdFNlYXJjaCApIHsKICAgICAgICAlR2V0UGFyYW0gPSAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUdldCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUHJvZmlsZSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgIGVsc2UgewogICAgICAgIGZvciBteSAkUGFyYW1OYW1lICgKICAgICAgICAgICAgcXcoTnVtYmVyIFRpdGxlIEtleXdvcmQgRnVsbHRleHQgUmVzdWx0Rm9ybSBUaW1lU2VhcmNoVHlwZSBWb3RlU2VhcmNoIFZvdGVTZWFyY2hUeXBlCiAgICAgICAgICAgIFZvdGVTZWFyY2hPcHRpb24gUmF0ZVNlYXJjaCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoT3B0aW9uCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgSXRlbUNyZWF0ZVRpbWVQb2ludAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydCBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcgogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lU3RvcFllYXIKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICAgICAjIHJlbW92ZSB3aGl0ZXNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPX4gc3sgXHMrIFx6IH17fXhtczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgcGFyYW1zCiAgICAgICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KENhdGVnb3J5SURzIExhbmd1YWdlSURzICkpIHsKCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBhcnJheSBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CiAgICAgICAgICAgIGlmIChAQXJyYXkpIHsKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9IFxAQXJyYXk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IER5bmFtaWMgZmllbGRzIGZvcm0gcGFyYW0gb2JqZWN0CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSB3ZWIgcmVxdWVzdAogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFJldHVyblByb2ZpbGVTdHJ1Y3R1cmUgPT4gMSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGUgdmFsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBzZWFyY2gKICAgICAgICAgICAgICAgICMgcHJvZmlsZQogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkVmFsdWUpICkgewogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSA9ICggJUdldFBhcmFtLCAleyREeW5hbWljRmllbGRWYWx1ZX0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGl0ZW0gbmVlZCB0byBnZXQgZXhjbHVkZWQKICAgIGZvciBteSAkRXhjbHVkZSAoQEV4Y2x1ZGVzKSB7CiAgICAgICAgaWYgKCAkR2V0UGFyYW17JEV4Y2x1ZGV9ICkgewogICAgICAgICAgICBkZWxldGUgJEdldFBhcmFteyRFeGNsdWRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdm90ZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSBlcSAnVm90ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCByYXRlIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICRHZXRQYXJhbXsnUmF0ZVNlYXJjaE9wdGlvbjo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259IGVxICdSYXRlUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnUmF0ZVNlYXJjaE9wdGlvbjo6UmF0ZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgZ2V0IHRpbWUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBzZXQgcmVzdWx0IGZvcm0gRU5WCiAgICBpZiAoICEkR2V0UGFyYW17UmVzdWx0Rm9ybX0gKSB7CiAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19ID0gJyc7CiAgICB9CiAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewogICAgICAgICRTZWFyY2hQYWdlU2hvd24gPSAkU2VhcmNoTGltaXQ7CiAgICB9CgogICAgIyBjaGVjayByZXF1ZXN0CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoT3BlblNlYXJjaERlc2NyaXB0aW9uJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb24ueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBkZWZhdWx0IG11bHRpIGxhbmd1YWdlIG9wdGlvbgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgc2hvdyByZXN1bHQgcGFnZQogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlYXJjaCcgJiYgISRFcmFzZVRlbXBsYXRlICkgewoKICAgICAgICAjIGZpbGwgdXAgcHJvZmlsZSBuYW1lIChlLmcuIHdpdGggbGFzdC1zZWFyY2gpCiAgICAgICAgaWYgKCAhJFByb2ZpbGUgfHwgISRTYXZlUHJvZmlsZSApIHsKICAgICAgICAgICAgJFByb2ZpbGUgPSAnbGFzdC1zZWFyY2gnOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7UHJvZmlsZT0kUHJvZmlsZSIKICAgICAgICAgICAgLiAiO1NvcnRCeT0kU29ydEJ5O09yZGVyQnk9JE9yZGVyQnk7VGFrZUxhc3RTZWFyY2g9MSIKICAgICAgICAgICAgLiAiO1N0YXJ0SGl0PSRTdGFydEhpdCI7CgogICAgICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgICAgICMgc3RvcmUgbGFzdCBzY3JlZW4KICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CgogICAgICAgICMgc2F2ZSBzZWFyY2ggcHJvZmlsZSAodW5kZXIgbGFzdC1zZWFyY2ggb3IgcmVhbCBwcm9maWxlIG5hbWUpCiAgICAgICAgJFNhdmVQcm9maWxlID0gMTsKCiAgICAgICAgIyByZW1lbWJlciBsYXN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBpZiAoICRTYXZlUHJvZmlsZSAmJiAkUHJvZmlsZSApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1zCiAgICAgICAgICAgIGZvciBteSAkUGFyYW1OYW1lICggc29ydCBrZXlzICVHZXRQYXJhbSApIHsKICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJFBhcmFtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRHZXRQYXJhbXskUGFyYW1OYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciBGQVEgc2VhcmNoCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaERpc3BsYXk7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgICAgIFJldHVyblByb2ZpbGVTdHJ1Y3R1cmUgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgdGhlIGNvbXBsZXRlIHZhbHVlIHN0cnVjdHVyZSBpbiAlRHluYW1pY0ZpZWxkVmFsdWVzIHRvIGRpc2NhcmQgdGhvc2Ugd2hlcmUgdGhlCiAgICAgICAgICAgICAgICAjIHZhbHVlIHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIGdldAogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkVmFsdWUpOwoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwoKICAgICAgICAgICAgICAgICAgICAjIHNldCB2YWx1ZSB0byBkaXNwbGF5CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaERpc3BsYXl7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gJFNlYXJjaFBhcmFtZXRlci0+e0Rpc3BsYXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgZnVsbC10ZXh0IHNlYXJjaAogICAgICAgIGlmICggJEdldFBhcmFte0Z1bGx0ZXh0fSApIHsKICAgICAgICAgICAgJEdldFBhcmFte0NvbnRlbnRTZWFyY2h9ID0gJ09SJzsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ICAgICAgICAgID0gJEdldFBhcmFte0Z1bGx0ZXh0fTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSB2b3RlcyBzZWFyY2gKICAgICAgICBpZiAoIElzTnVtYmVyKCAkR2V0UGFyYW17Vm90ZVNlYXJjaH0gKSAmJiAkR2V0UGFyYW17Vm90ZVNlYXJjaE9wdGlvbn0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtWb3Rlc30gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17Vm90ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtWb3RlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHJhdGUgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1JhdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17UmF0ZX0gPSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ID0+ICRHZXRQYXJhbXtSYXRlU2VhcmNofQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJVRpbWVNYXAgPSAoCiAgICAgICAgICAgIEl0ZW1DcmVhdGUgPT4gJ1RpbWUnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCBzb3J0IGtleXMgJVRpbWVNYXAgKSB7CgogICAgICAgICAgICAjIGdldCBjcmVhdGUgdGltZSBzZXR0aW5ncwogICAgICAgICAgICBpZiAoICEkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgd2l0aCB0aW1lIHN0dWZmCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVNsb3QnICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KE1vbnRoIERheSkpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnQnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9CiAgICAgICAgICAgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcCcgLiAkS2V5IH0gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydFllYXInIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdGFydERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMDA6MDA6MDAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJEYXRlJyB9ID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3BNb250aCcgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wRGF5JyB9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAyMzo1OTo1OSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lTWFweyRUaW1lVHlwZX0gLiAnU2VhcmNoVHlwZScgfSBlcSAnVGltZVBvaW50JyApIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21pbnV0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnaG91cicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdkYXknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwICogMjQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd3ZWVrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogNzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ21vbnRoJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICd5ZWFyJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0ICogMzY1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdCZWZvcmUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtb3JlIHRoYW4gLi4uIGFnbwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0gZXEgJ05leHQnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB3aXRoaW4gbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9IC0kVGltZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIGxhc3QgLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lTmV3ZXJNaW51dGVzJyB9ID0gJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIEdldCBVc2VyQ2F0ZWdvcnlHcm91cCBIYXNoLgogICAgICAgICMgVGhpcyByZXR1cm5zIGEgSGFzaCBvZiB0aGUgZm9sbG93aW5nIHNhbXBsZSBkYXRhIHN0cnVjdHVyZToKICAgICAgICAjCiAgICAgICAgIyAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAgPSB7CiAgICAgICAgIyAgICcxJyA9PiB7CiAgICAgICAgIyAgICAgICAgICAnMycgPT4gJ01pc2NTdWInCiAgICAgICAgIyAgICAgICAgfSwKICAgICAgICAjICAgJzMnID0+IHt9LAogICAgICAgICMgICAnMCcgPT4gewogICAgICAgICMgICAgICAgICAgICAnMScgPT4gJ01pc2MnLAogICAgICAgICMgICAgICAgICAgICAnMicgPT4gJ3NlY3JldCcKICAgICAgICAjICAgICAgICAgIH0sCiAgICAgICAgIyAgICcyJyA9PiB7fQogICAgICAgICMgfTsKICAgICAgICAjCiAgICAgICAgIyBLZXlzIG9mIHRoZSBvdXRlciBoYXNoIGluZm9ybSBhYm91dCBzdWJjYXRlZ29yaWVzLgogICAgICAgICMgICAwIFNob3dzIHRvcCBsZXZlbCBDYXRlZ29yeUlEcy4KICAgICAgICAjICAgMSBTaG93cyB0aGUgU3ViY2F0ZWdvcnlJRHMgb2YgQ2F0ZWdvcnkgMS4KICAgICAgICAjICAgMiBhbmQgMyBhcmUgZW1wdHkgaGFzaGVzIGJlY2F1c2UgdGhlc2UgY2F0ZWdvcmllcyBkb24ndCBoYXZlIHN1YmNhdGVnb3JpZXMuCiAgICAgICAgIwogICAgICAgICMgS2V5cyBvZiB0aGUgaW5uZXIgaGFzaGVzIGFyZSBDYXRlZ29yeUlEcyBhIHVzZXIgaXMgYWxsb3dlZCB0byBoYXZlIHJvIGFjY2VzcyB0by4KICAgICAgICAjIFZhbHVlcyBhcmUgdGhlIENhdGVnb3J5IG5hbWVzLgoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAgPSAkRkFRT2JqZWN0LT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAncm8nLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgRmluZCBDYXRlZ29yeUlEcyB0aGUgY3VycmVudCBVc2VyIGlzIGFsbG93ZWQgdG8gdmlldy4KICAgICAgICBteSAlQWxsb3dlZENhdGVnb3J5SURzID0gKCk7CgogICAgICAgIGlmICggJEN1c3RvbWVyVXNlckNhdEdyb3VwICYmIHJlZiAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAgZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgIyBTbyBub3cgd2UgaGF2ZSB0byBleHRyYWN0IGFsbCBDYXRlZ29yeSBJRCdzIG9mIHRoZSAiaW5uZXIgaGFzaGVzIgogICAgICAgICAgICAjICAgLT4gTG9vcCB0aHJvdWdoIHRoZSBvdXRlciBjYXRlZ29yeSBJRCdzLgogICAgICAgICAgICBmb3IgbXkgJExldmVsICggc29ydCBrZXlzICV7JEN1c3RvbWVyVXNlckNhdEdyb3VwfSApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZSBWYWx1ZSBvZiB0aGUgY3VycmVudCBoYXNoIGtleSBpcyBhIGhhc2ggcmVmLgogICAgICAgICAgICAgICAgaWYgKCAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9ICYmIHJlZiAkQ3VzdG9tZXJVc2VyQ2F0R3JvdXAtPnskTGV2ZWx9IGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBNYXAgdGhlIGtleXMgb2YgdGhlIGlubmVyIGhhc2ggdG8gYSBUZW1wSURzIGhhc2guCiAgICAgICAgICAgICAgICAgICAgIyBPcmlnaW5hbCBEYXRhIHN0cnVjdHVyZToKICAgICAgICAgICAgICAgICAgICAjICAgewogICAgICAgICAgICAgICAgICAgICMgICAgICAgJzEnID0+ICdNaXNjJywKICAgICAgICAgICAgICAgICAgICAjICAgICAgICcyJyA9PiAnc2VjcmV0JwogICAgICAgICAgICAgICAgICAgICMgICB9CiAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICMgICBhZnRlciBtYXBwaW5nOgogICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAjICAgewogICAgICAgICAgICAgICAgICAgICMgICAgICAgJzEnID0+IDEsCiAgICAgICAgICAgICAgICAgICAgIyAgICAgICAnMicgPT4gMScKICAgICAgICAgICAgICAgICAgICAjICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAlVGVtcElEcyA9IG1hcCB7ICRfID0+IDEgfSBrZXlzICV7ICRDdXN0b21lclVzZXJDYXRHcm91cC0+eyRMZXZlbH0gfTsKCiAgICAgICAgICAgICAgICAgICAgIyBQdXQgdGhlIFRlbXBJRHMgb3ZlciB0aGUgZm9ybWFsbHkgZm91bmQgQWxsb3dlZENhdGVnb3J5cyB0byBwcm9kdWNlIGEgaGFzaAogICAgICAgICAgICAgICAgICAgICMgICB0aGF0IGhvbGRzIGFsbCBDYXRlZ29yeUlEIGFzIGtleXMgYW5kIHRoZSBudW1iZXIgMSBhcyB2YWx1ZXMuCiAgICAgICAgICAgICAgICAgICAgJUFsbG93ZWRDYXRlZ29yeUlEcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJUFsbG93ZWRDYXRlZ29yeUlEcywKICAgICAgICAgICAgICAgICAgICAgICAgJVRlbXBJRHMKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEZvciB0aGUgZGF0YWJhc2UgcXVlcnkgaXQncyBuZWNlc3NhcnkgdG8gaGF2ZSBhbiBhcnJheSBvZiBDYXRlZ29yeUlEcy4KICAgICAgICBteSBAQ2F0ZWdvcnlJRHMgPSAoKTsKCiAgICAgICAgaWYgKCVBbGxvd2VkQ2F0ZWdvcnlJRHMpIHsKICAgICAgICAgICAgQENhdGVnb3J5SURzID0gc29ydCBrZXlzICVBbGxvd2VkQ2F0ZWdvcnlJRHM7CiAgICAgICAgfQoKICAgICAgICAjIENhdGVnb3JpZXMgZ290IGZyb20gdGhlIHdlYiByZXF1ZXN0IGNvdWxkIGluY2x1ZGUgYSBub3QgYWxsb3dlZCBjYXRlZ29yeSBpZiB0aGUgdXNlcgogICAgICAgICMgICAgdGVtcGVyIHdpdGggdGhlIGNhdGVnb3JpZXMgZHJvcC1ib3gsIGEgY2hlY2sgaXMgbmVlZGVkLgogICAgICAgICMKICAgICAgICAjICJNYXAiIGNvcHkgZnJvbSBvbmUgYXJyYXkgdG8gYW5vdGhlciwgd2hpbGUgImdyZXAiIHdpbGwgb25seSBsZXQgcGFzcyB0aGUgY2F0ZWdvcmllcwogICAgICAgICMgICAgdGhhdCBhcmUgZGVmaW5lZCBpbiB0aGUgJUFsbG93ZWRDYXRlZ29yeUlEcyBoYXNoLgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17Q2F0ZWdvcnlJRHN9ICkgKSB7CiAgICAgICAgICAgIEB7ICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gfSA9IG1hcCB7JF99IGdyZXAgeyAkQWxsb3dlZENhdGVnb3J5SURzeyRffSB9IEB7ICRHZXRQYXJhbXtDYXRlZ29yeUlEc30gfTsKICAgICAgICB9CgogICAgICAgICMgSnVzdCBzZWFyY2ggaWYgd2UgZG8gaGF2ZSBjYXRlZ29yaWVzLCB3ZSBoYXZlIGFjY2VzcyB0by4KICAgICAgICAjIElmIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGFueSBjYXRlZ29yeSwgYSBzZWFyY2ggd2l0aCBubyBDYXRlZ29yeUlEcwogICAgICAgICMgICB3b3VsZCByZXN1bHQgaW4gZmluZGluZyBhbGwgY2F0ZWdvcmllcy4KICAgICAgICAjCiAgICAgICAgIyBJdCBpcyBub3QgcG9zc2libGUgdG8gY3JlYXRlIEZBUSdzIHdpdGhvdXQgY2F0ZWdvcmllcwogICAgICAgICMgICBzbyBhdCBsZWFzdCBvbmUgY2F0ZWdvcnkgaGFzIHRvIGJlIHByZXNlbnQKCiAgICAgICAgbXkgQFZpZXdhYmxlSXRlbUlEcyA9ICgpOwoKICAgICAgICBpZiAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgICAgICAgICBAVmlld2FibGVJdGVtSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICA9PiBbJFNvcnRCeV0sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgID0+IFskT3JkZXJCeV0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgICAgICAgICAgQ29udGVudFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgICAgIENhdGVnb3J5SURzICAgICAgICAgPT4gXEBDYXRlZ29yeUlEcywKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAgICAgIyBDU1Ygb3V0cHV0CiAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CiAgICAgICAgICAgIG15IEBUbXBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWSGVhZDsKICAgICAgICAgICAgbXkgQENTVkRhdGE7CgogICAgICAgICAgICAjIGdldCB0aGUgRkFRIGR5bmFtaWMgZmllbGRzIGZvciBDU1YgZGlzcGxheQogICAgICAgICAgICBteSAkQ1NWRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntTZWFyY2hDU1ZEeW5hbWljRmllbGR9IHx8IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZWR1Y2UgdGhlIGR5bmFtaWMgZmllbGRzIHRvIG9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgICAgICBteSBAQ1NWQ3VzdG9tZXJEeW5hbWljRmllbGRzOwogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZDdXN0b21lckR5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENTVkR5bmFtaWNGaWVsZCA9IFxAQ1NWQ3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBnZXQgaW5mbyBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgbXkgJUNTVkluZm8gPSAoJUZBUURhdGEpOwoKICAgICAgICAgICAgICAgICMgZm9ybWF0IHRoZSBjaGFuZ2UgdGltZQogICAgICAgICAgICAgICAgJENTVkluZm97Q2hhbmdlZH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0NoYW5nZWR9LAogICAgICAgICAgICAgICAgICAgICdEYXRlRm9ybWF0JywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBDU1YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoIEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CiAgICAgICAgICAgICAgICAgICAgQENTVkhlYWQgICAgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICBxdyhTdGF0ZSBDaGFuZ2VkKTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbmNsdWRlIHRoZSBzZWxlY3RlZCBkeW5hbWljIGZpZWxkcyBvbiBDVlMgcmVzdWx0cwogICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15IEBEYXRhOwogICAgICAgICAgICAgICAgZm9yIG15ICRIZWFkZXIgKEBUbXBDU1ZIZWFkKSB7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgaGVhZGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgZ2V0IHRoZSB2YWx1ZSBmcm9tIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAjIGJhY2tlbmQKICAgICAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgPX4gbXtcQSBEeW5hbWljRmllbGRfICggW2EtekEtWlxkXSsgKSBcen14bXMgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZCBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggb3V0IHRoZSAnRHluYW1pY0ZpZWxkXycgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJENTVkluZm97JEhlYWRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgRFlOQU1JQ0ZJRUxEIGxvb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSByZXRyaWV2ZSBkYXRhIGZyb20gRkFRIGl0ZW0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J051bWJlcid9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEhlYWRlciBlcSAnQ2F0ZWdvcnknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97J0NhdGVnb3J5TmFtZSd9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJENTVkluZm97JEhlYWRlcn07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ1NWIHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkICAgID0gcXcoRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAjIGluc2VydCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCBxdyhTdGF0ZSBDaGFuZ2VkKTsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgIHF3KFN0YXRlIENoYW5nZWQpOwoKICAgICAgICAgICAgICAgICMgaW5jbHVkZSB0aGUgc2VsZWN0ZWQgZHluYW1pYyBmaWVsZHMgb24gQ1ZTIHJlc3VsdHMKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJyc7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSBoZWFkZXJzCiAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSBGQVFOdW1iZXIgaGVhZGVyIHdpdGggdGhlIGN1cnJlbnQgRkFRSG9vayBmcm9tIGNvbmZpZwogICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyIGVxICdGQVFOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhc3NlbWJsZSBDU1YgZGF0YQogICAgICAgICAgICBteSAkQ1NWID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNTVicpLT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICBIZWFkICAgICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkU2VsZi0+e1VzZXJDU1ZTZXBhcmF0b3J9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBSZXR1cm4gQ1NWIHRvIGRvd25sb2FkLgogICAgICAgICAgICBteSAkQ1NWRmlsZSA9ICdGQVFfc2VhcmNoJzsKCiAgICAgICAgICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICAgICBteSAkRGF0ZVRpbWUgICAgICAgPSAkRGF0ZVRpbWVPYmplY3QtPkdldCgpOwogICAgICAgICAgICBteSAkWSAgICAgICAgICAgICAgPSAkRGF0ZVRpbWUtPntZZWFyfTsKICAgICAgICAgICAgbXkgJE0gICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntNb250aH0gKTsKICAgICAgICAgICAgbXkgJEQgICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntEYXl9ICk7CiAgICAgICAgICAgIG15ICRoICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57SG91cn0gKTsKICAgICAgICAgICAgbXkgJG0gICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntNaW51dGV9ICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRDU1ZGaWxlIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5jc3YiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJENTViwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKCiAgICAgICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICAgICBteSBAUERGRGF0YTsKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBjaGFuZ2UgZGF0ZSB0byBsb25nIGZvcm1hdAogICAgICAgICAgICAgICAgbXkgJENoYW5nZWQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICRGQVFEYXRhe0NoYW5nZWR9LAogICAgICAgICAgICAgICAgICAgICdEYXRlRm9ybWF0TG9uZycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIFBERiBSb3dzCiAgICAgICAgICAgICAgICBteSBAUERGUm93OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtOdW1iZXJ9OwogICAgICAgICAgICAgICAgcHVzaCBAUERGUm93LCAkRkFRRGF0YXtUaXRsZX07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0NhdGVnb3J5TmFtZX07CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgbGFuZ3VhZ2Ugcm93CiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe0xhbmd1YWdlfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICAkRkFRRGF0YXtTdGF0ZX07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICAkQ2hhbmdlZDsKICAgICAgICAgICAgICAgIHB1c2ggQFBERkRhdGEsIFxAUERGUm93OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFBERiBPdXRwdXQKICAgICAgICAgICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEnKSAuICcgJwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1NlYXJjaCcpOwogICAgICAgICAgICBteSAkUHJpbnRlZEJ5ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdwcmludGVkIGJ5Jyk7CiAgICAgICAgICAgIG15ICRQYWdlICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1BhZ2UnKTsKICAgICAgICAgICAgbXkgJFRpbWUgICAgICA9ICRMYXlvdXRPYmplY3QtPntUaW1lfTsKCiAgICAgICAgICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAgICAgICAgIG15ICRNYXhQYWdlcyA9ICRDb25maWdPYmplY3QtPkdldCgnUERGOjpNYXhQYWdlcycpOwogICAgICAgICAgICBpZiAoICEkTWF4UGFnZXMgfHwgJE1heFBhZ2VzIDwgMSB8fCAkTWF4UGFnZXMgPiAxMDAwICkgewogICAgICAgICAgICAgICAgJE1heFBhZ2VzID0gMTAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ2VsbERhdGE7CgogICAgICAgICAgICAjIG91dHB1dCAnTm8gUmVzdWx0JywgaWYgbm8gY29udGVudCB3YXMgZ2l2ZW4KICAgICAgICAgICAgaWYgKEBQREZEYXRhKSB7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGhlYWRlcgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMF0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMV0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnVGl0bGUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMV0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2F0ZWdvcnknKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bMl0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIHRoZSBjb3JyZWN0IGhlYWRlciBpbmRleAogICAgICAgICAgICAgICAgbXkgJE5leHRIZWFkZXJJbmRleCA9IDM7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhbmd1YWdlJyk7CiAgICAgICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgICAgICROZXh0SGVhZGVySW5kZXggICAgICAgICAgICAgICA9IDQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlskTmV4dEhlYWRlckluZGV4XS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyAkTmV4dEhlYWRlckluZGV4ICsgMSBdLT57Rm9udH0gPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgdGhlIGNvbnRlbnQgYXJyYXkKICAgICAgICAgICAgICAgIG15ICRDb3VudGVyUm93ID0gMTsKICAgICAgICAgICAgICAgIGZvciBteSAkUm93IChAUERGRGF0YSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDb3VudGVyQ29sdW1uID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbnRlbnQgKCBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlskQ291bnRlclJvd10tPlskQ291bnRlckNvbHVtbl0tPntDb250ZW50fSA9ICRDb250ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAkQ291bnRlckNvbHVtbisrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ291bnRlclJvdysrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyBSZXN1bHQhJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcGFnZSBwYXJhbXMKICAgICAgICAgICAgbXkgJVBhZ2VQYXJhbTsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtQYWdlT3JpZW50YXRpb259ID0gJ2xhbmRzY2FwZSc7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luVG9wfSAgICAgICA9IDMwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpblJpZ2h0fSAgICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Cb3R0b219ICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luTGVmdH0gICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte0hlYWRlclJpZ2h0fSAgICAgPSAkVGl0bGU7CgogICAgICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICAgICBteSAlVGFibGVQYXJhbTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9ICAgICAgICAgICAgPSAkQ2VsbERhdGE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgID0gNjsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSA9ICcjREREREREJzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgPSAxOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgID0gMzsKCiAgICAgICAgICAgICMgY3JlYXRlIG5ldyBQREYgZG9jdW1lbnQKICAgICAgICAgICAgJFBERk9iamVjdC0+RG9jdW1lbnROZXcoCiAgICAgICAgICAgICAgICBUaXRsZSAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0JykgLiAnOiAnIC4gJFRpdGxlLAogICAgICAgICAgICAgICAgRW5jb2RlID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0YXJ0IHRhYmxlIG91dHB1dAogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2VQYXJhbSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdlIC4gJyAxJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC02LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgdGl0bGUKICAgICAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgICAgIFRleHQgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIEZvbnRTaXplID0+IDEzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCAicHJpbnRlZCBieSIKICAgICAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgICAgIFRleHQgPT4gJFByaW50ZWRCeSAuICcgJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRnVsbG5hbWV9IC4gJyAoJwogICAgICAgICAgICAgICAgICAgIC4gJFNlbGYtPntVc2VyRW1haWx9IC4gJyknCiAgICAgICAgICAgICAgICAgICAgLiAnLCAnIC4gJFRpbWUsCiAgICAgICAgICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTE0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUEFHRToKICAgICAgICAgICAgZm9yICggMiAuLiAkTWF4UGFnZXMgKSB7CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIGFub3RoZXIgcGFnZQogICAgICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICAgICAgICAgJVBhZ2VQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnICcgLiAkXywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFJldHVybiB0aGUgUERGIGRvY3VtZW50LgogICAgICAgICAgICBteSAkRmlsZW5hbWUgPSAnRkFRX3NlYXJjaCc7CgogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJERhdGVUaW1lICAgICAgID0gJERhdGVUaW1lT2JqZWN0LT5HZXQoKTsKICAgICAgICAgICAgbXkgJFkgICAgICAgICAgICAgID0gJERhdGVUaW1lLT57WWVhcn07CiAgICAgICAgICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICAgICAgICAgIG15ICREICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57RGF5fSApOwogICAgICAgICAgICBteSAkaCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0hvdXJ9ICk7CiAgICAgICAgICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwoKICAgICAgICAgICAgbXkgJFBERlN0cmluZyA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIHJlc3VsdHMgdG8gc2hvdwogICAgICAgIGlmIChAVmlld2FibGVJdGVtSURzKSB7CgogICAgICAgICAgICBteSAkT3ZlcnZpZXdDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRT3ZlcnZpZXciKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSB0aWNrZXQgZHluYW1pYyBmaWVsZHMgZm9yIG92ZXJ2aWV3IGRpc3BsYXkKICAgICAgICAgICAgbXkgJE92ZXJ2aWV3RHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRPdmVydmlld0NvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICAgICAgICAgIG15IEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkczsKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JE92ZXJ2aWV3RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgICAgICAgICBwdXNoIEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBEeW5hbWljIGZpZWxkcyB0YWJsZSBoZWFkZXJzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRPdmVydmlld0R5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgICA9ICcnOwogICAgICAgICAgICAgICAgICAgIG15ICRPcmRlciA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRTb3J0QnkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNvcnRCeSBlcQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntPcmRlcn0gJiYgKCAkU2VsZi0+e09yZGVyfSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXIgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXIgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlciAgICAgICAgICAgID0+ICRPcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgc2VhcmNoIHJlc3VsdAogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTdGFydEhpdAogICAgICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VhcmNoUGFnZVNob3duICsgJFN0YXJ0SGl0ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkRkFRRGF0YXtDbGVhblRpdGxlfSA9ICRGQVFPYmplY3QtPkZBUUFydGljbGVUaXRsZUNsZWFuKAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgID0+ICRDb25maWctPntUaXRsZVNpemV9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGJsb2NrcyB0byB0ZW1wbGF0ZQogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIER5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskT3ZlcnZpZXdEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRGQVFEYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHNob3cgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBsb29rdXAgdGFibGUgZm9yIGF0dHJpYnV0ZSBzZXR0aW5ncwogICAgICAgIG15ICVBdHRyaWJ1dGVNYXAgPSAoCiAgICAgICAgICAgIE51bWJlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaXRsZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBLZXl3b3JkID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnS2V5d29yZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRnVsbHRleHQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGltZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDcmVhdGUgVGltZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVm90ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdWb3RlcycsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUmF0ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdSYXRlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgcHJpbnQgZWFjaCBhdHRyaWJ1dGUgaW4gc2VhcmNoIHJlc3VsdHMgYXJlYS4KICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJUF0dHJpYnV0ZU1hcCApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgZGVmaW5lZCBieSB0aGUgdXNlcgogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskQXR0cmlidXRlfSApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGUgbmFtZSBhbmQgdHJhbnNsYXRlIGl0IGlmIGFwcGxpZXMKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVOYW1lID0gJEF0dHJpYnV0ZU1hcHskQXR0cmlidXRlfS0+e05hbWV9OwogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57VHJhbnNsYXRhYmxlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQXR0cmlidXRlTmFtZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZVZhbHVlOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHZhbHVlcyBpcyBhbiBhcnJheSB0byBwYXJzZSBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBDYXRlZ29yeSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgZXEgJ0NhdGVnb3J5SURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBsb25nIG5hbWUgZm9yIGFsbCBjdXN0b21lciBjYXRlZ29yaWVzCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDYXRlZ29yeUxpc3QgPSAkRkFRT2JqZWN0LT5HZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGNhdGVnb3J5IGlkIHRvIGNhdGVnb3J5IGxvbmcgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBteSBAQ2F0ZWdvcnlOYW1lczsKICAgICAgICAgICAgICAgICAgICAgICAgQ0FURUdPUllJRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDYXRlZG9yeUlEICggQHsgJEdldFBhcmFteyRBdHRyaWJ1dGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENBVEVHT1JZSUQgaWYgISRDYXRlZ29yeUxpc3QtPnskQ2F0ZWRvcnlJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDYXRlZ29yeU5hbWVzLCAkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIHN0cmluZyB3aXRoIGFsbCBzZWxlY3RlZCBjYXRlZ29yeSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSBqb2luKCAiICsgIiwgQENhdGVnb3J5TmFtZXMgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgTGFuZ3VhZ2VJRHMKICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0xhbmd1YWdlSURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBlYWNoIGxhbmd1YWdlIGlkIHRvIGxhbmd1YWdlIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQExhbmd1YWdlTmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIExBTkdVQUdFSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkTGFuZ3VhZ2VJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExhbmd1YWdlTmFtZSA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJExhbmd1YWdlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBMQU5HVUFHRUlEIGlmICEkTGFuZ3VhZ2VOYW1lOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBATGFuZ3VhZ2VOYW1lcywgJExhbmd1YWdlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCBhbGwgc2VsZWN0ZWQgbGFuZ3VhZ2UgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gam9pbiggIiArICIsIEBMYW5ndWFnZU5hbWVzICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGlzIGFuIHNjYWxhciBhbmQgY2FuIGJlIHNldCBkaXJlY3RseQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJEdldFBhcmFteyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlIGVxICdUaW1lU2VhcmNoVHlwZScgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFte1RpbWVTZWFyY2hUeXBlfSBlcSAnVGltZVNsb3QnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXJ0RGF0ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydFllYXJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRofQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnREYXl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJywgJ0RhdGVGb3JtYXRTaG9ydCcKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdG9wRGF0ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wWWVhcn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BNb250aH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3BEYXl9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJywgJ0RhdGVGb3JtYXRTaG9ydCcKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGUgICAgICA9IFRyYW5zbGF0YWJsZSgnQ3JlYXRlZCBiZXR3ZWVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRTdGFydERhdGUgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdhbmQnKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkU3RvcERhdGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hcHBpbmcgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGFzdCcgICA9PiBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgd2l0aGluIHRoZSBsYXN0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQmVmb3JlJyA9PiBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgbW9yZSB0aGFuIC4uLiBhZ28nKSwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGUgICAgICA9ICRNYXBwaW5nLT57ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IH07CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0gLiAnKHMpJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ1ZvdGVTZWFyY2hUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259OwogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSApIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFte1ZvdGVTZWFyY2h9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdSYXRlU2VhcmNoVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufTsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRHZXRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtSYXRlU2VhcmNofSAuICclJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hUZXJtcycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkQXR0cmlidXRlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgID0+ICRBdHRyaWJ1dGVWYWx1ZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQKICAgICAgICAgICAgICAgIGlmICEkRHluYW1pY0ZpZWxkU2VhcmNoRGlzcGxheXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFRlcm1zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkTGluayA9ICdQcm9maWxlPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRQcm9maWxlKSAuICc7JzsKICAgICAgICAkTGluayAuPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRTb3J0QnkpIC4gJzsnOwogICAgICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkgLiAnOyc7CiAgICAgICAgJExpbmsgLj0gJ1Rha2VMYXN0U2VhcmNoPTE7JzsKCiAgICAgICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgICAgICBteSAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgICAgIExpbWl0ICAgICA9PiAkU2VhcmNoTGltaXQsCiAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkU2VhcmNoUGFnZVNob3duLAogICAgICAgICAgICBBbGxIaXRzICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giLAogICAgICAgICAgICBMaW5rICAgICAgPT4gJExpbmssCiAgICAgICAgICAgIElEUHJlZml4ICA9PiAiQ3VzdG9tZXJGQVFTZWFyY2giLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBmb290ZXIgZmlsdGVyIC0gc2hvdyBvbmx5IGlmIG1vcmUgdGhlIG9uZSBwYWdlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICggZGVmaW5lZCAkUGFnZU5hdntUb3RhbEhpdHN9ICYmICggJFBhZ2VOYXZ7VG90YWxIaXRzfSA+ICRTZWFyY2hQYWdlU2hvd24gKSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IEhUTUwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICMgU2V0IHRoZSBTb3J0QnkgQ2xhc3MKICAgICAgICBteSAkU29ydENsYXNzOwoKICAgICAgICAjIHRoaXMgc2V0cyB0aGUgb3Bwb3NpdGUgdG8gdGhlIE9yZGVyQnkgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9yZGVyQnkgZXEgJ1VwJyApIHsKICAgICAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICAgICAgbXkgJUNTU1NvcnQ7CiAgICAgICAgbXkgJENTU1NvcnRCeSA9ICRTb3J0QnkgLiAnU29ydCc7CiAgICAgICAgJENTU1NvcnR7JENTU1NvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgICAgICBteSAlTmV3T3JkZXIgPSAoCiAgICAgICAgICAgIERvd24gPT4gVHJhbnNsYXRhYmxlKCdVcCcpLAogICAgICAgICAgICBVcCAgID0+IFRyYW5zbGF0YWJsZSgnRG93bicpLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaFJlc3VsdFNob3J0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICBPcmRlciAgID0+ICROZXdPcmRlcnskT3JkZXJCeX0sCiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQcm9maWxlLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgZW1wdHkgc2VhcmNoIHNpdGUKICAgIGVsc2UgewoKICAgICAgICAjIGRlbGV0ZSBwcm9maWxlCiAgICAgICAgaWYgKCAkRXJhc2VUZW1wbGF0ZSAmJiAkUHJvZmlsZSApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlRGVsZXRlKAogICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFByb2ZpbGUsCiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICAgICApOwogICAgICAgICAgICAlR2V0UGFyYW0gPSAoKTsKICAgICAgICAgICAgJFByb2ZpbGUgID0gJyc7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntEZWZhdWx0c30tPntEeW5hbWljRmllbGR9CiAgICAgICAgICAgICAgICAgICAgICAgIC0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlybWF0aW9uQ2hlY2tib3hlcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIHNlYXJjaCBtYXNrCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT5NYXNrRm9ybSgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBQcm9maWxlICAgICAgICAgID0+ICRQcm9maWxlLAogICAgICAgICAgICBBcmVhICAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gXCVEeW5hbWljRmllbGRIVE1MCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBNYXNrRm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRUcmVlVmlldyA9IDA7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6TGlzdFR5cGUnKSBlcSAndHJlZScgKSB7CiAgICAgICAgJFRyZWVWaWV3ID0gMTsKICAgIH0KCiAgICAjIHNldCBvdXRwdXQgZm9ybWF0cyBsaXN0CiAgICBteSAlUmVzdWx0Rm9ybSA9ICgKICAgICAgICBOb3JtYWwgPT4gVHJhbnNsYXRhYmxlKCdOb3JtYWwnKSwKICAgICAgICBQcmludCAgPT4gVHJhbnNsYXRhYmxlKCdQcmludCcpLAogICAgICAgIENTViAgICA9PiBUcmFuc2xhdGFibGUoJ0NTVicpLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdHMgbGlzdAogICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVSZXN1bHRGb3JtfSwKICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtSZXN1bHRGb3JtfSB8fCAnTm9ybWFsJywKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAlUHJvZmlsZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VhcmNoUHJvZmlsZScpLT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICBCYXNlICAgICAgPT4gJ0N1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgKTsKCiAgICAjIGJ1aWxkIHByb2ZpbGVzIG91dHB1dCBsaXN0CiAgICAkUGFyYW17UHJvZmlsZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVByb2ZpbGVzfSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1Byb2ZpbGUnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17UHJvZmlsZX0sCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCBsYW5ndWFnZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtMYW5ndWFnZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVMYW5ndWFnZXN9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhbmd1YWdlSURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRGQVFPYmplY3QtPkdldEN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICBDdXN0b21lclVzZXIgPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgIFR5cGUgICAgICAgICA9PiAncncnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgYnVpbGQgY2F0ZWdvcmllcyBvdXRwdXQgbGlzdAogICAgJFBhcmFte0NhdGVnb3JpZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gJENhdGVnb3JpZXMsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ2F0ZWdvcnlJRHMnLAogICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q2F0ZWdvcnlJRHN9LAogICAgICAgIFRyZWVWaWV3ICAgPT4gJFRyZWVWaWV3LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15ICVWb3RpbmdPcGVyYXRvcnMgPSAoCiAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdFcXVhbHMnKSwKICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0dyZWF0ZXIgdGhhbicpLAogICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFRyYW5zbGF0YWJsZSgnR3JlYXRlciB0aGFuIGVxdWFscycpLAogICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU21hbGxlciB0aGFuJyksCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gVHJhbnNsYXRhYmxlKCdTbWFsbGVyIHRoYW4gZXF1YWxzJyksCiAgICApOwoKICAgICRQYXJhbXtWb3RlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnVm90ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1ZvdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtSYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcJVZvdGluZ09wZXJhdG9ycywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaFR5cGUnLAogICAgICAgIFNpemUgICAgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte1JhdGVTZWFyY2hUeXBlfSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwogICAgJFBhcmFte1JhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIDAgICA9PiAnMCUnLAogICAgICAgICAgICAyNSAgPT4gJzI1JScsCiAgICAgICAgICAgIDUwICA9PiAnNTAlJywKICAgICAgICAgICAgNzUgID0+ICc3NSUnLAogICAgICAgICAgICAxMDAgPT4gJzEwMCUnLAogICAgICAgIH0sCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgIE5hbWUgICAgICAgID0+ICdSYXRlU2VhcmNoJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNofSB8fCAnJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE11bHRpcGxlICAgID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFsgMSAuLiA1OSBdLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBMYXN0ICAgPT4gVHJhbnNsYXRhYmxlKCd3aXRoaW4gdGhlIGxhc3QgLi4uJyksCiAgICAgICAgICAgIEJlZm9yZSA9PiBUcmFuc2xhdGFibGUoJ21vcmUgdGhhbiAuLi4gYWdvJyksCiAgICAgICAgfSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnR9IHx8ICdMYXN0JywKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgbWludXRlID0+IFRyYW5zbGF0YWJsZSgnbWludXRlKHMpJyksCiAgICAgICAgICAgIGhvdXIgICA9PiBUcmFuc2xhdGFibGUoJ2hvdXIocyknKSwKICAgICAgICAgICAgZGF5ICAgID0+IFRyYW5zbGF0YWJsZSgnZGF5KHMpJyksCiAgICAgICAgICAgIHdlZWsgICA9PiBUcmFuc2xhdGFibGUoJ3dlZWsocyknKSwKICAgICAgICAgICAgbW9udGggID0+IFRyYW5zbGF0YWJsZSgnbW9udGgocyknKSwKICAgICAgICAgICAgeWVhciAgID0+IFRyYW5zbGF0YWJsZSgneWVhcihzKScpLAogICAgICAgIH0sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBOYW1lICAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9LAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0fSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ICAgPT4gJ0l0ZW1DcmVhdGVUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgKTsKICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0b3B9ID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmVmaXggPT4gJ0l0ZW1DcmVhdGVUaW1lU3RvcCcsCiAgICAgICAgRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgKTsKCiAgICAjIEhUTUwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWFyY2gnLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgb3V0cHV0IER5bmFtaWMgZmllbGRzIGJsb2NrcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICMgc2tpcCBmaWVsZHMgdGhhdCBIVE1MIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQKICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAkUHJlZmVyZW5jZS0+e1R5cGV9IH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfQogICAgICAgICAgICAgICAgICAgICAgICAtPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9LT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICRQYXJhbXtEeW5hbWljRmllbGRIVE1MfQogICAgICAgICAgICAgICAgICAgICAgICAtPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9LT57RmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGVmYXVsdCBtdWx0aSBsYW5ndWFnZSBvcHRpb24KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIHNlbGVjdAogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgSFRNTCBzZWFyY2ggbWFzayBvdXRwdXQKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJGQVFab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICBpZiAoICFkZWZpbmVkICRTZWxmLT57RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSApIHsKICAgICAgICBteSAlVXNlclByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRVc2VyUHJlZmVyZW5jZXN7VXNlckN1c3RvbWVyRG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntEb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2V9ID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgICRHZXRQYXJhbXtJdGVtSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKTsKICAgICRHZXRQYXJhbXtSYXRlfSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JhdGUnICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHNhdmUsIGlmIGJyb3dzZXIgbGluayBtZXNzYWdlIHdhcyBjbG9zZWQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdCcm93c2VyTGlua01lc3NhZ2UnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJ1VzZXJDdXN0b21lckRvTm90U2hvd0Jyb3dzZXJMaW5rTWVzc2FnZScsCiAgICAgICAgICAgIFZhbHVlICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBJdGVtSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgbXkgQFZhbGlkSURzICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKTsKICAgIG15ICVWYWxpZElETG9va3VwID0gbWFwIHsgJF8gPT4gMSB9IEBWYWxpZElEczsKCiAgICAjIGNoZWNrIHVzZXIgcGVybWlzc2lvbgogICAgbXkgJFBlcm1pc3Npb24gPSAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgQ2F0ZWdvcnlJRCAgID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGludGVyZmFjZSBzdGF0ZSBsaXN0CiAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBwZXJtaXNzaW9uIGNoZWNrCiAgICBpZiAoCiAgICAgICAgISRQZXJtaXNzaW9uCiAgICAgICAgfHwgISRGQVFEYXRhe0FwcHJvdmVkfQogICAgICAgIHx8ICEkVmFsaWRJRExvb2t1cHsgJEZBUURhdGF7VmFsaWRJRH0gfQogICAgICAgIHx8ICEkSW50ZXJmYWNlU3RhdGVzLT57ICRGQVFEYXRhe1N0YXRlVHlwZUlEfSB9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5vUGVybWlzc2lvbiggV2l0aEhlYWRlciA9PiAneWVzJyApOwogICAgfQoKICAgICMgc3RvcmUgdGhlIGxhc3Qgc2NyZWVuIGluIHNlc3Npb24KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBIVE1MVmlldyBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBteSAkRmllbGQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiRmllbGQiICk7CgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyggSXRlbUlEIEZpZWxkICkpIHsKICAgICAgICAgICAgaWYgKCAhJE5lZWRlZCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWRlZCBQYXJhbTogJE5lZWRlZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIEZpZWxkIGNvbnRlbnQKICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJEZBUU9iamVjdC0+SXRlbUZpZWxkR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXdyaXRlIGhhbmRsZSBhbmQgYWN0aW9uCiAgICAgICAgJEZpZWxkQ29udGVudAogICAgICAgICAgICA9fiBzeyBpbmRleFsuXXBsIFs/XSBBY3Rpb249QWdlbnRGQVFab29tIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbX1neG1zOwoKICAgICAgICAjIHRha2UgY2FyZSBvZiBvbGQgc3R5bGUgYmVmb3JlIEZBUSAyLjAueAogICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgIyBidWlsZCBiYXNlIFVSTCBmb3IgaW5saW5lIGltYWdlcwogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249Q3VzdG9tZXJGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVxkKztGaWxlSUQ9XGQrKQogICAgICAgICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgIH0KCiAgICAgICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAgICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gSFRNTCBpZiBuZWVkZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpJdGVtOjpIVE1MJykKICAgICAgICAgICAgJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0KICAgICAgICAgICAgJiYgJEZBUURhdGF7Q29udGVudFR5cGV9IG5lICd0ZXh0L2h0bWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgKSB8fCAnJzsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWJhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgIyBtYW5hZ2UgcGFyYW1ldGVycwogICAgICAgICRHZXRQYXJhbXtGaWxlSUR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVJRCcgKTsKICAgICAgICBpZiAoICFkZWZpbmVkICRHZXRQYXJhbXtGaWxlSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgRmlsZUlEIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXR0YWNobWVudHMKICAgICAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmlsZUlEID0+ICRHZXRQYXJhbXtGaWxlSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCVGaWxlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KCVGaWxlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEdldFBhcmFte0ZpbGVJRH0pISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHZvdGluZyBkZWZhdWx0IG9wdGlvbgogICAgbXkgJFZvdGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpWb3RpbmcnKTsKCiAgICAjIGdldCBGQVEgdm90ZSBpbmZvcm1hdGlvbgogICAgbXkgJFZvdGVEYXRhOwogICAgaWYgKCRWb3RpbmcpIHsKICAgICAgICAkVm90ZURhdGEgPSAkRkFRT2JqZWN0LT5Wb3RlR2V0KAogICAgICAgICAgICBDcmVhdGVCeSAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJEZBUURhdGF7SXRlbUlEfSwKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRJbnRlcmZhY2UtPntTdGF0ZUlEfSwKICAgICAgICAgICAgSVAgICAgICAgID0+ICRFTlZ7J1JFTU9URV9BRERSJ30sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHVzZXIgYWxyZWFkeSB2b3RlZCB0aGlzIEZBUSBpdGVtCiAgICBteSAkQWxyZWFkeVZvdGVkOwogICAgaWYgKCRWb3RlRGF0YSkgewoKICAgICAgICBteSAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZBUURhdGF7Q2hhbmdlZH0gfHwgJycsCiAgICAgICAgICAgIH0KICAgICAgICApLT5Ub0Vwb2NoKCk7CgogICAgICAgIG15ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkVm90ZURhdGEtPntDcmVhdGVkfSB8fCAnJywKICAgICAgICAgICAgfQogICAgICAgICktPlRvRXBvY2goKTsKCiAgICAgICAgaWYgKCAkSXRlbUNoYW5nZWRTeXN0ZW1UaW1lIDw9ICRWb3RlQ3JlYXRlZFN5c3RlbVRpbWUgKSB7CiAgICAgICAgICAgICRBbHJlYWR5Vm90ZWQgPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBWb3RlIFN1YmFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdWb3RlJyApIHsKCiAgICAgICAgIyBjdXN0b21lciBjYW4ndCB1c2UgdGhpcyBzdWItYWN0aW9uIGlmIGlzIG5vdCBlbmFibGVkCiAgICAgICAgaWYgKCAhJFZvdGluZyApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1RoZSB2b3RpbmcgbWVjaGFuaXNtIGlzIG5vdCBlbmFibGVkIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGNhbiB2b3RlIG9ubHkgb25jZSBwZXIgRkFRIHJldmlzaW9uCiAgICAgICAgaWYgKCRBbHJlYWR5Vm90ZWQpIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgSW5mbyAgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIHZvdGUgaWYgYW55CiAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRHZXRQYXJhbXtSYXRlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHJhdGVzIGNvbmZpZwogICAgICAgICAgICBteSAkVm90aW5nUmF0ZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6Vm90aW5nOjpSYXRlcycpOwogICAgICAgICAgICBteSAkUmF0ZSAgICAgICAgPSAkR2V0UGFyYW17UmF0ZX07CgogICAgICAgICAgICAjIHNlbmQgZXJyb3IgaWYgcmF0ZSBpcyBub3QgZGVmaW5lZCBpbiBjb25maWcKICAgICAgICAgICAgaWYgKCAhJFZvdGluZ1JhdGVzLT57JFJhdGV9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGUgdm90ZSByYXRlIGlzIG5vdCBkZWZpbmVkIScpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgYWRkIHRoZSB2b3RlCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEZBUU9iamVjdC0+Vm90ZUFkZCgKICAgICAgICAgICAgICAgICAgICBDcmVhdGVkQnkgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJUCAgICAgICAgPT4gJEVOVnsnUkVNT1RFX0FERFInfSwKICAgICAgICAgICAgICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e1N0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFJhdGUgICAgICA9PiAkR2V0UGFyYW17UmF0ZX0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBkbyBub3Qgc2hvdyB0aGUgdm90aW5nIGZvcm0KICAgICAgICAgICAgICAgICRBbHJlYWR5Vm90ZWQgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVmcmVzaCBGQVEgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAgICAgSW5mbyA9PiBUcmFuc2xhdGFibGUoJ1RoYW5rcyBmb3IgeW91ciB2b3RlIScpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1c2VyIGlzIGFibGUgdG8gdm90ZSBidXQgbm8gcmF0ZSBoYXMgYmVlbiBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICBJbmZvICAgICA9PiBUcmFuc2xhdGFibGUoJ05vIHJhdGUgc2VsZWN0ZWQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YSAoU3RpbGwgbmVlZGVkIGZvciBQbGFpblRleHQpCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgIGlmICggJEludGVyZmFjZS0+e05hbWV9IGVxICdleHRlcm5hbCcgKSB7CgogICAgICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24KICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfQogICAgICAgICAgICAgICAgPX4gc3sgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRWm9vbSB9e2N1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVpvb219Z3htczsKCiAgICAgICAgICAgICMgdGFrZSBjYXJlIG9mIG9sZCBzdHlsZSBiZWZvcmUgRkFRIDIuMC54CiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0gPX4gc3sKICAgICAgICAgICAgICAgIGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgICAgIH17Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O31neG1zOwogICAgICAgIH0KCiAgICAgICAgIyBubyBxdW90aW5nIGlmIEhUTUwgdmlldyBpcyBlbmFibGVkCiAgICAgICAgbmV4dCBGSUVMRCBpZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpOwoKICAgICAgICAjIEhUTUwgcXVvdGluZwogICAgICAgICRGQVFEYXRheyRGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBOZXdMaW5lICAgICAgICA9PiAwLAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICAgICBWTWF4ICAgICAgICAgICA9PiA1MDAwLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgdm90aW5nIHJlc3VsdHMKICAgICRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gPSAkTGF5b3V0T2JqZWN0LT5HZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yKAogICAgICAgIFJhdGUgPT4gJEZBUURhdGF7Vm90ZVJlc3VsdH0sCiAgICApOwoKICAgIGlmICggISRQYXJhbXtWb3RpbmdSZXN1bHRDb2xvcn0gfHwgJEZBUURhdGF7Vm90ZXN9IGVxICcwJyApIHsKICAgICAgICAkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9ID0gJ0dyYXknOwogICAgfQoKICAgICMgc2hvdyBiYWNrIGxpbmsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0JhY2snLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBnZXQgbXVsdGktbGFuZ3VhZ2UgZGVmYXVsdCBvcHRpb24KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2UKICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyB2b3RlcwogICAgaWYgKCRWb3RpbmcpIHsKCiAgICAgICAgIyBhbHdheXMgZGlzcGxheXMgVm90ZXMgcmVzdWx0IGV2ZW4gaWYgaXRzIDAKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVmlld1ZvdGVzJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICBteSAkU2hvd0ZBUVBhdGggPSAkTGF5b3V0T2JqZWN0LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIENhdGVnb3J5SUQgID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFBhdGhGb3JJdGVtID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aEl0ZW1FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGtleXdvcmRzIGFzIHNlYXJjaCBsaW5rcwogICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CgogICAgICAgICMgcmVwbGFjZSBjb21tYXMgYW5kIHNlbWljb2xvbnMKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy8sLyAvZzsKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy87LyAvZzsKCiAgICAgICAgbXkgQEtleXdvcmRzID0gc3BsaXQgL1xzKy8sICRGQVFEYXRhe0tleXdvcmRzfTsKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKEBLZXl3b3JkcykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCByYXRpbmcgc3RhcnMKICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+RkFRUmF0aW5nU3RhcnNTaG93KAogICAgICAgICAgICBWb3RlUmVzdWx0ID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9LAogICAgICAgICAgICBWb3RlcyAgICAgID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGF0dGFjaG1lbnRzIGlmIGFueQogICAgbXkgQEF0dGFjaG1lbnRJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRIZWFkZXInLAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyBtZXNzYWdlIGFib3V0IGxpbmtzIGluIGlmcmFtZXMsIGlmIHVzZXIgZGlkbid0IGNsb3NlIGl0IGFscmVhZHkKICAgIGlmICggISRTZWxmLT57RG9Ob3RTaG93QnJvd3NlckxpbmtNZXNzYWdlfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQnJvd3NlckxpbmtNZXNzYWdlJywKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBGQVEgQ29udGVudAogICAgJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslRkFRRGF0YX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgcHJpbnQgc3RyaW5nIGZvciB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyNTAsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CgogICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IEZBUSBWb3RpbmcKICAgIGlmICgkVm90aW5nKSB7CgogICAgICAgICMgZ2V0IHZvdGluZyBjb25maWcKICAgICAgICBteSAkU2hvd1ZvdGluZ0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpWb3Rpbmc6OlNob3cnKTsKICAgICAgICBpZiAoICRTaG93Vm90aW5nQ29uZmlnLT57ICRJbnRlcmZhY2UtPntOYW1lfSB9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgdXNlciBhbHJlYWR5IHZvdGVkIGFmdGVyIGxhc3QgY2hhbmdlCiAgICAgICAgICAgIGlmICggISRBbHJlYWR5Vm90ZWQgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+X0ZBUVZvdGluZyggRkFRRGF0YSA9PiB7JUZBUURhdGF9ICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb2cgYWNjZXNzIHRvIHRoaXMgRkFRIGl0ZW0KICAgICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKSwKICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e05hbWV9LAogICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJGQVFab29tJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfRkFRVm90aW5nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJUZBUURhdGEgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUVZvdGluZycsCiAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgKTsKCiAgICAjIGdldCBWb3RpbmcgcmF0ZXMgc2V0dGluZwogICAgbXkgJFZvdGluZ1JhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Okl0ZW06OlZvdGluZzo6UmF0ZXMnKTsKICAgIGZvciBteSAkUmF0ZVZhbHVlICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskVm90aW5nUmF0ZXN9ICkgewoKICAgICAgICAjIGNyZWF0ZSBkYXRhIHN0cnVjdHVyZSBmb3Igb3V0cHV0CiAgICAgICAgbXkgJURhdGEgPSAoCiAgICAgICAgICAgIFZhbHVlID0+ICRSYXRlVmFsdWUsCiAgICAgICAgICAgIFRpdGxlID0+ICRWb3RpbmdSYXRlcy0+eyRSYXRlVmFsdWV9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFWb3RpbmdSYXRlUm93JywKICAgICAgICAgICAgRGF0YSA9PiB7JURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVkaXJlY3QgPSAkRU5We1JFUVVFU1RfVVJJfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIGlmICgkUmVkaXJlY3QpIHsKICAgICAgICAkUmVkaXJlY3QgPX4gc3tQdWJsaWNGQVF9e1B1YmxpY0ZBUVpvb219eG1zOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFJlZGlyZWN0ID0gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfQogICAgICAgICAgICAuICdBY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9JwogICAgICAgICAgICAuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICRSZWRpcmVjdCwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRRXhwbG9yZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWcgZGF0YQogICAgbXkgJFN0YXJ0SGl0ICAgICAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgIG15ICRTZWFyY2hMaW1pdCAgICAgPSAkQ29uZmlnLT57U2VhcmNoTGltaXR9IHx8IDIwMDsKICAgIG15ICRTZWFyY2hQYWdlU2hvd24gPSAkQ29uZmlnLT57U2VhcmNoUGFnZVNob3dufSB8fCAzOwogICAgbXkgJFNvcnRCeSAgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0ZBUUlEJzsKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyJyApCiAgICAgICAgfHwgJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0Rvd24nOwoKICAgICMgZ2V0IEl0ZW0gSUQKICAgIG15ICRJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSXRlbUlEJyApIHx8IDA7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIGlmIEl0ZW1JRCBwYXJhbWV0ZXIgd2FzIHNlbnQgYW5kIHJlZGlyZWN0IHRvIEZBUSBhcnRpY2xlIHpvb20gc2NyZWVuCiAgICBpZiAoJEl0ZW1JRCkgewoKICAgICAgICAjIHJlZGlyZWN0IHRvIEZBUSB6b29tCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAnQWN0aW9uPVB1YmxpY0ZBUVpvb207SXRlbUlEPScgLiAkSXRlbUlEICk7CiAgICB9CgogICAgbXkgJENhdGVnb3J5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnlJRCcgKSB8fCAwOwoKICAgICMgY2hlY2sgZm9yIG5vbiBudW1lcmljIENhdGVnb3J5SUQKICAgIGlmICggJENhdGVnb3J5SUQgIX4gL1xkKy8gKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAwOwogICAgfQoKICAgICMgZ2V0IGNhdGVnb3J5IGJ5IG5hbWUKICAgIG15ICRDYXRlZ29yeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDYXRlZ29yeScgKSB8fCAnJzsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgdHJ5IHRvIGdldCB0aGUgY2F0ZWdvcnkgSUQgZnJvbSBjYXRlZ29yeSBuYW1lIGlmIG5vIGNhdGVnb3J5IElECiAgICBpZiAoICRDYXRlZ29yeSAmJiAhJENhdGVnb3J5SUQgKSB7CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSB0cmVlCiAgICAgICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmV2ZXJzZSB0aGUgaGFzIGZvciBlYXN5IGxvb2t1cAogICAgICAgIG15ICVSZXZlcnNlQ2F0ZWdvcnlUcmVlID0gcmV2ZXJzZSAleyRDYXRlZ29yeVRyZWV9OwoKICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlUcmVleyRDYXRlZ29yeX0gfHwgMDsKICAgIH0KCiAgICAjIHRyeSB0byBnZXQgdGhlIGNhdGVnb3J5IGRhdGEKICAgIG15ICVDYXRlZ29yeURhdGE7CiAgICBpZiAoJENhdGVnb3J5SUQpIHsKCiAgICAgICAgIyBnZXQgY2F0ZWdvcnkgZGF0YQogICAgICAgICVDYXRlZ29yeURhdGEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICElQ2F0ZWdvcnlEYXRhICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgUlNTIGZlZWQgbGluayBmb3IgbmV3IEZBUSBhcnRpY2xlcyBpbiB0aGUgYnJvd3NlciBVUkwgYmFyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgPT4gJ2FsdGVybmF0ZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICAgICBUaXRsZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZXMgKG5ldyBjcmVhdGVkKScpLAogICAgICAgICAgICBIcmVmID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30gLiAnQWN0aW9uPVB1YmxpY0ZBUVJTUztUeXBlPUNyZWF0ZWQnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIFJTUyBmZWVkIGxpbmsgZm9yIGNoYW5nZWQgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICA9PiAnYWx0ZXJuYXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnYXBwbGljYXRpb24vcnNzK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknKSwKICAgICAgICAgICAgSHJlZiA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9IC4gJ0FjdGlvbj1QdWJsaWNGQVFSU1M7VHlwZT1DaGFuZ2VkJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBSU1MgZmVlZCBsaW5rIGZvciBUb3AtMTAgRkFRIGFydGljbGVzIGluIHRoZSBicm93c2VyIFVSTCBiYXIKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ2FsdGVybmF0ZScsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9yc3MreG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknKSwKICAgICAgICAgICAgSHJlZiAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfSAuICdBY3Rpb249UHVibGljRkFRUlNTO1R5cGU9VG9wMTAnLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigpOwoKICAgICMgc2hvdyBGQVEgcGF0aAogICAgJExheW91dE9iamVjdC0+RkFRUGF0aFNob3coCiAgICAgICAgRkFRT2JqZWN0ICA9PiAkRkFRT2JqZWN0LAogICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGFsbCBkaXJlY3Qgc3ViY2F0ZWdvcmllcyBvZiB0aGUgc2VsZWN0ZWQgY2F0ZWdvcnkKICAgIG15ICRDYXRlZ29yeUlEc1JlZiA9ICRGQVFPYmplY3QtPlB1YmxpY0NhdGVnb3J5U2VhcmNoKAogICAgICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlELAogICAgICAgIE1vZGUgICAgID0+ICdQdWJsaWMnLAogICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzaG93IHN1YmNhdGVnb3JpZXMgbGlzdAogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU3ViY2F0ZWdvcmllcycsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld1Jlc3VsdCcsCiAgICAgICAgRGF0YSA9PiB7fSwKICAgICk7CgogICAgIyBnZXQgaW50ZXJmYWNlIHN0YXRlIGxpc3QKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6UHVibGljOjpTdGF0ZVR5cGVzJyksCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBpZiB0aGVyZSBhcmUgc3ViY2F0ZWdvcmllcwogICAgaWYgKCAkQ2F0ZWdvcnlJRHNSZWYgJiYgcmVmICRDYXRlZ29yeUlEc1JlZiBlcSAnQVJSQVknICYmIEB7JENhdGVnb3J5SURzUmVmfSApIHsKCiAgICAgICAgIyBzaG93IGRhdGEgZm9yIGVhY2ggc3ViY2F0ZWdvcnkKICAgICAgICBmb3IgbXkgJFN1YkNhdGVnb3J5SUQgKCBAeyRDYXRlZ29yeUlEc1JlZn0gKSB7CgogICAgICAgICAgICBteSAlU3ViQ2F0ZWdvcnlEYXRhID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgbnVtYmVyIG9mIHN1YmNhdGVnb3JpZXMgb2YgdGhpcyBzdWJjYXRlZ29yeQogICAgICAgICAgICAkU3ViQ2F0ZWdvcnlEYXRhe1N1YkNhdGVnb3J5Q291bnR9ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlDb3VudCgKICAgICAgICAgICAgICAgIFBhcmVudElEcyA9PiBbJFN1YkNhdGVnb3J5SURdLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBudW1iZXIgb2YgRkFRIGFydGljbGVzIGluIHRoaXMgY2F0ZWdvcnkKICAgICAgICAgICAgJFN1YkNhdGVnb3J5RGF0YXtBcnRpY2xlQ291bnR9ID0gJEZBUU9iamVjdC0+RkFRQ291bnQoCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEcyAgPT4gWyRTdWJDYXRlZ29yeUlEXSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICAgICAgT25seUFwcHJvdmVkID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aGUgY2F0ZWdvcnkgZGF0YQogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVTdWJDYXRlZ29yeURhdGF9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG90aGVyd2lzZSBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0NhdGVnb3J5RGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlIHNldHRpbmdzCiAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAncHVibGljJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNlYXJjaCBhbGwgRkFRIGFydGljbGVzIHdpdGhpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgIG15IEBWaWV3YWJsZUl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJFNvcnRCeV0sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJE9yZGVyQnldLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFN0YXRlcyAgICAgICAgICAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgQ2F0ZWdvcnlJRHMgICAgICA9PiBbJENhdGVnb3J5SURdLAogICAgKTsKCiAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzCiAgICBteSAkU29ydENsYXNzOwoKICAgICMgdGhpcyBzZXRzIHRoZSBvcHBvc2l0ZSB0byB0aGUgT3JkZXJCeSBwYXJhbWV0ZXIKICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICB9CiAgICBlbHNpZiAoICRPcmRlckJ5IGVxICdVcCcgKSB7CiAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICB9CgogICAgIyBzZXQgdGhlIFNvcnRCeSBDbGFzcyB0byB0aGUgY29ycmVjdCBmaWVsZAogICAgbXkgJUNTU1NvcnQ7CiAgICBteSAkQ1NTU29ydEJ5ID0gJFNvcnRCeSAuICdTb3J0JzsKICAgICRDU1NTb3J0eyRDU1NTb3J0Qnl9ID0gJFNvcnRDbGFzczsKCiAgICBteSAlTmV3T3JkZXIgPSAoCiAgICAgICAgRG93biA9PiAnVXAnLAogICAgICAgIFVwICAgPT4gJ0Rvd24nLAogICAgKTsKCiAgICAjIHNob3cgdGhlIEZBUSBhcnRpY2xlIGxpc3QKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZBUUl0ZW1MaXN0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnskT3JkZXJCeX0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgbXVsdGkgbGFuZ3VhZ2UgZGVmYXVsdCBvcHRpb24KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2UgaGVhZGVyCiAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyTGFuZ3VhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICAlQ1NTU29ydCwKICAgICAgICAgICAgICAgIE9yZGVyID0+ICROZXdPcmRlcnskT3JkZXJCeX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQ291bnRlciA9IDA7CiAgICBpZiAoQFZpZXdhYmxlSXRlbUlEcykgewoKICAgICAgICAjIGNyZWF0ZSBiYWNrIGxpbmsgZm9yIEZBUSBab29tIHNjcmVlbgogICAgICAgIG15ICRab29tQmFja0xpbmsgPSAiQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQ7IgogICAgICAgICAgICAuICJTb3J0Qnk9JFNvcnRCeTtPcmRlcj0kT3JkZXJCeTtTdGFydEhpdD0kU3RhcnRIaXQiOwoKICAgICAgICAjIGVuY29kZSBiYWNrIGxpbmsgdG8gQmFzZTY0IGZvciBlYXN5IEhUTUwgdHJhbnNwb3J0CiAgICAgICAgJFpvb21CYWNrTGluayA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCgkWm9vbUJhY2tMaW5rKTsKCiAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFN0YXJ0SGl0CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFNlYXJjaFBhZ2VTaG93biArICRTdGFydEhpdCApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkRkFRRGF0YXtDbGVhblRpdGxlfSA9ICRGQVFPYmplY3QtPkZBUUFydGljbGVUaXRsZUNsZWFuKAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBTaXplICA9PiAkQ29uZmlnLT57VGl0bGVTaXplfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgYmxvY2tzIHRvIHRlbXBsYXRlCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgWm9vbUJhY2tMaW5rID0+ICRab29tQmFja0xpbmssCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgbGFuZ3VhZ2UgZGF0YQogICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZExhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aXNlIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZAogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRkFRRGF0YUZvdW5kTXNnJywKICAgICAgICApOwogICAgfQoKICAgIG15ICRMaW5rID0gJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkU29ydEJ5KSAuICc7JzsKICAgICRMaW5rIC49ICdPcmRlcj0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSgkT3JkZXJCeSkgLiAnOyc7CgogICAgIyBidWlsZCBzZWFyY2ggbmF2aWdhdGlvbiBiYXIKICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRTZWFyY2hQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRDb3VudGVyLAogICAgICAgIEFjdGlvbiAgICA9PiAiQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JENhdGVnb3J5SUQiLAogICAgICAgIExpbmsgICAgICA9PiAkTGluaywKICAgICAgICBJRFByZWZpeCAgPT4gIlB1YmxpY0ZBUUV4cGxvcmVyIiwKICAgICk7CgogICAgIyBzaG93IGZvb3RlciBmaWx0ZXIgLSBzaG93IG9ubHkgaWYgbW9yZSB0aGUgb25lIHBhZ2UgaXMgYXZhaWxhYmxlCiAgICBpZiAoIGRlZmluZWQgJFBhZ2VOYXZ7VG90YWxIaXRzfSAmJiAoICRQYWdlTmF2e1RvdGFsSGl0c30gPiAkU2VhcmNoUGFnZVNob3duICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2luYXRpb24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFNlYXJjaEJhY2tMaW5rID0gIkFjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEIjsKCiAgICAjIGVuY29kZSBiYWNrIGxpbmsgdG8gQmFzZTY0IGZvciBlYXN5IEhUTUwgdHJhbnNwb3J0CiAgICAkU2VhcmNoQmFja0xpbmsgPSBNSU1FOjpCYXNlNjQ6OmVuY29kZV9iYXNlNjQoJFNlYXJjaEJhY2tMaW5rKTsKCiAgICAjIHNob3cgUXVpY2tTZWFyY2gKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dRdWlja1NlYXJjaCgKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgU2VhcmNoQmFja0xpbmsgID0+ICRTZWFyY2hCYWNrTGluaywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZCBhbmQgbGFzdCB1cGRhdGVkIGFydGljbGVzCiAgICBmb3IgbXkgJFR5cGUgKHF3KExhc3RDcmVhdGUgTGFzdENoYW5nZSkpIHsKCiAgICAgICAgbXkgJFNob3dPayA9ICRMYXlvdXRPYmplY3QtPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICRUeXBlLAogICAgICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgIENhdGVnb3J5SUQgICAgICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFNob3dPayApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyB0b3AgdGVuIGFydGljbGVzCiAgICBteSAkU2hvd09rID0gJExheW91dE9iamVjdC0+RkFRU2hvd1RvcDEwKAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIE1vZGUgICAgICAgICAgICA9PiAnUHVibGljJywKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgSW50ZXJmYWNlICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkU2hvd09rICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljRkFRRXhwbG9yZXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgJUNhdGVnb3J5RGF0YSwKICAgICAgICB9LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUHJpbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISVGQVFEYXRhICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBpbnRlcmZhY2Ugc3RhdGUgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNob3cgbm8gcGVybWlzc2lvbiBlcnJvcgogICAgaWYgKAogICAgICAgICEkRkFRRGF0YXtBcHByb3ZlZH0KICAgICAgICB8fCAhJEludGVyZmFjZVN0YXRlcy0+eyAkRkFRRGF0YXtTdGF0ZVR5cGVJRH0gfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOb1Blcm1pc3Npb24oCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBwcmVwYXJlIGZpZWxkcyBkYXRhCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRGQVFEYXRheyRGaWVsZH07CgogICAgICAgICMgcmV3cml0ZSBsaW5rcyB0byBlbWJlZGRlZCBpbWFnZXMgZm9yIGN1c3RvbWVyIGFuZCBwdWJsaWMgaW50ZXJmYWNlCiAgICAgICAgaWYgKCAkSW50ZXJmYWNlLT57TmFtZX0gZXEgJ3B1YmxpYycgKSB7CiAgICAgICAgICAgICRGQVFEYXRheyRGaWVsZH0KICAgICAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb219Z3htczsKICAgICAgICB9CgogICAgICAgICMgbm8gcXVvdGluZyBpZiBIVE1MIHZpZXcgaXMgZW5hYmxlZAogICAgICAgIG5leHQgRklFTEQgaWYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBIVE1MIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICAgICAgVk1heCAgICAgICAgICAgPT4gNTAwMCwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2VuZXJhdGUgUERGIG91dHB1dAogICAgbXkgJFRpbWUgPSAkTGF5b3V0T2JqZWN0LT57VGltZX07CiAgICBteSAlUGFnZTsKCiAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgJFBhZ2V7TWF4UGFnZXN9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICBpZiAoICEkUGFnZXtNYXhQYWdlc30gfHwgJFBhZ2V7TWF4UGFnZXN9IDwgMSB8fCAkUGFnZXtNYXhQYWdlc30gPiAxMDAwICkgewogICAgICAgICRQYWdle01heFBhZ2VzfSA9IDEwMDsKICAgIH0KICAgIG15ICRIZWFkZXJSaWdodCAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpIC4gJEZBUURhdGF7TnVtYmVyfTsKICAgIG15ICRIZWFkbGluZUxlZnQgPSAkSGVhZGVyUmlnaHQ7CiAgICBteSAkVGl0bGUgICAgICAgID0gJEhlYWRlclJpZ2h0OwogICAgaWYgKCAkRkFRRGF0YXtUaXRsZX0gKSB7CiAgICAgICAgJEhlYWRsaW5lTGVmdCA9ICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICAkVGl0bGUgLj0gJyAvICcgLiAkRkFRRGF0YXtUaXRsZX07CiAgICB9CgogICAgJFBhZ2V7TWFyZ2luVG9wfSAgICA9IDMwOwogICAgJFBhZ2V7TWFyZ2luUmlnaHR9ICA9IDQwOwogICAgJFBhZ2V7TWFyZ2luQm90dG9tfSA9IDQwOwogICAgJFBhZ2V7TWFyZ2luTGVmdH0gICA9IDQwOwogICAgJFBhZ2V7SGVhZGVyUmlnaHR9ICA9ICRIZWFkZXJSaWdodDsKICAgICRQYWdle1BhZ2VUZXh0fSAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1BhZ2UnKTsKICAgICRQYWdle1BhZ2VDb3VudH0gICAgPSAxOwoKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBjcmVhdGUgbmV3IFBERiBkb2N1bWVudAogICAgJFBERk9iamVjdC0+RG9jdW1lbnROZXcoCiAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzogJyAuICRUaXRsZSwKICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICk7CgogICAgIyBjcmVhdGUgZmlyc3QgUERGIHBhZ2UKICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgJVBhZ2UsCiAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICk7CiAgICAkUGFnZXtQYWdlQ291bnR9Kys7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgIEZvbnRTaXplID0+IDEzLAoKICAgICk7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgInByaW50ZWQgYnkiCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRUaW1lLAogICAgICAgIEZvbnRTaXplID0+IDksCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE0LAogICAgKTsKCiAgICAjIHR5cGUgb2YgcHJpbnQgdGFnCiAgICBteSAkUHJpbnRUYWcgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBBcnRpY2xlIFByaW50Jyk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJFByaW50VGFnLAogICAgICAgIEhlaWdodCAgID0+IDksCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGQnLAogICAgICAgIEFsaWduICAgID0+ICdyaWdodCcsCiAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0IEZBUSBpbmZvcm1hdGlvbgogICAgJFNlbGYtPl9QREZPdXRwdXRGQVFIZWFkZXJJbmZvKAogICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICA9PiBcJUZBUURhdGEsCiAgICApOwoKICAgIGlmICggJEZBUURhdGF7S2V5d29yZHN9ICkgewogICAgICAgICRTZWxmLT5fUERGT3V0cHV0S2V5d29yZHMoCiAgICAgICAgICAgIFBhZ2VEYXRhID0+IFwlUGFnZSwKICAgICAgICAgICAgRkFRRGF0YSAgPT4gXCVGQVFEYXRhLAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgRkFRIGR5bmFtaWMgZmllbGRzCiAgICAkU2VsZi0+X1BERk91dHB1dEZBUUR5bmFtaWNGaWVsZHMoCiAgICAgICAgUGFnZURhdGEgPT4gXCVQYWdlLAogICAgICAgIEZBUURhdGEgID0+IFwlRkFRRGF0YSwKICAgICk7CgogICAgJFNlbGYtPl9QREZPdXB1dEZBUUNvbnRlbnQoCiAgICAgICAgUGFnZURhdGEgICAgICAgID0+IFwlUGFnZSwKICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gXCVGQVFEYXRhLAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgKTsKCiAgICAjIFJldHVybiB0aGUgUERGIGRvY3VtZW50LgogICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV8nIC4gJEZBUURhdGF7TnVtYmVyfTsKCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgIG15ICREYXRlVGltZSAgICAgICA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CiAgICBteSAkWSAgICAgICAgICAgICAgPSAkRGF0ZVRpbWUtPntZZWFyfTsKICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICBteSAkRCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0RheX0gKTsKICAgIG15ICRoICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57SG91cn0gKTsKICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwoKICAgIG15ICRQREZTdHJpbmcgPSAkUERGT2JqZWN0LT5Eb2N1bWVudE91dHB1dCgpOwogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVuYW1lIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5wZGYiLAogICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgIENvbnRlbnQgICAgID0+ICRQREZTdHJpbmcsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwp9CgpzdWIgX1BERk91dHB1dEZBUUhlYWRlckluZm8gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNyZWF0ZSBsZWZ0IHRhYmxlCiAgICBteSAkVGFibGVMZWZ0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDYXRlZ29yeScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRGQVFEYXRhe0NhdGVnb3J5TmFtZX0gKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTdGF0ZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRGQVFEYXRhe1N0YXRlfSApLAogICAgICAgIH0sCiAgICBdOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGRlZmF1bHQgbXVsdGkgbGFuZ3VhZ2Ugb3B0aW9uCiAgICBteSAkTXVsdGlMYW5ndWFnZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpNdWx0aUxhbmd1YWdlJyk7CgogICAgIyBsYW5ndWFnZSByb3csIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgbXkgJFJvdyA9IHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYW5ndWFnZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRGQVFEYXRhe0xhbmd1YWdlfSApLAogICAgICAgIH07CiAgICAgICAgcHVzaCBAeyRUYWJsZUxlZnR9LCAkUm93OwogICAgfQoKICAgICMgY3JlYXRlIHJpZ2h0IHRhYmxlCiAgICBteSAkVGFibGVSaWdodDsKCiAgICAjIGdldCBkZWZhdWx0IHZvdGluZyBvcHRpb24KICAgIG15ICRWb3RpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgIyB2b3Rpbmcgcm93cywgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBpZiAoJFZvdGluZykgewogICAgICAgICRUYWJsZVJpZ2h0ID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZvdGVzJykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3Rlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUmVzdWx0JykgLiAnOicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkRkFRRGF0YXtWb3RlUmVzdWx0fSAuICIgJSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXTsKICAgIH0KCiAgICAjIGxhc3QgdXBkYXRlIHJvdwogICAgcHVzaCBAeyRUYWJsZVJpZ2h0fSwgewogICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCB1cGRhdGUnKSAuICc6JywKICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAkRkFRRGF0YXtDaGFuZ2VkfSwKICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICApLAogICAgfTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yRXZlbn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICA9IDM7CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRLZXl3b3JkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVGFibGVQYXJhbTsKCiAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bMF1bMF17Q29udGVudH0gPSAkRkFRRGF0YXtLZXl3b3Jkc30gfHwgJyc7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA1MTE7CgogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnS2V5d29yZHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0RkFRRHluYW1pY0ZpZWxkcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBGQVFEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBteSAkT3V0cHV0ID0gMDsKICAgIG15ICVGQVEgICAgPSAleyAkUGFyYW17RkFRRGF0YX0gfTsKICAgIG15ICVQYWdlICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkRHluYW1pY0ZpZWxkRmlsdGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJGQVE6OkZyb250ZW5kOjpQdWJsaWNGQVFQcmludCIpLT57RHluYW1pY0ZpZWxkfTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIEZBUSBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlICA9PiBbJ0ZBUSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICREeW5hbWljRmllbGRGaWx0ZXIgfHwge30sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZW5lcmF0ZSB0YWJsZQogICAgRFlOQU1JQ0ZJRUxEQ09ORklHOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIHNraXAgZHluYW1pYyBmaWVsZCBpZiBpcyBub3QgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgICAgIG15ICRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUnLAogICAgICAgICk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRGQVF7RkFRSUR9LAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICEkVmFsdWU7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgJFZhbHVlIGVxICIiOwoKICAgICAgICAjIGdldCBwcmludCBzdHJpbmcgZm9yIHRoaXMgZHluYW1pYyBmaWVsZAogICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9CiAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkKICAgICAgICAgICAgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRWYWx1ZVN0cmctPntWYWx1ZX07CgogICAgICAgICRSb3crKzsKICAgICAgICAkT3V0cHV0ID0gMTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICAjIG91dHB1dCBGQVEgZHluYW1pYyBmaWVsZHMKICAgIGlmICgkT3V0cHV0KSB7CgogICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtMTUsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICBUZXh0ICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBEeW5hbWljIEZpZWxkcycpLAogICAgICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC00LAogICAgICAgICk7CgogICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgPSAwOwogICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICA9IDE7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgICAgICMgb3V0cHV0IHRhYmxlCiAgICAgICAgUEFHRToKICAgICAgICBmb3IgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCAlVGFibGVQYXJhbSwgKTsKCiAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXB1dEZBUUNvbnRlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoUGFnZURhdGEgRkFRRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JFBhcmFtTmFtZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRQYXJhbU5hbWUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRkFRRGF0YSA9ICV7ICRQYXJhbXtGQVFEYXRhfSB9OwogICAgbXkgJVBhZ2UgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgTlVNQkVSOgogICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBGQVEgZmllbGQKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAnRkFROjpJdGVtOjpGaWVsZCcgLiAkTnVtYmVyICk7CgogICAgICAgICMgc2tpcCBvdmVyIG5vdCBzaG93biBmaWVsZHMKICAgICAgICBuZXh0IE5VTUJFUiBpZiAhJENvbmZpZy0+e1Nob3d9OwoKICAgICAgICAjIHN0b3JlIG9ubHkgdGhlIGNvbmZpZyBvZiBmaWVsZHMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICAkRmllbGRzeyAiRmllbGQiIC4gJE51bWJlciB9ID0gJENvbmZpZzsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc29ydCBzaG93biBmaWVsZHMgYnkgcHJpb3JpdHkKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIHNvcnQgeyAkRmllbGRzeyRhfS0+e1ByaW99IDw9PiAkRmllbGRzeyRifS0+e1ByaW99IH0ga2V5cyAlRmllbGRzICkgewoKICAgICAgICAjIGdldCB0aGUgc3RhdGUgdHlwZSBkYXRhIG9mIHRoaXMgZmllbGQKICAgICAgICBteSAkU3RhdGVUeXBlRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJEZpZWxkc3skRmllbGR9LT57U2hvd30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3Qgc2hvdyBmaWVsZHMgdGhhdCBhcmUgbm90IGFsbG93ZWQgaW4gdGhlIGdpdmVuIGludGVyZmFjZQogICAgICAgIG5leHQgRklFTEQgaWYgISRQYXJhbXtJbnRlcmZhY2VTdGF0ZXN9LT57ICRTdGF0ZVR5cGVEYXRhLT57U3RhdGVJRH0gfTsKCiAgICAgICAgbXkgJVRhYmxlUGFyYW07CgogICAgICAgICMgY29udmVydCBIVE1MIHRvIEFTQ0lJCiAgICAgICAgbXkgJEFzY2lpRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRkFRRGF0YXskRmllbGR9LAogICAgICAgICk7CgogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVswXVswXXtDb250ZW50fSA9ICRBc2NpaUZpZWxkIHx8ICcnOwogICAgICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDUxMTsKCiAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICBZICAgID0+IC0xNSwKICAgICAgICApOwoKICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgZmllbGQgbmFtZSBhbmQgc3RhdGUKICAgICAgICBteSAkRmllbGROYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRmllbGRzeyRGaWVsZH0tPnsnQ2FwdGlvbid9ICkKICAgICAgICAgICAgLiAnICgnCiAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkU3RhdGVUeXBlRGF0YS0+e05hbWV9ICkKICAgICAgICAgICAgLiAnKSc7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIHRhYmxlIHBhcmFtcwogICAgICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIFBBR0U6CiAgICAgICAgZm9yICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSggJVRhYmxlUGFyYW0sICk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRUlNTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIFhNTDo6UlNTOjpTaW1wbGVHZW4gcXcoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgVXNlcklEIHRvIHJvb3QgYmVjYXVzZSBpbiBwdWJsaWMgaW50ZXJmYWNlIHRoZXJlIGlzIG5vIHVzZXIKICAgICRTZWxmLT57VXNlcklEfSA9IDE7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgUlNTIHR5cGUKICAgIG15ICRUeXBlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1R5cGUnICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFR5cGUgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBUeXBlIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIHR5cGUKICAgIGlmICggJFR5cGUgIX4gbXsgQ3JlYXRlZCB8IENoYW5nZWQgfCBUb3AxMCB9eG1zICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSBvciBUb3AxMCEnKSwKICAgICAgICApOwogICAgfQoKICAgIG15IEBJdGVtSURzOwogICAgbXkgJFRpdGxlOwoKICAgIG15ICRGQVFPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIFRvcC0xMCBGQVEgYXJ0aWNsZXMKICAgIGlmICggJFR5cGUgZXEgJ1RvcDEwJyApIHsKCiAgICAgICAgIyBpbnRlcmZhY2UgbmVlZHMgdG8gYmUgdGhlIGludGVyZmFjZSBuYW1lCiAgICAgICAgbXkgJFRvcDEwSXRlbUlEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e05hbWV9LAogICAgICAgICAgICBMaW1pdCAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6TGltaXQnKSB8fCAxMCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApIHx8IFtdOwoKICAgICAgICBASXRlbUlEcyA9IG1hcCB7ICRfLT57SXRlbUlEfSB9IEB7JFRvcDEwSXRlbUlEc1JlZn07CgogICAgICAgICMgYnVpbGQgdGhlIHRpdGxlCiAgICAgICAgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEgQXJ0aWNsZXMgKFRvcCAxMCknKTsKICAgIH0KCiAgICAjIHNlYXJjaCB0aGUgRkFRIGFydGljbGVzCiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgaW50ZXJmYWNlIHN0YXRlIGxpc3QKICAgICAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGludGVyZmFjZSBuZWVkcyB0byBiZSBjb21wbGV0ZSBpbnRlcmZhY2UgaGFzaAogICAgICAgIEBJdGVtSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyRUeXBlXSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ0Rvd24nXSwKICAgICAgICAgICAgSW50ZXJmYWNlICAgICAgICA9PiAkSW50ZXJmYWNlLAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgID0+IDIwLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIHRoZSB0aXRsZQogICAgICAgIGlmICggJFR5cGUgZXEgJ0NyZWF0ZWQnICkgewogICAgICAgICAgICAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUSBBcnRpY2xlcyAobmV3IGNyZWF0ZWQpJyk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFR5cGUgZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAnRkFRIEFydGljbGVzIChyZWNlbnRseSBjaGFuZ2VkKScKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgUlNTIG9iamVjdCBvYmplY3QKICAgIG15ICRSU1NPYmplY3QgPSBYTUw6OlJTUzo6U2ltcGxlR2VuLT5uZXcoCiAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCJIdHRwVHlwZSIpCiAgICAgICAgICAgIC4gJzovLycKICAgICAgICAgICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoIkZRRE4iKQogICAgKTsKCiAgICAjIGdlbmVyYXRlIHRoZSBSU1MgdGl0bGUKICAgICRUaXRsZSA9ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdE5hbWUnKSAuICcgJyAuICRUaXRsZTsKCiAgICAkUlNTT2JqZWN0LT50aXRsZSgkVGl0bGUpOwoKICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewoKICAgICAgICBteSAlSXRlbURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGEgcHJldmlldyBvZiB0aGUgZmlyc3QgdHdvIGZpZWxkcwogICAgICAgIG15ICRQcmV2aWV3ID0gJyc7CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgaWYgKCAkSXRlbURhdGF7IkZpZWxkJENvdW50In0gKSB7CiAgICAgICAgICAgICAgICAkUHJldmlldyAuPSAkSXRlbURhdGF7IkZpZWxkJENvdW50In07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY29udmVydCBwcmV2aWV3IHRvIEFTQ0lJCiAgICAgICAgJFByZXZpZXcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoIFN0cmluZyA9PiAkUHJldmlldyApOwoKICAgICAgICAjIHJlZHVjZSBzaXplIG9mIHByZXZpZXcKICAgICAgICAkUHJldmlldyA9fiBzeyBcQSAoIC57ODB9ICkgLiogXHogfXskMVxbXC5cLlxdfWd4bXM7CgogICAgICAgICMgYnVpbGQgdGhlIFJTUyBpdGVtCiAgICAgICAgJFJTU09iamVjdC0+aXRlbSgKICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAgICAgICAgICAgICAuICI6Ly8iCiAgICAgICAgICAgICAgICAuICRDb25maWdPYmplY3QtPkdldCgiRlFETiIpCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gIkFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kSXRlbUlEIiwKICAgICAgICAgICAgJEl0ZW1EYXRhe1RpdGxlfSwKICAgICAgICAgICAgJFByZXZpZXcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgdG8gc3RyaW5nCiAgICBteSAkT3V0cHV0ID0gJFJTU09iamVjdC0+YXNfc3RyaW5nKCk7CiAgICBpZiAoICEkT3V0cHV0ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDYW5cJ3QgY3JlYXRlIFJTUyBmaWxlIScpLAogICAgICAgICk7CiAgICB9CgogICAgIyByZXR1cm4gdGhlIFJTUyBmZWVkCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRU2VhcmNoOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NCBxdygpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IFVzZXJJRCB0byByb290IGJlY2F1c2UgaW4gcHVibGljIGludGVyZmFjZSB0aGVyZSBpcyBubyB1c2VyCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAxOwoKICAgICMgZ2V0IGNvbmZpZyBmb3IgZnJvbnRlbmQKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntEeW5hbWljRmllbGRGaWx0ZXJ9ID0gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfTsKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIEZBUSBvYmplY3QKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRTZWxmLT57RHluYW1pY0ZpZWxkRmlsdGVyfSB8fCB7fSwKICAgICk7CgogICAgIyByZWR1Y2UgdGhlIGR5bmFtaWMgZmllbGRzIHRvIG9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgZGVzaWduZWQgZm9yIGN1c3RvbWVyIGludGVyZmFjZQogICAgbXkgQEN1c3RvbWVyRHluYW1pY0ZpZWxkczsKICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlOwoKICAgICAgICBwdXNoIEBDdXN0b21lckR5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGRDb25maWc7CiAgICB9CiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSBcQEN1c3RvbWVyRHluYW1pY0ZpZWxkczsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IGNvbmZpZyBmcm9tIGNvbnN0cnVjdG9yCiAgICBteSAkQ29uZmlnID0gJFNlbGYtPntDb25maWd9OwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWcgZGF0YQogICAgbXkgJFN0YXJ0SGl0ICAgICAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgIG15ICRTZWFyY2hMaW1pdCAgICAgPSAkQ29uZmlnLT57U2VhcmNoTGltaXR9IHx8IDIwMDsKICAgIG15ICRTZWFyY2hQYWdlU2hvd24gPSAkQ29uZmlnLT57U2VhcmNoUGFnZVNob3dufSB8fCA0MDsKICAgIG15ICRTb3J0QnkgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdGQVFJRCc7CiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlcicgKQogICAgICAgIHx8ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBGQVEgbnVtYmVyCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbkZBUU51bWJlcicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXIueG1sJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgYnVpbGQgb3V0cHV0IGZvciBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBieSBmdWxsLXRleHQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgKSB7CiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsVGV4dCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdPcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dC54bWwnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1lbWJlciBleGNsdWRlIGF0dHJpYnV0ZXMKICAgIG15IEBFeGNsdWRlcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdFeGNsdWRlJyApOwoKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBzaW5nbGUgcGFyYW1zCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiAgICAgICAgcXcoTnVtYmVyIFRpdGxlIEtleXdvcmQgRnVsbHRleHQgUmVzdWx0Rm9ybSBUaW1lU2VhcmNoVHlwZSBWb3RlU2VhcmNoIFZvdGVTZWFyY2hUeXBlCiAgICAgICAgVm90ZVNlYXJjaE9wdGlvbiBSYXRlU2VhcmNoIFJhdGVTZWFyY2hUeXBlIFJhdGVTZWFyY2hPcHRpb24KICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lUG9pbnQKICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQKICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0IEl0ZW1DcmVhdGVUaW1lU3RhcnREYXkgSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydFllYXIKICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3AgSXRlbUNyZWF0ZVRpbWVTdG9wRGF5IEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcgogICAgICAgICkKICAgICAgICApCiAgICB7CgogICAgICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgICAgICAkR2V0UGFyYW17JFBhcmFtTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1OYW1lICk7CgogICAgICAgICMgcmVtb3ZlIHdoaXRlc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbU5hbWV9ID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBub24gZW1wdHkgcGFyYW1ldGVycyBvbiBhIGxvY2FsIHByb2ZpbGUKICAgICAgICBpZiAoICRHZXRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSAuPSAiJFBhcmFtTmFtZT0kR2V0UGFyYW17JFBhcmFtTmFtZX07IjsKICAgICAgICB9CgogICAgfQoKICAgICMgZ2V0IGJhY2sgbGluawogICAgJEdldFBhcmFte1NlYXJjaEJhY2tMaW5rfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hCYWNrTGluaycgKSB8fCAnJzsKICAgIGlmICggJEdldFBhcmFte1NlYXJjaEJhY2tMaW5rfSApIHsKICAgICAgICAkR2V0UGFyYW17U2VhcmNoQmFja0xpbmt9ID0gTUlNRTo6QmFzZTY0OjpkZWNvZGVfYmFzZTY0KCAkR2V0UGFyYW17U2VhcmNoQmFja0xpbmt9ICk7CiAgICB9CgogICAgIyBzaG93IGJhY2sgbGluawogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQmFjaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhDYXRlZ29yeUlEcyBMYW5ndWFnZUlEcyApKSB7CgogICAgICAgICMgZ2V0IHNlYXJjaCBhcnJheSBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgIG15IEBBcnJheSA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKICAgICAgICBpZiAoQEFycmF5KSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1OYW1lfSA9IFxAQXJyYXk7CgogICAgICAgICAgICAjIHN0b3JlIHBhcmFtZXRlcnMgb24gYSBsb2NhbCBwcm9maWxlCiAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoQEFycmF5KSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e1Byb2ZpbGV9IC49ICRQYXJhbU5hbWUgLiAnPScgLiAkRWxlbWVudCAuICc7JzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBEeW5hbWljIGZpZWxkcyBmcm9tIHBhcmFtIG9iamVjdAogICAgRFlOQU1JQ0ZJRUxEQ09ORklHOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGUgdmFsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBzZWFyY2gKICAgICAgICAgICAgIyBwcm9maWxlCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICVHZXRQYXJhbSA9ICggJUdldFBhcmFtLCAleyREeW5hbWljRmllbGRWYWx1ZX0gKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZHMgdG8gcHJvZmlsZSB0byBpbmNsdWRlIHRoZW0gaW4gdGhlIGJhY2stbGluawogICAgICAgICAgICBLRVlJVEVNOgogICAgICAgICAgICBmb3IgbXkgJEtleUl0ZW0gKCBzb3J0IGtleXMgJXskRHluYW1pY0ZpZWxkVmFsdWV9ICkgewoKICAgICAgICAgICAgICAgICMgY29udmVydCBzY2FsYXIgdmFsdWVzIHRvIGFycmF5IHRvIHVzZSBzYW1lIGNvZGUgYmFzZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJER5bmFtaWNGaWVsZFZhbHVlLT57JEtleUl0ZW19CiAgICAgICAgICAgICAgICAgICAgJiYgcmVmICREeW5hbWljRmllbGRWYWx1ZS0+eyRLZXlJdGVtfSBlcSAnJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWUtPnskS2V5SXRlbX0gPSBbICREeW5hbWljRmllbGRWYWx1ZS0+eyRLZXlJdGVtfSBdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgS0VZSVRFTSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkVmFsdWUtPnskS2V5SXRlbX0gKTsKCiAgICAgICAgICAgICAgICAjIGNvbmNhdGVuYXRlIGR5bmFtaWMgZmllbGRzIHZhbHVlcyBpbnRvIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBWQUxVRUlURU06CiAgICAgICAgICAgICAgICBmb3IgbXkgJFZhbHVlSXRlbSAoIEB7ICREeW5hbWljRmllbGRWYWx1ZS0+eyRLZXlJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgVkFMVUVJVEVNIGlmICEkVmFsdWVJdGVtOwogICAgICAgICAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gLj0gIiRLZXlJdGVtPSRWYWx1ZUl0ZW07IjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGl0ZW0gbmVlZCB0byBnZXQgZXhjbHVkZWQKICAgIGZvciBteSAkRXhjbHVkZSAoQEV4Y2x1ZGVzKSB7CiAgICAgICAgaWYgKCAkR2V0UGFyYW17JEV4Y2x1ZGV9ICkgewogICAgICAgICAgICBkZWxldGUgJEdldFBhcmFteyRFeGNsdWRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdm90ZSBvcHRpb24KICAgIGlmICggISRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufSBlcSAnVm90ZVBvaW50JyApIHsKICAgICAgICAkR2V0UGFyYW17J1ZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KCiAgICAjIGdldCByYXRlIG9wdGlvbgogICAgaWYgKCAhJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICRHZXRQYXJhbXsnUmF0ZVNlYXJjaE9wdGlvbjo6Tm9uZSd9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgIH0KICAgIGVsc2lmICggJEdldFBhcmFte1JhdGVTZWFyY2hPcHRpb259IGVxICdSYXRlUG9pbnQnICkgewogICAgICAgICRHZXRQYXJhbXsnUmF0ZVNlYXJjaE9wdGlvbjo6UmF0ZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQoKICAgICMgZ2V0IHRpbWUgb3B0aW9uCiAgICBpZiAoICEkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9ICkgewogICAgICAgICRHZXRQYXJhbXsnVGltZVNlYXJjaFR5cGU6Ok5vbmUnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CiAgICBlbHNpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50J30gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgfQogICAgZWxzaWYgKCAkR2V0UGFyYW17VGltZVNlYXJjaFR5cGV9IGVxICdUaW1lU2xvdCcgKSB7CiAgICAgICAgJEdldFBhcmFteydUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QnfSA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICB9CgogICAgIyBzZXQgcmVzdWx0IGZvcm0gRU5WCiAgICBpZiAoICEkR2V0UGFyYW17UmVzdWx0Rm9ybX0gKSB7CiAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19ID0gJyc7CiAgICB9CiAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewogICAgICAgICRTZWFyY2hQYWdlU2hvd24gPSAkU2VhcmNoTGltaXQ7CiAgICB9CgogICAgIyBjaGVjayByZXF1ZXN0CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnT3BlblNlYXJjaERlc2NyaXB0aW9uJyApIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaE9wZW5TZWFyY2hEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnT3BlblNlYXJjaERlc2NyaXB0aW9uLnhtbCcsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3htbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHJlc3VsdCBwYWdlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyAmJiAhJFNlbGYtPntFcmFzZVRlbXBsYXRlfSApIHsKCiAgICAgICAgIyBkeW5hbWljIGZpZWxkcyBzZWFyY2ggcGFyYW1ldGVycyBmb3IgRkFRIHNlYXJjaAogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwogICAgICAgIG15ICVEeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5OwoKICAgICAgICBEWU5BTUlDRklFTERDT05GSUc6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dXJlID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gJUR5bmFtaWNGaWVsZFZhbHVlcyB0byBkaXNjYXJkIHRob3NlIHdoZXJlIHRoZQogICAgICAgICAgICAgICAgIyB2YWx1ZSB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byBnZXQKICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKTsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgcHJvZmlsZQogICAgICAgICAgICAgICAgbXkgJFNlYXJjaFBhcmFtZXRlciA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICA9PiAkUHJlZmVyZW5jZS0+e1R5cGV9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBzZWFyY2ggcGFyYW1ldGVyCiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJFNlYXJjaFBhcmFtZXRlciApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0KICAgICAgICAgICAgICAgICAgICAgICAgPSAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgdmFsdWUgdG8gZGlzcGxheQogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA9ICRTZWFyY2hQYXJhbWV0ZXItPntEaXNwbGF5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICBpZiAoICRHZXRQYXJhbXtGdWxsdGV4dH0gKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXtDb250ZW50U2VhcmNofSA9ICdPUic7CiAgICAgICAgICAgICRHZXRQYXJhbXtXaGF0fSAgICAgICAgICA9ICRHZXRQYXJhbXtGdWxsdGV4dH07CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdm90ZXMgc2VhcmNoCiAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte1ZvdGVTZWFyY2h9ICkgJiYgJEdldFBhcmFte1ZvdGVTZWFyY2hPcHRpb259ICkgewogICAgICAgICAgICAkR2V0UGFyYW17Vm90ZXN9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1ZvdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17Vm90ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSByYXRlIHNlYXJjaAogICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtSYXRlU2VhcmNofSApICYmICRHZXRQYXJhbXtSYXRlU2VhcmNoT3B0aW9ufSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1JhdGV9ID0gewogICAgICAgICAgICAgICAgJEdldFBhcmFte1JhdGVTZWFyY2hUeXBlfSA9PiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0KICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICVUaW1lTWFwID0gKAogICAgICAgICAgICBJdGVtQ3JlYXRlID0+ICdUaW1lJywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRpbWVUeXBlICggc29ydCBrZXlzICVUaW1lTWFwICkgewoKICAgICAgICAgICAgIyBnZXQgY3JlYXRlIHRpbWUgc2V0dGluZ3MKICAgICAgICAgICAgaWYgKCAhJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nIHdpdGggdGltZSBzdHVmZgogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVTbG90JyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyhNb250aCBEYXkpKSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0JyAuICRLZXkgfSApOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wJyAuICRLZXkgfQogICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0b3AnIC4gJEtleSB9ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0RGF5JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVOZXdlckRhdGUnIH0gPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnRZZWFyJyB9IC4gJy0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVN0YXJ0TW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RhcnREYXknIH0KICAgICAgICAgICAgICAgICAgICAgICAgLiAnIDAwOjAwOjAwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICYmICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcFllYXInIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyRGF0ZScgfSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wWWVhcicgfSAuICctJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVTdG9wTW9udGgnIH0gLiAnLScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lU3RvcERheScgfQogICAgICAgICAgICAgICAgICAgICAgICAuICcgMjM6NTk6NTknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZU1hcHskVGltZVR5cGV9IC4gJ1NlYXJjaFR5cGUnIH0gZXEgJ1RpbWVQb2ludCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9CiAgICAgICAgICAgICAgICAgICAgJiYgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50U3RhcnQnIH0KICAgICAgICAgICAgICAgICAgICAmJiAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpbWUgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtaW51dGUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRGb3JtYXQnIH0gZXEgJ2hvdXInICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVGltZSA9ICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludCcgfSAqIDYwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnZGF5JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpbWUgPSAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnQnIH0gKiA2MCAqIDI0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAnd2VlaycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50Rm9ybWF0JyB9IGVxICdtb250aCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDMwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludEZvcm1hdCcgfSBlcSAneWVhcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaW1lID0gJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZVBvaW50JyB9ICogNjAgKiAyNCAqIDM2NTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lUG9pbnRTdGFydCcgfSBlcSAnQmVmb3JlJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbW9yZSB0aGFuIC4uLiBhZ28KICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU9sZGVyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVQb2ludFN0YXJ0JyB9IGVxICdOZXh0JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aGluIG5leHQKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJFRpbWVUeXBlIC4gJ1RpbWVPbGRlck1pbnV0ZXMnIH0gPSAtJFRpbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGhpbiBsYXN0IC4uLgogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICRUaW1lVHlwZSAuICdUaW1lT2xkZXJNaW51dGVzJyB9ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyAkVGltZVR5cGUgLiAnVGltZU5ld2VyTWludXRlcycgfSA9ICRUaW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJEZBUU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgICAgICBteSAkSW50ZXJmYWNlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICBOYW1lICAgPT4gJ3B1YmxpYycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gRkFRIHNlYXJjaAogICAgICAgIG15IEBWaWV3YWJsZUl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgID0+IFskT3JkZXJCeV0sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICAgICA9PiAkSW50ZXJmYWNlU3RhdGVzLAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgICAgID0+ICRJbnRlcmZhY2UsCiAgICAgICAgICAgIENvbnRlbnRTZWFyY2hQcmVmaXggPT4gJyonLAogICAgICAgICAgICBDb250ZW50U2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICApOwoKICAgICAgICBteSAkTXVsdGlMYW5ndWFnZSAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICAgICAjIENTViBvdXRwdXQKICAgICAgICBpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnQ1NWJyApIHsKICAgICAgICAgICAgbXkgQFRtcENTVkhlYWQ7CiAgICAgICAgICAgIG15IEBDU1ZIZWFkOwogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBGQVEgZHluYW1pYyBmaWVsZHMgZm9yIENTViBkaXNwbGF5CiAgICAgICAgICAgIG15ICRDU1ZEeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgICAgICAgICAgVmFsaWQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgICAgICAgICAgRmllbGRGaWx0ZXIgPT4gJENvbmZpZy0+e1NlYXJjaENTVkR5bmFtaWNGaWVsZH0gfHwge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICAgICAgICAgIG15IEBDU1ZDdXN0b21lckR5bmFtaWNGaWVsZHM7CiAgICAgICAgICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgIG15ICRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRENPTkZJRyBpZiAhJElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlOwoKICAgICAgICAgICAgICAgIHB1c2ggQENTVkN1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkQ1NWRHluYW1pY0ZpZWxkID0gXEBDU1ZDdXN0b21lckR5bmFtaWNGaWVsZHM7CgogICAgICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoQFZpZXdhYmxlSXRlbUlEcykgewoKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCBpbmZvIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICBteSAlQ1NWSW5mbyA9ICglRkFRRGF0YSk7CiAgICAgICAgICAgICAgICAkQ1NWSW5mb3tDaGFuZ2VkfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBDU1YgcXVvdGUKICAgICAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgICAgIEBUbXBDU1ZIZWFkID0gcXcoIEZBUU51bWJlciBUaXRsZSBDYXRlZ29yeSk7CiAgICAgICAgICAgICAgICAgICAgQENTVkhlYWQgICAgPSBxdyggRkFRTnVtYmVyIFRpdGxlIENhdGVnb3J5KTsKCiAgICAgICAgICAgICAgICAgICAgIyBpbnNlcnQgbGFuZ3VhZ2UgaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICdMYW5ndWFnZSc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAnQ2hhbmdlZCc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0NoYW5nZWQnOwoKICAgICAgICAgICAgICAgICAgICAjIGluY2x1ZGUgdGhlIHNlbGVjdGVkIGR5bmFtaWMgZmllbGRzIG9uIENWUyByZXN1bHRzCiAgICAgICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gZXEgJyc7CgogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbXkgQERhdGE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBoZWFkZXIgaXMgYSBkeW5hbWljIGZpZWxkIGFuZCBnZXQgdGhlIHZhbHVlIGZyb20gZHluYW1pYyBmaWVsZAogICAgICAgICAgICAgICAgICAgICMgYmFja2VuZAogICAgICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciA9fiBte1xBIER5bmFtaWNGaWVsZF8gKCBbYS16QS1aXGRdKyApIFx6fXhtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgbG9vcCBvdmVyIHRoZSBkeW5hbWljIGZpZWxkcyBjb25maWd1cmVkIGZvciBDU1Ygb3V0cHV0CiAgICAgICAgICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNraXAgYWxsIGZpZWxkcyB0aGF0IGRvZXMgbm90IG1hdGNoIHdpdGggY3VycmVudCBmaWVsZCBuYW1lICgkMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCBvdXQgdGhlICdEeW5hbWljRmllbGRfJyBwcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBuZSAkMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aGUgdmFsdWUgYXMgZm9yIHByaW50ICh0byBjb3JyZWN0bHkgZGlzcGxheSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkQ1NWSW5mb3skSGVhZGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkVmFsdWVTdHJnLT57VmFsdWV9OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGVybWluYXRlIHRoZSBEWU5BTUlDRklFTEQgbG9vcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIHJldHJpZXZlIGRhdGEgZnJvbSBGQVEgaXRlbQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRIZWFkZXIgZXEgJ0ZBUU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3snTnVtYmVyJ307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyIGVxICdDYXRlZ29yeScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3snQ2F0ZWdvcnlOYW1lJ307CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkQ1NWSW5mb3skSGVhZGVyfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQENTVkRhdGEsIFxARGF0YTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDU1YgcXVvdGUKICAgICAgICAgICAgIyB0cmFuc2xhdGUgbm9uIGV4aXN0aW5nIGhlYWRlciBtYXkgcmVzdWx0IGluIGEgZ2FyYmFnZSBmaWxlCiAgICAgICAgICAgIGlmICggIUBDU1ZIZWFkICkgewogICAgICAgICAgICAgICAgQFRtcENTVkhlYWQgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwogICAgICAgICAgICAgICAgQENTVkhlYWQgICAgPSBxdyhGQVFOdW1iZXIgVGl0bGUgQ2F0ZWdvcnkpOwoKICAgICAgICAgICAgICAgICMgaW5zZXJ0IGxhbmd1YWdlIGhlYWRlcgogICAgICAgICAgICAgICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAVG1wQ1NWSGVhZCwgJ0xhbmd1YWdlJzsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAnTGFuZ3VhZ2UnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQFRtcENTVkhlYWQsICdDaGFuZ2VkJzsKICAgICAgICAgICAgICAgIHB1c2ggQENTVkhlYWQsICAgICdDaGFuZ2VkJzsKCiAgICAgICAgICAgICAgICAjIGluY2x1ZGUgdGhlIHNlbGVjdGVkIGR5bmFtaWMgZmllbGRzIG9uIENTViByZXN1bHRzCiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JENTVkR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ1NWSGVhZCwgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgaGVhZGVycwogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIHJlcGxhY2UgRkFRTnVtYmVyIGhlYWRlciB3aXRoIHRoZSBjdXJyZW50IEZBUUhvb2sgZnJvbSBjb25maWcKICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciBlcSAnRkFRTnVtYmVyJyApIHsKICAgICAgICAgICAgICAgICAgICAkSGVhZGVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXNzZW1ibGUgQ1NWIGRhdGEKICAgICAgICAgICAgbXkgJENTViA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDU1YnKS0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgSGVhZCAgICAgID0+IFxAQ1NWSGVhZCwKICAgICAgICAgICAgICAgIERhdGEgICAgICA9PiBcQENTVkRhdGEsCiAgICAgICAgICAgICAgICBTZXBhcmF0b3IgPT4gJFNlbGYtPntVc2VyQ1NWU2VwYXJhdG9yfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmV0dXJuIENTViB0byBkb3dubG9hZC4KICAgICAgICAgICAgbXkgJENTVkZpbGUgPSAnRkFRX3NlYXJjaCc7CgogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJERhdGVUaW1lICAgICAgID0gJERhdGVUaW1lT2JqZWN0LT5HZXQoKTsKICAgICAgICAgICAgbXkgJFkgICAgICAgICAgICAgID0gJERhdGVUaW1lLT57WWVhcn07CiAgICAgICAgICAgIG15ICRNICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TW9udGh9ICk7CiAgICAgICAgICAgIG15ICREICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57RGF5fSApOwogICAgICAgICAgICBteSAkaCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0hvdXJ9ICk7CiAgICAgICAgICAgIG15ICRtICAgICAgICAgICAgICA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lLT57TWludXRlfSApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRDU1ZGaWxlIC4gIl8iIC4gIiRZLSRNLSREIiAuICJfIiAuICIkaC0kbS5jc3YiLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gInRleHQvY3N2OyBjaGFyc2V0PSIgLiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJENTViwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ1ByaW50JyApIHsKCiAgICAgICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICAgICBteSBAUERGRGF0YTsKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCB0YWJsZSBibG9jawogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4geyVGQVFEYXRhfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IGNoYW5nZSBkYXRlIHRvIGxvbmcgZm9ybWF0CiAgICAgICAgICAgICAgICBteSAkQ2hhbmdlZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPkZvcm1hdFRpbWVTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2hhbmdlZH0sCiAgICAgICAgICAgICAgICAgICAgJ0RhdGVGb3JtYXRMb25nJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgUERGIFJvd3MKICAgICAgICAgICAgICAgIG15IEBQREZSb3c7CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe051bWJlcn07CiAgICAgICAgICAgICAgICBwdXNoIEBQREZSb3csICRGQVFEYXRhe1RpdGxlfTsKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7Q2F0ZWdvcnlOYW1lfTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBsYW5ndWFnZSByb3cKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJEZBUURhdGF7TGFuZ3VhZ2V9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRGQVFEYXRhe1N0YXRlfTsKICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgICRDaGFuZ2VkOwogICAgICAgICAgICAgICAgcHVzaCBAUERGRGF0YSwgXEBQREZSb3c7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUERGIE91dHB1dAogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0ZBUScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQYWdlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAgICAgICAgIG15ICRUaW1lID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAgICAgbXkgJE1heFBhZ2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgICAgIGlmICggISRNYXhQYWdlcyB8fCAkTWF4UGFnZXMgPCAxIHx8ICRNYXhQYWdlcyA+IDEwMDAgKSB7CiAgICAgICAgICAgICAgICAkTWF4UGFnZXMgPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRDZWxsRGF0YTsKCiAgICAgICAgICAgICMgb3V0cHV0ICdObyBSZXN1bHQnLCBpZiBubyBjb250ZW50IHdhcyBnaXZlbgogICAgICAgICAgICBpZiAoQFBERkRhdGEpIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgaGVhZGVyCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdUaXRsZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDYXRlZ29yeScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwoKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIGNvcnJlY3QgaGVhZGVyIGluZGV4CiAgICAgICAgICAgICAgICBteSAkTmV4dEhlYWRlckluZGV4ID0gMzsKCiAgICAgICAgICAgICAgICAjIGFkZCBsYW5ndWFnZSBoZWFkZXIKICAgICAgICAgICAgICAgIGlmICgkTXVsdGlMYW5ndWFnZSkgewogICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bM10tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFuZ3VhZ2UnKTsKICAgICAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAgICAgJE5leHRIZWFkZXJJbmRleCAgICAgICAgICAgICAgID0gNDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyROZXh0SGVhZGVySW5kZXhdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WyROZXh0SGVhZGVySW5kZXhdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CgogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsgJE5leHRIZWFkZXJJbmRleCArIDEgXS0+e0NvbnRlbnR9CiAgICAgICAgICAgICAgICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NoYW5nZWQnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bICROZXh0SGVhZGVySW5kZXggKyAxIF0tPntGb250fSA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgY29udGVudCBhcnJheQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAxOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXJDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29udGVudCAoIEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WyRDb3VudGVyUm93XS0+WyRDb3VudGVyQ29sdW1uXS0+e0NvbnRlbnR9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudGVyQ29sdW1uKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05vIFJlc3VsdCEnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICBteSAlUGFnZVBhcmFtOwogICAgICAgICAgICAkUGFnZVBhcmFte1BhZ2VPcmllbnRhdGlvbn0gPSAnbGFuZHNjYXBlJzsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luUmlnaHR9ICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkJvdHRvbX0gICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGVyUmlnaHR9ICAgICA9ICRUaXRsZTsKCiAgICAgICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX0gICAgICAgICAgICA9ICRDZWxsRGF0YTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICAgICAgICAgIyBjcmVhdGUgbmV3IFBERiBkb2N1bWVudAogICAgICAgICAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RhcnQgdGFibGUgb3V0cHV0CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aXRsZQogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCAgICAgPT4gJFRpbWUsCiAgICAgICAgICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTE0LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgUEFHRToKICAgICAgICAgICAgZm9yIG15ICRQYWdlQ291bnQgKCAyIC4uICRNYXhQYWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoICVUYWJsZVBhcmFtLCApOwoKICAgICAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3IgYW5vdGhlciBwYWdlCiAgICAgICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgJyAuICRQYWdlQ291bnQsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBSZXR1cm4gdGhlIFBERiBkb2N1bWVudC4KICAgICAgICAgICAgbXkgJEZpbGVuYW1lID0gJ0ZBUV9zZWFyY2gnOwoKICAgICAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICAgICAgICAgIG15ICREYXRlVGltZSAgICAgICA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CiAgICAgICAgICAgIG15ICRZICAgICAgICAgICAgICA9ICREYXRlVGltZS0+e1llYXJ9OwogICAgICAgICAgICBteSAkTSAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e01vbnRofSApOwogICAgICAgICAgICBteSAkRCAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e0RheX0gKTsKICAgICAgICAgICAgbXkgJGggICAgICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkRGF0ZVRpbWUtPntIb3VyfSApOwogICAgICAgICAgICBteSAkbSAgICAgICAgICAgICAgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZS0+e01pbnV0ZX0gKTsKCiAgICAgICAgICAgIG15ICRQREZTdHJpbmcgPSAkUERGT2JqZWN0LT5Eb2N1bWVudE91dHB1dCgpOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSAuICJfIiAuICIkWS0kTS0kRCIgLiAiXyIgLiAiJGgtJG0ucGRmIiwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFBERlN0cmluZywKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICApOwoKICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgIyBpZiB0aGVyZSBhcmUgcmVzdWx0cyB0byBzaG93CiAgICAgICAgaWYgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGJhY2sgbGluayBmb3IgRkFRIFpvb20gc2NyZWVuCiAgICAgICAgICAgIG15ICRab29tQmFja0xpbmsgPSAiQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoOyIKICAgICAgICAgICAgICAgIC4gJFNlbGYtPntQcm9maWxlfQogICAgICAgICAgICAgICAgLiAiU29ydEJ5PSRTb3J0Qnk7T3JkZXI9JE9yZGVyQnk7U3RhcnRIaXQ9JFN0YXJ0SGl0IjsKCiAgICAgICAgICAgICMgZW5jb2RlIGJhY2sgbGluayB0byBCYXNlNjQgZm9yIGVhc3kgSFRNTCB0cmFuc3BvcnQKICAgICAgICAgICAgJFpvb21CYWNrTGluayA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCgkWm9vbUJhY2tMaW5rKTsKCiAgICAgICAgICAgIG15ICRPdmVydmlld0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6UHVibGljRkFRT3ZlcnZpZXciKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSB0aWNrZXQgZHluYW1pYyBmaWVsZHMgZm9yIG92ZXJ2aWV3IGRpc3BsYXkKICAgICAgICAgICAgbXkgJE92ZXJ2aWV3RHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRPdmVydmlld0NvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfHwge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlZHVjZSB0aGUgZHluYW1pYyBmaWVsZHMgdG8gb25seSB0aGUgb25lcyB0aGF0IGFyZSBkZXNpZ25lZCBmb3IgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICAgICAgICAgIG15IEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkczsKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JE92ZXJ2aWV3RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICBteSAkSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZTsKCiAgICAgICAgICAgICAgICBwdXNoIEBPdmVydmlld0N1c3RvbWVyRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkT3ZlcnZpZXdEeW5hbWljRmllbGQgPSBcQE92ZXJ2aWV3Q3VzdG9tZXJEeW5hbWljRmllbGRzOwoKICAgICAgICAgICAgIyBEeW5hbWljIGZpZWxkcyB0YWJsZSBoZWFkZXJzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRPdmVydmlld0R5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgICA9ICcnOwogICAgICAgICAgICAgICAgICAgIG15ICRPcmRlciA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRTb3J0QnkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNvcnRCeSBlcQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntPcmRlcn0gJiYgKCAkU2VsZi0+e09yZGVyfSBlcSAnVXAnICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXIgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXIgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlciAgICAgICAgICAgID0+ICRPcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0hlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBWaWV3YWJsZUl0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgc2VhcmNoIHJlc3VsdAogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRTdGFydEhpdAogICAgICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VhcmNoUGFnZVNob3duICsgJFN0YXJ0SGl0ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IEZBUSBkYXRhIGRldGFpbHMKICAgICAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJEZBUURhdGF7Q2xlYW5UaXRsZX0gPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICBTaXplICA9PiAkQ29uZmlnLT57VGl0bGVTaXplfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBibG9ja3MgdG8gdGVtcGxhdGUKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpvb21CYWNrTGluayA9PiAkWm9vbUJhY2tMaW5rLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlIGRhdGEKICAgICAgICAgICAgICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHslRkFRRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIER5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskT3ZlcnZpZXdEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRGQVFEYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHNob3cgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBsb29rdXAgdGFibGUgZm9yIGF0dHJpYnV0ZSBzZXR0aW5ncwogICAgICAgIG15ICVBdHRyaWJ1dGVNYXAgPSAoCiAgICAgICAgICAgIE51bWJlciA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZBUUhvb2snKSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBUaXRsZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBLZXl3b3JkID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnS2V5d29yZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRnVsbHRleHQgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRHMgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVGltZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDcmVhdGUgVGltZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVm90ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdWb3RlcycsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUmF0ZVNlYXJjaFR5cGUgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdSYXRlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgcHJpbnQgZWFjaCBhdHRyaWJ1dGUgaW4gc2VhcmNoIHJlc3VsdHMgYXJlYS4KICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJUF0dHJpYnV0ZU1hcCApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgZGVmaW5lZCBieSB0aGUgdXNlcgogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskQXR0cmlidXRlfSApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGUgbmFtZSBhbmQgdHJhbnNsYXRlIGl0IGlmIGFwcGxpZXMKICAgICAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVOYW1lID0gJEF0dHJpYnV0ZU1hcHskQXR0cmlidXRlfS0+e05hbWV9OwogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlTWFweyRBdHRyaWJ1dGV9LT57VHJhbnNsYXRhYmxlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQXR0cmlidXRlTmFtZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZVZhbHVlOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlIHZhbHVlcyBpcyBhbiBhcnJheSB0byBwYXJzZSBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBDYXRlZ29yeSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgZXEgJ0NhdGVnb3J5SURzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBsb25nIG5hbWUgZm9yIGFsbCBwdWJsaWMgY2F0ZWdvcmllcwogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJEZBUU9iamVjdC0+R2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBjYXRlZ29yeSBpZCB0byBjYXRlZ29yeSBsb25nIG5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgQENhdGVnb3J5TmFtZXM7CiAgICAgICAgICAgICAgICAgICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ2F0ZWRvcnlJRCAoIEB7ICRHZXRQYXJhbXskQXR0cmlidXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDQVRFR09SWUlEIGlmICEkQ2F0ZWdvcnlMaXN0LT57JENhdGVkb3J5SUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ2F0ZWdvcnlOYW1lcywgJENhdGVnb3J5TGlzdC0+eyRDYXRlZG9yeUlEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUgYSBzdHJpbmcgd2l0aCBhbGwgc2VsZWN0ZWQgY2F0ZWdvcnkgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gam9pbiggIiArICIsIEBDYXRlZ29yeU5hbWVzICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIExhbmd1YWdlSURzCiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdMYW5ndWFnZUlEcycgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgZWFjaCBsYW5ndWFnZSBpZCB0byBsYW5ndWFnZSBuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBMYW5ndWFnZU5hbWVzOwogICAgICAgICAgICAgICAgICAgICAgICBMQU5HVUFHRUlEOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJExhbmd1YWdlSUQgKCBAeyAkR2V0UGFyYW17JEF0dHJpYnV0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMYW5ndWFnZU5hbWUgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRMYW5ndWFnZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgTEFOR1VBR0VJRCBpZiAhJExhbmd1YWdlTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQExhbmd1YWdlTmFtZXMsICRMYW5ndWFnZU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGEgc3RyaW5nIHdpdGggYWxsIHNlbGVjdGVkIGxhbmd1YWdlIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9IGpvaW4oICIgKyAiLCBATGFuZ3VhZ2VOYW1lcyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSBpcyBhbiBzY2FsYXIgYW5kIGNhbiBiZSBzZXQgZGlyZWN0bHkKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVWYWx1ZSA9ICRHZXRQYXJhbXskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnVGltZVNlYXJjaFR5cGUnICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtUaW1lU2VhcmNoVHlwZX0gZXEgJ1RpbWVTbG90JyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdGFydERhdGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJy0nIC4gJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICctJyAuICRHZXRQYXJhbXtJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCcsICdEYXRlRm9ybWF0U2hvcnQnCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkU3RvcERhdGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5Gb3JtYXRUaW1lU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lU3RvcFllYXJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wTW9udGh9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnLScgLiAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wRGF5fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAwMDowMDowMCcsICdEYXRlRm9ybWF0U2hvcnQnCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlICAgICAgPSBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQgYmV0d2VlbicpOwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkU3RhcnREYXRlIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnYW5kJykgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFN0b3BEYXRlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXBwaW5nID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xhc3QnICAgPT4gVHJhbnNsYXRhYmxlKCdDcmVhdGVkIHdpdGhpbiB0aGUgbGFzdCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JlZm9yZScgPT4gVHJhbnNsYXRhYmxlKCdDcmVhdGVkIG1vcmUgdGhhbiAuLi4gYWdvJyksCiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlICAgICAgPSAkTWFwcGluZy0+eyAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSB9OwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkR2V0UGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0gLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9IC4gJyhzKScKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdWb3RlU2VhcmNoVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRHZXRQYXJhbXtWb3RlU2VhcmNoT3B0aW9ufTsKICAgICAgICAgICAgICAgICAgICAkQXR0cmlidXRlVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRHZXRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gKSAuICcgJwogICAgICAgICAgICAgICAgICAgICAgICAuICRHZXRQYXJhbXtWb3RlU2VhcmNofTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnUmF0ZVNlYXJjaFR5cGUnICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkR2V0UGFyYW17UmF0ZVNlYXJjaE9wdGlvbn07CiAgICAgICAgICAgICAgICAgICAgJEF0dHJpYnV0ZVZhbHVlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkR2V0UGFyYW17UmF0ZVNlYXJjaFR5cGV9ICkgLiAnICcKICAgICAgICAgICAgICAgICAgICAgICAgLiAkR2V0UGFyYW17UmF0ZVNlYXJjaH0gLiAnJSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoVGVybXMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgPT4gJEF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQXR0cmlidXRlVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFRlcm1zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hEaXNwbGF5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIHNlYXJjaCBuYXZpZ2F0aW9uIGJhcgogICAgICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+ICRTZWFyY2hMaW1pdCwKICAgICAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICAgICAgUGFnZVNob3duID0+ICRTZWFyY2hQYWdlU2hvd24sCiAgICAgICAgICAgIEFsbEhpdHMgICA9PiAkQ291bnRlciwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICJBY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2giLAogICAgICAgICAgICBMaW5rID0+CiAgICAgICAgICAgICAgICAiJFNlbGYtPntQcm9maWxlfVNvcnRCeT0kU29ydEJ5O09yZGVyPSRPcmRlckJ5OyIsCiAgICAgICAgICAgIElEUHJlZml4ID0+ICJQdWJsaWNGQVFTZWFyY2giLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBmb290ZXIgZmlsdGVyIC0gc2hvdyBvbmx5IGlmIG1vcmUgdGhlIG9uZSBwYWdlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICggZGVmaW5lZCAkUGFnZU5hdntUb3RhbEhpdHN9ICYmICggJFBhZ2VOYXZ7VG90YWxIaXRzfSA+ICRTZWFyY2hQYWdlU2hvd24gKSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdpbmF0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHN0YXJ0IEhUTUwgcGFnZQogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigpOwoKICAgICAgICAjU2V0IHRoZSBTb3J0QnkgQ2xhc3MKICAgICAgICBteSAkU29ydENsYXNzOwoKICAgICAgICAjIHRoaXMgc2V0cyB0aGUgb3Bwb3NpdGUgdG8gdGhlIE9yZGVyQnkgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICRTb3J0Q2xhc3MgPSAnU29ydEFzY2VuZGluZyc7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9yZGVyQnkgZXEgJ1VwJyApIHsKICAgICAgICAgICAgJFNvcnRDbGFzcyA9ICdTb3J0RGVzY2VuZGluZyc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgU29ydEJ5IENsYXNzIHRvIHRoZSBjb3JyZWN0IGZpZWxkCiAgICAgICAgbXkgJUNTU1NvcnQ7CiAgICAgICAgbXkgJENTU1NvcnRCeSA9ICRTb3J0QnkgLiAnU29ydCc7CiAgICAgICAgJENTU1NvcnR7JENTU1NvcnRCeX0gPSAkU29ydENsYXNzOwoKICAgICAgICBteSAlTmV3T3JkZXIgPSAoCiAgICAgICAgICAgIERvd24gPT4gVHJhbnNsYXRhYmxlKCdVcCcpLAogICAgICAgICAgICBVcCAgID0+IFRyYW5zbGF0YWJsZSgnRG93bicpLAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBsYW5ndWFnZSBoZWFkZXIKICAgICAgICBpZiAoJE11bHRpTGFuZ3VhZ2UpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJMYW5ndWFnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJUNTU1NvcnQsCiAgICAgICAgICAgICAgICAgICAgT3JkZXIgPT4gJE5ld09yZGVyeyRPcmRlckJ5fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2hSZXN1bHRTaG9ydCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgICVDU1NTb3J0LAogICAgICAgICAgICAgICAgT3JkZXIgICA9PiAkTmV3T3JkZXJ7JE9yZGVyQnl9LAogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgZW1wdHkgc2VhcmNoIHNpdGUKICAgIGVsc2UgewoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgSFRNTAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUx7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICRQcmVmZXJlbmNlLT57VHlwZX0gfQogICAgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAkQ29uZmlnLT57RGVmYXVsdHN9LT57RHluYW1pY0ZpZWxkfS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlybWF0aW9uQ2hlY2tib3hlcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIHNlYXJjaCBtYXNrCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+TWFza0Zvcm0oCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICBBcmVhICAgICAgICAgICAgID0+ICdQdWJsaWMnLAogICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+IFwlRHluYW1pY0ZpZWxkSFRNTAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgpzdWIgTWFza0Zvcm0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkVHJlZVZpZXcgPSAwOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6Okxpc3RUeXBlJykgZXEgJ3RyZWUnICkgewogICAgICAgICRUcmVlVmlldyA9IDE7CiAgICB9CgogICAgIyBzZXQgb3V0cHV0IGZvcm1hdHMgbGlzdAogICAgbXkgJVJlc3VsdEZvcm0gPSAoCiAgICAgICAgTm9ybWFsID0+IFRyYW5zbGF0YWJsZSgnTm9ybWFsJyksCiAgICAgICAgUHJpbnQgID0+IFRyYW5zbGF0YWJsZSgnUHJpbnQnKSwKICAgICAgICBDU1YgICAgPT4gVHJhbnNsYXRhYmxlKCdDU1YnKQogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdHMgbGlzdAogICAgJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVSZXN1bHRGb3JtfSwKICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtSZXN1bHRGb3JtfSB8fCAnTm9ybWFsJywKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBidWlsZCBsYW5ndWFnZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtMYW5ndWFnZXNTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4geyVMYW5ndWFnZXN9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xhbmd1YWdlSURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xhbmd1YWdlSURzfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRGQVFPYmplY3QtPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGJ1aWxkIGNhdGVnb3JpZXMgb3V0cHV0IGxpc3QKICAgICRQYXJhbXtDYXRlZ29yaWVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgID0+ICRDYXRlZ29yaWVzLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NhdGVnb3J5SURzJywKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0NhdGVnb3J5SURzfSwKICAgICAgICBUcmVlVmlldyAgID0+ICRUcmVlVmlldywKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRXF1YWxzJyksCiAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gVHJhbnNsYXRhYmxlKCdHcmVhdGVyIHRoYW4nKSwKICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiBUcmFuc2xhdGFibGUoJ0dyZWF0ZXIgdGhhbiBlcXVhbHMnKSwKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1NtYWxsZXIgdGhhbicpLAogICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFRyYW5zbGF0YWJsZSgnU21hbGxlciB0aGFuIGVxdWFscycpLAogICAgKTsKCiAgICAkUGFyYW17Vm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1ZvdGVTZWFyY2hUeXBlJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtWb3RlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkUGFyYW17UmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVWb3RpbmdPcGVyYXRvcnMsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1JhdGVTZWFyY2hUeXBlJywKICAgICAgICBTaXplICAgICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtSYXRlU2VhcmNoVHlwZX0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKICAgICRQYXJhbXtSYXRlU2VhcmNoU2VsZWN0aW9uU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAwICAgPT4gJzAlJywKICAgICAgICAgICAgMjUgID0+ICcyNSUnLAogICAgICAgICAgICA1MCAgPT4gJzUwJScsCiAgICAgICAgICAgIDc1ICA9PiAnNzUlJywKICAgICAgICAgICAgMTAwID0+ICcxMDAlJywKICAgICAgICB9LAogICAgICAgIFNvcnQgICAgICAgID0+ICdOdW1lcmljS2V5JywKICAgICAgICBOYW1lICAgICAgICA9PiAnUmF0ZVNlYXJjaCcsCiAgICAgICAgU2l6ZSAgICAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17UmF0ZVNlYXJjaH0gfHwgJycsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBNdWx0aXBsZSAgICA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBbIDEgLi4gNTkgXSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIE5hbWUgICAgICAgID0+ICdJdGVtQ3JlYXRlVGltZVBvaW50JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludH0sCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTGFzdCAgID0+IFRyYW5zbGF0YWJsZSgnd2l0aGluIHRoZSBsYXN0IC4uLicpLAogICAgICAgICAgICBCZWZvcmUgPT4gVHJhbnNsYXRhYmxlKCdtb3JlIHRoYW4gLi4uIGFnbycpLAogICAgICAgIH0sCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICBOYW1lICAgICAgICA9PiAnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0fSB8fCAnTGFzdCcsCiAgICApOwogICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXR9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIG1pbnV0ZSA9PiBUcmFuc2xhdGFibGUoJ21pbnV0ZShzKScpLAogICAgICAgICAgICBob3VyICAgPT4gVHJhbnNsYXRhYmxlKCdob3VyKHMpJyksCiAgICAgICAgICAgIGRheSAgICA9PiBUcmFuc2xhdGFibGUoJ2RheShzKScpLAogICAgICAgICAgICB3ZWVrICAgPT4gVHJhbnNsYXRhYmxlKCd3ZWVrKHMpJyksCiAgICAgICAgICAgIG1vbnRoICA9PiBUcmFuc2xhdGFibGUoJ21vbnRoKHMpJyksCiAgICAgICAgICAgIHllYXIgICA9PiBUcmFuc2xhdGFibGUoJ3llYXIocyknKSwKICAgICAgICB9LAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQnLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0fSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdGFydH0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgJVBhcmFtLAogICAgICAgIFByZWZpeCAgID0+ICdJdGVtQ3JlYXRlVGltZVN0YXJ0JywKICAgICAgICBGb3JtYXQgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBEaWZmVGltZSA9PiAtKCAoIDYwICogNjAgKiAyNCApICogMzAgKSwKICAgICk7CiAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVTdG9wfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJlZml4ID0+ICdJdGVtQ3JlYXRlVGltZVN0b3AnLAogICAgICAgIEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICk7CgogICAgIyBIVE1MIHNlYXJjaCBtYXNrIG91dHB1dAogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU2VhcmNoJywKICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgKTsKCiAgICAjIG91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MKICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEhUTUwgPSAkUGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9OwoKICAgICAgICAgICAgIyBza2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZAogICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0UgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRIVE1MKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICREeW5hbWljRmllbGRIVE1MLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbXVsdGktbGFuZ3VhZ2UgZGVmYXVsdCBvcHRpb24KICAgIG15ICRNdWx0aUxhbmd1YWdlID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Ok11bHRpTGFuZ3VhZ2UnKTsKCiAgICAjIHNob3cgbGFuZ3VhZ2VzIHNlbGVjdAogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgSFRNTCBzZWFyY2ggbWFzayBvdXRwdXQKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljRkFRWm9vbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQgcXcoKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBVc2VySUQgdG8gcm9vdCBiZWNhdXNlIGluIHB1YmxpYyBpbnRlcmZhY2UgdGhlcmUgaXMgbm8gdXNlcgogICAgJFNlbGYtPntVc2VySUR9ID0gMTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CiAgICAkR2V0UGFyYW17SXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJdGVtSUQnICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBpZiAoICEkR2V0UGFyYW17SXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBJdGVtSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBiYWNrIGxpbmsKICAgICRHZXRQYXJhbXtab29tQmFja0xpbmt9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1pvb21CYWNrTGluaycgKSB8fCAnJzsKICAgIGlmICggJEdldFBhcmFte1pvb21CYWNrTGlua30gKSB7CiAgICAgICAgJEdldFBhcmFte1pvb21CYWNrTGlua30gPSBNSU1FOjpCYXNlNjQ6OmRlY29kZV9iYXNlNjQoICRHZXRQYXJhbXtab29tQmFja0xpbmt9ICk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgbXkgQFZhbGlkSURzICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRJRHNHZXQoKTsKICAgIG15ICVWYWxpZElETG9va3VwID0gbWFwIHsgJF8gPT4gMSB9IEBWYWxpZElEczsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBpbnRlcmZhY2Ugc3RhdGUgbGlzdAogICAgbXkgJEludGVyZmFjZVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICAgICAgVHlwZXMgID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpQdWJsaWM6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICgKICAgICAgICAhJEZBUURhdGF7QXBwcm92ZWR9CiAgICAgICAgfHwgISRWYWxpZElETG9va3VweyAkRkFRRGF0YXtWYWxpZElEfSB9CiAgICAgICAgfHwgISRJbnRlcmZhY2VTdGF0ZXMtPnsgJEZBUURhdGF7U3RhdGVUeXBlSUR9IH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgSFRNTFZpZXcgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRGaWVsZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJGaWVsZCIgKTsKCiAgICAgICAgZm9yIG15ICROZWVkZWQgKHF3KCBJdGVtSUQgRmllbGQgKSkgewogICAgICAgICAgICBpZiAoICEkTmVlZGVkICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgRmllbGQgY29udGVudAogICAgICAgIG15ICRGaWVsZENvbnRlbnQgPSAkRkFRT2JqZWN0LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkR2V0UGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgRmllbGQgID0+ICRGaWVsZCwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24KICAgICAgICAkRmllbGRDb250ZW50CiAgICAgICAgICAgID1+IHN7IGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUVpvb20gfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb219Z3htczsKCiAgICAgICAgIyB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgICAgIGluZGV4Wy5dcGwgWz9dIEFjdGlvbj1BZ2VudEZBUSBbJl0oYW1wOyk/IFN1YmFjdGlvbj1Eb3dubG9hZCBbJl0oYW1wOyk/CiAgICAgICAgfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKCiAgICAgICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAgICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gSFRNTCBpZiBuZWVkZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpJdGVtOjpIVE1MJykKICAgICAgICAgICAgJiYgJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0KICAgICAgICAgICAgJiYgJEZBUURhdGF7Q29udGVudFR5cGV9IG5lICd0ZXh0L2h0bWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgKSB8fCAnJzsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBidWlsZCBiYXNlIFVSTCBmb3IgaW5saW5lIGltYWdlcwogICAgICAgIG15ICRTZXNzaW9uSUQgPSAnJzsKICAgICAgICBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPX4gc3sKICAgICAgICAgICAgICAgIChBY3Rpb249UHVibGljRkFRWm9vbTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD1cZCs7RmlsZUlEPVxkKykKICAgICAgICAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICB9CgogICAgICAgICMgcmV0dXJuIGNvbXBsZXRlIEhUTUwgYXMgYW4gYXR0YWNobWVudAogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIG1hbmFnZSBwYXJhbWV0ZXJzCiAgICAgICAgJEdldFBhcmFte0ZpbGVJRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZUlEJyApOwogICAgICAgIGlmICggIWRlZmluZWQgJEdldFBhcmFte0ZpbGVJRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBGaWxlSUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhdHRhY2htZW50cwogICAgICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBGaWxlSUQgPT4gJEdldFBhcmFte0ZpbGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJUZpbGUpIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAlRmlsZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRHZXRQYXJhbXtGaWxlSUR9KSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZhdGFsRXJyb3IoKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgIFZhbHVlID0+ICRGQVFEYXRhe1RpdGxlfSwKICAgICk7CgogICAgIyBzZXQgZGVmYXVsdCBpbnRlcmZhY2Ugc2V0dGluZ3MKICAgIG15ICRJbnRlcmZhY2UgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgcHJlcGFyZSBmaWVsZHMgZGF0YQogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkIChxdyhGaWVsZDEgRmllbGQyIEZpZWxkMyBGaWVsZDQgRmllbGQ1IEZpZWxkNikpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkRkFRRGF0YXskRmllbGR9OwoKICAgICAgICAjIHJld3JpdGUgbGlua3MgdG8gZW1iZWRkZWQgaW1hZ2VzIGZvciBwdWJsaWMgaW50ZXJmYWNlCiAgICAgICAgaWYgKCAkSW50ZXJmYWNlLT57TmFtZX0gZXEgJ3B1YmxpYycgKSB7CgogICAgICAgICAgICAjIHJld3JpdGUgaGFuZGxlIGFuZCBhY3Rpb24KICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfQogICAgICAgICAgICAgICAgPX4gc3sgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRWm9vbSB9e3B1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRWm9vbX1neG1zOwoKICAgICAgICAgICAgIyB0YWtlIGNhcmUgb2Ygb2xkIHN0eWxlIGJlZm9yZSBGQVEgMi4wLngKICAgICAgICAgICAgJEZBUURhdGF7JEZpZWxkfSA9fiBzewogICAgICAgICAgICAgICAgaW5kZXhbLl1wbCBbP10gQWN0aW9uPUFnZW50RkFRIFsmXShhbXA7KT8gU3ViYWN0aW9uPURvd25sb2FkIFsmXShhbXA7KT8KICAgICAgICAgICAgfXtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVpvb207U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDt9Z3htczsKICAgICAgICB9CgogICAgICAgICMgbm8gcXVvdGluZyBpZiBIVE1MIHZpZXcgaXMgZW5hYmxlZAogICAgICAgIG5leHQgRklFTEQgaWYgJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAgICAgIyBIVE1MIHF1b3RpbmcKICAgICAgICAkRkFRRGF0YXskRmllbGR9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgTmV3TGluZSAgICAgICAgPT4gMCwKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEZBUURhdGF7JEZpZWxkfSwKICAgICAgICAgICAgVk1heCAgICAgICAgICAgPT4gNTAwMCwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHZvdGluZyByZXN1bHRzCiAgICAkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9ID0gJExheW91dE9iamVjdC0+R2V0RkFRSXRlbVZvdGluZ1JhdGVDb2xvcigKICAgICAgICBSYXRlID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9LAogICAgKTsKCiAgICBpZiAoICEkUGFyYW17Vm90aW5nUmVzdWx0Q29sb3J9IHx8ICRGQVFEYXRhe1ZvdGVzfSBlcSAnMCcgKSB7CiAgICAgICAgJFBhcmFte1ZvdGluZ1Jlc3VsdENvbG9yfSA9ICdHcmF5JzsKICAgIH0KCiAgICAjIHNob3cgYmFjayBsaW5rCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdCYWNrJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IG11bHRpLWxhbmd1YWdlIG9wdGlvbgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgc2hvdyBsYW5ndWFnZQogICAgaWYgKCRNdWx0aUxhbmd1YWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xhbmd1YWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdm90aW5nIGRlZmF1bHQgb3B0aW9uCiAgICBteSAkVm90aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OlZvdGluZycpOwoKICAgICMgc2hvdyB2b3RlcwogICAgaWYgKCRWb3RpbmcpIHsKCiAgICAgICAgIyBhbHdheXMgZGlzcGxheXMgVm90ZXMgcmVzdWx0IGV2ZW4gaWYgaXRzIDAKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVmlld1ZvdGVzJywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IEZBUSBwYXRoCiAgICBteSAkU2hvd0ZBUVBhdGggPSAkTGF5b3V0T2JqZWN0LT5GQVFQYXRoU2hvdygKICAgICAgICBGQVFPYmplY3QgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIENhdGVnb3J5SUQgID0+ICRGQVFEYXRhe0NhdGVnb3J5SUR9LAogICAgICAgIFBhdGhGb3JJdGVtID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICgkU2hvd0ZBUVBhdGgpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRUGF0aEl0ZW1FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7JUZBUURhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IGtleXdvcmRzIGFzIHNlYXJjaCBsaW5rcwogICAgaWYgKCAkRkFRRGF0YXtLZXl3b3Jkc30gKSB7CgogICAgICAgICMgcmVwbGFjZSBjb21tYXMgYW5kIHNlbWljb2xvbnMKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy8sLyAvZzsKICAgICAgICAkRkFRRGF0YXtLZXl3b3Jkc30gPX4gcy87LyAvZzsKCiAgICAgICAgbXkgQEtleXdvcmRzID0gc3BsaXQgL1xzKy8sICRGQVFEYXRhe0tleXdvcmRzfTsKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKEBLZXl3b3JkcykgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCByYXRpbmcgc3RhcnMKICAgIGlmICgkVm90aW5nKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+RkFRUmF0aW5nU3RhcnNTaG93KAogICAgICAgICAgICBWb3RlUmVzdWx0ID0+ICRGQVFEYXRhe1ZvdGVSZXN1bHR9LAogICAgICAgICAgICBWb3RlcyAgICAgID0+ICRGQVFEYXRhe1ZvdGVzfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGF0dGFjaG1lbnRzIGlmIGFueQogICAgbXkgQEF0dGFjaG1lbnRJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+ICRHZXRQYXJhbXtJdGVtSUR9LAogICAgICAgIFNob3dJbmxpbmUgPT4gMCwKICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRIZWFkZXInLAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudEluZGV4KSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRRGF0YSwKICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyBGQVEgQ29udGVudAogICAgJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICAgICAgRkFRRGF0YSAgICAgICAgID0+IHslRkFRRGF0YX0sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+ICdGQVEnLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9IHx8IHt9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTERDT05GSUc6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJEdldFBhcmFte0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgcHJpbnQgc3RyaW5nIGZvciB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICBteSAkVmFsdWVTdHJnID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyNTAsCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CgogICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGQVFEeW5hbWljRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBsb2cgYWNjZXNzIHRvIHRoaXMgRkFRIGl0ZW0KICAgICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0l0ZW1JRCcgKSwKICAgICAgICBJbnRlcmZhY2UgPT4gJEludGVyZmFjZS0+e05hbWV9LAogICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc3RhcnQgdGVtcGxhdGUgb3V0cHV0CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY0ZBUVpvb20nLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OkZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RkFRJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZyBOYW1lIFVzZXJJRCkpCiAgICB7CiAgICAgICAgZGllICJHb3Qgbm8gJE5lZWRlZCEiIGlmICggISRTZWxmLT57JE5lZWRlZH0gKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVmZXJlbmNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybjsKfQoKc3ViIENvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAoCiAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICApOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAjIHNldCBkZWZhdWx0IGludGVyZmFjZSBzZXR0aW5ncwogICAgbXkgJEludGVyZmFjZSA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRJbnRlcmZhY2VTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dMYXRlc3ROZXdzQm94KAogICAgICAgIEZBUU9iamVjdCAgICAgICA9PiAkRkFRT2JqZWN0LAogICAgICAgIFR5cGUgICAgICAgICAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntUeXBlfSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0FnZW50JywKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gMCwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJEludGVyZmFjZSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJEludGVyZmFjZVN0YXRlcywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnREYXNoYm9hcmRGQVFPdmVydmlldycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgID0+IDAsCiAgICAgICAgICAgIFNpZGViYXJDbGFzcyA9PiAnTWVkaXVtJywKICAgICAgICB9LAogICAgKTsKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXc6OlNtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEkUGFyYW17Sm91cm5hbH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHRoZSBKb3VybmFsIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzdG9yZSB0aGUgam91cm5hbCBsb2NhbGx5CiAgICBteSBASm91cm5hbEVudHJpZXM7CiAgICBpZiAoICRQYXJhbXtKb3VybmFsfSAmJiByZWYgJFBhcmFte0pvdXJuYWx9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQEpvdXJuYWxFbnRyaWVzID0gQHsgJFBhcmFte0pvdXJuYWx9IH07CiAgICB9CgogICAgbXkgQFNob3dDb2x1bW5zOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBzaG93IEpvdXJuYWwgRW50cmllcyBhcyByb3dzCiAgICBpZiAoQEpvdXJuYWxFbnRyaWVzKSB7CgogICAgICAgICMgY2hlY2sgU2hvd0NvbHVtbnMgcGFyYW1ldGVyCiAgICAgICAgaWYgKCAkUGFyYW17U2hvd0NvbHVtbnN9ICYmIHJlZiAkUGFyYW17U2hvd0NvbHVtbnN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIEBTaG93Q29sdW1ucyA9IEB7ICRQYXJhbXtTaG93Q29sdW1uc30gfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgY29sdW1uIGhlYWRlciBibG9ja3MKICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAjIGNhbGwgbWFpbiBibG9jawogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnUmVjb3JkRm9ybScgKTsKCiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAjIGNhbGwgaGVhZGVyIHNwZWNpZmljIGJsb2NrCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgSk9VUk5BTEVOVFJZOgogICAgICAgIGZvciBteSAkSm91cm5hbEVudHJ5IChASm91cm5hbEVudHJpZXMpIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fQogICAgICAgICAgICAgICAgJiYgJENvdW50ZXIgPCAoICRQYXJhbXtQYWdlU2hvd259ICsgJFBhcmFte1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGdldCBGQVEgZGF0YSBmb3IgY29ycnVwdGlvbiBjaGVjawogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRKb3VybmFsRW50cnktPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJEpvdXJuYWxFbnRyeS0+e0NsZWFuU3ViamVjdH0gPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRe1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBTaXplICA9PiAkUGFyYW17VGl0bGVTaXplfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBKT1VSTkFMRU5UUlkgaWYgISVGQVE7CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkQ291bnRlciwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGNvbHVtbiByZWNvcmQgYmxvY2tzCiAgICAgICAgICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskSm91cm5hbEVudHJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgbGlua3MgaWYgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua1N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRKb3VybmFsRW50cnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rRW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRKb3VybmFsRW50cnl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2Ugc2V0IGFuIE5vIEZBUSBKb3VybmFsIG1lc3NhZ2UKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0ZBUUZvdW5kJyApOwogICAgfQoKICAgICMgdXNlIHRlbXBsYXRlCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAkU2VsZi0+e1ZpZXdUeXBlfSwKICAgICAgICAgICAgQ29sdW1uQ291bnQgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0ZBUUl0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBGQVFJdGVtIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBncmFudCBhY2Nlc3MgYnkgZGVmYXVsdAogICAgbXkgJEFjY2VzcyA9IDE7CgogICAgIyBnZXQgZ3JvdXBzCiAgICBteSAkQWN0aW9uID0gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259OwogICAgaWYgKCAkQWN0aW9uIGVxICdBZ2VudExpbmtPYmplY3QnICkgewoKICAgICAgICAjIFRoZSBMaW5rLWxpbmsgaXMgYSBzcGVjaWFsIGNhc2UsIGFzIGl0IGlzIG5vdCBzcGVjaWZpYyB0byBGQVEuCiAgICAgICAgIyBBcyBhIHdvcmthcm91bmQgd2UgaGFyZGNvcmUgdGhhdCBBZ2VudExpbmtPYmplY3QgaXMgdHJlYXRlZCBsaWtlIEFnZW50RkFRRWRpdAogICAgICAgICRBY3Rpb24gPSAnQWdlbnRGQVFFZGl0JzsKICAgIH0KCiAgICAjIGdldCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciB0aGUgc3BlY2lmaWVkIGFjdGlvbgogICAgbXkgJENvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn07CgogICAgbXkgJEdyb3Vwc1JvID0gJENvbmZpZy0+e0dyb3VwUm99IHx8IFtdOwogICAgbXkgJEdyb3Vwc1J3ID0gJENvbmZpZy0+e0dyb3VwfSAgIHx8IFtdOwoKICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgaWYgKCAkQWN0aW9uICYmICggQHskR3JvdXBzUm99IHx8IEB7JEdyb3Vwc1J3fSApICkgewoKICAgICAgICAjIGRlbnkgYWNjZXNzIGJ5IGRlZmF1bHQsIHdoZW4gdGhlcmUgYXJlIGdyb3VwcyB0byBjaGVjawogICAgICAgICRBY2Nlc3MgPSAwOwogICAgICAgIG15ICRIYXNQZXJtaXNzaW9uOwoKICAgICAgICAjIGNoZWNrIHJlYWQgb25seSBncm91cHMKICAgICAgICBST0dST1VQOgogICAgICAgIGZvciBteSAkUm9Hcm91cCAoIEB7JEdyb3Vwc1JvfSApIHsKCiAgICAgICAgICAgICRIYXNQZXJtaXNzaW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJvR3JvdXAsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3JvJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUk9HUk9VUCBpZiAhJEhhc1Blcm1pc3Npb247CiAgICAgICAgICAgIG5leHQgUk9HUk9VUCBpZiAkSGFzUGVybWlzc2lvbiAhPSAxOwoKICAgICAgICAgICAgIyBzZXQgYWNjZXNzCiAgICAgICAgICAgICRBY2Nlc3MgPSAxOwogICAgICAgICAgICBsYXN0IFJPR1JPVVA7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlYWQgd3JpdGUgZ3JvdXBzCiAgICAgICAgUldHUk9VUDoKICAgICAgICBmb3IgbXkgJFJ3R3JvdXAgKCBAeyRHcm91cHNSd30gKSB7CgogICAgICAgICAgICAkSGFzUGVybWlzc2lvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRSd0dyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdydycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgISRIYXNQZXJtaXNzaW9uOwogICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgJEhhc1Blcm1pc3Npb24gIT0gMTsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBvdXRwdXQgbWVudSBpdGVtCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZW51SXRlbScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXsgJFBhcmFte0ZBUUl0ZW19IH0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWd9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgJFBhcmFte0NvdW50ZXJ9Kys7CgogICAgcmV0dXJuICRQYXJhbXtDb3VudGVyfTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpEZWxldGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIFByZXZlbnQgdXNlZCBvbmx5IG9uY2Ugd2FybmluZwp1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgR2V0IFVzZXJJRCBwYXJhbS4KICAgICRTZWxmLT57VXNlcklEfSA9ICRQYXJhbXtVc2VySUR9IHx8IGRpZSAiR290IG5vIFVzZXJJRCEiOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgUnVuIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51OjpHZW5lcmljLgogICAgbXkgJEdlbmVyaWNPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RkFRTWVudTo6R2VuZXJpYy0+bmV3KCBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9ICk7CiAgICAkR2VuZXJpY09iamVjdC0+UnVuKAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgIyBDcmVhdGUgc3RydWN0dXJlIGZvciBKUy4KICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAlSlNEYXRhOwogICAgJEpTRGF0YXsgJFBhcmFte01lbnVJRH0gfSA9IHsKICAgICAgICBFbGVtZW50SUQgICAgICAgICAgICAgICAgICA9PiAkUGFyYW17TWVudUlEfSwKICAgICAgICBFbGVtZW50U2VsZWN0b3IgICAgICAgICAgICA9PiAnIycgLiAkUGFyYW17TWVudUlEfSwKICAgICAgICBEaWFsb2dDb250ZW50UXVlcnlTdHJpbmcgICA9PiAnQWN0aW9uPUFnZW50RkFRRGVsZXRlO0l0ZW1JRD0nIC4gJFBhcmFte0ZBUUl0ZW19LT57SXRlbUlEfSwKICAgICAgICBDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyA9PiAnQWN0aW9uPUFnZW50RkFRRGVsZXRlO1N1YmFjdGlvbj1EZWxldGU7SXRlbUlEPScgLiAkUGFyYW17RkFRSXRlbX0tPntJdGVtSUR9LAogICAgICAgIERpYWxvZ1RpdGxlICAgICAgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVsZXRlJyksCiAgICB9OwoKICAgICMgU2VuZCBkYXRhIHRvIEpTLgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdGQVFEYXRhJywKICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICk7CgogICAgJFBhcmFte0NvdW50ZXJ9Kys7CgogICAgcmV0dXJuICRQYXJhbXtDb3VudGVyfTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFPdmVydmlldzo6U21hbGw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEkUGFyYW17RkFRSURzfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdGhlIEZBUUlEcyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc3RvcmUgdGhlIEZBUUlEcwogICAgbXkgQElEczsKICAgIGlmICggJFBhcmFte0ZBUUlEc30gJiYgcmVmICRQYXJhbXtGQVFJRHN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQElEcyA9IEB7ICRQYXJhbXtGQVFJRHN9IH07CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJE11bHRpTGFuZ3VhZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgY29uZmlnIGZvciBmcm9udGVuZCBtb2R1bGUKICAgIG15ICREeW5hbWljRmllbGRGaWx0ZXIgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3U21hbGwiKS0+e0R5bmFtaWNGaWVsZH07CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgbXkgJER5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnRkFRJ10sCiAgICAgICAgRmllbGRGaWx0ZXIgPT4gJER5bmFtaWNGaWVsZEZpbHRlciB8fCB7fSwKICAgICk7CgogICAgbXkgQFNob3dDb2x1bW5zOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgaWYgKEBJRHMpIHsKCiAgICAgICAgIyBjaGVjayBTaG93Q29sdW1ucyBwYXJhbWV0ZXIKICAgICAgICBpZiAoICRQYXJhbXtTaG93Q29sdW1uc30gJiYgcmVmICRQYXJhbXtTaG93Q29sdW1uc30gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgQFNob3dDb2x1bW5zID0gQHsgJFBhcmFte1Nob3dDb2x1bW5zfSB9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIGJ1aWxkIGNvbHVtbiBoZWFkZXIgYmxvY2tzCiAgICAgICAgaWYgKEBTaG93Q29sdW1ucykgewoKICAgICAgICAgICAgIyBjYWxsIG1haW4gYmxvY2sKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1JlY29yZEZvcm0nICk7CgogICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAoICRDb2x1bW4gZXEgJ0xhbmd1YWdlJyAmJiAhJE11bHRpTGFuZ3VhZ2UgKTsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBuZWVkZWQgdmFyaWFibGVzCiAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ092ZXJ2aWV3SGVhZGVyJzsKICAgICAgICAgICAgICAgIG15ICRPcmRlckJ5OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIElEIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSApIHsKICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fSA9ICRQYXJhbXtTb3J0Qnl9IGVxICdQcmlvcml0eUlEJwogICAgICAgICAgICAgICAgICAgICAgICA/ICdQcmlvcml0eScKICAgICAgICAgICAgICAgICAgICAgICAgOiAkUGFyYW17U29ydEJ5fSBlcSAnQ2F0ZWdvcnlJRCcgPyAnQ2F0ZWdvcnknCiAgICAgICAgICAgICAgICAgICAgICAgIDogJFBhcmFte1NvcnRCeX0gZXEgJ0xhbmd1YWdlSUQnID8gJ0xhbmd1YWdlJwogICAgICAgICAgICAgICAgICAgICAgICA6ICRQYXJhbXtTb3J0Qnl9IGVxICdTdGF0ZUlEJyAgICA/ICdTdGF0ZScKICAgICAgICAgICAgICAgICAgICAgICAgOiAkUGFyYW17U29ydEJ5fSBlcSAnRkFRSUQnICAgICAgPyAnTnVtYmVyJwogICAgICAgICAgICAgICAgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb3JyZWN0IFNldCBDU1MgY2xhc3MgYW5kIG9yZGVyIGJ5IGxpbmsKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gJiYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnSGVhZGVyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRHluYW1pYyBmaWVsZHMKICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7JER5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgPSAnT3ZlcnZpZXdIZWFkZXInOwogICAgICAgICAgICAgICAgICAgIG15ICRPcmRlckJ5OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAoICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSApICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gJiYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZEhlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZEhlYWRlclNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0hlYWRlclNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRIZWFkZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkSGVhZGVyTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdIZWFkZXJOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgSUQ6CiAgICAgICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgdG8gc3RvcmUgYWxsIGRhdGEKICAgICAgICAgICAgICAgIG15ICVEYXRhOwoKICAgICAgICAgICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDAsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRGQVF7Q2xlYW5UaXRsZX0gPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkRkFRe1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICBTaXplICA9PiAkUGFyYW17VGl0bGVTaXplfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBJRCBpZiAhJUZBUTsKCiAgICAgICAgICAgICAgICAjIGFkZCBGQVEgZGF0YQogICAgICAgICAgICAgICAgJURhdGEgPSAoICVEYXRhLCAlRkFRICk7CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBidWlsZCBjb2x1bW4gcmVjb3JkIGJsb2NrcwogICAgICAgICAgICAgICAgaWYgKEBTaG93Q29sdW1ucykgewogICAgICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRvIG5vdCBzaG93IGxhbmd1YWdlIGNvbHVtbiBpZiBGQVEgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBsYW5ndWFnZXMKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgKCAkQ29sdW1uIGVxICdMYW5ndWFnZScgJiYgISRNdWx0aUxhbmd1YWdlICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgZG8gbm90IGRpc3BsYXkgY29sdW1ucyBhcyBsaW5rcyBpbiB0aGUgY3VzdG9tZXIgZnJvbnRlbmQKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJFBhcmFte0Zyb250ZW5kfSBlcSAnQ3VzdG9tZXInOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IGxpbmtzIGlmIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0xpbmtTdGFydCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0xpbmtFbmQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBEeW5hbWljIGZpZWxkcwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgdmFsdWUKICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRWYWx1ZVN0cmctPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRQbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX0xpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0ZBUUZvdW5kJyApOwogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudEZBUU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgICAgIENvbHVtbkNvdW50ID0+IHNjYWxhciBAU2hvd0NvbHVtbnMsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpBZ2VudEZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJExheW91dE9iamVjdC0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0TmFtZScpIC4gJyAoJyAuICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJykgLiAnKSc7CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhTGluaycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFJlbCAgID0+ICdzZWFyY2gnLAogICAgICAgICAgICBUeXBlICA9PiAnYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCcsCiAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgSHJlZiAgPT4gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfSAuICdBY3Rpb249JyAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIGZ1bGwtdGV4dAogICAgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnJXMgKEZBUUZ1bGx0ZXh0KScsICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdE5hbWUnKSApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30gLiAnQWN0aW9uPScgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRnVsbHRleHQnIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpDdXN0b21lckZBUVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkU2Vzc2lvbiA9ICcnOwogICAgaWYgKCAhJExheW91dE9iamVjdC0+e1Nlc3Npb25JRENvb2tpZX0gKSB7CiAgICAgICAgJFNlc3Npb24gPSAnOycgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbk5hbWV9IC4gJz0nIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25JRH07CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIG51bWJlcgogICAgbXkgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICclcyAtIEN1c3RvbWVyICglcyknLAogICAgICAgICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdE5hbWUnKSwKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpLAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGFMaW5rJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgUmVsICAgPT4gJ3NlYXJjaCcsCiAgICAgICAgICAgIFR5cGUgID0+ICdhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sJywKICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICBIcmVmICA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAuICdBY3Rpb249JwogICAgICAgICAgICAgICAgLiAkUGFyYW17Q29uZmlnfS0+e0FjdGlvbn0KICAgICAgICAgICAgICAgIC4gJztTdWJhY3Rpb249T3BlblNlYXJjaERlc2NyaXB0aW9uRkFRTnVtYmVyJyAuICRTZXNzaW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBmdWxsLXRleHQKICAgICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAnJXMgLSBDdXN0b21lciAoRkFRRnVsbHRleHQpJywKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3ROYW1lJyksCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj0nCiAgICAgICAgICAgICAgICAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpQdWJsaWNGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJFNlc3Npb24gPSAnJzsKICAgIGlmICggISRMYXlvdXRPYmplY3QtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICRTZXNzaW9uID0gJzsnIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntTZXNzaW9uSUR9OwogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgYnVpbGQgb3BlbiBzZWFyY2ggZGVzY3JpcHRpb24gZm9yIEZBUSBudW1iZXIKICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAnJXMgLSBQdWJsaWMgKCVzKScsCiAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0TmFtZScpLAogICAgICAgICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGQVFIb29rJyksCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj0nCiAgICAgICAgICAgICAgICAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GQVFOdW1iZXInIC4gJFNlc3Npb24sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBvcGVuIHNlYXJjaCBkZXNjcmlwdGlvbiBmb3IgRkFRIGZ1bGwtdGV4dAogICAgJFRpdGxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICclcyAtIFB1YmxpYyAoRkFRRnVsbHRleHQpJywKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3ROYW1lJyksCiAgICApOwogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWV0YUxpbmsnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBSZWwgICA9PiAnc2VhcmNoJywKICAgICAgICAgICAgVHlwZSAgPT4gJ2FwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwnLAogICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgIEhyZWYgID0+ICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30KICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj0nCiAgICAgICAgICAgICAgICAuICRQYXJhbXtDb25maWd9LT57QWN0aW9ufQogICAgICAgICAgICAgICAgLiAnO1N1YmFjdGlvbj1PcGVuU2VhcmNoRGVzY3JpcHRpb25GdWxsdGV4dCcgLiAkU2Vzc2lvbiwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OkZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6RkFRIC0gYWxsIEZBUS1yZWxhdGVkIEhUTUwgZnVuY3Rpb25zCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEtcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBHZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yKCkKUmV0dXJucyBhIGNvbG9yIGRlcGVuZGluZyBvbiB0aGUgRkFRIHJhdGUKCiAgICBteSAkVm90aW5nUmVzdWx0Q29sb3IgPSAkTGF5b3V0T2JqZWN0LT5HZXRGQVFJdGVtVm90aW5nUmF0ZUNvbG9yKAogICAgICAgIFJhdGUgPT4gJzIwJywKICAgICk7CgpSZXR1cm5zOgoKICAgICRWb3RpbmdSZXN1bHRDb2xvciA9ICdyZWQnICAgICAgICAgICMgb3IgJ29yYW5nZScgb3IgJ2dyZWVuJwoKPWN1dAoKc3ViIEdldEZBUUl0ZW1Wb3RpbmdSYXRlQ29sb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtSYXRlfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIHJhdGUhJyksCiAgICAgICAgKTsKICAgIH0KICAgIG15ICRDc3NUbXAgICAgICAgICAgICAgPSAnJzsKICAgIG15ICRWb3RpbmdSZXN1bHRDb2xvcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6RXhwbG9yZXI6Okl0ZW1MaXN0OjpWb3RpbmdSZXN1bHRDb2xvcnMnKTsKCiAgICBmb3IgbXkgJEtleSAoIHNvcnQgeyAkYiA8PT4gJGEgfSBrZXlzICV7JFZvdGluZ1Jlc3VsdENvbG9yc30gKSB7CiAgICAgICAgaWYgKCAkUGFyYW17UmF0ZX0gPD0gJEtleSApIHsKICAgICAgICAgICAgJENzc1RtcCA9ICRWb3RpbmdSZXN1bHRDb2xvcnMtPnskS2V5fTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJENzc1RtcDsKfQoKPWhlYWQyIEZBUUxpc3RTaG93KCkKClJldHVybnMgYSBsaXN0IG9mIEZBUSBpdGVtcyBhcyBzb3J0LWFibGUgbGlzdCB3aXRoIHBhZ2luYXRpb24uCgpUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gTDxLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0VGlja2V0OjpUaWNrZXRMaXN0U2hvdygpPgppbiBGPEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvVGlja2V0LnBtPi4KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+RkFRTGlzdFNob3coCiAgICAgICAgRkFRSURzICAgICA9PiAkRkFRSURzUmVmLCAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvdGFsIGxpc3Qgb2YgRkFRSURzLCB0aGF0IGNhbiBiZSBsaXN0ZWQKICAgICAgICBUb3RhbCAgICAgID0+IHNjYWxhciBAeyAkRkFRSURzUmVmIH0sICAgICAgICAgICAgICMgdG90YWwgbnVtYmVyIG9mIGxpc3QgaXRlbXMsIGluIHRoaXMgY2FzZQogICAgICAgIFZpZXcgICAgICAgPT4gJFNlbGYtPntWaWV3fSwgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgJ1NtYWxsJwogICAgICAgIEZpbHRlciAgICAgPT4gJ0FsbCcsCiAgICAgICAgRmlsdGVycyAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBGaWx0ZXJMaW5rID0+ICRMaW5rRmlsdGVyLAogICAgICAgIFRpdGxlTmFtZSAgPT4gJ092ZXJ2aWV3OiBGQVEnLAogICAgICAgIFRpdGxlVmFsdWUgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgIEVudiAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgTGlua1BhZ2UgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICA9PiAkTGlua1NvcnQsCiAgICAgICAgRnJvbnRlbmQgICA9PiAnQWdlbnQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIChBZ2VudHxDdXN0b21lcnxQdWJsaWMpLCBkZWZhdWx0OiBBZ2VudCwgaW5kaWNhdGVzIGZyb20gd2hpY2ggZnJvbnRlbmQgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkCiAgICApOwoKPWN1dAoKc3ViIEZBUUxpc3RTaG93IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB0YWtlIG9iamVjdCByZWYgdG8gbG9jYWwsIHJlbW92ZSBpdCBmcm9tICVQYXJhbSAocHJldmVudCBtZW1vcnkgbGVhaykKICAgIG15ICRFbnYgPSAkUGFyYW17RW52fTsKICAgIGRlbGV0ZSAkUGFyYW17RW52fTsKCiAgICAjIGxvb2t1cCBsYXRlc3QgdXNlZCB2aWV3IG1vZGUKICAgIGlmICggISRQYXJhbXtWaWV3fSAmJiAkU2VsZi0+eyAnVXNlckZBUU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFBhcmFte1ZpZXd9ID0gJFNlbGYtPnsgJ1VzZXJGQVFPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyRkFRT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBiYWNrZW5kIGZyb20gY29uZmlnCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JykgfHwgJyc7CiAgICBpZiAoICEkQmFja2VuZHMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBjb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBoYXNoLXJlZgogICAgaWYgKCByZWYgJEJhY2tlbmRzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb25maWcgb3B0aW9uIEZBUTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25maWcga2V5CiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICRTZWxmLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAiJXMiIScsICRWaWV3ICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5hdmlnYXRpb24gYmFyCiAgICBteSAkU3RhcnRIaXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKAogICAgICAgIFBhcmFtID0+ICdTdGFydEhpdCcsCiAgICApIHx8IDE7CgogICAgIyBnZXQgcGVyc29uYWwgcGFnZSBzaG93biBjb3VudAogICAgbXkgJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5ID0gJ1VzZXJGQVFPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ0ZBUU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBjaGVjayBzdGFydCBvcHRpb24sIGlmIGhpZ2hlciB0aGVuIGVsZW1lbnRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IG92ZXJ2aWV3IHBhZ2UgKFRoYW5rcyB0byBTdGVmYW4gU2NobWlkdCEpCiAgICBpZiAoICRTdGFydEhpdCA+ICRQYXJhbXtUb3RhbH0gKSB7CiAgICAgICAgbXkgJFBhZ2VzID0gaW50KCAoICRQYXJhbXtUb3RhbH0gLyAkUGFnZVNob3duICkgKyAwLjk5OTk5ICk7CiAgICAgICAgJFN0YXJ0SGl0ID0gKCAoICRQYWdlcyAtIDEgKSAqICRQYWdlU2hvd24gKSArIDE7CiAgICB9CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgc2V0IHBhZ2UgbGltaXQgYW5kIGJ1aWxkIHBhZ2UgbmF2aWdhdGlvbgogICAgbXkgJExpbWl0ICAgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249JyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biBGQVEgYXJ0aWNsZXMgb24gYSBwYWdlCiAgICAkUGFyYW17UmVxdWVzdGVkVVJMfSAgICA9ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IjsKICAgICRQYXJhbXtHcm91cH0gICAgICAgICAgID0gJEdyb3VwOwogICAgJFBhcmFte1ByZWZlcmVuY2VzS2V5fSAgPSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXk7CiAgICAkUGFyYW17UGFnZVNob3duU3RyaW5nfSA9ICRTZWxmLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXksCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhZ2VTaG93biwKICAgICAgICBEYXRhICAgICAgICA9PiBcJURhdGEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY1ZhbHVlJywKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBidWlsZCBuYXZpZ2F0aW9uIGJhciBjb250ZW50CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgbXkgJExpbmtCYWNrSUQgPSAnRkFRU2VhcmNoJzsKICAgIGlmICggJFBhcmFte05hdn0gJiYgJFBhcmFte05hdn0gZXEgJ05vbmUnICkgewogICAgICAgICRMaW5rQmFja0lEIC49ICdTbWFsbCc7CiAgICB9CgogICAgIyBiYWNrIGxpbmsKICAgIGlmICggJFBhcmFte0xpbmtCYWNrfSApIHsKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtCYWNrSUQgPT4gJExpbmtCYWNrSUQsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFNlbmQgZGF0YSB0byBKUy4KICAgICRTZWxmLT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0ZBUVNlYXJjaFByb2ZpbGUnLAogICAgICAgIFZhbHVlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICk7CgogICAgIyBnZXQgZmlsdGVycwogICAgaWYgKCAkUGFyYW17RmlsdGVyc30gKSB7CgogICAgICAgICMgZ2V0IGdpdmVuIGZpbHRlcnMKICAgICAgICBteSBATmF2QmFyRmlsdGVyczsKICAgICAgICBmb3IgbXkgJFByaW8gKCBzb3J0IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgZmlsdGVyIGNvbnRlbnQKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVyJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBsb29wIG92ZXIgZmlsdGVycwogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CgogICAgICAgICAgICAjIGluY3JlbWVudCBmaWx0ZXIgY291bnQgYW5kIGJ1aWxkIGZpbHRlciBpdGVtCiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmaWx0ZXIgaXMgc2VsZWN0ZWQKICAgICAgICAgICAgaWYgKCAkRmlsdGVyLT57RmlsdGVyfSBlcSAkUGFyYW17RmlsdGVyfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb29wIG92ZXIgY29uZmlndXJlZCBiYWNrLWVuZHMKICAgIGZvciBteSAkQmFja2VuZCAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CgogICAgICAgICMgYnVpbGQgbmF2aWdhdGlvbiBiYXIgdmlldyBtb2RlCiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGN1cnJlbnQgdmlldyBpcyBjb25maWd1cmVkIGluIGJhY2tlbmQKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBwYWdlIG5hdmlnYXRpb24gaXMgYXZhaWxhYmxlCiAgICBpZiAoJVBhZ2VOYXYpIHsKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhcicsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYWdlTmF2LAogICAgICAgICk7CgogICAgICAgICMgZG9uJ3Qgc2hvdyBjb250ZXh0IHNldHRpbmdzIGluIEFKQVggY2FzZSAoZS4gZy4gaW4gY3VzdG9tZXIgRkFRIGhpc3RvcnkpLAogICAgICAgICMgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgSFRNTCBjb250ZW50CiAgICBteSAkT3V0cHV0TmF2QmFyID0gJFNlbGYtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50RkFRT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFZpZXcgPT4gJFZpZXcsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBvdXRwdXQKICAgIG15ICRPdXRwdXRSYXcgPSAnJzsKICAgIGlmICggISRQYXJhbXtPdXRwdXR9ICkgewogICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0TmF2QmFyLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0UmF3ID0gJE91dHB1dE5hdkJhcjsKICAgIH0KCiAgICAjIGxvYWQgbW9kdWxlCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKCk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgYmFja2VuZCBvYmplY3QKICAgIG15ICRPYmplY3QgPSAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9LT5uZXcoICV7JEVudn0gKTsKICAgIHJldHVybiBpZiAhJE9iamVjdDsKCiAgICAjIHJ1biBtb2R1bGUKICAgIG15ICRPdXRwdXQgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEZyb250ZW5kICA9PiAkUGFyYW17RnJvbnRlbmR9IHx8ICdBZ2VudCcsCiAgICAgICAgTmF2ICAgICAgID0+ICRQYXJhbXtOYXZ9IHx8ICcnLAogICAgICAgIFRpdGxlU2l6ZSA9PiAkUGFyYW17RkFRVGl0bGVTaXplfSwKICAgICk7CgogICAgIyBjcmVhdGUgb3V0cHV0CiAgICBpZiAoICEkUGFyYW17T3V0cHV0fSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgIE91dHB1dCA9PiBcJE91dHB1dCwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dFJhdyAuPSAkT3V0cHV0OwogICAgfQoKICAgICMgY3JlYXRlIG92ZXJ2aWV3IG5hdmlnYXRpb24gYmFyCiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgcmV0dXJuIGNvbnRlbnQgaWYgYXZhaWxhYmxlCiAgICByZXR1cm4gJE91dHB1dFJhdzsKfQoKPWhlYWQyIEZBUUNvbnRlbnRTaG93KCkKCk91dHB1dHMgdGhlIG5lY2Vzc2FyeSBibG9ja3MgdG8gZGlzcGxheSB0aGUgRkFRIGl0ZW0gZmllbGRzIGZvciB0aGUgc3VwcGxpZWQgRkFRIGl0ZW0gSUQuClRoZSBmaWVsZHMgZGlzcGxheWVkIGFyZSBhbHNvIHJlc3RyaWN0ZWQgYnkgdGhlIHBlcm1pc3Npb25zIHJlcHJlc2VudGVkIGJ5IHRoZSBzdXBwbGllZCBpbnRlcmZhY2UKCklmIGV4aXN0IFJldHVybkNvbnRlbnQgcGFyYW1ldGVyIGl0IHJldHVybnMgdGhlIEZBUSBpdGVtcyBmaWVsZHMgb24gYSBIVE1MIGZvcm1hdHRlZCBzdHJpbmcKCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFDb250ZW50U2hvdygKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIEZBUURhdGEgICAgICAgICA9PiAleyAkRkFRRGF0YSB9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+RkFRQ29udGVudFNob3coCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBGQVFEYXRhICAgICAgICAgPT4gJXsgJEZBUURhdGEgfSwKICAgICAgICBJbnRlcmZhY2VTdGF0ZXMgPT4gJFNlbGYtPntJbnRlcmZhY2VTdGF0ZXN9LAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgICAgIFJldHVybkNvbnRlbnQgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBGQVFDb250ZW50U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhGQVFPYmplY3QgRkFRRGF0YSBJbnRlcmZhY2VTdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc3RvcmUgRkFRIG9iamVjdCBsb2NhbGx5CiAgICBteSAkRkFRT2JqZWN0ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgdGhlIGNvbmZpZyBvZiBGQVEgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICBteSAlRmllbGRzOwogICAgRklFTEQ6CiAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEZBUSBmaWVsZAogICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKTsKCiAgICAgICAgIyBza2lwIG92ZXIgbm90IHNob3duIGZpZWxkcwogICAgICAgIG5leHQgRklFTEQgaWYgISRDb25maWctPntTaG93fTsKCiAgICAgICAgIyBzdG9yZSBvbmx5IHRoZSBjb25maWcgb2YgZmllbGRzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgJEZpZWxkc3siRmllbGQkTnVtYmVyIn0gPSAkQ29uZmlnOwogICAgfQoKICAgIG15ICRGdWxsQ29udGVudDsKCiAgICAjIHNvcnQgc2hvd24gZmllbGRzIGJ5IHByaW9yaXR5CiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKCBzb3J0IHsgJEZpZWxkc3skYX0tPntQcmlvfSA8PT4gJEZpZWxkc3skYn0tPntQcmlvfSB9IGtleXMgJUZpZWxkcyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHN0YXRlIHR5cGUgZGF0YSBvZiB0aGlzIGZpZWxkCiAgICAgICAgbXkgJFN0YXRlVHlwZURhdGEgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgICAgIE5hbWUgICA9PiAkRmllbGRzeyRGaWVsZH0tPntTaG93fSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IHNob3cgZmllbGRzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIGluIHRoZSBnaXZlbiBpbnRlcmZhY2UKICAgICAgICBuZXh0IEZJRUxEIGlmICEkUGFyYW17SW50ZXJmYWNlU3RhdGVzfS0+eyAkU3RhdGVUeXBlRGF0YS0+e1N0YXRlSUR9IH07CgogICAgICAgIG15ICRDYXB0aW9uID0gJEZpZWxkc3skRmllbGR9LT57J0NhcHRpb24nfTsKICAgICAgICBteSAkQ29udGVudCA9ICRQYXJhbXtGQVFEYXRhfS0+eyRGaWVsZH0gfHwgJyc7CgogICAgICAgICMgcmVtb3ZlIGFjdGl2ZSBIVE1MIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgICAgICBteSAlU2FmZUNvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICRDb250ZW50LAogICAgICAgICAgICBOb0FwcGxldCAgICAgPT4gMSwKICAgICAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgICAgICBOb0ludFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Vzc2FyeQogICAgICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICAgICAkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IHRoZSBmaWVsZAogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRkFRQ29udGVudCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSXRlbUlEICAgID0+ICRQYXJhbXtGQVFEYXRhfS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWVsZCAgICAgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgQ2FwdGlvbiAgID0+ICRDYXB0aW9uLAogICAgICAgICAgICAgICAgU3RhdGVOYW1lID0+ICRTdGF0ZVR5cGVEYXRhLT57TmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJENvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpICYmICRTZWxmLT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUNvbnRlbnRIVE1MJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17RkFRRGF0YX0tPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEZpZWxkICA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgY29udmVydCBmaWVsZHMgQVNDSUkgaWYgbmVlZGVkCiAgICAgICAgICAgIGlmICggJFBhcmFte0ZBUURhdGF9LT57Q29udGVudFR5cGV9IG5lICd0ZXh0L3BsYWluJyApIHsKICAgICAgICAgICAgICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkQ29udGVudCwKICAgICAgICAgICAgICAgICkgfHwgJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZBUUNvbnRlbnRQbGFpbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRDb250ZW50LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU2VuZCBjb25maWcgdG8gSlMuCiAgICAgICAgJFNlbGYtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0FnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHREZWZhdWx0JyksCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnQWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4JyksCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9yZSB0aGUgZmllbGQgdG8gcmV0dXJuIGFsbCBGQVEgQm9keQogICAgICAgIGlmICggJFBhcmFte1JldHVybkNvbnRlbnR9ICYmICRDb250ZW50ICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIGludGVybmFsIHN0YXRlIHR5cGUKICAgICAgICAgICAgbXkgJEludGVybmFsU3RhdGVUeXBlID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGlmIGN1cnJlbnQgZmllbGQgaXMgaW50ZXJuYWwKICAgICAgICAgICAgbXkgJElzSW50ZXJuYWw7CiAgICAgICAgICAgIGlmICggJFN0YXRlVHlwZURhdGEtPntTdGF0ZUlEfSA9PSAkSW50ZXJuYWxTdGF0ZVR5cGUtPntTdGF0ZUlEfSApIHsKICAgICAgICAgICAgICAgICRJc0ludGVybmFsID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBUaWNrZXQgQ29tcG9zZQogICAgICAgICAgICBteSAkVGlja2V0Q29tcG9zZUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpUaWNrZXRDb21wb3NlJyk7CgogICAgICAgICAgICAjIENoZWNrIGlmIGZpZWxkIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSByZXR1cm5pbmcgc3RyaW5nCiAgICAgICAgICAgIGlmICggJFRpY2tldENvbXBvc2VDb25maWctPntJbmNsdWRlSW50ZXJuYWx9IHx8ICEkSXNJbnRlcm5hbCApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIGZpZWxkIG5hbWUgc2hvdWxkIGJlIHJldHVybmVkCiAgICAgICAgICAgICAgICBpZiAoICRUaWNrZXRDb21wb3NlQ29uZmlnLT57U2hvd0ZpZWxkTmFtZXN9ICkgewogICAgICAgICAgICAgICAgICAgICRGdWxsQ29udGVudCAuPSAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDYXB0aW9uKSAuICcgPGJyLz4gJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRGdWxsQ29udGVudCAuPSAkQ29udGVudCAuICcgPGJyLz4gJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHJldHVybiBhbGwgdGhlIChwZXJtaXR0ZWQpIEZBUSBib2R5CiAgICBpZiAoICRQYXJhbXtSZXR1cm5Db250ZW50fSApIHsKICAgICAgICBpZiAoJEZ1bGxDb250ZW50KSB7CiAgICAgICAgICAgIHJldHVybiAkRnVsbENvbnRlbnQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkU2VsZi0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdUaGlzIGFydGljbGUgaXMgZW1wdHkhJyk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBGQVFQYXRoU2hvdygpCgppZiBpdHMgYWxsb3dlZCBieSB0aGUgY29uZmlndXJhdGlvbiwgb3V0cHV0cyB0aGUgbmVjZXNzYXJ5IGJsb2NrcyB0byBkaXNwbGF5IHRoZSBGQVEgaXRlbSBwYXRoLAphbmQgcmV0dXJucyB0aGUgdmFsdWUgMS4KCiAgICBteSAkU2hvd1BhdGhPayA9ICRMYXlvdXRPYmplY3QtPkZBUVBhdGhTaG93KAogICAgICAgIEZBUU9iamVjdCAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIENhdGVnb3J5SUQgID0+IDUsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICBQYXRoRm9ySXRlbSA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIChkZWZhdWx0IDApCiAgICAgICAgTmF2ICAgICAgICAgPT4gJ25vbmUnLCAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBGQVFQYXRoU2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgcGFyYW1ldGVycwogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KEZBUU9iamVjdCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgJFBhcmFte1BhdGhGb3JJdGVtfSB8fD0gMDsKCiAgICAjIGNoZWNrIHBhcmFtZXRlcnMKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDYXRlZ29yeUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJEJsb2NrID0gJ0ZBUVBhdGhDYXRlZ29yeUVsZW1lbnQnOwogICAgaWYgKCAkUGFyYW17Q2F0ZWdvcnlJRH0gZXEgJzAnICkgewogICAgICAgICRCbG9jayA9ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rJzsKICAgIH0KCiAgICAjIG91dHB1dCBjYXRlZ29yeSByb290CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAkQmxvY2ssCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkRlZmF1bHQ6OlJvb3RDYXRlZ29yeU5hbWUnKSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAwLAogICAgICAgICAgICBOYXYgICAgICAgID0+ICRQYXJhbXtOYXZ9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IFNob3cgRkFRIFBhdGggc2V0dGluZwogICAgbXkgJFNob3dQYXRoID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpQYXRoOjpTaG93Jyk7CgogICAgIyBkbyBub3QgZGlzcGxheSB0aGUgcGF0aCBpZiBzZXR0aW5nIGlzIG9mZgogICAgcmV0dXJuIGlmICEkU2hvd1BhdGg7CgogICAgbXkgJEZBUU9iamVjdCA9ICRQYXJhbXtGQVFPYmplY3R9OwoKICAgIG15ICRDYXRlZ29yeUxpc3QgPSAkRkFRT2JqZWN0LT5GQVFQYXRoTGlzdEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+ICRQYXJhbXtDYXRlZ29yeUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBzdWJjYXRlZ29yaWVzCiAgICBmb3IgbXkgJENhdGVnb3J5RGF0YSAoIEB7JENhdGVnb3J5TGlzdH0gKSB7CgogICAgICAgICRCbG9jayA9ICdGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50JzsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRDYXRlZ29yeURhdGEtPntDYXRlZ29yeUlEfSA9PSAkQ2F0ZWdvcnlMaXN0LT5bLTFdLT57Q2F0ZWdvcnlJRH0KICAgICAgICAgICAgJiYgISRQYXJhbXtQYXRoRm9ySXRlbX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEJsb2NrID0gJ0ZBUVBhdGhDYXRlZ29yeUVsZW1lbnROb0xpbmsnOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRCbG9jaywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0sCiAgICAgICAgICAgICAgICAleyRDYXRlZ29yeURhdGF9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEZBUVJhdGluZ1N0YXJzU2hvdygpCgpPdXRwdXRzIHRoZSBuZWNlc3NhcnkgYmxvY2tzIHRvIHJlcHJlc2VudCB0aGUgRkFRIGl0ZW0gcmF0aW5nCmFzICJTdGFycyIgaW4gdGhlIHNjYWxlIGZyb20gMSB0byA1LgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVJhdGluZ1N0YXJzU2hvdygKICAgICAgICBWb3RlUmVzdWx0ID0+ICRGQVFEYXRhLT57Vm90ZVJlc3VsdH0sCiAgICAgICAgVm90ZXMgICAgICA9PiAkRkFRRGF0YSAtPntWb3Rlc30sCiAgICApOwoKPWN1dAoKc3ViIEZBUVJhdGluZ1N0YXJzU2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkUGFyYW1OYW1lIChxdyhWb3RlUmVzdWx0IFZvdGVzKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgc3RhcnMgYnkgbXVsdGlwbHkgYnkgNSBhbmQgZGl2aWRlIGJ5IDEwMAogICAgIyAxMDAgYmVjYXVzZSBWb3RlIHJlc3VsdCBpcyBhICUKICAgICMgNSBiZWNhdXNlIHdlIGhhdmUgb25seSA1IHN0YXJzCiAgICBteSAkU3RhckNvdW50ZXIgPSBpbnQoICRQYXJhbXtWb3RlUmVzdWx0fSAqIDAuMDUgKTsKICAgIGlmICggJFN0YXJDb3VudGVyIDwgNSApIHsKCiAgICAgICAgIyBhZGQgMSBiZWNhdXNlIGxvd2VzdCB2YWx1ZSBzaG91bGQgYmUgMQogICAgICAgICRTdGFyQ291bnRlcisrOwogICAgfQoKICAgICMgdGhlIG51bWJlciBvZiBzdGFycyBjYW4ndCBiZSBncmF0ZXIgdGhhdCA1CiAgICBlbHNpZiAoICRTdGFyQ291bnRlciA+IDUgKSB7CiAgICAgICAgJFN0YXJDb3VudGVyID0gNTsKICAgIH0KCiAgICAjIG91dHB1dCByYXRpbmcgYmxvY2sKICAgICRTZWxmLT5CbG9jaygKICAgICAgICBOYW1lID0+ICdWaWV3UmF0aW5nJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZG8gbm90IG91dHB1dCBhbnkgc3RhciBpZiB0aGlzIEZBUSBoYXMgYmVlbiBub3Qgdm90ZWQKICAgIGlmICggJFBhcmFte1ZvdGVzfSBlcSAnMCcgKSB7CiAgICAgICAgJFN0YXJDb3VudGVyID0gMDsKICAgIH0KCiAgICAjIHNob3cgc3RhcnMgb25seSBpZiB0aGUgRkFRIGl0ZW0gaGFzIGJlZW4gdm90ZWQgYXQgbGVhc3Qgb25jZSBldmVuIGlmIHRoZSAkVm90ZVJlc3VsdCBpcyAwCiAgICBlbHNlIHsKCiAgICAgICAgIyBvdXRwdXQgc3RhcnMKICAgICAgICBmb3IgKCAxIC4uICRTdGFyQ291bnRlciApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUmF0ZVN0YXJzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBvdXRwdXQgc3RhcnMgdGV4dAogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1JhdGVTdGFyc0NvdW50JywKICAgICAgICBEYXRhID0+IHsgU3RhcnMgPT4gJFN0YXJDb3VudGVyIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRkFRU2hvd0xhdGVzdE5ld3NCb3goKQoKU2hvd3MgYW4gaW5mbyBib3ggd2l0aCB0aGUgbGFzdCB1cGRhdGVkIG9yIGxhc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMuCkRlcGVuZGluZyBvbiB0aGUgdXNlcyBpbnRlcmZhY2UgKGFnZW50LCBjdXN0b21lciwgcHVibGljKSBvbmx5IHRoZSBhcHByb3ByaWF0ZQphcnRpY2xlcyBhcmUgc2hvd24gaGVyZS4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93TGF0ZXN0TmV3c0JveCgKICAgICAgICBGQVFPYmplY3QgICAgICAgPT4gJEZBUU9iamVjdCwgICAgICAgICAgICAgICAgICMgbmVlZGVkIGZvciBjb3JlIG1vZHVsZSBpbnRlcmFjdGlvbgogICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnTGFzdENyZWF0ZScsICAgICAgICAgICAgICAgIyAoTGFzdENyZWF0ZSB8IExhc3RDaGFuZ2UpCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdQdWJsaWMnLCAgICAgICAgICAgICAgICAgICAjIChBZ2VudCwgQ3VzdG9tZXIsIFB1YmxpYykKICAgICAgICBDYXRlZ29yeUlEICAgICAgPT4gNSwKICAgICAgICBJbnRlcmZhY2UgICAgICAgPT4gJFNlbGYtPntJbnRlcmZhY2V9LAogICAgICAgIEludGVyZmFjZVN0YXRlcyA9PiAkU2VsZi0+e0ludGVyZmFjZVN0YXRlc30sCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICAgICAgTmF2ICAgICAgICAgICAgID0+ICdub25lJywgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIEZBUVNob3dMYXRlc3ROZXdzQm94IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KEZBUU9iamVjdCBUeXBlIE1vZGUgSW50ZXJmYWNlIEludGVyZmFjZVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIENhdGVnb3J5SUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIHR5cGUKICAgIGlmICggJFBhcmFte1R5cGV9ICF+IG17IExhc3RDcmVhdGUgfCBMYXN0Q2hhbmdlIH14bXMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdUeXBlIG11c3QgYmUgZWl0aGVyIExhc3RDcmVhdGUgb3IgTGFzdENoYW5nZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbW9kZQogICAgaWYgKCAkUGFyYW17TW9kZX0gIX4gbXsgQWdlbnQgfCBDdXN0b21lciB8IFB1YmxpYyB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTW9kZSBtdXN0IGJlIGVpdGhlciBBZ2VudCwgQ3VzdG9tZXIgb3IgUHVibGljIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBDdXN0b21lclVzZXIKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdDdXN0b21lcicgJiYgISRQYXJhbXtDdXN0b21lclVzZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDdXN0b21lclVzZXIhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBvcmRlciBieSBzZWFyY2ggcGFyYW1ldGVyIGFuZCBoZWFkZXIgYmFzZWQgb24gdHlwZQogICAgbXkgJE9yZGVyQnk7CiAgICBteSAkSGVhZGVyOwogICAgbXkgJFJTU1RpdGxlOwogICAgaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0xhc3RDcmVhdGUnICkgewogICAgICAgICRPcmRlckJ5ICA9ICdDcmVhdGVkJzsKICAgICAgICAkSGVhZGVyICAgPSBUcmFuc2xhdGFibGUoJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcycpOwogICAgICAgICRSU1NUaXRsZSA9IFRyYW5zbGF0YWJsZSgnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknKTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1R5cGV9IGVxICdMYXN0Q2hhbmdlJyApIHsKICAgICAgICAkT3JkZXJCeSAgPSAnQ2hhbmdlZCc7CiAgICAgICAgJEhlYWRlciAgID0gVHJhbnNsYXRhYmxlKCdMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnKTsKICAgICAgICAkUlNTVGl0bGUgPSBUcmFuc2xhdGFibGUoJ0ZBUSBBcnRpY2xlcyAocmVjZW50bHkgY2hhbmdlZCknKTsKICAgIH0KCiAgICBteSAkUmVzdWx0ID0gLTE7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzaG93IGxhc3QgYWRkZWQvdXBkYXRlZCBhcnRpY2xlcwogICAgbXkgJFNob3cgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RXhwbG9yZXI6OiRQYXJhbXtUeXBlfTo6U2hvdyIpOwogICAgaWYgKCAkU2hvdy0+eyAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IH0gKSB7CgogICAgICAgIG15ICRGQVFPYmplY3QgPSAkUGFyYW17RkFRT2JqZWN0fTsKCiAgICAgICAgIyB0byBzdG9yZSBzZWFyY2ggcGFyYW0gZm9yIGNhdGVnb3JpZXMKICAgICAgICBteSAlQ2F0ZWdvcnlTZWFyY2hQYXJhbTsKCiAgICAgICAgIyBpZiBzdWJjYXRlZ29yaWVzIHNob3VsZCBhbHNvIGJlIHNob3duCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoIkZBUTo6RXhwbG9yZXI6OiRQYXJhbXtUeXBlfTo6U2hvd1N1YkNhdGVnb3J5SXRlbXMiKSApIHsKCiAgICAgICAgICAgICMgZmluZCB0aGUgc3ViY2F0ZWdvcmllcyBvZiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgIG15ICRTdWJDYXRlZ29yeUlEc1JlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2VhcmNoIGluIHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgYWRkIHRoZSBzdWJjYXRlZ29yeQogICAgICAgICAgICAkQ2F0ZWdvcnlTZWFyY2hQYXJhbXtDYXRlZ29yeUlEc30gPSBbICRQYXJhbXtDYXRlZ29yeUlEfSwgQHskU3ViQ2F0ZWdvcnlJRHNSZWZ9IF07CiAgICAgICAgfQoKICAgICAgICAjIGEgY2F0ZWdvcnkgaXMgZ2l2ZW4gYW5kIHN1YmNhdGVnb3JpZXMgc2hvdWxkIG5vdCBiZSBzaG93bgogICAgICAgIGVsc2lmICggJFBhcmFte0NhdGVnb3J5SUR9ICkgewoKICAgICAgICAgICAgIyBzZWFyY2ggb25seSBpbiB0aGUgZ2l2ZW4gY2F0ZWdvcnkKICAgICAgICAgICAgJENhdGVnb3J5U2VhcmNoUGFyYW17Q2F0ZWdvcnlJRHN9ID0gWyAkUGFyYW17Q2F0ZWdvcnlJRH0gXTsKICAgICAgICB9CgogICAgICAgICMgc2VhcmNoIHRoZSBGQVEgYXJ0aWNsZXMKICAgICAgICBteSBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAgICAgU3RhdGVzICAgICAgICAgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJE9yZGVyQnldLAogICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnRG93biddLAogICAgICAgICAgICBJbnRlcmZhY2UgICAgICAgID0+ICRQYXJhbXtJbnRlcmZhY2V9LAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRDb25maWdPYmplY3QtPkdldCgiRkFROjpFeHBsb3Jlcjo6JFBhcmFte1R5cGV9OjpMaW1pdCIpIHx8IDUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICVDYXRlZ29yeVNlYXJjaFBhcmFtLAogICAgICAgICk7CgogICAgICAgICMgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHNob3cKICAgICAgICBpZiAoQEl0ZW1JRHMpIHsKCiAgICAgICAgICAgICRSZXN1bHQgPSAxOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBpbmZvIGJveAogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgSGVhZGVyID0+ICRIZWFkZXIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBSU1MgRmVlZCBpY29uCiAgICAgICAgICAgIGlmICggJFBhcmFte01vZGV9IGVxICdQdWJsaWMnICkgewoKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRSU1NUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICAgICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBJdGVtRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSBhcnRpY2xlIHJvdwogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYXYgPT4gJFBhcmFte05hdn0sCiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkUmVzdWx0Owp9Cgo9aGVhZDIgRkFRU2hvd1RvcDEwKCkKClNob3dzIGFuIGluZm8gYm94IHdpdGggdGhlIFRvcCAxMCBGQVEgYXJ0aWNsZXMuCkRlcGVuZGluZyBvbiB0aGUgdXNlcyBpbnRlcmZhY2UgKGFnZW50LCBjdXN0b21lciwgcHVibGljKSBvbmx5IHRoZSBhcHByb3ByaWF0ZQphcnRpY2xlcyBhcmUgc2hvd24gaGVyZS4KCiAgICAkTGF5b3V0T2JqZWN0LT5GQVFTaG93VG9wMTAoCiAgICAgICAgRkFRT2JqZWN0ICAgICAgID0+ICRGQVFPYmplY3QsICAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgY29yZSBtb2R1bGUgaW50ZXJhY3Rpb24KICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsICAgICAgICAgICAgICAgICAgICMgKEFnZW50LCBDdXN0b21lciwgUHVibGljKQogICAgICAgIENhdGVnb3J5SUQgICAgICA9PiA1LAogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJ25vbmUnLCAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRU2hvd1RvcDEwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KEZBUU9iamVjdCBNb2RlIEludGVyZmFjZSBJbnRlcmZhY2VTdGF0ZXMgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskUGFyYW1OYW1lfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJFBhcmFtTmFtZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBDYXRlZ29yeUlEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBtb2RlCiAgICBpZiAoICRQYXJhbXtNb2RlfSAhfiBteyBBZ2VudCB8IEN1c3RvbWVyIHwgUHVibGljIH14bXMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdNb2RlIG11c3QgYmUgZWl0aGVyIEFnZW50LCBDdXN0b21lciBvciBQdWJsaWMhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIEN1c3RvbWVyVXNlcgogICAgaWYgKCAkUGFyYW17TW9kZX0gZXEgJ0N1c3RvbWVyJyAmJiAhJFBhcmFte0N1c3RvbWVyVXNlcn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEN1c3RvbWVyVXNlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRSZXN1bHQgPSAtMTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHNob3cgbGFzdCBhZGRlZC91cGRhdGVkIGFydGljbGVzCiAgICBteSAkU2hvdyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpFeHBsb3Jlcjo6VG9wMTA6OlNob3cnKTsKICAgIGlmICggJFNob3ctPnsgJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSB9ICkgewoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJFBhcmFte0ZBUU9iamVjdH07CgogICAgICAgICMgdG8gc3RvcmUgc2VhcmNoIHBhcmFtIGZvciBjYXRlZ29yaWVzCiAgICAgICAgbXkgJUNhdGVnb3J5U2VhcmNoUGFyYW07CgogICAgICAgICMgaWYgc3ViY2F0ZWdvcmllcyBzaG91bGQgYWxzbyBiZSBzaG93bgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6U2hvd1N1YkNhdGVnb3J5SXRlbXMnKSApIHsKCiAgICAgICAgICAgICMgZmluZCB0aGUgc3ViY2F0ZWdvcmllcyBvZiB0aGlzIGNhdGVnb3J5CiAgICAgICAgICAgIG15ICRTdWJDYXRlZ29yeUlEc1JlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoCiAgICAgICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICRQYXJhbXtNb2RlfSwKICAgICAgICAgICAgICAgIEl0ZW1TdGF0ZXMgICA9PiAkUGFyYW17SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2VhcmNoIGluIHRoZSBnaXZlbiBjYXRlZ29yeSBhbmQgYWRkIHRoZSBzdWJjYXRlZ29yeQogICAgICAgICAgICAkQ2F0ZWdvcnlTZWFyY2hQYXJhbXtDYXRlZ29yeUlEc30gPSBbICRQYXJhbXtDYXRlZ29yeUlEfSwgQHskU3ViQ2F0ZWdvcnlJRHNSZWZ9IF07CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgdG9wIDEwIGFydGljbGVzIGZvciBjYXRlZ29yaWVzIHdpdGggYXQgbGVhc3Qgcm8gcGVybWlzc2lvbnMKICAgICAgICBteSAkVG9wMTBJdGVtSURzUmVmID0gJEZBUU9iamVjdC0+RkFRVG9wMTBHZXQoCiAgICAgICAgICAgIEludGVyZmFjZSA9PiAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9LAogICAgICAgICAgICBMaW1pdCAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpUb3AxMDo6TGltaXQnKSB8fCAxMCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAlQ2F0ZWdvcnlTZWFyY2hQYXJhbSwKICAgICAgICApIHx8IFtdOwoKICAgICAgICAjIHRoZXJlIGlzIHNvbWV0aGluZyB0byBzaG93CiAgICAgICAgaWYgKCAkVG9wMTBJdGVtSURzUmVmICYmIHJlZiAkVG9wMTBJdGVtSURzUmVmIGVxICdBUlJBWScgJiYgQHskVG9wMTBJdGVtSURzUmVmfSApIHsKCiAgICAgICAgICAgICRSZXN1bHQgPSAxOwoKICAgICAgICAgICAgIyBzaG93IHRoZSBpbmZvIGJveAogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdJbmZvQm94RkFRTWluaUxpc3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgSGVhZGVyID0+IFRyYW5zbGF0YWJsZSgnVG9wIDEwIEZBUSBhcnRpY2xlcycpLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyB0aGUgUlNTIEZlZWQgaWNvbgogICAgICAgICAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnUHVibGljJyApIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0TmV3c1JTUycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgID0+ICdUb3AxMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRkFRIEFydGljbGVzIChUb3AgMTApJyksCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICROdW1iZXI7CiAgICAgICAgICAgIGZvciBteSAkVG9wMTBJdGVtICggQHskVG9wMTBJdGVtSURzUmVmfSApIHsKCiAgICAgICAgICAgICAgICAjIGluY3JlYXNlIHRoZSBudW1iZXIKICAgICAgICAgICAgICAgICROdW1iZXIrKzsKCiAgICAgICAgICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgID0+ICRUb3AxMEl0ZW0tPntJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNob3cgdGhlIGFydGljbGUgcm93CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hdiA9PiAkUGFyYW17TmF2fSwKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSBUb3AtMTAgcG9zaXRpb24gbnVtYmVyCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvd1Bvc2l0aW9uTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyID0+ICROdW1iZXIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCj1oZWFkMiBGQVFTaG93UXVpY2tTZWFyY2goKQoKU2hvd3MgYW4gaW5mbyBib3ggd2l0aCB0aGUgUXVpY2sgU2VhcmNoLgoKICAgICRMYXlvdXRPYmplY3QtPkZBUVNob3dRdWlja1NlYXJjaCgKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ1B1YmxpYycsICAgICAgICAgICAgICAgICAgICMgKEFnZW50LCBDdXN0b21lciwgUHVibGljKQogICAgICAgIEludGVyZmFjZSAgICAgICA9PiAkU2VsZi0+e0ludGVyZmFjZX0sCiAgICAgICAgSW50ZXJmYWNlU3RhdGVzID0+ICRTZWxmLT57SW50ZXJmYWNlU3RhdGVzfSwKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgICAgICBOYXYgICAgICAgICAgICAgPT4gJ25vbmUnLCAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBTZWFyY2hCYWNrTGluayAgPT4gJEJhc2U2NEVuY29kZWRVcmwsICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRU2hvd1F1aWNrU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRQYXJhbU5hbWUgKHF3KE1vZGUgSW50ZXJmYWNlIEludGVyZmFjZVN0YXRlcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBtb2RlCiAgICBpZiAoICRQYXJhbXtNb2RlfSAhfiBteyBBZ2VudCB8IEFnZW50U21hbGwgfCBDdXN0b21lciB8IFB1YmxpYyB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTW9kZSBtdXN0IGJlIGVpdGhlciBBZ2VudCwgQ3VzdG9tZXIgb3IgUHVibGljIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgYWN0aW9uIG1vZHVsZQogICAgbXkgJEFjdGlvbjsKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdBZ2VudFNtYWxsJyApIHsKICAgICAgICAkQWN0aW9uID0gJ0FnZW50RkFRU2VhcmNoU21hbGwnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEFjdGlvbiA9ICRQYXJhbXtNb2RlfSAuICdGQVFTZWFyY2gnOwogICAgfQoKICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VyCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ3VzdG9tZXInICYmICEkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ3VzdG9tZXJVc2VyIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzaG93IHF1aWNrIHNlYXJjaAogICAgbXkgJFNob3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlF1aWNrU2VhcmNoOjpTaG93Jyk7CiAgICBpZiAoICRTaG93LT57ICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gfSB8fCAkUGFyYW17TW9kZX0gZXEgJ0FnZW50U21hbGwnICkgewoKICAgICAgICAjIGNhbGwgUXVpY2tTZWFyY2ggYmxvY2sKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1F1aWNrU2VhcmNoJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAkQWN0aW9uLAogICAgICAgICAgICAgICAgTmF2ICAgICAgICAgICAgPT4gJFBhcmFte05hdn0gfHwgJycsCiAgICAgICAgICAgICAgICBTZWFyY2hCYWNrTGluayA9PiAkUGFyYW17U2VhcmNoQmFja0xpbmt9IHx8ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0OjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OkZBUSAtIGxpbmsgb2JqZWN0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsaW5rIG9iamVjdCBmdW5jdGlvbnMgb2YgbGluayBvYmplY3QgKEZBUSkKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OkZBUS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXNlckxhbmd1YWdlIFVzZXJJRCkpIHsKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9IHx8IGRpZSAiR290IG5vICROZWVkZWQhIjsKICAgIH0KCiAgICAjIFRPRE86IGNoZWNrIGlmIHRoZSBuZXcgaW5zdGFuY2UgaXMgc3RpbGwgbmVlZGVkIHdpdGggdGhlIE9NIQoKICAgICMgV2UgbmVlZCBvdXIgb3duIExheW91dE9iamVjdCBpbnN0YW5jZSB0byBhdm9pZCBibG9jayBkYXRhIGNvbGxpc2lvbnMgd2l0aCB0aGUgbWFpbiBwYWdlLgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dC0+bmV3KCAleyRTZWxmfSApOwoKICAgICRTZWxmLT57T2JqZWN0RGF0YX0gPSB7CiAgICAgICAgT2JqZWN0ICAgICA9PiAnRkFRJywKICAgICAgICBSZWFsbmFtZSAgID0+ICdGQVEnLAogICAgICAgIE9iamVjdE5hbWUgPT4gJ1NvdXJjZU9iamVjdElEJywKICAgIH07CgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICBPYmplY3RUeXBlID0+IFsnRkFRJ10sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFRhYmxlQ3JlYXRlQ29tcGxleCgpCgpyZXR1cm4gYW4gYXJyYXkgd2l0aCB0aGUgYmxvY2sgZGF0YQoKICAgIG15IEBCbG9ja0RhdGEgPSAkTGlua09iamVjdC0+VGFibGVDcmVhdGVDb21wbGV4KAogICAgICAgIE9iamVjdExpbmtMaXN0V2l0aERhdGEgPT4gJE9iamVjdExpbmtMaXN0UmVmLAogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlCgogICAgJUJsb2NrRGF0YSA9ICgKICAgICAgICB7CiAgICAgICAgICAgIE9iamVjdE5hbWUgID0+ICdGQVFJRCcsCiAgICAgICAgICAgIE9iamVjdElEICAgID0+ICcxNDc4NScsCgogICAgICAgICAgICBPYmplY3QgICAgPT4gJ0ZBUScsCiAgICAgICAgICAgIEJsb2NrbmFtZSA9PiAnRkFRJywKICAgICAgICAgICAgSGVhZGxpbmUgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGQVEjJywKICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdTdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTEwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gWwogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMTIzMTIzMTIzJywKICAgICAgICAgICAgICAgICAgICAgICAgQ3NzICAgICA9PiAnc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoIicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnVGhlIHRpdGxlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAxLTAxIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzQzNDIzNCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnVGhlIHRpdGxlIG9mIEZBUSAyJywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ3B1YmxpYyAoYWxsKScsCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDEtMDEgMTI6MTI6MDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFRhYmxlQ3JlYXRlQ29tcGxleCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB8fCByZWYgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgbGlzdC4KICAgIG15ICVMaW5rTGlzdDsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgJExpbmtMaXN0eyRJdGVtSUR9LT57RGF0YX0gPSAkRGlyZWN0aW9uTGlzdC0+eyRJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRDb21wbGV4VGFibGVEYXRhID0gJENvbmZpZ09iamVjdC0+R2V0KCJMaW5rT2JqZWN0OjpDb21wbGV4VGFibGUiKTsKICAgIG15ICREZWZhdWx0Q29sdW1uczsKICAgIGlmICgKICAgICAgICAkQ29tcGxleFRhYmxlRGF0YQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb21wbGV4VGFibGVEYXRhKQogICAgICAgICYmICRDb21wbGV4VGFibGVEYXRhLT57RkFRfQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkQ29tcGxleFRhYmxlRGF0YS0+e0ZBUX0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkRGVmYXVsdENvbHVtbnMgPSAkQ29tcGxleFRhYmxlRGF0YS0+eyJGQVEifS0+eyJEZWZhdWx0Q29sdW1ucyJ9OwogICAgfQoKICAgIG15IEBUaW1lTG9uZ1R5cGVzID0gKAogICAgICAgICJDcmVhdGVkIiwKICAgICAgICAiQ2hhbmdlZCIsCiAgICApOwoKICAgICMgRGVmaW5lIHRoZSBibG9jayBkYXRhLgogICAgbXkgJEZBUUhvb2sgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwoKICAgIG15IEBIZWFkbGluZSA9ICgKICAgICAgICB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gJEZBUUhvb2ssCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgTG9hZCB1c2VyIHByZWZlcmVuY2VzLgogICAgbXkgJVByZWZlcmVuY2VzID0gJFVzZXJPYmplY3QtPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISREZWZhdWx0Q29sdW1ucyB8fCAhSXNIYXNoUmVmV2l0aERhdGEoJERlZmF1bHRDb2x1bW5zKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ01pc3NpbmcgY29uZmlndXJhdGlvbiBmb3IgTGlua09iamVjdDo6Q29tcGxleFRhYmxlIyMjRkFRIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBHZXQgZGVmYXVsdCBjb2x1bW4gcHJpb3JpdHkgZnJvbSBTeXNDb25maWcuCiAgICAjIEVhY2ggY29sdW1uIGluIHRhYmxlIChUaXRsZSwgU3RhdGUsLi4uKSBoYXMgZGVmaW5lZCBQcmlvcml0eSBpbiBTeXNDb25maWcuIFN5c3RlbSB1c2UgdGhpcwogICAgIyAgIHByaW9yaXR5IHRvIHNvcnQgY29sdW1ucywgaWYgdXNlciBkb2Vzbid0IGhhdmUgb3duIHNldHRpbmdzLgogICAgbXkgJVNvcnRPcmRlcjsKICAgIGlmICgKICAgICAgICAkQ29tcGxleFRhYmxlRGF0YS0+eyJGQVEifS0+eyJQcmlvcml0eSJ9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRDb21wbGV4VGFibGVEYXRhLT57IkZBUSJ9LT57IlByaW9yaXR5In0gKQogICAgICAgICkKICAgIHsKICAgICAgICAlU29ydE9yZGVyID0gJXsgJENvbXBsZXhUYWJsZURhdGEtPnsiRkFRIn0tPnsiUHJpb3JpdHkifSB9OwogICAgfQoKICAgIG15ICVVc2VyQ29sdW1ucyA9ICV7JERlZmF1bHRDb2x1bW5zfTsKCiAgICBpZiAoICRQcmVmZXJlbmNlc3snTGlua09iamVjdDo6Q29tcGxleFRhYmxlLUZBUSd9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeydMaW5rT2JqZWN0OjpDb21wbGV4VGFibGUtRkFRJ30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ29sdW1uc0VuYWJsZWQKICAgICAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoJENvbHVtbnNFbmFibGVkKQogICAgICAgICAgICAmJiAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0KICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAjIENsZWFyIHNvcnQgb3JkZXIuCiAgICAgICAgICAgICVTb3J0T3JkZXIgPSAoKTsKCiAgICAgICAgICAgIERFRkFVTFRDT0xVTU46CiAgICAgICAgICAgIGZvciBteSAkRGVmYXVsdENvbHVtbiAoIHNvcnQga2V5cyAlVXNlckNvbHVtbnMgKSB7CiAgICAgICAgICAgICAgICBteSAkSW5kZXggPSAwOwoKICAgICAgICAgICAgICAgIGZvciBteSAkVXNlclNldHRpbmcgKCBAeyAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gfSApIHsKICAgICAgICAgICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICAgICAgICAgICAgICBpZiAoICREZWZhdWx0Q29sdW1uIGVxICRVc2VyU2V0dGluZyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFVzZXJDb2x1bW5zeyREZWZhdWx0Q29sdW1ufSA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICRTb3J0T3JkZXJ7JERlZmF1bHRDb2x1bW59ICAgPSAkSW5kZXg7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERFRkFVTFRDT0xVTU47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgTm90IGZvdW5kLCBtZWFucyB1c2VyIGNob3NlIHRvIGhpZGUgdGhpcyBpdGVtLgogICAgICAgICAgICAgICAgaWYgKCAkVXNlckNvbHVtbnN7JERlZmF1bHRDb2x1bW59ID09IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgJFVzZXJDb2x1bW5zeyREZWZhdWx0Q29sdW1ufSA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAhJFNvcnRPcmRlcnskRGVmYXVsdENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNvcnRPcmRlcnskRGVmYXVsdENvbHVtbn0gPSAwOyAgICAjIFNldCAwLCBpdCBzeXN0ZW0gd2lsbCBoaWRlIHRoaXMgaXRlbSBhbnl3YXlzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBVc2VyIGhhcyBubyBvd24gc2V0dGluZ3MuCiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJVVzZXJDb2x1bW5zICkgewogICAgICAgICAgICBpZiAoICEkU29ydE9yZGVyeyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgJFNvcnRPcmRlcnskQ29sdW1ufSA9IDA7ICAgICAgICAgICAgICAgIyBTZXQgMCwgaXQgc3lzdGVtIHdpbGwgaGlkZSB0aGlzIGl0ZW0gYW55d2F5cwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgRGVmaW5lIEhlYWRsaW5lIGNvbHVtbnMuCiAgICBteSBAQWxsQ29sdW1uczsKICAgIENPTFVNTjoKICAgIGZvciBteSAkQ29sdW1uICggc29ydCB7ICRTb3J0T3JkZXJ7JGF9IDw9PiAkU29ydE9yZGVyeyRifSB9IGtleXMgJVVzZXJDb2x1bW5zICkgewoKICAgICAgICBteSAkQ29sdW1uVHJhbnNsYXRlID0gJENvbHVtbjsKICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0NhdGVnb3J5TmFtZScgKSB7CiAgICAgICAgICAgICRDb2x1bW5UcmFuc2xhdGUgPSBUcmFuc2xhdGFibGUoJ0NhdGVnb3J5Jyk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ29udGVudFR5cGUnICkgewogICAgICAgICAgICAkQ29sdW1uVHJhbnNsYXRlID0gVHJhbnNsYXRhYmxlKCdDb250ZW50IFR5cGUnKTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQEFsbENvbHVtbnMsIHsKICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgIENvbHVtblRyYW5zbGF0ZSA9PiAkQ29sdW1uVHJhbnNsYXRlLAogICAgICAgIH07CgogICAgICAgICMgQWx3YXlzIHByZXNlbnQsIGFscmVhZHkgYWRkZWQuCiAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiBlcSAnRkFRTnVtYmVyJzsKCiAgICAgICAgIyBpZiBlbmFibGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgaWYgKCAkVXNlckNvbHVtbnN7JENvbHVtbn0gPT0gMiApIHsKICAgICAgICAgICAgbXkgJENvbHVtbk5hbWUgPSAnJzsKCiAgICAgICAgICAgICMgT3RoZXIgRkFRIGZpZWxkcy4KICAgICAgICAgICAgaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uTmFtZSA9ICRDb2x1bW5UcmFuc2xhdGU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRHluYW1pYyBmaWVsZHMuCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb2x1bW47CiAgICAgICAgICAgICAgICAkREZDb2x1bW4gPX4gc3tEeW5hbWljRmllbGRffXt9ZzsKCiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICRDb2x1bW5OYW1lID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBIZWFkbGluZSwgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29sdW1uTmFtZSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBDcmVhdGUgdGhlIGl0ZW0gbGlzdCAodGFibGUgY29udGVudCkuCiAgICBteSBASXRlbUxpc3Q7CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICVMaW5rTGlzdCApIHsKCiAgICAgICAgIyBFeHRyYWN0IEZBUSBkYXRhLgogICAgICAgIG15ICRGQVEgPSAkTGlua0xpc3R7JEl0ZW1JRH0tPntEYXRhfTsKCiAgICAgICAgIyBGQVEgTnVtYmVyIG11c3QgYmUgcHJlc2VudCAoc2luY2UgaXQgY29udGFpbnMgbWFzdGVyIGxpbmsgdG8gdGhlIEZBUSkuCiAgICAgICAgbXkgQEl0ZW1Db2x1bW5zID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEZBUS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICBMaW5rICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e0Jhc2VsaW5rfSAuICdBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0nIC4gJEl0ZW1JRCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IHsgJFNvcnRPcmRlcnskYX0gPD0+ICRTb3J0T3JkZXJ7JGJ9IH0ga2V5cyAlVXNlckNvbHVtbnMgKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICRDb2x1bW4gZXEgJ0ZBUU51bWJlcic7ICAgICMgQWx3YXlzIHByZXNlbnQsIGFscmVhZHkgYWRkZWQuCgogICAgICAgICAgICAjIGlmIGVuYWJsZWQgYnkgZGVmYXVsdAogICAgICAgICAgICBpZiAoICRVc2VyQ29sdW1uc3skQ29sdW1ufSA9PSAyICkgewoKICAgICAgICAgICAgICAgIG15ICVIYXNoOwogICAgICAgICAgICAgICAgaWYgKCBncmVwIHsgJF8gZXEgJENvbHVtbiB9IEBUaW1lTG9uZ1R5cGVzICkgewogICAgICAgICAgICAgICAgICAgICRIYXNoeydUeXBlJ30gPSAnVGltZUxvbmcnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEhhc2h7J1R5cGUnfSA9ICdUZXh0JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ1RpdGxlJyApIHsKICAgICAgICAgICAgICAgICAgICAkSGFzaHtNYXhMZW5ndGh9ID0gNTA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBGQVEgZmllbGRzLgogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdBcHByb3ZlZCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRGQVEtPnskQ29sdW1ufSA/ICdZZXMnIDogJ05vJzsKICAgICAgICAgICAgICAgICAgICAgICAgJEhhc2h7J0NvbnRlbnQnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKS0+VHJhbnNsYXRlKCRWYWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkSGFzaHsnQ29udGVudCd9ID0gJEZBUS0+eyRDb2x1bW59OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIER5bmFtaWMgZmllbGRzLgogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29sdW1uOwogICAgICAgICAgICAgICAgICAgICRERkNvbHVtbiA9fiBze0R5bmFtaWNGaWVsZF99e31nOwoKICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAgICAgIyBHZXQgZmllbGQgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlTWF4Q2hhcnMgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkSGFzaHsnQ29udGVudCd9ID0gJFZhbHVlU3RyZy0+e1RpdGxlfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgXCVIYXNoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXEBJdGVtQ29sdW1uczsKICAgIH0KCiAgICByZXR1cm4gaWYgIUBJdGVtTGlzdDsKCiAgICAjIERlZmluZSB0aGUgYmxvY2sgZGF0YS4KICAgIG15ICVCbG9jayA9ICgKICAgICAgICBPYmplY3QgICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgIEJsb2NrbmFtZSAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSwKICAgICAgICBPYmplY3ROYW1lID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3ROYW1lfSwKICAgICAgICBPYmplY3RJRCAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgSGVhZGxpbmUgICA9PiBcQEhlYWRsaW5lLAogICAgICAgIEl0ZW1MaXN0ICAgPT4gXEBJdGVtTGlzdCwKICAgICAgICBBbGxDb2x1bW5zID0+IFxAQWxsQ29sdW1ucywKICAgICk7CgogICAgcmV0dXJuICggXCVCbG9jayApOwp9Cgo9aGVhZDIgVGFibGVDcmVhdGVTaW1wbGUoKQoKcmV0dXJuIGEgaGFzaCB3aXRoIHRoZSBsaW5rIG91dHB1dCBkYXRhCgogICAgbXkgJUxpbmtPdXRwdXREYXRhID0gJExpbmtPYmplY3QtPlRhYmxlQ3JlYXRlU2ltcGxlKAogICAgICAgIE9iamVjdExpbmtMaXN0V2l0aERhdGEgPT4gJE9iamVjdExpbmtMaXN0UmVmLAogICAgKTsKCmEgcmVzdWx0IGNvdWxkIGJlIFJldHVybgoKICAgICVMaW5rT3V0cHV0RGF0YSA9ICgKICAgICAgICBOb3JtYWw6OlNvdXJjZSA9PiB7CiAgICAgICAgICAgIFRpY2tldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRjo1NTU1NScsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnRkFRIzU1NTU1NTogVGhlIEZBUSB0aXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0Y6MjIyMjInLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0ZBUSMyMjIyMjogVGl0bGUgb2YgRkFRIDIyMjIyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBQYXJlbnRDaGlsZDo6VGFyZ2V0ID0+IHsKICAgICAgICAgICAgVGlja2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdGOjc3Nzc3JywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdGQVEjNzc3Nzc6IEZBUSB0aXRsZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFRhYmxlQ3JlYXRlU2ltcGxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IHx8IHJlZiAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBPYmplY3RMaW5rTGlzdFdpdGhEYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEZBUUhvb2sgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6RkFRSG9vaycpOwogICAgbXkgJUxpbmtPdXRwdXREYXRhOwogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfSApIHsKCiAgICAgICAgIyBleHRyYWN0IGxpbmsgdHlwZSBMaXN0CiAgICAgICAgbXkgJExpbmtUeXBlTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX07CgogICAgICAgIGZvciBteSAkRGlyZWN0aW9uICggc29ydCBrZXlzICV7JExpbmtUeXBlTGlzdH0gKSB7CgogICAgICAgICAgICAjIGV4dHJhY3QgZGlyZWN0aW9uIGxpc3QKICAgICAgICAgICAgbXkgJERpcmVjdGlvbkxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn07CgogICAgICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgICAgIGZvciBteSAkSXRlbUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IEZBUSBkYXRhCiAgICAgICAgICAgICAgICBteSAkRkFRID0gJERpcmVjdGlvbkxpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICVJdGVtID0gKAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0Y6JyAuICRGQVEtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gIiRGQVFIb29rJEZBUS0+e051bWJlcn06ICRGQVEtPntUaXRsZX0iLAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkSXRlbUlELAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1MaXN0LCBcJUl0ZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGl0ZW0gbGlzdCB0byBsaW5rIG91dHB1dCBkYXRhCiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YXsgJExpbmtUeXBlIC4gJzo6JyAuICREaXJlY3Rpb24gfS0+e0ZBUX0gPSBcQEl0ZW1MaXN0OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJUxpbmtPdXRwdXREYXRhOwp9Cgo9aGVhZDIgQ29udGVudFN0cmluZ0NyZWF0ZSgpCgpyZXR1cm4gYSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMaW5rT2JqZWN0LT5Db250ZW50U3RyaW5nQ3JlYXRlKAogICAgICAgIENvbnRlbnREYXRhID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBDb250ZW50U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0NvbnRlbnREYXRhfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29udGVudERhdGEhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIFRPRE86IENoZWNrIHdoeSBubyByZXR1cm4gaXMgbmVlZGVkIQogICAgcmV0dXJuOwp9Cgo9aGVhZDIgU2VsZWN0YWJsZU9iamVjdExpc3QoKQoKcmV0dXJuIGFuIGFycmF5IGhhc2ggd2l0aCBzZWxlY3QtYWJsZSBvYmplY3RzCgogICAgbXkgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gJExpbmtPYmplY3QtPlNlbGVjdGFibGVPYmplY3RMaXN0KAogICAgICAgIFNlbGVjdGVkID0+ICRJZGVudGlmaWVyLCAgIyAob3B0aW9uYWwpCiAgICApOwoKYSByZXN1bHQgY291bGQgYmUKCiAgICBAU2VsZWN0YWJsZU9iamVjdExpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRkFRJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0ZBUScsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VsZWN0YWJsZU9iamVjdExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZWN0ZWQ7CiAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gJiYgJFBhcmFte1NlbGVjdGVkfSBlcSAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSApIHsKICAgICAgICAkU2VsZWN0ZWQgPSAxOwogICAgfQoKICAgICMgb2JqZWN0IHNlbGVjdCBsaXN0CiAgICBteSBAT2JqZWN0U2VsZWN0TGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgICAgICBWYWx1ZSAgICA9PiAkU2VsZi0+e09iamVjdERhdGF9LT57UmVhbG5hbWV9LAogICAgICAgICAgICBTZWxlY3RlZCA9PiAkU2VsZWN0ZWQsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBPYmplY3RTZWxlY3RMaXN0Owp9Cgo9aGVhZDIgU2VhcmNoT3B0aW9uTGlzdCgpCgpyZXR1cm4gYW4gYXJyYXkgaGFzaCB3aXRoIHNlYXJjaCBvcHRpb25zCgogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAkTGlua09iamVjdC0+U2VhcmNoT3B0aW9uTGlzdCgKICAgICAgICBTdWJPYmplY3QgPT4gJ0JsYScsICAjIChvcHRpb25hbCkKICAgICk7CgphIHJlc3VsdCBjb3VsZCBiZQoKICAgIEBTZWFyY2hPcHRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0ZBUSMnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnMTIzNCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgSW5wdXRTdHJnID0+ICRGb3JtU3RyaW5nLAogICAgICAgICAgICBGb3JtRGF0YSAgPT4gJ0JsYUJsYScsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoT3B0aW9uTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2VhcmNoIG9wdGlvbiBsaXN0CiAgICBteSAkRkFRSG9vayAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpGQVFIb29rJyk7CiAgICBteSBAU2VhcmNoT3B0aW9uTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgPT4gJEZBUUhvb2ssCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdUaXRsZScsCiAgICAgICAgICAgIE5hbWUgPT4gJ1RpdGxlJywKICAgICAgICAgICAgVHlwZSA9PiAnVGV4dCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ1doYXQnLAogICAgICAgICAgICBOYW1lID0+ICdGdWxsdGV4dCcsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGZvcm0ga2V5CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKICAgICAgICAkUm93LT57Rm9ybUtleX0gPSAnU0VBUkNIOjonIC4gJFJvdy0+e0tleX07CiAgICB9CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgYWRkIGZvcm0gZGF0YSBhbmQgaW5wdXQgc3RyaW5nCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKCiAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRSb3ctPntGb3JtS2V5fSApOwoKICAgICAgICAjIHBhcnNlIHRoZSBpbnB1dCB0ZXh0IGJsb2NrCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5wdXRUZXh0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUm93LT57Rm9ybURhdGF9IHx8ICcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoZSBpbnB1dCBzdHJpbmcKICAgICAgICAkUm93LT57SW5wdXRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0xpbmtPYmplY3QnLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIEBTZWFyY2hPcHRpb25MaXN0Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFROwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0RhdGF9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17RGF0YX0gbmUgJ1NDQUxBUic7CiAgICByZXR1cm4gaWYgISR7ICRQYXJhbXtEYXRhfSB9OwogICAgcmV0dXJuIGlmICEkUGFyYW17VGVtcGxhdGVGaWxlfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+e0FnZW50RkFRRXhwbG9yZXJ9OwoKICAgIG15ICRHcm91cHNSbyA9ICRDb25maWctPntHcm91cFJvfSB8fCBbXTsKCiAgICBteSAkSGFzUGVybWlzc2lvbiA9IDE7CgogICAgIyBjaGVjayBwZXJtaXNzaW9uCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkR3JvdXBzUm8pICkgewoKICAgICAgICAkSGFzUGVybWlzc2lvbiA9IDA7CgogICAgICAgICMgY2hlY2sgcmVhZCBvbmx5IGdyb3VwcwogICAgICAgIFJPR1JPVVA6CiAgICAgICAgZm9yIG15ICRSb0dyb3VwICggQHskR3JvdXBzUm99ICkgewoKICAgICAgICAgICAgJEhhc1Blcm1pc3Npb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRMYXlvdXRPYmplY3QtPntFbnZSZWZ9LT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkUm9Hcm91cCwKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAncm8nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST0dST1VQIGlmICEkSGFzUGVybWlzc2lvbjsKICAgICAgICAgICAgbmV4dCBST0dST1VQIGlmICRIYXNQZXJtaXNzaW9uICE9IDE7CgogICAgICAgICAgICBsYXN0IFJPR1JPVVA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEhhc1Blcm1pc3Npb247CgogICAgIyBnZXQgYWxsb3dlZCB0ZW1wbGF0ZSBuYW1lcwogICAgbXkgJFZhbGlkVGVtcGxhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCcpLT57RkFRfS0+e1RlbXBsYXRlc307CgogICAgIyBjaGVjayB0ZW1wbGF0ZSBuYW1lCiAgICByZXR1cm4gaWYgISRWYWxpZFRlbXBsYXRlcy0+eyAkUGFyYW17VGVtcGxhdGVGaWxlfSB9OwoKICAgICMgaWYgbm8gc2Vzc2lvbiBjb29raWVzIGFyZSB1c2VkIHdlIGF0dGFjaCB0aGUgc2Vzc2lvbiBhcyBVUkwgcGFyYW1ldGVyCiAgICBteSAkU2Vzc2lvblN0cmluZyA9ICcnOwogICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdTZXNzaW9uVXNlQ29va2llJykgKSB7CiAgICAgICAgbXkgJFNlc3Npb25JRCA9ICRQYXJhbXtTZXNzaW9uSUR9CiAgICAgICAgICAgIHx8ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRDb25maWdPYmplY3QtPkdldCgnU2Vzc2lvbk5hbWUnKSApCiAgICAgICAgICAgIHx8ICcnOwogICAgICAgICRTZXNzaW9uU3RyaW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdTZXNzaW9uTmFtZScpIC4gJz0nIC4gJFNlc3Npb25JRCAuICc7JzsKICAgIH0KCiAgICBteSAkU3RhcnRQYXR0ZXJuICAgID0gJzwhLS0gWyBdIE91dHB1dEZpbHRlckhvb2tfVGlja2V0T3B0aW9uc0VuZCBbIF0gLS0+IC4rPyc7CiAgICBteSAkRkFRVHJhbnNsYXRhYmxlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdGQVEnKTsKCiAgICAjIGFkZCBGQVEgbGluayB0byBhbiBleGlzdGluZyBPcHRpb25zIGJsb2NrCiAgICAjJEZpbmlzaFBhdHRlcm4gd2lsbCBiZSByZXBsYWNlZCBieSAkUmVwbGFjZQogICAgaWYgKCAkeyAkUGFyYW17RGF0YX0gfSA9fiBteyAkU3RhcnRQYXR0ZXJuIH1peG1zICkgewoKICAgICAgICBteSAkRmluaXNoUGF0dGVybiA9ICc8L2Rpdj4nOwogICAgICAgIG15ICRSZXBsYWNlICAgICAgID0gPDwiRU5EIjsKICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGhyZWY9XCIjXCIgaWQ9XCJPcHRpb25GQVFcIj5bICRGQVFUcmFuc2xhdGFibGUgXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KRU5ECiAgICAgICAgJHsgJFBhcmFte0RhdGF9IH0gPX4gc3sgKCRTdGFydFBhdHRlcm4pICRGaW5pc2hQYXR0ZXJuIH17JDEkUmVwbGFjZX1peG1zOwoKICAgICAgICAjIGluamVjdCB0aGUgbmVjZXNzYXJ5IEpTIGludG8gdGhlIHRlbXBsYXRlCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNPbkRvY3VtZW50Q29tcGxldGUoIENvZGUgPT4gPDwiRU9GIik7Ci8qZ2xvYmFsIEZBUTogdHJ1ZSAqLwpGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5Jbml0RkFRVGlja2V0Q29tcG9zZShcJCgnI1JpY2hUZXh0JykpOwpcJCgnI09wdGlvbkZBUScpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICB2YXIgRkFRSUZyYW1lID0gJzxpZnJhbWUgY2xhc3M9XCJUZXh0T3B0aW9uIEZBUVwiIHNyYz1cIicgKyBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpICsgJz8nICsgJyRTZXNzaW9uU3RyaW5nJyArICdBY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtOYXY9Tm9uZTtTdWJqZWN0PTtXaGF0PVwiPjwvaWZyYW1lPic7CiAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZyhGQVFJRnJhbWUsICcnLCAnMTBweCcsICdDZW50ZXInLCB0cnVlKTsKICAgIHJldHVybiBmYWxzZTsKfSk7CkVPRgoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFkZCBGQVEgbGluayBhbmQgaXRzIG93biBibG9jaywgaWYgdGhlcmUgbm8gVGlja2V0T3B0aW9ucyBibG9jayB3YXMgY2FsbGVkCiAgICAkU3RhcnRQYXR0ZXJuID0gJzwhLS0gWyBdIE91dHB1dEZpbHRlckhvb2tfTm9UaWNrZXRPcHRpb25zRmFsbGJhY2sgWyBdIC0tPiAuKz8nOwogICAgbXkgJE9wdGlvbnNUcmFuc2xhdGFibGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ09wdGlvbnMnKTsKICAgIG15ICRSZXBsYWNlICAgICAgICAgICAgID0gPDwiRU5EIjsKPCEtLSBPdXRwdXRGaWx0ZXJIb29rX05vVGlja2V0T3B0aW9uc0ZhbGxiYWNrIC0tPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD4kT3B0aW9uc1RyYW5zbGF0YWJsZTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgIGhyZWY9XCIjXCIgaWQ9XCJPcHRpb25GQVFcIj5bICRGQVFUcmFuc2xhdGFibGUgXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiQ2xlYXJcIj48L2Rpdj4KRU5ECiAgICAkeyAkUGFyYW17RGF0YX0gfSA9fiBzeyAoJFN0YXJ0UGF0dGVybikgfXskUmVwbGFjZX1peG1zOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTT25Eb2N1bWVudENvbXBsZXRlKCBDb2RlID0+IDw8IkVPRiIpOwovKmdsb2JhbCBGQVE6IHRydWUgKi8KRkFRLkFnZW50LlRpY2tldENvbXBvc2UuSW5pdEZBUVRpY2tldENvbXBvc2UoXCQoJyNSaWNoVGV4dCcpKTsKXCQoJyNPcHRpb25GQVEnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgdmFyIEZBUUlGcmFtZSA9ICc8aWZyYW1lIGNsYXNzPSJUZXh0T3B0aW9uIEZBUSIgc3JjPSInICsgQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSArICc/JyArICckU2Vzc2lvblN0cmluZycgKyAnQWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7TmF2PU5vbmU7U3ViamVjdD07V2hhdD0iPjwvaWZyYW1lPic7CiAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZyhGQVFJRnJhbWUsICcnLCAnMTBweCcsICdDZW50ZXInLCB0cnVlKTsKICAgIHJldHVybiBmYWxzZTsKfSk7CkVPRgoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFRQ3VzdG9tZXJSZWxhdGVkQXJ0aWNsZXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRUZW1wbGF0ZU5hbWUgPSAkUGFyYW17VGVtcGxhdGVGaWxlfSB8fCAnJzsKCiAgICByZXR1cm4gMSBpZiAhJFRlbXBsYXRlTmFtZTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICByZXR1cm4gMSBpZiAhJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkN1c3RvbWVyOjpSZWxhdGVkQXJ0aWNsZXM6OkVuYWJsZWQnKTsKCiAgICBteSAkT3V0cHV0RmlsdGVyUG9zdENvbmZpZ3MgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpPdXRwdXQ6OkZpbHRlckVsZW1lbnRQb3N0Jyk7CgogICAgcmV0dXJuIGlmICEkT3V0cHV0RmlsdGVyUG9zdENvbmZpZ3M7CiAgICByZXR1cm4gaWYgcmVmICRPdXRwdXRGaWx0ZXJQb3N0Q29uZmlncyBuZSAnSEFTSCc7CgogICAgIyBFeHRyYWN0IHRoZSBvdXRwdXQgZmlsdGVyIGNvbmZpZy4KICAgIG15ICRPdXRwdXRGaWx0ZXJDb25maWcgPSAkT3V0cHV0RmlsdGVyUG9zdENvbmZpZ3MtPntPdXRwdXRGaWx0ZXJQb3N0RkFRQ3VzdG9tZXJSZWxhdGVkQXJ0aWNsZXN9OwoKICAgIHJldHVybiBpZiAhJE91dHB1dEZpbHRlckNvbmZpZzsKICAgIHJldHVybiBpZiByZWYgJE91dHB1dEZpbHRlckNvbmZpZyBuZSAnSEFTSCc7CgogICAgbXkgJFZhbGlkVGVtcGxhdGVzID0gJE91dHB1dEZpbHRlckNvbmZpZy0+e1RlbXBsYXRlc307CgogICAgcmV0dXJuIGlmICEkVmFsaWRUZW1wbGF0ZXM7CiAgICByZXR1cm4gaWYgcmVmICRWYWxpZFRlbXBsYXRlcyBuZSAnSEFTSCc7CgogICAgIyBBcHBseSBvbmx5IGlmIHRlbXBsYXRlIGlzIHZhbGlkIGluIGNvbmZpZy4KICAgIHJldHVybiAxIGlmICEkVmFsaWRUZW1wbGF0ZXMtPnskVGVtcGxhdGVOYW1lfTsKCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIG15ICVGQVFTZWFyY2hQYXJhbWV0ZXI7CgogICAgIyBTZXQgaW50ZXJmYWNlIHNldHRpbmcgdG8gJ2V4dGVybmFsJywgdG8gc2VhcmNoIG9ubHkgZm9yIGFwcHJvdmVkIGZhcSBhcnRpY2xlLgogICAgJEZBUVNlYXJjaFBhcmFtZXRlcntJbnRlcmZhY2V9ID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIE5hbWUgICA9PiAnZXh0ZXJuYWwnLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAkRkFRU2VhcmNoUGFyYW1ldGVye1N0YXRlc30gPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Q3VzdG9tZXI6OlN0YXRlVHlwZXMnKSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBUZXN0IGlmIGN1c3RvbWVyL3B1YmxpYyBGQVEgYXJ0aWNsZSBleGlzdHMsIGJlY2F1c2Ugd2UgZG9uJ3Qgc2hvdyB0aGUgd2lkZ2V0CiAgICAjICAgaWYgbm8gcmVsZXZhbnQgYXJ0aWNsZSBleGlzdHMuCiAgICBteSBARkFRQXJ0aWNsZUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAlRkFRU2VhcmNoUGFyYW1ldGVyLAogICAgICAgIExpbWl0ICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAhQEZBUUFydGljbGVJRHM7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIFJlbmRlciB0aGUgZW1wdHkgcmVsYXRlZCBGQVEgYXJ0aWNsZSBsaXN0IGFuZCBhZGQgdGhlIGluaXRpYWwgd2RpZ2V0IGh0bWwgY29kZSB0byB0aGUgcGFnZS4KICAgIG15ICRDdXN0b21lclJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHt9LAogICAgKTsKCiAgICBteSAkU2VhcmNoID0gJyg8ZGl2IGlkPSJSaWNoVGV4dFNlcnZlckVycm9yIltePl0qPi4qPzxcL2Rpdj4pKFxzKjxkaXYgY2xhc3M9IkNsZWFyIj48XC9kaXY+XHMqPFwvZGl2PiknOwogICAgJHsgJFBhcmFte0RhdGF9IH0KICAgICAgICA9fiBzeyRTZWFyY2h9eyQxPGRpdiBpZD0iRkFRUmVsYXRlZEFydGljbGVzIiBjbGFzcz0iSGlkZGVuIj4kQ3VzdG9tZXJSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nPC9kaXY+JDJ9bXNnOwoKICAgIG15ICRGcm9udGVuZEN1c3RvbWVyVGlja2V0TWVzc2FnZUNvbmZpZyAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCJUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE1lc3NhZ2UiKTsKICAgIG15ICRGcm9udGVuZEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUVJlbGF0ZWRBcnRpY2xlcyIpOwoKICAgIG15ICRRdWV1ZXNFbmFibGVkICAgICA9ICRGcm9udGVuZEN1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzQ29uZmlnLT57J1F1ZXVlc0VuYWJsZWQnfSB8fCAnJzsKICAgIG15ICRRdWV1ZXNFbmFibGVkU3RyZyA9ICcnOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFF1ZXVlc0VuYWJsZWQpICkgewoKICAgICAgICAjIERvbid0IHNob3cgdGhlIGZ1bmN0aW9uYWxpdHksIGlmIHRoZSBxdWV1ZSBzZWxlY3Rpb24gaXMgZGlzYWJsZWQKICAgICAgICAjICAgYW5kIHRoZSBkZWZhdWx0IHF1ZXVlIGlzIG5vdCBpbiB0aGUgZW5hYmxlZCBxdWV1ZXMuCiAgICAgICAgaWYgKCAhJEZyb250ZW5kQ3VzdG9tZXJUaWNrZXRNZXNzYWdlQ29uZmlnLT57UXVldWV9ICkgewogICAgICAgICAgICBteSAlTG9va3VwUXVxdWVzRW5hYmxlZCA9IG1hcCB7ICRfID0+IDEgfSBAeyRRdWV1ZXNFbmFibGVkfTsKCiAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgaWYgISRGcm9udGVuZEN1c3RvbWVyVGlja2V0TWVzc2FnZUNvbmZpZy0+e1F1ZXVlRGVmYXVsdH0KICAgICAgICAgICAgICAgIHx8ICEkTG9va3VwUXVxdWVzRW5hYmxlZHsgJEZyb250ZW5kQ3VzdG9tZXJUaWNrZXRNZXNzYWdlQ29uZmlnLT57UXVldWVEZWZhdWx0fSB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFF1ZXVlc0VuYWJsZWRTdHJnID0gam9pbiggIicsJyIsIEB7JFF1ZXVlc0VuYWJsZWR9ICk7CiAgICAgICAgICAgICRRdWV1ZXNFbmFibGVkU3RyZyA9ICInJFF1ZXVlc0VuYWJsZWRTdHJnJyI7CiAgICAgICAgfQogICAgfQoKICAgICMgVE9ETyB0aGUgSlMgc2hvdWxkIGJlIG1vdmVkIGluIGEgb3duIEpTIGZpbGUgd2l0aCBPVFJTIDYhCiAgICAjIGluamVjdCB0aGUgbmVjZXNzYXJ5IEpTIGludG8gdGhlIHRlbXBsYXRlCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU09uRG9jdW1lbnRDb21wbGV0ZSggQ29kZSA9PiA8PCJFT0YiKTsKdmFyIFF1ZXVlc0VuYWJsZWQgPSBbICRRdWV1ZXNFbmFibGVkU3RyZyBdLApMYXN0RGF0YTsKCkNvcmUuQXBwLlN1YnNjcmliZSgnRXZlbnQuVUkuUmljaFRleHRFZGl0b3IuSW5zdGFuY2VSZWFkeScsIGZ1bmN0aW9uKCkgewpcJCgnI0Rlc3QnKS5vbignY2hhbmdlLlJlbGF0ZWRGQVFBcnRpY2xlJywgZnVuY3Rpb24gKCkgewogICAgdmFyIFNlbGVjdGVkUXVldWUgPSBcJCh0aGlzKS52YWwoKSwKICAgICAgICBTZWxlY3RlZFF1ZXVlTmFtZSA9IFNlbGVjdGVkUXVldWUucmVwbGFjZSgvXFxkKlxcfFxcfC0/LywgJycpOwoKICAgIGlmICggXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5oYXNDbGFzcygnSGlkZGVuJykgJiYgKCFRdWV1ZXNFbmFibGVkLmxlbmd0aCB8fCAhU2VsZWN0ZWRRdWV1ZU5hbWUgfHwgXCQuaW5BcnJheShTZWxlY3RlZFF1ZXVlTmFtZSwgUXVldWVzRW5hYmxlZCkgPiAtMSkgKSB7CiAgICAgICAgXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CgogICAgICAgIGlmIChcJCgnI1N1YmplY3QnKS52YWwoKSB8fCBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10uZ2V0RGF0YSgpKSB7CiAgICAgICAgICAgIFwkKCcjU3ViamVjdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgaWYgKCAhU2VsZWN0ZWRRdWV1ZU5hbWUgfHwgKCBRdWV1ZXNFbmFibGVkLmxlbmd0aCAmJiBcJC5pbkFycmF5KFNlbGVjdGVkUXVldWVOYW1lLCBRdWV1ZXNFbmFibGVkKSA9PSAtMSApICkgewogICAgICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuYWRkQ2xhc3MoJ0hpZGRlbicpOwogICAgfQp9KTsKClwkKCcjU3ViamVjdCcpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgIHZhciBTZWxlY3RlZFF1ZXVlID0gXCQoJyNEZXN0JykudmFsKCksCiAgICAgICAgU2VsZWN0ZWRRdWV1ZU5hbWUsCiAgICAgICAgRGF0YTsKCiAgICBpZiAoU2VsZWN0ZWRRdWV1ZSkgewogICAgICAgIFNlbGVjdGVkUXVldWUucmVwbGFjZSgvXFxkKlxcfFxcfC0/LywgJycpCiAgICB9CgogICAgaWYgKCAhUXVldWVzRW5hYmxlZC5sZW5ndGggfHwgIVNlbGVjdGVkUXVldWVOYW1lIHx8IFwkLmluQXJyYXkoU2VsZWN0ZWRRdWV1ZU5hbWUsIFF1ZXVlc0VuYWJsZWQpID4gLTEgKSB7CgogICAgICAgIERhdGEgPSB7CiAgICAgICAgICAgIEFjdGlvbjogJ0N1c3RvbWVyRkFRUmVsYXRlZEFydGljbGVzJywKICAgICAgICAgICAgU3ViamVjdDogXCQoJyNTdWJqZWN0JykudmFsKCksCiAgICAgICAgICAgIEJvZHk6IENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5nZXREYXRhKCkKICAgICAgICB9OwoKICAgICAgICBpZiAoICFMYXN0RGF0YSB8fCBMYXN0RGF0YS5TdWJqZWN0ICE9IERhdGEuU3ViamVjdCB8fCBMYXN0RGF0YS5Cb2R5ICE9IERhdGEuQm9keSApIHsKCiAgICAgICAgICAgIGlmICghXCQoJy5GQVFNaW5pTGlzdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMgLkNvbnRlbnQnKS5odG1sKCc8ZGl2IGNsYXNzPSJDZW50ZXIiPjxzcGFuIGNsYXNzPSJBSkFYTG9hZGVyIiB0aXRsZT0iJyArIENvcmUuQ29uZmlnLkdldCgnTG9hZGluZ01zZycpICsgJyI+PC9zcGFuPjwvZGl2PicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKCFcJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcyAuSGVhZGVyIC5BSkFYTG9hZGVyJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBcJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcyAuSGVhZGVyIGgzJykuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJBSkFYTG9hZGVyIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBtYXJnaW46IDA7IiB0aXRsZT0iJyArIENvcmUuQ29uZmlnLkdldCgnTG9hZGluZ01zZycpICsgJyI+PC9zcGFuPicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoXCQoJyNTdWJqZWN0JykuZGF0YSgnUmVsYXRlZEZBUUFydGljbGVzWEhSJykpIHsKCiAgICAgICAgICAgICAgICBcJCgnI1N1YmplY3QnKS5kYXRhKCdSZWxhdGVkRkFRQXJ0aWNsZXNYSFInKS5hYm9ydCgpOwogICAgICAgICAgICAgICAgXCQoJyNTdWJqZWN0JykucmVtb3ZlRGF0YSgnUmVsYXRlZEZBUUFydGljbGVzWEhSJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFwkKCcjU3ViamVjdCcpLmRhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicsIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLCBEYXRhLCBmdW5jdGlvbiAoUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICBcJCgnI1N1YmplY3QnKS5yZW1vdmVEYXRhKCdSZWxhdGVkRkFRQXJ0aWNsZXNYSFInKTsKCiAgICAgICAgICAgICAgICAvLyBSZW1lYmVyIHRoZSBsYXN0IGRhdGEgdG8gZXhlY3V0ZSB0aGUgYWpheCByZXF1ZXN0IG9ubHkgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgICAgTGFzdERhdGEgPSBEYXRhOwoKICAgICAgICAgICAgICAgIGlmICggXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5sZW5ndGggKSB7CgogICAgICAgICAgICAgICAgICAgIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuaHRtbChSZXNwb25zZS5DdXN0b21lclJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KSk7CiAgICAgICAgfQogICAgfQp9KTsKClwkKCcjU3ViamVjdCcpLm9uKCdwYXN0ZSBrZXlkb3duJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICB2YXIgVmFsdWUgPSBcJCgnI1N1YmplY3QnKS52YWwoKTsKCiAgICAvLyB0cmlnZ2VyIG9ubHkgdGhlIGNoYW5nZSBldmVudCBmb3IgdGhlIHN1YmplY3QsIGlmIHNwYWNlIG9yIGVudGVyIHdhcyBwcmVzc2VkCiAgICBpZiAoKCBFdmVudC50eXBlID09PSAna2V5ZG93bicgJiYgKCBFdmVudC53aGljaCA9PSAzMiB8fCBFdmVudC53aGljaCA9PSAxMyApICYmICggVmFsdWUubGVuZ3RoID4gMTAgfHwgQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLmdldERhdGEoKSkpIHx8IEV2ZW50LnR5cGUgIT09ICdrZXlkb3duJykgewogICAgICAgIFwkKCcjU3ViamVjdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgfQp9KTsKCi8vIFRoZSAiY2hhbmdlIiBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBhIGNoYW5nZSBpcyBtYWRlIGluIHRoZSBlZGl0b3IuCkNLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5vbiggJ2tleScsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgIC8vIHRyaWdnZXIgb25seSB0aGUgY2hhbmdlIGV2ZW50IGZvciB0aGUgc3ViamVjdCwgaWYgc3BhY2Ugb3IgZW50ZXIgd2FzIHByZXNzZWQKICAgIGlmICggRXZlbnQuZGF0YS5rZXlDb2RlID09IDMyIHx8IEV2ZW50LmRhdGEua2V5Q29kZSA9PSAxMykgewogICAgICAgIFwkKCcjU3ViamVjdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgfQp9KTsKCi8vIFRoZSAicGFzdGUiIGV2ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgcGFzdGUgaXMgbWFkZSBpbiB0aGUgZWRpdG9yLgpDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10ub24oICdwYXN0ZScsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgIC8vIHRyaWdnZXIgb25seSB0aGUgY2hhbmdlIGV2ZW50IGZvciB0aGUgc3ViamVjdAogICAgXCQoJyNTdWJqZWN0JykudHJpZ2dlcignY2hhbmdlJyk7Cn0pOwoKLy8gVGhlICJibHVyIiBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBhIGJsdXIgaXMgbWFkZSBpbiB0aGUgZWRpdG9yLgpDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10ub24oICdibHVyJywgZnVuY3Rpb24gKEV2ZW50KSB7CgogICAgLy8gdHJpZ2dlciBvbmx5IHRoZSBjaGFuZ2UgZXZlbnQgZm9yIHRoZSBzdWJqZWN0CiAgICBcJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKfSk7CgovLyBUcmlnZ2VyIHRoZSAnUmVsYXRlZEZBUUFydGljbGUnIGNoYW5nZSBldmVudCB0byBoaWRlL3Nob3cgdGhlIHJlbGF0ZCBmYXEgYXJ0aWNsZSB3aWRnZXQgZm9yIHRoZSBjYXNlCi8vICB0aGF0IHRoZSBxdWV1ZSBpcyBhbHJlYWR5IHNlbGVjdGVkIGF0IHRoZSBwYWdlIGxvYWQgb3Igc2hvdyB0aGUgd2lkZ2V0IGFsd2F5cyBpZiB0aGUgcXVldWUgc2VsZWN0aW9uIGlzIGRpc2FibGVkLgppZiAoICFcJCgnI0Rlc3QnKS5sZW5ndGggKSB7CiAgICAgXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CgogICAgaWYgKFwkKCcjU3ViamVjdCcpLnZhbCgpIHx8IENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5nZXREYXRhKCkpIHsKICAgICAgICBcJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgIH0KfQplbHNlIHsKICAgIFwkKCcjRGVzdCcpLnRyaWdnZXIoJ2NoYW5nZS5SZWxhdGVkRkFRQXJ0aWNsZScpOwp9Cgp9KTsKCkVPRgoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGb3JtU2NyZWVuIE5vU2lkZWJhciI+CgogICAgPGgxPlslIFRyYW5zbGF0ZSgiQWRkIEZBUSBBcnRpY2xlIikgfCBodG1sICVdPC9oMT4KICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQWRkIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTYXZlIi8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KCiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpdGxlIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qIDwvc3Bhbj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIGlkPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5UaXRsZVNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZHMiPlslIFRyYW5zbGF0ZSgiS2V5d29yZHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJLZXl3b3JkcyIgaWQ9IktleXdvcmRzIiB2YWx1ZT0iWyUgRGF0YS5LZXl3b3JkcyB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkNhdGVnb3J5SUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPiogPC9zcGFuPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQ2F0ZWdvcnlJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQ2F0ZWdvcnlJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkEgY2F0ZWdvcnkgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhdGVPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSUQiPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsaWRPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRCI+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYW5ndWFnZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxhbmd1YWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk5vTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikxhbmd1YWdlSUQiIHZhbHVlPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJOb0xhbmd1YWdlIikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBcHByb3ZhbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWQiPlslIFRyYW5zbGF0ZSgiQXBwcm92YWwiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQXBwcm92YWxPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBcHByb3ZhbCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFiZWwgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQoKIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICA8L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICA8L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRfRmllbGQyIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KWyUgSU5DTFVERSAiRm9ybUVsZW1lbnRzL0F0dGFjaG1lbnRMaXN0LnR0IiAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuRmllbGQgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DYXB0aW9uKSB8IGh0bWwgJV06PGJyLz48c3BhbiBjbGFzcz0iRkFRU3RhdGVOYW1lIj4oWyUgVHJhbnNsYXRlKERhdGEuU3RhdGVOYW1lKSB8IGh0bWwgJV0pPC9zcGFuPjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0iIGNsYXNzPSJSaWNoVGV4dCIgbmFtZT0iWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0iIHJvd3M9IjE1IiBjb2xzPSI3MCI+WyUgRGF0YS5Db250ZW50IHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudCIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJGQVFTdWJtaXQiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ3JlYXRlIikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2hlY2stc3F1YXJlLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJDcmVhdGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFBZGQiKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3QiKSAlXQo8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgIDx0cj4KICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIGNsYXNzPSJBc0Jsb2NrIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0gKFslIERhdGEuQ2F0ZWdvcnlOYW1lIHwgaHRtbCAlXSkiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg1MCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3J5U2hvcnROYW1lIHwgaHRtbCAlXSAtIFslIERhdGEuQ2hhbmdlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXQogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L3RkPgogICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IikgJV0KICAgIDwvdGJvZHk+CjwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3QiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50IikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0ZBUSBDYXRlZ29yeSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBTV0lUQ0ggRGF0YS5BY3Rpb24gJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEZBUSBDYXRlZ29yeSIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBGQVEgQ2F0ZWdvcnkiKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5OYW1lICkgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCBUeXBlID0gIkFnZW50IiAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBY3Rpb25MaXN0IikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbk92ZXJ2aWV3IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbk92ZXJ2aWV3IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbkFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QWRkIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+WyUgVHJhbnNsYXRlKCJBZGQgY2F0ZWdvcnkiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uQWRkIikgJV0KCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFjdGlvbkxpc3QiKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBzdW1tYXJ5PSJGQVEgY2F0ZWdvcmllcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFslIElGIERhdGEuVmFsaWQgIT0gJ3ZhbGlkJyVdY2xhc3M9IkludmFsaWQiWyUgRU5EICVdID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUNoYW5nZTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIgTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkRlbGV0ZUNhdGVnb3J5SURbJSBEYXRhLkNhdGVnb3J5SUQgfCBodG1sICVdIiBjbGFzcz0iVHJhc2hDYW4iIGhyZWY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV06IFslIERhdGEuTmFtZSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1VwZGF0ZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFkZCIpICVdCiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBZGQgQ2F0ZWdvcnkiKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyQWRkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRWRpdCIpICVdCiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJFZGl0IENhdGVnb3J5IikgfCBodG1sICVdPC9oMj4KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckVkaXQiKSAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCB1cmkgJV1BY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iWyUgRGF0YS5DYXRlZ29yeUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5hbWUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5OYW1lU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlBhcmVudElEIj5bJSBUcmFuc2xhdGUoIlN1YmNhdGVnb3J5IG9mIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlBlcm1pc3Npb25Hcm91cHMiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiUGVybWlzc2lvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkdyb3VwT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJQZXJtaXNzaW9uR3JvdXBzRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJQZXJtaXNzaW9uR3JvdXBzU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBsZWFzZSBzZWxlY3QgYXQgbGVhc3Qgb25lIHBlcm1pc3Npb24gZ3JvdXAuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFnZW50IGdyb3VwcyB0aGF0IGNhbiBhY2Nlc3MgYXJ0aWNsZXMgaW4gdGhpcyBjYXRlZ29yeS4iKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZhbGlkSUQiPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWxpZE9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ29tbWVudCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJDb21tZW50IiBpZD0iQ29tbWVudCIgdmFsdWU9IlslIERhdGEuQ29tbWVudCB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkNvbW1lbnRTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iODAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbW1lbnRFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbW1lbnRTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiV2lsbCBiZSBzaG93biBhcyBjb21tZW50IGluIEV4cGxvcmVyLiIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWxldGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9BZmZlY3RlZCIpICVdCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZmllbGRzZXQ+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIENlbnRlciI+CiAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjYXRlZ29yeT8iKSB8IGh0bWwgJV0KPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9BZmZlY3RlZCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZCIpICVdCjxwPgogICAgWyUgVHJhbnNsYXRlKCJZb3UgY2FuIG5vdCBkZWxldGUgdGhpcyBjYXRlZ29yeS4gSXQgaXMgdXNlZCBpbiBhdCBsZWFzdCBvbmUgRkFRIGFydGljbGUgYW5kL29yIGlzIHBhcmVudCBvZiBhdCBsZWFzdCBvbmUgb3RoZXIgY2F0ZWdvcnkiKSB8IGh0bWwgJV0KPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWZmZWN0ZWRJdGVtcyIpICVdCjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgWyUgVHJhbnNsYXRlKCJUaGlzIGNhdGVnb3J5IGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgYXJ0aWNsZShzKSIpIHwgaHRtbCAlXToKPC9wPgo8dWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFmZmVjdGVkSXRlbXNSb3ciKSAlXQogICAgPGxpIGNsYXNzPSJJbmRlbnQgU3BhY2luZ0JvdHRvbVNtYWxsIj4KICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLkxpbmsgJV07QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iPgogICAgICAgICAgICBbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdOlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTxzcGFuPiZuYnNwOyZtZGFzaDs8L3NwYW4+IFslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg2MCkgfCBodG1sICVdCiAgICAgICAgPC9hPgogICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkFmZmVjdGVkSXRlbXNSb3ciKSAlXQo8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRJdGVtcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZFN1YkNhdGVnb3JpZXMiKSAlXQo8cCBjbGFzcz0iU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tIj4KICAgIFslIFRyYW5zbGF0ZSgiVGhpcyBjYXRlZ29yeSBpcyBwYXJlbnQgb2YgdGhlIGZvbGxvd2luZyBzdWJjYXRlZ29yaWVzIikgfCBodG1sICVdOgo8L3A+Cjx1bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWZmZWN0ZWRTdWJDYXRlZ29yaWVzUm93IikgJV0KICAgIDxsaSBjbGFzcz0iSW5kZW50IFNwYWNpbmdCb3R0b21TbWFsbCI+CiAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rICVdO0FjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgWyUgRGF0YS5Mb25nTmFtZSB8IGh0bWwgJV0KICAgICAgICA8L2E+CiAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWZmZWN0ZWRTdWJDYXRlZ29yaWVzUm93IikgJV0KPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIkFmZmVjdGVkU3ViQ2F0ZWdvcmllcyIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiRGVsZXRlIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBXMzAwcHgiPgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPyIpIHwgaHRtbCAlXQo8L3A+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhcnROb3JtYWwiKSAlXQogICAgPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gRm9ybVNjcmVlbiBOb1NpZGViYXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQiKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZSgiRkFRIikgfCBodG1sICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgoKICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXJ0Tm9ybWFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXJ0U21hbGwiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJGQVEiKSB8IGh0bWwgJV06IFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiQWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrRW5kKCJTdGFydFNtYWxsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUVkaXQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2NyZWVuVHlwZSIgdmFsdWU9IlslIERhdGEuU2NyZWVuVHlwZSB8IGh0bWwgJV0iLz4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgWyUgRGF0YS5GaWVsZHNldENsYXNzIHwgaHRtbCAlXSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+KiA8L3NwYW4+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVGl0bGUiIGlkPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5UaXRsZVNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlRpdGxlRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVGl0bGVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkcyI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iS2V5d29yZHMiIGlkPSJLZXl3b3JkcyIgdmFsdWU9IlslIERhdGEuS2V5d29yZHMgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIG1heGxlbmd0aD0iMjAwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJDYXRlZ29yeUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qIDwvc3Bhbj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlPcHRpb24gJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNhdGVnb3J5SURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiQSBjYXRlZ29yeSBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGF0ZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbGlkT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhbmd1YWdlSUQiPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYW5ndWFnZU9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9MYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikxhbmd1YWdlSUQiIHZhbHVlPSJbJSBEYXRhLkxhbmd1YWdlSUQgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJOb0xhbmd1YWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFwcHJvdmFsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQXBwcm92ZWQiPlslIFRyYW5zbGF0ZSgiQXBwcm92YWwiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BcHByb3ZhbE9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXBwcm92YWwiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQoKIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICA8L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfRHluYW1pY0ZpZWxkX1slIERhdGEuTmFtZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KIyAgICAgICAgICAgICAgICA8L2Rpdj4KI1slIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRfRmllbGQyIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgpbJSBJTkNMVURFICJGb3JtRWxlbWVudHMvQXR0YWNobWVudExpc3QudHQiICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNhcHRpb24pIHwgaHRtbCAlXTo8YnIvPjxzcGFuIGNsYXNzPSJGQVFTdGF0ZU5hbWUiPihbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZU5hbWUpIHwgaHRtbCAlXSk8L3NwYW4+PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IlslIERhdGEuRmllbGQgfCBodG1sICVdIiBjbGFzcz0iUmljaFRleHQiIG5hbWU9IlslIERhdGEuRmllbGQgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iNzAiPlslIERhdGEuQ29udGVudCB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFbmROb3JtYWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgaWQ9IkZBUVN1Ym1pdCIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJVcGRhdGUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjayI+PC9pPiBbJSBUcmFuc2xhdGUoIlVwZGF0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJFbmROb3JtYWwiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRWRpdCIpICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkVuZFNtYWxsIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiBpZD0iRkFRU3VibWl0IiB0eXBlPSJidXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlVwZGF0ZSIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrLXNxdWFyZS1vIj48L2k+IFslIFRyYW5zbGF0ZSgiVXBkYXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJFbmRTbWFsbCIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGQVEiPgogICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoIkZBUSBFeHBsb3JlciIpIHwgaHRtbCAlXTwvaDE+CgogICAgPHVsIGNsYXNzPSJCcmVhZENydW1iIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdCiAgICAgICAgPGxpPgogICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtOYXY9WyUgRGF0YS5OYXYgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rIikgJV0KICAgICAgICA8bGk+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rIikgJV0KCiAgICA8L3VsPgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4gWyUgRGF0YS5TaWRlYmFyQ2xhc3MgfCBodG1sICVdIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1aWNrU2VhcmNoIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ubGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSJbJSBEYXRhLk5hdiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLlNlYXJjaCB8IGh0bWwgJV0iIGlkPSJTZWFyY2giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlF1aWNrIFNlYXJjaCIpIHwgaHRtbCAlXTxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiV2lsZGNhcmRzIGFyZSBhbGxvd2VkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRkFRU2VhcmNoQnV0dG9uIFNwYWNpbmdUb3AiIGlkPSJbJSBEYXRhLkFjdGlvbiB8IHVyaSAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIERhdGEuQWN0aW9uIHwgdXJpICVdO05hdj1bJSBEYXRhLk5hdiB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2giPjwvaT4gWyUgVHJhbnNsYXRlKCJBZHZhbmNlZCBTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVpY2tTZWFyY2giKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb0JveEZBUU1pbmlMaXN0IikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlcikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvd1Bvc2l0aW9uTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXS4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV07TmF2PVslIERhdGEuTmF2IHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0gKFslIERhdGEuQ2F0ZWdvcnlOYW1lIHwgaHRtbCAlXSkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlTaG9ydE5hbWUgfCB0cnVuY2F0ZSgxNSkgfCBodG1sICVdIC0gWyUgRGF0YS5MYW5ndWFnZSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdIC0gWyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3QiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3ViY2F0ZWdvcmllcyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdCIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1YmNhdGVnb3JpZXMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiIHN1bW1hcnk9IkZBUSBjYXRlZ29yaWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiU3ViY2F0ZWdvcmllcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBzdWJjYXRlZ29yaWVzIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayBNYXN0ZXJBY3Rpb25MaW5rIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtOYXY9WyUgRGF0YS5OYXYgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ29tbWVudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5TdWJDYXRlZ29yeUNvdW50IHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkFydGljbGVDb3VudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdWJjYXRlZ29yaWVzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUl0ZW1MaXN0IikgJV0KWyUgRGF0YS5GQVFJdGVtTGlzdEhUTUwgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUl0ZW1MaXN0IikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPgogICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhpc3Rvcnkgb2YiKSB8IGh0bWwgJV0gWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDYwKSB8IGh0bWwgJV0KICAgICAgICA8L2gxPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCI+WyUgVHJhbnNsYXRlKCJDbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGlzdG9yeSBDb250ZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgc3VtbWFyeT0iRkFRIGhpc3RvcnkgZGF0YSB0YWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJBY3Rpb24iKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVXNlciIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDcmVhdGV0aW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KClslIFJlbmRlckJsb2NrU3RhcnQoIlJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVkQnkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93IikgJV0KCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgPC9kaXY+CjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBUaWNrZXRMaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9GQVFGb3VuZCIpICVdCiAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBGQVEgSm91cm5hbCBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOb0ZBUUZvdW5kIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRm9ybSIpICVdCiAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwgTm9DZWxsc3BhY2luZyIgc3VtbWFyeT0iQSBnZW5lcmljIEZBUSB0YWJsZSI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciBPdmVydmlld0hlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIE92ZXJ2aWV3SGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpdGxlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2F0ZWdvcnlIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSBPdmVydmlld0hlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDYXRlZ29yeUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5hbWVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJBY3Rpb24gT3ZlcnZpZXdIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiQWN0aW9uIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5hbWVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaW1lSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVGltZSBPdmVydmlld0hlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJUaW1lIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpbWVIZWFkZXIiKSAlXQogICAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGhlYWQ+CiAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICA8dHIgaWQ9Ikl0ZW1JRF9bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV1fWyUgRGF0YS5Db3VudGVyIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICA8dGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckxpbmtTdGFydCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IHVyaSAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFRpdGxlIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlN1YmplY3QgfCBodG1sICVdIj5bJSBEYXRhLkNsZWFuU3ViamVjdCB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRUaXRsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENhdGVnb3J5IikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2F0ZWdvcnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROYW1lIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5BY3Rpb24pIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQWN0aW9uKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkVGltZSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0iPlslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGltZSIpICVdCiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgIDwvdGJvZHk+CiAgICA8L3RhYmxlPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRm9ybSIpICVdCjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50IikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBTV0lUQ0ggRGF0YS5BY3Rpb24gJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEZBUSBMYW5ndWFnZSIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBGQVEgTGFuZ3VhZ2UiKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5OYW1lICkgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCBUeXBlID0gIkFnZW50IiAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRGlzYWJsZWQiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJOb3RpY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCBBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pblN5c3RlbUNvbmZpZ3VyYXRpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWaWV3Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2V0dGluZyIgdmFsdWU9IkZBUTo6TXVsdGlMYW5ndWFnZSAiLz4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJUaGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQhIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsU2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRW5hYmxlIGl0IGhlcmUhIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtdW5sb2NrLWFsdCI+PC9pPiBbJSBUcmFuc2xhdGUoIkVuYWJsZSBpdCBoZXJlISIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRGlzYWJsZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uQWRkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkFkZCBsYW5ndWFnZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25MaXN0IikgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdCIpICVdCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBWYXJpYWJsZVdpZHRoIiBzdW1tYXJ5PSJGQVEgbGFuZ3VhZ2VzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DaGFuZ2U7TGFuZ3VhZ2VJRD1bJSBEYXRhLkxhbmd1YWdlSUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJEZWxldGVMYW5ndWFnZUlEWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFkZCBMYW5ndWFnZSIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZGQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRWRpdCBMYW5ndWFnZSIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJWYWxpZGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IHVyaSAlXUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5hbWVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkRlbGV0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQWZmZWN0ZWRJdGVtcyIpICVdCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZmllbGRzZXQ+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIENlbnRlciI+CiAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8iKSB8IGh0bWwgJV0KPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9BZmZlY3RlZEl0ZW1zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFmZmVjdGVkSXRlbXMiKSAlXQo8cD4KICAgIFslIFRyYW5zbGF0ZSgiWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISIpIHwgaHRtbCAlXQo8L3A+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgWyUgVHJhbnNsYXRlKCJUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSIpIHwgaHRtbCAlXToKPC9wPgoKPHVsPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZEl0ZW1zUm93IikgJV0KICAgIDxsaSBjbGFzcz0iSW5kZW50IFNwYWNpbmdCb3R0b21TbWFsbCI+CiAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rICVdO0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTpbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08c3Bhbj4mbmJzcDsmbWRhc2g7PC9zcGFuPiBbJSBEYXRhLlRpdGxlIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXQogICAgICAgIDwvYT4KICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZEl0ZW1zUm93IikgJV0KPC91bD4KClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZEl0ZW1zIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkRlbGV0ZSIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50IikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0ZBUSBMYW5ndWFnZSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+IEVudigiQWN0aW9uIiksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBTV0lUQ0ggRGF0YS5BY3Rpb24gJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEZBUSBMYW5ndWFnZSIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBGQVEgTGFuZ3VhZ2UiKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5OYW1lICkgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCBUeXBlID0gIkFnZW50IiAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRGlzYWJsZWQiKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJOb3RpY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCBBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pblN5c3RlbUNvbmZpZ3VyYXRpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWaWV3Ii8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2V0dGluZyIgdmFsdWU9IkZBUTo6TXVsdGlMYW5ndWFnZSAiLz4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJUaGlzIGZlYXR1cmUgaXMgZGlzYWJsZWQhIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVXNlIHRoaXMgZmVhdHVyZSBpZiB5b3Ugd2FudCB0byB3b3JrIHdpdGggbXVsdGlwbGUgbGFuZ3VhZ2VzLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsU2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRW5hYmxlIGl0IGhlcmUhIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtdW5sb2NrLWFsdCI+PC9pPiBbJSBUcmFuc2xhdGUoIkVuYWJsZSBpdCBoZXJlISIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRGlzYWJsZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uTGlzdCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uQWRkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BZGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT5bJSBUcmFuc2xhdGUoIkFkZCBsYW5ndWFnZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25BZGQiKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25MaXN0IikgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdCIpICVdCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBWYXJpYWJsZVdpZHRoIiBzdW1tYXJ5PSJGQVEgbGFuZ3VhZ2VzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DaGFuZ2U7TGFuZ3VhZ2VJRD1bJSBEYXRhLkxhbmd1YWdlSUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIExhc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJEZWxldGVMYW5ndWFnZUlEWyUgRGF0YS5MYW5ndWFnZUlEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFkZCBMYW5ndWFnZSIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJBZGQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRWRpdCBMYW5ndWFnZSIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJWYWxpZGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IHVyaSAlXUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTGFuZ3VhZ2VJRCIgdmFsdWU9IlslIERhdGEuTGFuZ3VhZ2VJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5hbWVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iNTAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VXBkYXRlIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkRlbGV0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQWZmZWN0ZWRJdGVtcyIpICVdCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CiAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZmllbGRzZXQ+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIENlbnRlciI+CiAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBsYW5ndWFnZT8iKSB8IGh0bWwgJV0KPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9BZmZlY3RlZEl0ZW1zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFmZmVjdGVkSXRlbXMiKSAlXQo8cD4KICAgIFslIFRyYW5zbGF0ZSgiWW91IGNhbiBub3QgZGVsZXRlIHRoaXMgbGFuZ3VhZ2UuIEl0IGlzIHVzZWQgaW4gYXQgbGVhc3Qgb25lIEZBUSBhcnRpY2xlISIpIHwgaHRtbCAlXQo8L3A+CjxwIGNsYXNzPSJTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b20iPgogICAgWyUgVHJhbnNsYXRlKCJUaGlzIGxhbmd1YWdlIGlzIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBGQVEgQXJ0aWNsZShzKSIpIHwgaHRtbCAlXToKPC9wPgoKPHVsPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZmZlY3RlZEl0ZW1zUm93IikgJV0KICAgIDxsaSBjbGFzcz0iSW5kZW50IFNwYWNpbmdCb3R0b21TbWFsbCI+CiAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rICVdO0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTpbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08c3Bhbj4mbmJzcDsmbWRhc2g7PC9zcGFuPiBbJSBEYXRhLlRpdGxlIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXQogICAgICAgIDwvYT4KICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZEl0ZW1zUm93IikgJV0KPC91bD4KClslIFJlbmRlckJsb2NrRW5kKCJBZmZlY3RlZEl0ZW1zIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkRlbGV0ZSIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhciIpICVdCjxkaXYgY2xhc3M9Ik92ZXJ2aWV3Qm94IEFSSUFSb2xlTWFpbiBbJSBEYXRhLlZpZXcgfCBodG1sICVdIj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoRGF0YS5UaXRsZU5hbWUpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuVGl0bGVWYWx1ZSkgfCBodG1sICVdPC9oMT4KClslIERhdGEuRGF0YUluVGhlTWlkZGxlICVdCgogICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdDb250cm9sIiBpZD0iT3ZlcnZpZXdDb250cm9sIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250cm9sUm93Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXIiKSAlXQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuRmlsdGVyTGluayAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IlslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuRmlsdGVyTGluayAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAtClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuTGlua0JhY2tJRCB8IHVyaSAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rQmFjayB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZXh0U2V0dGluZ3MiKSAlXQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJDb250ZXh0RnVuY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb250ZXh0IFNldHRpbmdzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jb2ciPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiQ29udGV4dCBTZXR0aW5ncyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lciIgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZ2VudFByZWZlcmVuY2VzIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlVwZGF0ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IlslIERhdGEuR3JvdXAgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlJlZGlyZWN0VVJMIiB2YWx1ZT0iWyUgRGF0YS5SZXF1ZXN0ZWRVUkwgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuUHJlZmVyZW5jZXNLZXkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkZBUSBhcnRpY2xlcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRleHRTZXR0aW5ncyIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3QWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BY3Rpb25Sb3cgJV0KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Ik92ZXJ2aWV3Wm9vbSI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJBY3RpdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtWaWV3PVslIERhdGEuVmlldyB8IHVyaSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2hvcnQpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkltYWdlTW9kZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJOYW1lU2hvcnQiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWVTaG9ydCkgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTmFtZUxvbmciPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUGFnaW5hdGlvbiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0TG9uZyAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXJMb25nICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VOYXZCYXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiMgc29ydCBvcmRlciBiYXIgaWYgbmVlZGVkCiAgICAgICAgICAgICAgICBbJSBEYXRhLlNvcnRPcmRlckJhciAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBUaWNrZXRMaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9GQVFGb3VuZCIpICVdCiAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBGQVEgZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9GQVFGb3VuZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEZvcm0iKSAlXQogICAgPHRhYmxlIGNsYXNzPSJUYWJsZVNtYWxsIE5vQ2VsbHNwYWNpbmciPgogICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1GQVFJRDtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9VGl0bGU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGl0bGVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDYXRlZ29yeUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNhdGVnb3J5IFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9Q2F0ZWdvcnk7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2F0ZWdvcnlIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYW5ndWFnZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9TGFuZ3VhZ2U7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTGFuZ3VhZ2VIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0ZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlN0YXRlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9U3RhdGU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkU3RhdGVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRWYWxpZEhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlN0YXRlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9VmFsaWQ7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVmFsaWRIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDaGFuZ2VkSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUNoYW5nZWQ7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDaGFuZ2VkSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZEhlYWRlclNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkSGVhZGVyU29ydGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRIZWFkZXJOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZEhlYWRlck5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRIZWFkZXIiKSAlXQojIGV4YW1wbGUgb2YgaG93IHRvIHVzZSBmaXhlZCBkeW5hbWljIGZpZWxkIGJsb2NrcyBmb3IgY3VzdG9taXphdGlvbnMKIyBOb3RlOiBGaWVsZDEgYW5kIEZpZWxkMiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBmaWVsZHMgYW5kIGhhZCB0byBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwKIyBmaWVsZCBuYW1lcwojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMUhlYWRlciIpICVdCiMgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEeW5hbWljRmllbGQgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFIZWFkZXJTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMUhlYWRlclNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFIZWFkZXJOb3RTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMUhlYWRlck5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICA8L3RoPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFIZWFkZXIiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMkhlYWRlciIpICVdCiMgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEeW5hbWljRmllbGQgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJIZWFkZXJTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMkhlYWRlclNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJIZWFkZXJOb3RTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMkhlYWRlck5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICA8L3RoPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJIZWFkZXIiKSAlXQogICAgICAgICAgICA8L3RyPgogICAgICAgIDwvdGhlYWQ+CiAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICA8dHIgaWQ9Ikl0ZW1JRF9bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV1fWyUgRGF0YS5Db3VudGVyIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvblslIElGIERhdGEuVmFsaWRJRCAhPSAxJV0gSW52YWxpZFslIEVORCAlXSIgPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgPHRkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXJMaW5rU3RhcnQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdO05hdj1bJSBEYXRhLk5hdiB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuTnVtYmVyIHwgdXJpICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJMaW5rU3RhcnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNsZWFuVGl0bGUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGl0bGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDYXRlZ29yeSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5TmFtZSwgIjUwIikgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2F0ZWdvcnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5MYW5ndWFnZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRWYWxpZCIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5WYWxpZCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVmFsaWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDaGFuZ2VkIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIERhdGEuQ2hhbmdlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayAlXSIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgIDx0ZD4KIyAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayAlXSIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICA8L3RkPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgPHRkPgojICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rICVdIiBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMl9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdCiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMl9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgIDwvdGQ+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgIDwvdGJvZHk+CiAgICA8L3RhYmxlPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRm9ybSIpICVdCjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hBSkFYIikgJV0KPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50Ij4KICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkVtcHR5U2VhcmNoIiB2YWx1ZT0iWyUgRGF0YS5FbXB0eVNlYXJjaCB8IGh0bWwgJV0iIGlkPSJFbXB0eVNlYXJjaCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IlslIERhdGEuTmF2IHwgaHRtbCAlXSIvPgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuUHJvZmlsZXNTdHJnICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iU2VhcmNoUHJvZmlsZUFkZE5hbWUiLz4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB0eXBlPSJidXR0b24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBUZW1wbGF0ZSIpIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hQcm9maWxlTmV3IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgoKICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU2F2ZSBjaGFuZ2VzIGluIHRlbXBsYXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2F2ZVByb2ZpbGUiIGlkPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSIgaWQ9IlNlYXJjaEluc2VydCI+CiAgICAgICAgICAgIDxsZWdlbmQ+PHNwYW4+WyUgVHJhbnNsYXRlKCJGaWx0ZXJzIGluIHVzZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZGl0aW9uYWwgZmlsdGVycyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQWRkIGFub3RoZXIgYXR0cmlidXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuQXR0cmlidXRlc1N0cmcgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiT3V0cHV0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0Rm9ybVN0cmcgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KICAgIDwvZm9ybT4KCiAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IkZ1bGx0ZXh0ImlkPSJMYWJlbEZ1bGx0ZXh0Ij5bJSBUcmFuc2xhdGUoIkZ1bGx0ZXh0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciIgaWQ9IkxhYmVsTnVtYmVyIj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdIFslIFRyYW5zbGF0ZSgiKGUuIGcuIDEwKjUxNTUgb3IgMTA1NjU4KikiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIHZhbHVlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIvPgogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIiBpZD0iTGFiZWxUaXRsZSI+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIvPgogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmQiIGlkPSJMYWJlbEtleXdvcmQiPlslIFRyYW5zbGF0ZSgiS2V5d29yZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IktleXdvcmQiIHZhbHVlPSJbJSBEYXRhLktleXdvcmQgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiLz4KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEcyIgaWQ9IkxhYmVsVmFsaWRJRHMiPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuVmFsaWRTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRHMiIGlkPSJMYWJlbExhbmd1YWdlSURzIj5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLkxhbmd1YWdlc1NlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJDYXRlZ29yeUlEcyIgaWQ9IkxhYmVsQ2F0ZWdvcnlJRHMiPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcmllc1NlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEcyIgaWQ9IkxhYmVsU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuU3RhdGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iVm90ZVNlYXJjaFR5cGUiIGlkPSJMYWJlbFZvdGVTZWFyY2hUeXBlIj5bJSBUcmFuc2xhdGUoIlZvdGUgKGUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuVm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWb3RlU2VhcmNoIiB2YWx1ZT0iWyUgRGF0YS5Wb3RlU2VhcmNoIHwgaHRtbCAlXSIgY2xhc3M9IlcyNXBjIi8+CiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iUmF0ZVNlYXJjaFR5cGUiIGlkPSJMYWJlbFJhdGVTZWFyY2hUeXBlIj5bJSBUcmFuc2xhdGUoIlJhdGUgKGUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlKSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9IkFwcHJvdmVkU2VhcmNoIiBpZD0iTGFiZWxBcHByb3ZlZFNlYXJjaCI+WyUgVHJhbnNsYXRlKCJBcHByb3ZlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5BcHByb3ZlZFN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJDcmVhdGVkVXNlcklEcyIgaWQ9IkxhYmVsQ3JlYXRlZFVzZXJJRHMiPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIkFnZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZWRVc2VyU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxsYWJlbCBmb3I9Ikxhc3RDaGFuZ2VkVXNlcklEcyIgaWQ9IkxhYmVsTGFzdENoYW5nZWRVc2VySURzIj5bJSBUcmFuc2xhdGUoIkxhc3QgY2hhbmdlZCBieSIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIkFnZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLkxhc3RDaGFuZ2VkVXNlclN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJJdGVtQ3JlYXRlVGltZVBvaW50IiBpZD0iTGFiZWxJdGVtQ3JlYXRlVGltZVBvaW50Ij5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlIENyZWF0ZSBUaW1lIChiZWZvcmUvYWZ0ZXIpIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50IikgJV0vPgogICAgICAgICAgICBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydFN0cmcgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50U3RyZyAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXRTdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iSXRlbUNyZWF0ZVRpbWVTbG90IiBpZD0iTGFiZWxJdGVtQ3JlYXRlVGltZVNsb3QiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUgKGJldHdlZW4pIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdLz4KICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWwgZm9yPSJJdGVtQ2hhbmdlVGltZVBvaW50IiBpZD0iTGFiZWxJdGVtQ2hhbmdlVGltZVBvaW50Ij5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIChiZWZvcmUvYWZ0ZXIpIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50IikgJV0vPgogICAgICAgICAgICBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lUG9pbnRTdGFydFN0cmcgJV0gWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVBvaW50U3RyZyAlXSBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lUG9pbnRGb3JtYXRTdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iSXRlbUNoYW5nZVRpbWVTbG90IiBpZD0iTGFiZWxJdGVtQ2hhbmdlVGltZVNsb3QiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGUgQ2hhbmdlIFRpbWUgKGJldHdlZW4pIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkNoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdLz4KICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICBbJSBEYXRhLkZpZWxkICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgIFslIERhdGEuQXR0cmlidXRlc09yaWdTdHJnICVdCgogICAgPC9maWVsZHNldD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJDb250ZW50Rm9vdGVyIENlbnRlciI+CiAgICA8YnV0dG9uIGlkPSJTZWFyY2hGb3JtU3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iUnVuIHNlYXJjaCI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXNlYXJjaCI+PC9pPiBbJSBUcmFuc2xhdGUoIlJ1biBzZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEFKQVgiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAoWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSB8IGh0bWwgJV0pPC9TaG9ydE5hbWU+CjxEZXNjcmlwdGlvbj5bJSBDb25maWcoIlByb2R1Y3ROYW1lIikgfCBodG1sICVdIChbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpIHwgaHRtbCAlXSk8L0Rlc2NyaXB0aW9uPgo8SW5wdXRFbmNvZGluZz5bJSBFbnYoIlVzZXJDaGFyc2V0IikgJV08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iWyUgQ29uZmlnKCJIdHRwVHlwZSIpICVdOi8vWyUgQ29uZmlnKCJGUUROIikgJV1bJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtOdW1iZXI9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj5bJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIENvbmZpZygiRnJvbnRlbmQ6OkltYWdlUGF0aCIpICVdaWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJGQVFGdWxsdGV4dCIpIHwgaHRtbCAlXSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPlslIENvbmZpZygiUHJvZHVjdE5hbWUiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiRkFRRnVsbHRleHQiKSB8IGh0bWwgJV0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+WyUgRW52KCJVc2VyQ2hhcnNldCIpICVdPC9JbnB1dEVuY29kaW5nPgo8VXJsIHR5cGU9InRleHQvaHRtbCIgdGVtcGxhdGU9IlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7RnVsbHRleHQ9e3NlYXJjaFRlcm1zfSIgLz4KPEltYWdlIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgdHlwZT0iaW1hZ2UveC1pY29uIj5bJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIENvbmZpZygiRnJvbnRlbmQ6OkltYWdlUGF0aCIpICVdaWNvbnMvcHJvZHVjdC5pY288L0ltYWdlPgo8L09wZW5TZWFyY2hEZXNjcmlwdGlvbj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8aDE+WyUgVHJhbnNsYXRlKCJGQVEgU2VhcmNoIikgfCBodG1sICVdPC9oMT4KICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBDb2xsYXBzZWQiPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlByb2ZpbGUgU2VsZWN0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iTG9hZFByb2ZpbGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iTmF2IiB2YWx1ZT0iWyUgRGF0YS5OYXYgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Qcm9maWxlc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBTcGFjaW5nVG9wIiBuYW1lPSJTZWxlY3RUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrIj48L2k+IFslIFRyYW5zbGF0ZSgiU2VsZWN0IikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBTcGFjaW5nVG9wIiBuYW1lPSJFcmFzZVRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gU3BhY2luZ1RvcCIgbmFtZT0iU2VhcmNoVGVtcGxhdGUiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2giPjwvaT4gWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSJbJSBEYXRhLk5hdiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVGFibGVTbWFsbCI+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGdWxsdGV4dCIgaWQ9IkxhYmVsRnVsbHRleHQiPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiZS4gZy4gMTAqNTE1NSBvciAxMDU2NTgqIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGl0bGUiPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXSIgdHlwZT0idGV4dCIgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJLZXl3b3JkIj5bJSBUcmFuc2xhdGUoIktleXdvcmQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJLZXl3b3JkIikgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBpZD0iS2V5d29yZCIgbmFtZT0iS2V5d29yZCIgdmFsdWU9IlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGFuZ3VhZ2VJRHMiPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFuZ3VhZ2VzU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYW5ndWFnZSIpICVdCgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ2F0ZWdvcnlJRHMiPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3JpZXNTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEcyI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsaWRTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhdGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdDbGVhcic+PC9kaXY+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBcHByb3ZlZFNlYXJjaCIgPlslIFRyYW5zbGF0ZSgiQXBwcm92ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFwcHJvdmVkU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9Wb3RlU2V0Ij5bJSBUcmFuc2xhdGUoIlZvdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdm90ZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9Wb3RlU2V0IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlZvdGVTZWFyY2hPcHRpb246Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQWxsIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9WyUgVHJhbnNsYXRlKCJTcGVjaWZpYyB2b3RlcyIpIHwgaHRtbCAlXSB0eXBlPSJyYWRpbyIgaWQ9IlZvdGVQb2ludCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgIHZhbHVlPSJWb3RlUG9pbnQiIFslIERhdGEuaXRlbSgiVm90ZVNlYXJjaE9wdGlvbjo6Vm90ZVBvaW50IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWb3RlU2VhcmNoIiB2YWx1ZT0iWyUgRGF0YS5Wb3RlU2VhcmNoIHwgaHRtbCAlXSIgY2xhc3M9IlcyNXBjIi8+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9SYXRlU2V0Ij5bJSBUcmFuc2xhdGUoIlJhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gcmF0ZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9SYXRlU2V0IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlJhdGVTZWFyY2hPcHRpb246Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQWxsIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9WyUgVHJhbnNsYXRlKCJTcGVjaWZpYyByYXRlIikgfCBodG1sICVdIHR5cGU9InJhZGlvIiBpZD0iUmF0ZVBvaW50IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiAgdmFsdWU9IlJhdGVQb2ludCIgWyUgRGF0YS5pdGVtKCJSYXRlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoU2VsZWN0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoImUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3JlYXRlZFVzZXJJRHMiPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIkFnZW50IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVkVXNlclN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikxhc3RDaGFuZ2VkVXNlcklEcyI+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQgYnkiKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJBZ2VudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFzdENoYW5nZWRVc2VyU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ2xlYXInPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGltZVNlYXJjaFR5cGUiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGUgQ3JlYXRlIFRpbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdGltZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iIGlkPSJOb1RpbWVTZXQiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iIiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNwZWNpZmljIGRhdGUiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVBvaW50IiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50U3RhcnRTdHJnICVdIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludFN0cmcgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0U3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRhdGUgcmFuZ2UiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVJhbmdlIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NsZWFyJz48L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNoYW5nZVRpbWVTZWFyY2hUeXBlIj5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlIENoYW5nZSBUaW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHRpbWUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iTm9DaGFuZ2VUaW1lU2V0IiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJDaGFuZ2VUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBbGwiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTcGVjaWZpYyBkYXRlIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgaWQ9IkNoYW5nZURhdGVQb2ludCIgbmFtZT0iQ2hhbmdlVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiQ2hhbmdlVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVBvaW50U3RhcnRTdHJnICVdIFslIERhdGEuSXRlbUNoYW5nZVRpbWVQb2ludFN0cmcgJV0gWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVBvaW50Rm9ybWF0U3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRhdGUgcmFuZ2UiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iQ2hhbmdlRGF0ZVJhbmdlIiBuYW1lPSJDaGFuZ2VUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLml0ZW0oIkNoYW5nZVRpbWVTZWFyY2hUeXBlOjpUaW1lU2xvdCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JdGVtQ2hhbmdlVGltZVN0YXJ0U3RyZyAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DaGFuZ2VUaW1lU3RvcFN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVGFibGVTbWFsbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXNzVwYyBTcGFjaW5nVG9wIEZBUURpdmlkZXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2F2ZVByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2F2ZSBhcyBUZW1wbGF0ZT8iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iU2F2ZSBhcyBUZW1wbGF0ZSIgdHlwZT0iY2hlY2tib3giIGlkPSJTYXZlUHJvZmlsZSIgbmFtZT0iU2F2ZVByb2ZpbGUiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiVGVtcGxhdGUgTmFtZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsZSBuYW1lIiB0eXBlPSJ0ZXh0IiBpZD0iUHJvZmlsZSIgbmFtZT0iUHJvZmlsZSIgdmFsdWU9IlslIERhdGEuUHJvZmlsZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQ2VudGVyIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXNlYXJjaCI+PC9pPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlNjcmlwdFVzYWdlKQoKPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkhlYWRsaW5lIj4KICAgICAgICA8aDEgdGl0bGU9IlslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV06IFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSAmbmRhc2g7IFslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTogWyUgRGF0YS5OdW1iZXIgJV0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICA8L2gxPgogICAgPC9kaXY+CgogICAgPHVsIGNsYXNzPSJCcmVhZENydW1iIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdCiAgICAgICAgPGxpPgogICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtOYXY9WyUgRGF0YS5OYXYgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoSXRlbUVsZW1lbnQiKSAlXQogICAgICAgIDxsaT5bJSBEYXRhLlRpdGxlIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoSXRlbUVsZW1lbnQiKSAlXQogICAgPC91bD4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJGQVEgSW5mb3JtYXRpb24iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeU5hbWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lLCAiMTgiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIktleXdvcmRzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudEZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9WyUgRGF0YS5LZXl3b3JkIHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXSI+WyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSwgIjI1IikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5WYWxpZCkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5WYWxpZCwgIjI1IikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UsICIxOCIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld0FwcHJvdmFsIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXBwcm92YWwiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQXBwcm92YWwpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQXBwcm92YWwsICIxOCIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld0FwcHJvdmFsIikgJV0KCiMgc2hvdyBmYXEgZHluYW1pYyBmaWVsZHMKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPjxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGQiKSAlXQoKIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRfRmllbGQxX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+PGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iIHRhcmdldD0iX2JsYW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPjwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQxX0xpbmsiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMV9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDFfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgojWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgojICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDJfTGluayIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj48YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiPlslIERhdGEuVmFsdWUgJV08L2E+PC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDJfTGluayIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGRfRmllbGQyX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMl9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiNbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3UmF0aW5nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiUmF0aW5nIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV0gWyUgRGF0YS5Wb3RlUmVzdWx0ICVdJSI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSYXRlU3RhcnMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPjxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSYXRlU3RhcnMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSYXRlU3RhcnNDb3VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSYXRlU3RhclRleHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3RhcnMgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgib3V0IG9mIDUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUmF0ZVN0YXJzQ291bnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld1JhdGluZyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3Vm90ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJWb3RlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5Wb3RlcykgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5Wb3RlcywgIjE4IikgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld1ZvdGVzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld05vVm90ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJWb3RlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHZvdGVzIGZvdW5kISIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJObyB2b3RlcyBmb3VuZCEgQmUgdGhlIGZpcnN0IG9uZSB0byByYXRlIHRoaXMgRkFRIGFydGljbGUuIikgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld05vVm90ZXMiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXSAgKFslIERhdGEuQ3JlYXRlZEJ5VXNlciAlXSk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZWQgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0gIChbJSBEYXRhLkNoYW5nZWRCeVVzZXIgJV0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkxpbmtUYWJsZVNpbXBsZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMaW5rZWQgT2JqZWN0cyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGlua1RhYmxlU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGlua1RhYmxlU2ltcGxlIikgJV0KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbnMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZW51SXRlbSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iIGlkPSJbJSBEYXRhLk1lbnVJRCB8IGh0bWwgJV0iIGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSIgWyUgRGF0YS5MaW5rUGFyYW0gJV0gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJNZW51SXRlbSIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgoKICAgICAgICAgICAgPGRpdiBpZD0iRkFRQm9keSI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9oMj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJEb3dubG9hZEF0dGFjaG1lbnQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRvd25sb2FkIEF0dGFjaG1lbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdO0ZpbGVJRD1bJSBEYXRhLkZpbGVJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmlsZW5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgWyUgRGF0YS5GaWxlc2l6ZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50SGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkJyb3dzZXJMaW5rTWVzc2FnZSIpICVdCiMgU2hvdyBpbmZvLCB0aGF0IGxpbmtzIHdpdGhpbiB0aGUgaWZyYW1lIG11c3QgYmUgY2xpY2tlZCB3aXRoIHN0cmcvY21kL3NoaWZ0IChkZXBlbmRpbmcgb24gdGhlIHVzZWQgYnJvd3NlciBhbmQgb3MpCiMgdG8gb3BlbiB0aGUgbGlua3MgaW4gYSBuZXcgd2luZG93IHdpdGhvdXQgdGhlIHNlY3VyaXR5IHBlcm1pc3Npb25zIGdpdmVuIHRvIHRoZSBpZnJhbWUKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZBUU1lc3NhZ2VCcm93c2VyIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICBbJSBUcmFuc2xhdGUoIlRvIG9wZW4gbGlua3MgaW4gdGhlIGZvbGxvd2luZyBkZXNjcmlwdGlvbiBibG9ja3MsIHlvdSBtaWdodCBuZWVkIHRvIHByZXNzIEN0cmwgb3IgQ21kIG9yIFNoaWZ0IGtleSB3aGlsZSBjbGlja2luZyB0aGUgbGluayAoZGVwZW5kaW5nIG9uIHlvdXIgYnJvd3NlciBhbmQgT1MpLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2xvc2UiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgbWVzc2FnZSIpIHwgaHRtbCAlXSIgaHJlZj0iIyI+PGkgY2xhc3M9ImZhIGZhLXRpbWVzIj48L2k+PC9hPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCcm93c2VyTGlua01lc3NhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkNhcHRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkZBUVN0YXRlTmFtZSI+KFslIFRyYW5zbGF0ZShEYXRhLlN0YXRlTmFtZSkgfCBodG1sICVdKTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudEhUTUwiKSAlXQojIGV4ZWN1dGUgSUZyYW1lIEpTIGFzeW5jaHJvbm91c2x5LiBPdGhlcndpc2UgaXQgY291bGQgaGFwcGVuIGJlZm9yZSBvdXIgQVBJIHdhcyBsb2FkZWQKIyB0aGUgZm9sbG93aW5nIEpTIGNvZGUgbXVzdCBiZSB3aXRoaW4gdGhlIHRlbXBsYXRlLCBvdGhlcndpc2UgaXQgY291bGQgaGFwcGVuLCB0aGF0IGFsc28gdGhpcyBjb2RlIGl0c2VsZiBpcyBub3QgbG9hZGVkIHlldAo8c2NyaXB0PgpmdW5jdGlvbiBDaGVja0lGcmFtZUhlaWdodChJRnJhbWVJRCkgewogICAgaWYgKHR5cGVvZiBGQVEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQWdlbnQuRkFRWm9vbSA9PT0gJ29iamVjdCcpIHsKICAgICAgICBGQVEuQWdlbnQuRkFRWm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyMnICsgSUZyYW1lSUQpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgQ2hlY2tJRnJhbWVIZWlnaHQoSUZyYW1lSUQpOwogICAgICAgIH0sIDUwMCk7CiAgICB9Cn0KPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiMgVXNlIHRoZSBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSB0byBwcmV2ZW50IHBsdWdpbnMgYW5kIHNjcmlwdHMgZnJvbSBiZWluZyBleGVjdXRlZCBpbiB0aGUgYnJvd3Nlci4KIyBBcHBlbmQgc2Vzc2lvbiBpbmZvIHRvIFVSTCBiZWNhdXNlIElFIHdpbGwgbm90IHNlbmQgY29va2llcy4KIyBTZXQgJ2FsbG93LXBvcHVwcycgdG8gYWxsb3cgSUUxMCsgdG8gb3BlbiBsaW5rcy4gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL3dpa2kvQ2hhbmdlUHJvcG9zYWxzL3NhbmRib3hfYWxsb3dfcG9wdXBzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBtcy1hbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXScpOyB9LCA1MDApOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1IVE1MVmlldztJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdO0ZpZWxkPVslIERhdGEuRmllbGQgfCBodG1sICVdO1slIEVudigiU2Vzc2lvbk5hbWUiKSB8IGh0bWwgJV09WyUgRW52KCJTZXNzaW9uSUQiKSB8IGh0bWwgJV0iPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnRIVE1MIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db250ZW50ICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVZvdGluZyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlJhdGluZyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRkFRVm90aW5nIENvbnRlbnQiIGlkPSJGQVFWb3RpbmciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkhvdyBoZWxwZnVsIHdhcyB0aGlzIGFydGljbGU/IFBsZWFzZSBnaXZlIHVzIHlvdXIgcmF0aW5nIGFuZCBoZWxwIHRvIGltcHJvdmUgdGhlIEZBUSBEYXRhYmFzZS4gVGhhbmsgWW91ISIpIHwgaHRtbCAlXTwvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iRkFRVm90ZSIgY2xhc3M9IkZBUVZvdGVGb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlJhdGVCdXR0b25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlslIFRyYW5zbGF0ZSgibm90IGhlbHBmdWwiKSB8IGh0bWwgJV08L2xpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFWb3RpbmdSYXRlUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGlkPSJSYXRlQnV0dG9uWyUgRGF0YS5WYWx1ZSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZUJ1dHRvbiBSYXRlVW5DaGVja2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3Rhci1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRVm90aW5nUmF0ZVJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5bJSBUcmFuc2xhdGUoInZlcnkgaGVscGZ1bCIpIHwgaHRtbCAlXTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgY2xhc3M9IkNsZWFyIiAvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiBIaWRkZW4iIGlkPSJSYXRlU3VibWl0QnV0dG9uIiBuYW1lPSJidG4iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlZvdGUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlZvdGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWdlbnRGQVFab29tIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVm90ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNhdGVnb3J5SUQiIHZhbHVlPSJbJSBEYXRhLkNhdGVnb3J5SUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmF0ZSIgdmFsdWU9IiIgaWQ9IlJhdGVWYWx1ZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRVm90aW5nIikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkxpbmtUYWJsZUNvbXBsZXgiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIFslIERhdGEuTGlua1RhYmxlU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxpbmtUYWJsZUNvbXBsZXgiKSAlXQoKICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlNjcmlwdFVzYWdlKQoKPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkhlYWRsaW5lIj4KICAgICAgICA8aDEgdGl0bGU9IlslIFRyYW5zbGF0ZSgiWm9vbSIpIHwgaHRtbCAlXSBbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0gJm5kYXNoOyBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIFslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV06IFslIERhdGEuTnVtYmVyICVdIDxzcGFuPiZtZGFzaDs8L3NwYW4+IFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgPC9oMT4KICAgIDwvZGl2PgoKICAgIDx1bCBjbGFzcz0iQnJlYWRDcnVtYiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQogICAgICAgIDxsaT4KICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV07TmF2PVslIERhdGEuTmF2IHwgdXJpICVdIj4KICAgICAgICAgICAgICAgIFslIERhdGEuTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KICAgIDwvdWw+CgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJMYXN0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRkFRIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5TmFtZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJLZXl3b3JkcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJLZXl3b3JkcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXSI+WyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5WYWxpZCkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5WYWxpZCwgIjI1IikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxhbmd1YWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdBcHByb3ZhbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFwcHJvdmFsIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkFwcHJvdmFsKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkFwcHJvdmFsKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdBcHByb3ZhbCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3UmF0aW5nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiUmF0aW5nIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV0gWyUgRGF0YS5Wb3RlUmVzdWx0ICVdJSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJhdGVTdGFycyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhciI+PGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJhdGVTdGFycyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJhdGVTdGFyc0NvdW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJhdGVTdGFyVGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGFycyB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJvdXQgb2YgNSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSYXRlU3RhcnNDb3VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3UmF0aW5nIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdWb3RlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlZvdGVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5Wb3RlcyB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3Vm90ZXMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJWaWV3Tm9Wb3RlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlZvdGVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdm90ZXMgZm91bmQhIikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIk5vIHZvdGVzIGZvdW5kISBCZSB0aGUgZmlyc3Qgb25lIHRvIHJhdGUgdGhpcyBGQVEgYXJ0aWNsZS4iKSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3Tm9Wb3RlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0gKFslIERhdGEuQ3JlYXRlZEJ5TG9naW4gfCBodG1sICVdKSI+WyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdICAoWyUgRGF0YS5DcmVhdGVkQnlMb2dpbiB8IGh0bWwgJV0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIERhdGEuQ2hhbmdlZCB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdIChbJSBEYXRhLkNyZWF0ZWRCeUxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuQ2hhbmdlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXSAgKFslIERhdGEuQ3JlYXRlZEJ5TG9naW4gfCBodG1sICVdKTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50IikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZShEYXRhLkNhcHRpb24pIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnRIVE1MIikgJV0KIyBleGVjdXRlIElGcmFtZSBKUyBhc3luY2hyb25vdXNseS4gT3RoZXJ3aXNlIGl0IGNvdWxkIGhhcHBlbiBiZWZvcmUgb3VyIEFQSSB3YXMgbG9hZGVkCiMgdGhlIGZvbGxvd2luZyBKUyBjb2RlIG11c3QgYmUgd2l0aGluIHRoZSB0ZW1wbGF0ZSwgb3RoZXJ3aXNlIGl0IGNvdWxkIGhhcHBlbiwgdGhhdCBhbHNvIHRoaXMgY29kZSBpdHNlbGYgaXMgbm90IGxvYWRlZCB5ZXQKPHNjcmlwdD4KZnVuY3Rpb24gQ2hlY2tJRnJhbWVIZWlnaHQoSUZyYW1lSUQpIHsKICAgIGlmICh0eXBlb2YgRkFRID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgRkFRLkFnZW50ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgRkFRLkFnZW50LkZBUVpvb20gPT09ICdvYmplY3QnKSB7CiAgICAgICAgRkFRLkFnZW50LkZBUVpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjJyArIElGcmFtZUlEKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKTsKICAgICAgICB9LCA1MDApOwogICAgfQp9Cjwvc2NyaXB0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMgbXMtYWxsb3ctcG9wdXBzIGFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCIgY2xhc3M9IkZBUUZpZWxkIiBpZD0iSWZyYW1lRkFRWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0iIG9ubG9hZD0id2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uICgpeyBDaGVja0lGcmFtZUhlaWdodCgnSWZyYW1lRkFRWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0nKTsgfSwgNTAwKTsiIHNyYz0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50RkFRWm9vbTtTdWJhY3Rpb249SFRNTFZpZXc7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgaHRtbCAlXTtGaWVsZD1bJSBEYXRhLkZpZWxkIHwgaHRtbCAlXTtbJSBFbnYoIlNlc3Npb25OYW1lIikgfCBodG1sICVdPVslIEVudigiU2Vzc2lvbklEIikgfCBodG1sICVdIj48L2lmcmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50SFRNTCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFydGljbGVGQVFDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29udGVudCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudCIpICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CiAgICA8aW5wdXQgaWQ9IkZBUUlEIiB0eXBlPSJoaWRkZW4iIG5hbWU9IkZBUUlEIiB2YWx1ZT0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgPGlucHV0IGlkPSJGQVFUaXRsZSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJUaXRsZSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KICAgIDxpbnB1dCBpZD0iRkFRQm9keSIgdHlwZT0iaGlkZGVuIiBuYW1lPSJCb2R5IiB2YWx1ZT0iWyUgRGF0YS5GdWxsQm9keSB8IGh0bWwgJV0iPgogICAgPGlucHV0IGlkPSJGQVFQdWJsaWNMaW5rIiB0eXBlPSJoaWRkZW4iIG5hbWU9IkxpbmsiICB2YWx1ZT0iWyUgRGF0YS5QdWJsaWNsaW5rICVdIj4KCjwvZGl2PgoKPGRpdiBjbGFzcz0iWm9vbVNtYWxsRm9vdGVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVXBkYXRlQXJ0aWNsZVN1YmplY3QiKSAlXQogICAgPGlucHV0IGlkPSJVcGRhdGVBcnRpY2xlU3ViamVjdE9wdGlvbiIgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJab29tU21hbGxCdXR0b24iIG5hbWU9IlVwZGF0ZUFydGljbGVTdWJqZWN0T3B0aW9uIiBjaGVja2VkPSJjaGVja2VkIiB2YWx1ZSIxIi8+CiAgICA8bGFiZWwgZm9yPSJVcGRhdGVBcnRpY2xlU3ViamVjdE9wdGlvbiI+WyUgVHJhbnNsYXRlKCJBZGQgRkFRIHRpdGxlIHRvIGFydGljbGUgc3ViamVjdCIpIHwgaHRtbCAlXTwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJVcGRhdGVBcnRpY2xlU3ViamVjdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluc2VydFRleHQiKSAlXQogICAgPGJ1dHRvbiBpZD0iSW5zZXJ0VGV4dCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiBab29tU21hbGxCdXR0b24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiSW5zZXJ0IEZBUSBUZXh0IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5zZXJ0VGV4dCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnNlcnRGdWxsIikgJV0KICAgIDxidXR0b24gaWQ9Ikluc2VydEZ1bGwiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gWm9vbVNtYWxsQnV0dG9uIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkluc2VydCBGdWxsIEZBUSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluc2VydEZ1bGwiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5zZXJ0TGluayIpICVdCiAgICA8YnV0dG9uIGlkPSJJbnNlcnRMaW5rIiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+WyUgVHJhbnNsYXRlKCJJbnNlcnQgRkFRIExpbmsiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+ClslIFJlbmRlckJsb2NrRW5kKCJJbnNlcnRMaW5rIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkluc2VydFRleHRBbmRMaW5rIikgJV0KICAgIDxidXR0b24gaWQ9Ikluc2VydFRleHRBbmRMaW5rIiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIFpvb21TbWFsbEJ1dHRvbiI+PHNwYW4+WyUgVHJhbnNsYXRlKCJJbnNlcnQgRkFRIFRleHQgJiBMaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5zZXJ0VGV4dEFuZExpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5zZXJ0RnVsbEFuZExpbmsiKSAlXQogICAgPGJ1dHRvbiBpZD0iSW5zZXJ0RnVsbEFuZExpbmsiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24gWm9vbVNtYWxsQnV0dG9uIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkluc2VydCBGdWxsIEZBUSAmIExpbmsiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+ClslIFJlbmRlckJsb2NrRW5kKCJJbnNlcnRGdWxsQW5kTGluayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPciIpICVdCiAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdClslIFJlbmRlckJsb2NrRW5kKCJPciIpICVdCgogICAgPGEgaWQ9IkNhbmNlbCIgY2xhc3M9IlslIERhdGEuQ2FuY2VsQnV0dG9uQ2xhc3MgfCBodG1sICVdIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxiciAvPgoKPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCiAgICAgICAgWyUgSUYgRGF0YS5SZWxhdGVkRkFRQXJ0aWNsZUxpc3Quc2l6ZSAlXQoKICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUgRml4ZWRMYXlvdXQiPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgWyUgRk9SRUFDSCBGQVFBcnRpY2xlIElOIERhdGEuUmVsYXRlZEZBUUFydGljbGVMaXN0ICVdCiAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkZBUVRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPVslIEZBUUFydGljbGUuSXRlbUlEIHwgdXJpICVdIiB0YXJnZXQ9Il9ibGFuayIgdGl0bGU9IlslIEZBUUFydGljbGUuVGl0bGUgfCBodG1sICVdIChbJSBGQVFBcnRpY2xlLkNhdGVnb3J5TmFtZSB8IGh0bWwgJV0pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBGQVFBcnRpY2xlLlRpdGxlIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFWb3RlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBGQVFBcnRpY2xlLlZvdGVzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIEZBUUFydGljbGUuU3RhckNvdW50ZXIgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgib3V0IG9mIDUiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRklMVEVSIHJlcGVhdChGQVFBcnRpY2xlLlN0YXJDb3VudGVyKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBGSUxURVIgcmVwZWF0KDUgLSBGQVFBcnRpY2xlLlN0YXJDb3VudGVyKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyLW8iIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBGSUxURVIgcmVwZWF0KDUpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3Rhci1vIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFDYXRlZ29yaWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRkFRQXJ0aWNsZS5DYXRlZ29yeU5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRkFRRGF0ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBGQVFBcnRpY2xlLkNoYW5nZWQgfCBMb2NhbGl6ZSgiRGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgPC90YWJsZT4KCiAgICAgICAgWyUgRU5EICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iQVJJQVJvbGVNYWluIj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJGQVFIZWFkZXIiPgogICAgICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJGQVEgRXhwbG9yZXIiKSB8IGh0bWwgJV08L2gxPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50Tm9MaW5rIikgJV0KICAgICAgICAgICAgPGxpPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudE5vTGluayIpICVdCiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4gTGFyZ2UiPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVpY2tTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9IlNlYXJjaEJveCIgYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBEYXRhLkFjdGlvbiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik5hdiIgdmFsdWU9IlslIERhdGEuTmF2IHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLlNlYXJjaCB8IGh0bWwgJV0iIGlkPSJTZWFyY2giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUXVpY2sgU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiV2lsZGNhcmRzIGFyZSBhbGxvd2VkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSAgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRkFRU2VhcmNoQnV0dG9uIFNwYWNpbmdUb3AiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBEYXRhLkFjdGlvbiB8IHVyaSAlXTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+IFslIFRyYW5zbGF0ZSgiQWR2YW5jZWQgU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1aWNrU2VhcmNoIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKERhdGEuSGVhZGVyKSB8IGh0bWwgJV08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBGQVFNaW5pTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTnVtYmVyIHwgaHRtbCAlXS4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3dQb3NpdGlvbk51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVyRkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSAoWyUgRGF0YS5DYXRlZ29yeU5hbWUgfCBodG1sICVdKSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3J5U2hvcnROYW1lIHwgdHJ1bmNhdGUoMTUpIHwgaHRtbCAlXSAtIFslIERhdGEuTGFuZ3VhZ2UgfCBodG1sICVdIC0gWyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXSAtIFslIERhdGEuQ3JlYXRlZCB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdCIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdWJjYXRlZ29yaWVzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJTdWJjYXRlZ29yaWVzIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciIHN1bW1hcnk9IkZBUSBjYXRlZ29yaWVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L2E+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ29tbWVudCIpIHwgaHRtbCAlXTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJTdWJjYXRlZ29yaWVzIikgfCBodG1sICVdPC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkZBUSBBcnRpY2xlcyIpIHwgaHRtbCAlXTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0NhdGVnb3J5RGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8gc3ViY2F0ZWdvcmllcyBmb3VuZC4iKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQ2F0ZWdvcnlEYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1Jlc3VsdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuU3ViQ2F0ZWdvcnlDb3VudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5BcnRpY2xlQ291bnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3UmVzdWx0IikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3ViY2F0ZWdvcmllcyIpICVdCgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRSXRlbUxpc3QiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGVzIikgfCBodG1sICVdPC9oMz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgWyUgRGF0YS5GQVFJRFNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV07U29ydEJ5PUZBUUlEO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSBbJSBEYXRhLlRpdGxlU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtTb3J0Qnk9VGl0bGU7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNhdGVnb3J5IFslIERhdGEuQ2F0ZWdvcnlTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO1NvcnRCeT1DYXRlZ29yeTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSBbJSBEYXRhLkxhbmd1YWdlU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtTb3J0Qnk9TGFuZ3VhZ2U7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlN0YXRlIFslIERhdGEuU3RhdGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO1NvcnRCeT1TdGF0ZTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlN0YXRlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRkFRRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8gRkFRIGFydGljbGVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9GQVFEYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPVslIERhdGEuRkFRSUQgfCB1cmkgJV0iPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuQ2xlYW5UaXRsZSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNhdGVnb3J5IiB0aXRsZT0iWyUgRGF0YS5DYXRlZ29yeU5hbWUgfCBodG1sICVdIj5bJSBEYXRhLkNhdGVnb3J5TmFtZSB8IHRydW5jYXRlKDQ1KSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiIHRpdGxlPSJbJSBEYXRhLkxhbmd1YWdlIHwgaHRtbCAlXSI+WyUgRGF0YS5MYW5ndWFnZSB8IHRydW5jYXRlKDUpIHwgaHRtbCAlXTwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iU3RhdGUiPlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQm90dG9tU3ViTmF2aWdhdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCb3R0b21TdWJOYXZpZ2F0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRSXRlbUxpc3QiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgoKPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KCiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIlRoaXMgbWlnaHQgYmUgaGVscGZ1bCIpIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICBbJSBJRiBEYXRhLlJlbGF0ZWRGQVFBcnRpY2xlTGlzdC5zaXplICVdCiAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgogICAgICAgIFslIEZPUkVBQ0ggRkFRQXJ0aWNsZSBJTiBEYXRhLlJlbGF0ZWRGQVFBcnRpY2xlTGlzdCAlXQogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD1bJSBGQVFBcnRpY2xlLkl0ZW1JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJbJSBGQVFBcnRpY2xlLlRpdGxlIHwgaHRtbCAlXSAoWyUgRkFRQXJ0aWNsZS5DYXRlZ29yeU5hbWUgfCBodG1sICVdKSI+CiAgICAgICAgICAgICAgICAgICAgWyUgRkFRQXJ0aWNsZS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgWyUgSUYgRkFRQXJ0aWNsZS5Wb3RlcyAmJiBEYXRhLlZvdGVTdGFyc1Zpc2libGUgJiYgRkFRQXJ0aWNsZS5TdGFyQ291bnRlciA+PSBEYXRhLlZvdGVTdGFyc1Zpc2libGUgJV0KICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBGQVFBcnRpY2xlLlN0YXJDb3VudGVyIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIC0gWyUgRklMVEVSIHJlcGVhdChGQVFBcnRpY2xlLlN0YXJDb3VudGVyKSAlXTxzcGFuIGNsYXNzPSJSYXRlU3RhciI+PGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT48L3NwYW4+WyUgRU5EICVdCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICA8L2xpPgogICAgICAgIFslIEVORCAlXQogICAgICAgIDwvdWw+CiAgICBbJSBFTFNJRiBEYXRhLlJlbGF0ZWRGQVFBcnRpY2xlRm91bmROb3RoaW5nICVdCiAgICAgICAgPGRpdiBjbGFzcz0iSGludCI+WyUgVHJhbnNsYXRlKCJGb3VuZCBubyBoZWxwZnVsIHJlc291cmNlcyBmb3IgdGhlIHN1YmplY3QgYW5kIHRleHQuIikgfCBodG1sICVdPC9kaXY+CiAgICBbJSBFTFNFICVdCiAgICAgICAgPGRpdiBjbGFzcz0iSGludCI+WyUgVHJhbnNsYXRlKCJUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuIikgfCBodG1sICVdPC9kaXY+CiAgICBbJSBFTkQgJV0KICAgIDwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iU2VhcmNoIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iTG9hZFByb2ZpbGUiLz4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiUHJvZmlsZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlByb2ZpbGVzU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9IlNlbGVjdFRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJTZWxlY3QiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iRXJhc2VUZW1wbGF0ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICA8YnV0dG9uIG5hbWU9IlNlYXJjaFRlbXBsYXRlIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgoKICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgbmFtZT0iY29tcG9zZSI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIj5bJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIENvbmZpZygiRkFROjpGQVFIb29rIikgJV0iIHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgaWQ9Ik51bWJlciIgc2l6ZT0iMzAiIHZhbHVlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoImUuIGcuIDEwKjUxNTUgb3IgMTA1NjU4KiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJGdWxsdGV4dCBzZWFyY2ggaW4gRkFRIGFydGljbGVzIChlLiBnLiBcIkpvaG4qblwiIG9yIFwiV2lsbCpcIikiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGdWxsVGV4dCI+WyUgVHJhbnNsYXRlKCJGdWxsdGV4dCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGx0ZXh0IikgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBpZD0iRnVsbFRleHQiIG5hbWU9IkZ1bGx0ZXh0IiB2YWx1ZT0iWyUgRGF0YS5GdWxsdGV4dCB8IGh0bWwgJV0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpdGxlIj5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV0iIHR5cGU9InRleHQiIGlkPSJUaXRsZSIgbmFtZT0iVGl0bGUiIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iS2V5d29yZCI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiS2V5d29yZCIpIHwgaHRtbCAlXSIgdHlwZT0idGV4dCIgaWQ9IktleXdvcmQiIG5hbWU9IktleXdvcmQiIHZhbHVlPSJbJSBEYXRhLktleXdvcmQgfCBodG1sICVdIiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhYmVsICVdCiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWVsZCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGFuZ3VhZ2VzU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgIDxmaWVsZHNldD4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcmllc1N0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlZvdGUgcmVzdHJpY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHZvdGUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVm90ZVNldCIgbmFtZT0iVm90ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJWb3RlU2VhcmNoT3B0aW9uOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1RWb3RlU2V0Ij5bJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPVslIFRyYW5zbGF0ZSgiU3BlY2lmaWMgdm90ZXMiKSB8IGh0bWwgJV0gdHlwZT0icmFkaW8iIGlkPSJWb3RlUG9pbnQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iICB2YWx1ZT0iVm90ZVBvaW50IiBbJSBEYXRhLml0ZW0oIlZvdGVTZWFyY2hPcHRpb246OlZvdGVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVm90ZVBvaW50Ij5bJSBUcmFuc2xhdGUoIk9ubHkgRkFRIGFydGljbGVzIHdpdGggdm90ZXMuLi4iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVm90ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iVm90ZVNlYXJjaCIgdmFsdWU9IlslIERhdGEuVm90ZVNlYXJjaCB8IGh0bWwgJV0iIGNsYXNzPSJXMjVwYyIvPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiZS4gZy4gRXF1YWxzIDEwIG9yIEdyZWF0ZXJUaGFuIDYwIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlJhdGUgcmVzdHJpY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHJhdGUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vUmF0ZVNldCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJSYXRlU2VhcmNoT3B0aW9uOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1JhdGVTZXQiPlslIFRyYW5zbGF0ZSgiQWxsIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9WyUgVHJhbnNsYXRlKCJTcGVjaWZpYyByYXRlIikgfCBodG1sICVdIHR5cGU9InJhZGlvIiBpZD0iUmF0ZVBvaW50IiBuYW1lPSJSYXRlU2VhcmNoT3B0aW9uIiB2YWx1ZT0iUmF0ZVBvaW50IiBbJSBEYXRhLml0ZW0oIlJhdGVTZWFyY2hPcHRpb246OlJhdGVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmF0ZVBvaW50Ij5bJSBUcmFuc2xhdGUoIk9ubHkgRkFRIGFydGljbGVzIHdpdGggcmF0ZS4uLiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SYXRlU2VhcmNoVHlwZVNlbGVjdGlvblN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmF0ZVNlYXJjaFNlbGVjdGlvblN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiZS4gZy4gRXF1YWxzIDI1JSBvciBHcmVhdGVyVGhhbiA3NSUiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGltZVNlYXJjaFR5cGUiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiVGltZSByZXN0cmljdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdGltZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9UaW1lU2V0IiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IiIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9UaW1lU2V0Ij5bJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNwZWNpZmljIGRhdGUiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lUG9pbnQiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVQb2ludCIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGF0ZSI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnQgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0ICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSIkVGVzdCJ7RGF0ZSByYW5nZSJ9IiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGVSYW5nZSIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSJUaW1lU2xvdCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRhdGVSYW5nZSI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyBjcmVhdGVkIGJldHdlZW4iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RvcCAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTZWFyY2gtUHJvZmlsZSBhcyBUZW1wbGF0ZT8iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTYXZlUHJvZmlsZSI+WyUgVHJhbnNsYXRlKCJTYXZlIGFzIFRlbXBsYXRlPyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJTYXZlIGFzIFRlbXBsYXRlIiB0eXBlPSJjaGVja2JveCIgaWQ9IlNhdmVQcm9maWxlIiBuYW1lPSJTYXZlUHJvZmlsZSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQcm9maWwiPlslIFRyYW5zbGF0ZSgiVGVtcGxhdGUgTmFtZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJQaWNrIGEgcHJvZmlsIG5hbWUiIHR5cGU9InRleHQiIGlkPSJQcm9maWwiIG5hbWU9IlByb2ZpbGUiIHNpemU9IjMwIiB2YWx1ZT0iWyUgRGF0YS5Qcm9maWxlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8ZGl2IGlkPSJCb3R0b21BY3Rpb25Sb3ciIGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiT3V0cHV0IHRvIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRGb3JtU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2giKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIiKSB8IGh0bWwgJV0gKFslIENvbmZpZygiRkFROjpGQVFIb29rIikgfCBodG1sICVdKTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIiKSB8IGh0bWwgJV0gKFslIENvbmZpZygiRkFROjpGQVFIb29rIikgfCBodG1sICVdKTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPlslIEVudigiVXNlckNoYXJzZXQiKSAlXTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSJbJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO051bWJlcj17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgQ29uZmlnKCJGcm9udGVuZDo6SW1hZ2VQYXRoIikgJV1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ3VzdG9tZXIiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiRkFRRnVsbHRleHQiKSB8IGh0bWwgJV0pPC9TaG9ydE5hbWU+CjxEZXNjcmlwdGlvbj5bJSBDb25maWcoIlByb2R1Y3ROYW1lIikgfCBodG1sICVdIC0gWyUgVHJhbnNsYXRlKCJDdXN0b21lciIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJGQVFGdWxsdGV4dCIpIHwgaHRtbCAlXSk8L0Rlc2NyaXB0aW9uPgo8SW5wdXRFbmNvZGluZz5bJSBFbnYoIlVzZXJDaGFyc2V0IikgJV08L0lucHV0RW5jb2Rpbmc+CjxVcmwgdHlwZT0idGV4dC9odG1sIiB0ZW1wbGF0ZT0iWyUgQ29uZmlnKCJIdHRwVHlwZSIpICVdOi8vWyUgQ29uZmlnKCJGUUROIikgJV1bJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgQ29uZmlnKCJGcm9udGVuZDo6SW1hZ2VQYXRoIikgJV1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0VmlldyBBUklBUm9sZU1haW4gU2VhcmNoUmVzdWx0cyBbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXdTb3J0YWJsZSIpICVdIFNvcnRhYmxlIj4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUxvYWRQcm9maWxlO1slIERhdGEuTGluayB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICZsYXJyOyBbJSBUcmFuc2xhdGUoIkNoYW5nZSBzZWFyY2ggb3B0aW9ucyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBhZ2luYXRpb24iKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IlRhYnMgUGFnaW5hdGlvbiI+CiAgICAgICAgICAgIDxzdHJvbmc+WyUgRGF0YS5SZXN1bHQgfCBodG1sICVdPC9zdHJvbmc+IFslIFRyYW5zbGF0ZSgib2YiKSB8IGh0bWwgJV0gPHN0cm9uZz5bJSBEYXRhLlRvdGFsSGl0cyB8IGh0bWwgJV08L3N0cm9uZz4gLSBbJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV06IFslIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IlNlYXJjaFRlcm1zIj4KICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU2VhcmNoIFJlc3VsdHMgZm9yIikgfCBodG1sICVdOjwvaDI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaFRlcm1zIikgJV0KICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkF0dHJpYnV0ZSB8IGh0bWwgJV06IFslIERhdGEuVmFsdWUgfCBodG1sICVdCiMgaGlkZSByZW1vdmUgbGluaywgZnVuY3Rpb25hbGl0eSBpcyBub3QgeWV0IGltcGxlbWVudGVkCiMgICAgICAgICAgICAgICAgPGEgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgU2VhcmNoIFRlcm0uIikgfCBodG1sICVdIiBocmVmPSJbJSBEYXRhLlNlYXJjaFZhbHVlICVdIj4mdGltZXM7PC9hPgogICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hUZXJtcyIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDx0YWJsZSBjbGFzcz0iT3ZlcnZpZXciPgogICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJGQVFOdW1iZXIgWyUgRGF0YS5GQVFJRFNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1GQVFJRDtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO1Byb2ZpbGU9WyUgRGF0YS5Qcm9maWxlIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuVGl0bGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9VGl0bGU7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXTtQcm9maWxlPVslIERhdGEuUHJvZmlsZSB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDYXRlZ29yeSBbJSBEYXRhLkNhdGVnb3J5U29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUNhdGVnb3J5O09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07UHJvZmlsZT1bJSBEYXRhLlByb2ZpbGUgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJMYW5ndWFnZSBbJSBEYXRhLkxhbmd1YWdlU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZWFyY2g7U29ydEJ5PUxhbmd1YWdlO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07UHJvZmlsZT1bJSBEYXRhLlByb2ZpbGUgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCBbJSBEYXRhLkNoYW5nZWRTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9Q2hhbmdlZDtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO1Byb2ZpbGU9WyUgRGF0YS5Qcm9maWxlIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIFslIERhdGEuQ1NTICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249U2VhcmNoO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07U2hvd0Nsb3NlZFRpY2tldHM9WyUgRGF0YS5TaG93Q2xvc2VkIHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdO1Byb2ZpbGU9WyUgRGF0YS5Qcm9maWxlIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgPHRyIGlkPSJFbXB0eU1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI2Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJObyBGQVEgZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICA8dHIgY2xhc3M9Ik1hc3RlckFjdGlvbiIgdGl0bGU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPVslIERhdGEuRkFRSUQgfCB1cmkgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj5bJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iWyUgRGF0YS5UdGl0bGUgJV0iPlslIERhdGEuQ2xlYW5UaXRsZXwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDYXRlZ29yeSI+WyUgRGF0YS5DYXRlZ29yeU5hbWUgfCB0cnVuY2F0ZSg2MCkgfCBodG1sICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiPlslIERhdGEuTGFuZ3VhZ2UgfCB0cnVuY2F0ZSg1KSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2hhbmdlZCI+WyUgRGF0YS5DaGFuZ2VkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkR5bmFtaWNGaWVsZCIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIkJvdHRvbVN1Yk5hdmlnYXRpb24iKSAlXQogICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93IEJpZ0J1dHRvbnMiPgogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtbJSBEYXRhLkxpbmsgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICZsYXJyOyBbJSBUcmFuc2xhdGUoIkNoYW5nZSBzZWFyY2ggb3B0aW9ucyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCb3R0b21TdWJOYXZpZ2F0aW9uIikgJV0KPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlNjcmlwdFVzYWdlKQoKPGRpdiBpZD0iTWFpbkJveCIgY2xhc3M9IlRpY2tldFpvb20gQVJJQVJvbGVNYWluIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkJhY2siKSAlXQogICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRW52KCJMYXN0U2NyZWVuT3ZlcnZpZXciKSAlXSI+JmxhcnI7IFslIFRyYW5zbGF0ZSgiQmFjayIpIHwgaHRtbCAlXTwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCYWNrIikgJV0KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJGQVFIZWFkZXIiPgogICAgICAgICAgICA8aDIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIFslIERhdGEuVGl0bGUgfCBodG1sICVdCiAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDx1bCBpZD0iRkFRT3B0aW9ucyI+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVyRkFRUHJpbnQ7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdIiBjbGFzcz0iUHJpbnQgQXNQb3B1cCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUHJpbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtcHJpbnQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJQcmludCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDx1bCBjbGFzcz0iQnJlYWRDcnVtYiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhJdGVtRWxlbWVudCIpICVdCiAgICAgICAgICAgIDxsaT5bJSBEYXRhLlRpdGxlIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoSXRlbUVsZW1lbnQiKSAlXQogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgIDx1bCBpZD0iTWVzc2FnZXMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50SGVhZGVyIikgJV0KICAgICAgICAgICAgPGxpIGNsYXNzPSJDdXN0b21lciBWaXNpYmxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdOjwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBdHRhY2htZW50cyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGFiZWwiPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudCIpIHwgaHRtbCAlXTo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXBhcGVyY2xpcCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iRG93bmxvYWRBdHRhY2htZW50IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEb3dubG9hZCBBdHRhY2htZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdO0ZpbGVJRD1bJSBEYXRhLkZpbGVJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgWyUgRGF0YS5GaWxlc2l6ZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnRIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQnJvd3NlckxpbmtNZXNzYWdlIikgJV0KIyBTaG93IGluZm8sIHRoYXQgbGlua3Mgd2l0aGluIHRoZSBpZnJhbWUgbXVzdCBiZSBjbGlja2VkIHdpdGggc3RyZy9jbWQvc2hpZnQgKGRlcGVuZGluZyBvbiB0aGUgdXNlZCBicm93c2VyIGFuZCBvcykKIyB0byBvcGVuIHRoZSBsaW5rcyBpbiBhIG5ldyB3aW5kb3cgd2l0aG91dCB0aGUgc2VjdXJpdHkgcGVybWlzc2lvbnMgZ2l2ZW4gdG8gdGhlIGlmcmFtZQogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGQVFNZXNzYWdlQnJvd3NlciI+CiAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBvcGVuIGxpbmtzIGluIHRoZSBmb2xsb3dpbmcgZGVzY3JpcHRpb24gYmxvY2tzLCB5b3UgbWlnaHQgbmVlZCB0byBwcmVzcyBDdHJsIG9yIENtZCBvciBTaGlmdCBrZXkgd2hpbGUgY2xpY2tpbmcgdGhlIGxpbmsgKGRlcGVuZGluZyBvbiB5b3VyIGJyb3dzZXIgYW5kIE9TKS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNsb3NlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDbG9zZSB0aGlzIG1lc3NhZ2UiKSB8IGh0bWwgJV0iIGhyZWY9IiMiPjxpIGNsYXNzPSJmYSBmYS10aW1lcyI+PC9pPjwvYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnJvd3NlckxpbmtNZXNzYWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnQiKSAlXQogICAgICAgICAgICA8bGkgY2xhc3M9IkN1c3RvbWVyIFZpc2libGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZShEYXRhLkNhcHRpb24pIHwgaHRtbCAlXTo8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9InRydWUiIG5hbWU9IkZpZWxkU3RhdGUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50SFRNTCIpICVdCiMgZXhlY3V0ZSBJRnJhbWUgSlMgYXN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4gYmVmb3JlIG91ciBBUEkgd2FzIGxvYWRlZAojIHRoZSBmb2xsb3dpbmcgSlMgY29kZSBtdXN0IGJlIHdpdGhpbiB0aGUgdGVtcGxhdGUsIG90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4sIHRoYXQgYWxzbyB0aGlzIGNvZGUgaXRzZWxmIGlzIG5vdCBsb2FkZWQgeWV0CjxzY3JpcHQ+CmZ1bmN0aW9uIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKSB7CiAgICBpZiAodHlwZW9mIEZBUSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lciA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIEZBUS5DdXN0b21lci5GQVFab29tID09PSAnb2JqZWN0JykgewogICAgICAgIEZBUS5DdXN0b21lci5GQVFab29tLklmcmFtZUF1dG9IZWlnaHQoJCgnIycgKyBJRnJhbWVJRCkpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDaGVja0lGcmFtZUhlaWdodChJRnJhbWVJRCk7CiAgICAgICAgfSwgNTAwKTsKICAgIH0KfQo8L3NjcmlwdD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VCb2R5Ij4KIyBVc2UgdGhlIEhUTUw1IHNhbmRib3ggYXR0cmlidXRlIHRvIHByZXZlbnQgcGx1Z2lucyBhbmQgc2NyaXB0cyBmcm9tIGJlaW5nIGV4ZWN1dGVkIGluIHRoZSBicm93c2VyLgojIEFwcGVuZCBzZXNzaW9uIGluZm8gdG8gVVJMIGJlY2F1c2UgSUUgd2lsbCBub3Qgc2VuZCBjb29raWVzLgojIFNldCAnYWxsb3ctcG9wdXBzJyB0byBhbGxvdyBJRTEwKyB0byBvcGVuIGxpbmtzLiByZWY6IGh0dHA6Ly93d3cudzMub3JnL2h0bWwvd2cvd2lraS9DaGFuZ2VQcm9wb3NhbHMvc2FuZGJveF9hbGxvd19wb3B1cHMKICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNhbWUtb3JpZ2luIGFsbG93LXBvcHVwcyBtcy1hbGxvdy1wb3B1cHMgYWxsb3ctcG9wdXBzLXRvLWVzY2FwZS1zYW5kYm94IiBjbGFzcz0iRkFRRmllbGQiIGlkPSJJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVGQVFbJSBEYXRhLkZpZWxkIHwgaHRtbCAlXScpOyB9LCA1MDApOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJGQVFab29tO1N1YmFjdGlvbj1IVE1MVmlldztJdGVtSUQ9WyUgRGF0YS5JdGVtSUQgfCBodG1sICVdO0ZpZWxkPVslIERhdGEuRmllbGQgfCBodG1sICVdO1slIEVudigiU2Vzc2lvbk5hbWUiKSB8IGh0bWwgJV09WyUgRW52KCJTZXNzaW9uSUQiKSB8IGh0bWwgJV0iPjwvaWZyYW1lPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50SFRNTCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUUNvbnRlbnRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBcnRpY2xlRkFRQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29udGVudCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudCIpICVdCgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBpZD0iWm9vbVNpZGViYXIiPgogICAgICAgICAgICA8dWwgaWQ9Ik1ldGFkYXRhIj4KICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiRkFRIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIkFydGljbGUgTnVtYmVyIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4+WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9zcGFuPjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DYXRlZ29yeU5hbWUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV08L3NwYW4+PC9saT4KCiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IktleXdvcmRzQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIktleXdvcmRzIikgfCBodG1sICVdOjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiS2V5d29yZHMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXl3b3JkIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggZm9yIGFydGljbGVzIHdpdGgga2V5d29yZCIpIHwgaHRtbCAlXTogWyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0tleXdvcmQ9WyUgRGF0YS5LZXl3b3JkIHwgdXJpICVdIj5bJSBEYXRhLktleXdvcmQgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJTdGF0ZSIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdPC9zcGFuPjwvbGk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhbmd1YWdlKSB8IGh0bWwgJV08L3NwYW4+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkxhbmd1YWdlIikgJV0KCiMgc2hvdyBmYXEgZHluYW1pYyBmaWVsZHMKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRRHluYW1pY0ZpZWxkIikgJV0KIyBleGFtcGxlIG9mIGhvdyB0byB1c2UgZml4ZWQgZHluYW1pYyBmaWVsZCBibG9ja3MgZm9yIGN1c3RvbWl6YXRpb25zCiMgTm90ZTogRmllbGQxIGFuZCBGaWVsZDIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZmllbGRzIGFuZCBoYWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgYWN0dWFsCiMgZmllbGQgbmFtZXMKI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojICAgICAgICAgICAgICAgIDxsaT4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L3NwYW4+CiMgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlMSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiMgICAgICAgICAgICAgICAgPC9saT4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgIDxsaT4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTo8L3NwYW4+CiMgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlMiB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3NwYW4+CiMgICAgICAgICAgICAgICAgPC9saT4KI1slIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGRfRmllbGQyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdSYXRpbmciKSAlXQogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkgUmF0aW5nTGFiZWwiPlslIFRyYW5zbGF0ZSgiUmF0aW5nIikgfCBodG1sICVdOjwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzIikgJV0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iUmF0ZVN0YXIiPjxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmF0ZVN0YXJzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmF0ZVN0YXJzQ291bnQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhclRleHQiIHRpdGxlPSJbJSBEYXRhLlN0YXJzIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGFycyB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJvdXQgb2YgNSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJhdGVTdGFyc0NvdW50IikgJV0KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJWaWV3UmF0aW5nIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlZpZXdWb3RlcyIpICVdCiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJWb3RlcyIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuIHRpdGxlPSJbJSBEYXRhLlZvdGVzIHwgaHRtbCAlXSI+WyUgRGF0YS5Wb3RlcyB8IGh0bWwgJV08L3NwYW4+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdWb3RlcyIpICVdCiAgICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFWb3RpbmciKSAlXQogICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJGQVFWb3RlIiBjbGFzcz0iUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZvdGluZ0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWb3RpbmdCb3ggVmlzaWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRkFRVm90aW5nIiBjbGFzcz0iRkFRVm90aW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV06PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik1lc3NlbmdlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJWb3RpbmdRdWVzdGlvbiI+WyUgVHJhbnNsYXRlKCJIb3cgaGVscGZ1bCB3YXMgdGhpcyBhcnRpY2xlPyBQbGVhc2UgZ2l2ZSB1cyB5b3VyIHJhdGluZyBhbmQgaGVscCB0byBpbXByb3ZlIHRoZSBGQVEgRGF0YWJhc2UuIFRoYW5rIFlvdSEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVMYWJlbEJlZm9yZSI+WyUgVHJhbnNsYXRlKCJub3QgaGVscGZ1bCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRVm90aW5nUmF0ZVJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJSYXRlQnV0dG9uWyUgRGF0YS5WYWx1ZSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVCdXR0b24gUmF0ZVVuQ2hlY2tlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVZvdGluZ1JhdGVSb3ciKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVMYWJlbEFmdGVyIj5bJSBUcmFuc2xhdGUoInZlcnkgaGVscGZ1bCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQ3VzdG9tZXJGQVFab29tIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJWb3RlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDYXRlZ29yeUlEIiB2YWx1ZT0iWyUgRGF0YS5DYXRlZ29yeUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3cgVm90aW5nQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgIGlkPSJSYXRlU3VibWl0QnV0dG9uIiBjbGFzcz0iSGlkZGVuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiU3VibWl0IikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmF0ZSIgdmFsdWU9IlslIERhdGEuU2VsZWN0ZWRSYXRlIHwgaHRtbCAlXSJpZD0iUmF0ZVZhbHVlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRVm90aW5nIikgJV0KCiAgICA8L2Rpdj4KPC9kaXY+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iQVJJQVJvbGVNYWluIj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJGQVFIZWFkZXIiPgogICAgICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJGQVEgRXhwbG9yZXIiKSB8IGh0bWwgJV08L2gxPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFQYXRoQ2F0ZWdvcnlFbGVtZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRUGF0aENhdGVnb3J5RWxlbWVudE5vTGluayIpICVdCiAgICAgICAgICAgIDxsaT5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnROb0xpbmsiKSAlXQogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIExhcmdlIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1aWNrU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPSJTZWFyY2hCb3giIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJOYXYiIHZhbHVlPSJbJSBEYXRhLk5hdiB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2VhcmNoQmFja0xpbmsiIHZhbHVlPSJbJSBEYXRhLlNlYXJjaEJhY2tMaW5rIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLlNlYXJjaCB8IGh0bWwgJV0iIGlkPSJTZWFyY2giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPjxzcGFuPlslIFRyYW5zbGF0ZSgiUXVpY2sgU2VhcmNoIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJXaWxkY2FyZHMgYXJlIGFsbG93ZWQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGQVFTZWFyY2hCdXR0b24gU3BhY2luZ1RvcCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIERhdGEuQWN0aW9uIHwgdXJpICVdOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1zZWFyY2giPjwvaT4gWyUgVHJhbnNsYXRlKCJBZHZhbmNlZCBTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVpY2tTZWFyY2giKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb0JveEZBUU1pbmlMaXN0IikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoRGF0YS5IZWFkZXIpIHwgaHRtbCAlXTwvaDM+ClslIFJlbmRlckJsb2NrU3RhcnQoIkluZm9Cb3hGQVFNaW5pTGlzdE5ld3NSU1MiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUVJTUztUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iIGNsYXNzPSJSU1NJY29uIEFzQmxvY2siPjxpIGNsYXNzPSJmYSBmYS1yc3MiPjwvaT48L2E+ClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3ROZXdzUlNTIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgRkFRTWluaUxpc3QiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5mb0JveEZBUU1pbmlMaXN0SXRlbVJvd1Bvc2l0aW9uTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0uClslIFJlbmRlckJsb2NrRW5kKCJJbmZvQm94RkFRTWluaUxpc3RJdGVtUm93UG9zaXRpb25OdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIChbJSBEYXRhLkNhdGVnb3J5TmFtZSB8IGh0bWwgJV0pIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2F0ZWdvcnlTaG9ydE5hbWUgfCB0cnVuY2F0ZSgxNSkgfCBodG1sICVdIC0gWyUgRGF0YS5MYW5ndWFnZSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoRGF0YS5TdGF0ZSkgfCBodG1sICVdIC0gWyUgRGF0YS5DcmVhdGVkIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkluZm9Cb3hGQVFNaW5pTGlzdEl0ZW1Sb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW5mb0JveEZBUU1pbmlMaXN0IikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1YmNhdGVnb3JpZXMiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIlN1YmNhdGVnb3JpZXMiKSB8IGh0bWwgJV08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJPdmVydmlldyIgc3VtbWFyeT0iRkFRIGNhdGVnb3JpZXMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTwvYT48L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdPC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIlN1YmNhdGVnb3JpZXMiKSB8IGh0bWwgJV08L2E+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPjxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiRkFRIEFydGljbGVzIikgfCBodG1sICVdPC9hPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQ2F0ZWdvcnlEYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJObyBzdWJjYXRlZ29yaWVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9DYXRlZ29yeURhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3UmVzdWx0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ29tbWVudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5TdWJDYXRlZ29yeUNvdW50IHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkFydGljbGVDb3VudCB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1Jlc3VsdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdSZXN1bHQiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdWJjYXRlZ29yaWVzIikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFJdGVtTGlzdCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJGQVEgQXJ0aWNsZXMiKSB8IGh0bWwgJV08L2gzPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdpbmF0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUGFnaW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQYWdpbmF0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJPdmVydmlldyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciBbJSBEYXRhLkZBUUlEU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeUlEPVslIERhdGEuQ2F0ZWdvcnlJRCB8IHVyaSAlXTtTb3J0Qnk9RkFRSUQ7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuVGl0bGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO1NvcnRCeT1UaXRsZTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgWyUgRGF0YS5DYXRlZ29yeVNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV07U29ydEJ5PUNhdGVnb3J5O09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlIFslIERhdGEuTGFuZ3VhZ2VTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NhdGVnb3J5SUQ9WyUgRGF0YS5DYXRlZ29yeUlEIHwgdXJpICVdO1NvcnRCeT1MYW5ndWFnZTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRkFRRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8gRkFRIGFydGljbGVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9GQVFEYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJGQVFOdW1iZXIiIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD1bJSBEYXRhLkZBUUlEIHwgdXJpICVdO1pvb21CYWNrTGluaz1bJSBEYXRhLlpvb21CYWNrTGluayB8IHVyaSAlXTsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlRpdGxlIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuQ2xlYW5UaXRsZSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNhdGVnb3J5IiB0aXRsZT0iWyUgRGF0YS5DYXRlZ29yeU5hbWUgfCBodG1sICVdIj5bJSBEYXRhLkNhdGVnb3J5TmFtZSB8IHRydW5jYXRlKDQ1KSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iTGFuZ3VhZ2UiIHRpdGxlPSJbJSBEYXRhLkxhbmd1YWdlIHwgaHRtbCAlXSI+WyUgRGF0YS5MYW5ndWFnZSB8IHRydW5jYXRlKDUpIHwgaHRtbCAlXTwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYW5ndWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCb3R0b21TdWJOYXZpZ2F0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUGFnaW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJvdHRvbVN1Yk5hdmlnYXRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFJdGVtTGlzdCIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2giKSAlXQo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iU2VhcmNoIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9ImNvbXBvc2UiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+WyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpICVdIiB0eXBlPSJ0ZXh0IiBuYW1lPSJOdW1iZXIiIGlkPSJOdW1iZXIiIHNpemU9IjMwIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCoiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQgc2VhcmNoIGluIEZBUSBhcnRpY2xlcyAoZS4gZy4gXCJKb2huKm5cIiBvciBcIldpbGwqXCIpIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRnVsbFRleHQiPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJGdWxsdGV4dCIpIHwgaHRtbCAlXSIgdHlwZT0idGV4dCIgaWQ9IkZ1bGxUZXh0IiBuYW1lPSJGdWxsdGV4dCIgdmFsdWU9IlslIERhdGEuRnVsbHRleHQgfCBodG1sICVdIiBzaXplPSIyMCIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaXRsZSI+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB2YWx1ZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIHNpemU9IjIwIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IktleXdvcmQiPlslIFRyYW5zbGF0ZSgiS2V5d29yZCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIktleXdvcmQiKSB8IGh0bWwgJV0iIHR5cGU9InRleHQiIGlkPSJLZXl3b3JkIiBuYW1lPSJLZXl3b3JkIiB2YWx1ZT0iWyUgRGF0YS5LZXl3b3JkIHwgaHRtbCAlXSIgc2l6ZT0iMjAiIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMYW5ndWFnZSIpIHwgaHRtbCAlXTo8L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxhbmd1YWdlc1N0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJDYXRlZ29yeSIpIHwgaHRtbCAlXTo8L2gyPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNhdGVnb3JpZXNTdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJWb3RlIHJlc3RyaWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJObyB2b3RlIHNldHRpbmdzIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgIGlkPSJOb1ZvdGVTZXQiIG5hbWU9IlZvdGVTZWFyY2hPcHRpb24iIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiVm90ZVNlYXJjaE9wdGlvbjo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9UVm90ZVNldCI+WyUgVHJhbnNsYXRlKCJBbGwiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT1bJSBUcmFuc2xhdGUoIlNwZWNpZmljIHZvdGVzIikgfCBodG1sICVdIHR5cGU9InJhZGlvIiBpZD0iVm90ZVBvaW50IiBuYW1lPSJWb3RlU2VhcmNoT3B0aW9uIiAgdmFsdWU9IlZvdGVQb2ludCIgWyUgRGF0YS5pdGVtKCJWb3RlU2VhcmNoT3B0aW9uOjpWb3RlUG9pbnQiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlZvdGVQb2ludCI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHZvdGVzLi4uIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZvdGVTZWFyY2hUeXBlU2VsZWN0aW9uU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlZvdGVTZWFyY2giIHZhbHVlPSJbJSBEYXRhLlZvdGVTZWFyY2ggfCBodG1sICVdIiBjbGFzcz0iVzI1cGMiLz4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoImUuIGcuIEVxdWFscyAxMCBvciBHcmVhdGVyVGhhbiA2MCIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUaW1lU2VhcmNoVHlwZSI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJSYXRlIHJlc3RyaWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJObyByYXRlIHNldHRpbmdzIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgIGlkPSJOb1JhdGVTZXQiIG5hbWU9IlJhdGVTZWFyY2hPcHRpb24iIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiUmF0ZVNlYXJjaE9wdGlvbjo6Tm9uZSIpICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTm9SYXRlU2V0Ij5bJSBUcmFuc2xhdGUoIkFsbCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPVslIFRyYW5zbGF0ZSgiU3BlY2lmaWMgcmF0ZSIpIHwgaHRtbCAlXSB0eXBlPSJyYWRpbyIgaWQ9IlJhdGVQb2ludCIgbmFtZT0iUmF0ZVNlYXJjaE9wdGlvbiIgdmFsdWU9IlJhdGVQb2ludCIgWyUgRGF0YS5pdGVtKCJSYXRlU2VhcmNoT3B0aW9uOjpSYXRlUG9pbnQiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlJhdGVQb2ludCI+WyUgVHJhbnNsYXRlKCJPbmx5IEZBUSBhcnRpY2xlcyB3aXRoIHJhdGUuLi4iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmF0ZVNlYXJjaFR5cGVTZWxlY3Rpb25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJhdGVTZWFyY2hTZWxlY3Rpb25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoImUuIGcuIEVxdWFscyAyNSUgb3IgR3JlYXRlclRoYW4gNzUlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRpbWVTZWFyY2hUeXBlIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRpbWUgcmVzdHJpY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHRpbWUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVGltZVNldCIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSIiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vVGltZVNldCI+WyUgVHJhbnNsYXRlKCJBbGwiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTcGVjaWZpYyBkYXRlIikgfCBodG1sICVdIiB0eXBlPSJyYWRpbyIgaWQ9IkRhdGUiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiAgdmFsdWU9IlRpbWVQb2ludCIgWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVBvaW50IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlIj5bJSBUcmFuc2xhdGUoIk9ubHkgRkFRIGFydGljbGVzIGNyZWF0ZWQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0ICVdIFslIERhdGEuSXRlbUNyZWF0ZVRpbWVQb2ludCAlXSBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGF0ZSByYW5nZSIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iIGlkPSJEYXRlUmFuZ2UiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlUmFuZ2UiPlslIFRyYW5zbGF0ZSgiT25seSBGQVEgYXJ0aWNsZXMgY3JlYXRlZCBiZXR3ZWVuIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkl0ZW1DcmVhdGVUaW1lU3RhcnQgJV0gWyUgVHJhbnNsYXRlKCJhbmQiKSB8IGh0bWwgJV0gWyUgRGF0YS5JdGVtQ3JlYXRlVGltZVN0b3AgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgPGRpdiBpZD0iQm90dG9tQWN0aW9uUm93IiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIk91dHB1dCB0byIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0Rm9ybVN0cmcgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiUHVibGljIikgfCBodG1sICVdIChbJSBDb25maWcoIkZBUTo6RkFRSG9vayIpIHwgaHRtbCAlXSk8L1Nob3J0TmFtZT4KPERlc2NyaXB0aW9uPlslIENvbmZpZygiUHJvZHVjdE5hbWUiKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoIlB1YmxpYyIpIHwgaHRtbCAlXSAoWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSB8IGh0bWwgJV0pPC9EZXNjcmlwdGlvbj4KPElucHV0RW5jb2Rpbmc+WyUgRW52KCJVc2VyQ2hhcnNldCIpICVdPC9JbnB1dEVuY29kaW5nPgo8VXJsIHR5cGU9InRleHQvaHRtbCIgdGVtcGxhdGU9IlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUVNlYXJjaDtTdWJhY3Rpb249U2VhcmNoO0Z1bGx0ZXh0PXtzZWFyY2hUZXJtc30iIC8+CjxJbWFnZSBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIHR5cGU9ImltYWdlL3gtaWNvbiI+WyUgQ29uZmlnKCJIdHRwVHlwZSIpICVdOi8vWyUgQ29uZmlnKCJGUUROIikgJV1bJSBDb25maWcoIkZyb250ZW5kOjpJbWFnZVBhdGgiKSAlXWljb25zL3Byb2R1Y3QuaWNvPC9JbWFnZT4KPC9PcGVuU2VhcmNoRGVzY3JpcHRpb24+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCjw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04IiA/Pgo8T3BlblNlYXJjaERlc2NyaXB0aW9uIHhtbG5zPSJodHRwOi8vYTkuY29tLy0vc3BlYy9vcGVuc2VhcmNoLzEuMS8iIHhtbG5zOmllPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NlYXJjaC8yMDA4LyI+CjxTaG9ydE5hbWU+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiUHVibGljIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoIkZBUUZ1bGx0ZXh0IikgfCBodG1sICVdKTwvU2hvcnROYW1lPgo8RGVzY3JpcHRpb24+WyUgQ29uZmlnKCJQcm9kdWN0TmFtZSIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiUHVibGljIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoIkZBUUZ1bGx0ZXh0IikgfCBodG1sICVdKTwvRGVzY3JpcHRpb24+CjxJbnB1dEVuY29kaW5nPlslIEVudigiVXNlckNoYXJzZXQiKSAlXTwvSW5wdXRFbmNvZGluZz4KPFVybCB0eXBlPSJ0ZXh0L2h0bWwiIHRlbXBsYXRlPSJbJSBDb25maWcoIkh0dHBUeXBlIikgJV06Ly9bJSBDb25maWcoIkZRRE4iKSAlXVslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNGQVFTZWFyY2g7U3ViYWN0aW9uPVNlYXJjaDtGdWxsdGV4dD17c2VhcmNoVGVybXN9IiAvPgo8SW1hZ2UgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiB0eXBlPSJpbWFnZS94LWljb24iPlslIENvbmZpZygiSHR0cFR5cGUiKSAlXTovL1slIENvbmZpZygiRlFETiIpICVdWyUgQ29uZmlnKCJGcm9udGVuZDo6SW1hZ2VQYXRoIikgJV1pY29ucy9wcm9kdWN0LmljbzwvSW1hZ2U+CjwvT3BlblNlYXJjaERlc2NyaXB0aW9uPgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0VmlldyBBUklBUm9sZU1haW4gU2VhcmNoUmVzdWx0cyBbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXdTb3J0YWJsZSIpICVdIFNvcnRhYmxlIj4KICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkJhY2siKSAlXQogICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLlNlYXJjaEJhY2tMaW5rIHwgaHRtbCAlXSIgY2xhc3M9Ikhpc3RvcnlCYWNrIj4mbGFycjsgWyUgVHJhbnNsYXRlKCJCYWNrIHRvIEZBUSBFeHBsb3JlciIpIHwgaHRtbCAlXTwvYT48L2xpPgogICAgICAgIDwvdWw+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQmFjayIpICVdCiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7IFslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFnaW5hdGlvbiIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iVGFicyBQYWdpbmF0aW9uIj4KICAgICAgICAgICAgPHN0cm9uZz5bJSBEYXRhLlJlc3VsdCB8IGh0bWwgJV08L3N0cm9uZz4gWyUgVHJhbnNsYXRlKCJvZiIpIHwgaHRtbCAlXSA8c3Ryb25nPlslIERhdGEuVG90YWxIaXRzIHwgaHRtbCAlXTwvc3Ryb25nPiAtIFslIFRyYW5zbGF0ZSgiUGFnZSIpIHwgaHRtbCAlXTogWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQYWdpbmF0aW9uIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iU2VhcmNoVGVybXMiPgogICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTZWFyY2ggUmVzdWx0cyBmb3IiKSB8IGh0bWwgJV06PC9oMj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VhcmNoVGVybXMiKSAlXQogICAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgICAgIFslIERhdGEuQXR0cmlidXRlIHwgaHRtbCAlXTogWyUgRGF0YS5WYWx1ZSB8IGh0bWwgJV0KIyBoaWRlIHJlbW92ZSBsaW5rLCBmdW5jdGlvbmFsaXR5IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKIyAgICAgICAgICAgICAgICA8YSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBTZWFyY2ggVGVybS4iKSB8IGh0bWwgJV0iIGhyZWY9IlslIERhdGEuU2VhcmNoVmFsdWUgJV0iPiZ0aW1lczs8L2E+CiAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaFRlcm1zIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgPHRhYmxlIGNsYXNzPSJPdmVydmlldyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkZBUU51bWJlciBbJSBEYXRhLkZBUUlEU29ydCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TZWFyY2g7WyUgRGF0YS5Qcm9maWxlIHwgaHRtbCAlXVNvcnRCeT1GQVFJRDtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO1Rha2VMYXN0U2VhcmNoPTE7RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0xpbWl0PVslIERhdGEuTGltaXQgfCB1cmkgJV07VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgQ29uZmlnKCJGQVE6OkZBUUhvb2siKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuVGl0bGVTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdU29ydEJ5PVRpdGxlO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2F0ZWdvcnkgWyUgRGF0YS5DYXRlZ29yeVNvcnQgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249U2VhcmNoO1slIERhdGEuUHJvZmlsZSB8IGh0bWwgJV1Tb3J0Qnk9Q2F0ZWdvcnk7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckxhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ikxhbmd1YWdlIFslIERhdGEuTGFuZ3VhZ2VTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdU29ydEJ5PUxhbmd1YWdlO09yZGVyPVslIERhdGEuT3JkZXIgfCB1cmkgJV07VGFrZUxhc3RTZWFyY2g9MTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07TGltaXQ9WyUgRGF0YS5MaW1pdCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkxhbmd1YWdlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlZCBbJSBEYXRhLkNoYW5nZWRTb3J0ICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdU29ydEJ5PUNoYW5nZWQ7T3JkZXI9WyUgRGF0YS5PcmRlciB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkR5bmFtaWNGaWVsZCBbJSBEYXRhLkNTUyAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkhlYWRlckR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVNlYXJjaDtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlcj1bJSBEYXRhLk9yZGVyIHwgdXJpICVdO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtMaW1pdD1bJSBEYXRhLkxpbWl0IHwgdXJpICVdO1Nob3dDbG9zZWRUaWNrZXRzPVslIERhdGEuU2hvd0Nsb3NlZCB8IHVyaSAlXTtUeXBlPVslIERhdGEuVHlwZSB8IHVyaSAlXTtQcm9maWxlPVslIERhdGEuUHJvZmlsZSB8IHVyaSAlXTtUYWtlTGFzdFNlYXJjaD0xIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiSGVhZGVyRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJIZWFkZXJEeW5hbWljRmllbGROb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJEeW5hbWljRmllbGROb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIkhlYWRlckR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgIDx0ciBpZD0iRW1wdHlNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiTm8gRkFRIGRhdGEgZm91bmQuIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9EYXRhRm91bmRNc2ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJNYXN0ZXJBY3Rpb24iIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRkFRTnVtYmVyIj48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljRkFRWm9vbTtJdGVtSUQ9WyUgRGF0YS5GQVFJRCB8IHVyaSAlXTtab29tQmFja0xpbms9WyUgRGF0YS5ab29tQmFja0xpbmsgfCB1cmkgJV07IiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJUaXRsZSIgdGl0bGU9IlslIERhdGEuVGl0bGUgJV0iPlslIERhdGEuQ2xlYW5UaXRsZSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2F0ZWdvcnkiPlslIERhdGEuQ2F0ZWdvcnlOYW1lIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXTwvdGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZExhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9Ikxhbmd1YWdlIj5bJSBEYXRhLkxhbmd1YWdlIHwgdHJ1bmNhdGUoNSkgfCBodG1sICVdPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZExhbmd1YWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNoYW5nZWQiIHRpdGxlPSJbJSBEYXRhLkNoYW5nZWQgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV0iPlslIERhdGEuQ2hhbmdlZCB8IHRydW5jYXRlKDIwKSB8IGh0bWwgJV08L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iRHluYW1pY0ZpZWxkIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgIDwvdGFibGU+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQm90dG9tU3ViTmF2aWdhdGlvbiIpICVdCiAgICA8ZGl2IGlkPSJCb3R0b21BY3Rpb25Sb3ciIGNsYXNzPSJBY3Rpb25Sb3cgQmlnQnV0dG9ucyI+CiAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUxvYWRQcm9maWxlO1slIERhdGEuTGluayB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgJmxhcnI7IFslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJUYWJzIFBhZ2luYXRpb24iPgogICAgICAgICAgICA8c3Ryb25nPlslIERhdGEuUmVzdWx0IHwgaHRtbCAlXTwvc3Ryb25nPiBbJSBUcmFuc2xhdGUoIm9mIikgfCBodG1sICVdIDxzdHJvbmc+WyUgRGF0YS5Ub3RhbEhpdHMgfCBodG1sICVdPC9zdHJvbmc+IC0gWyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdOiBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJvdHRvbVN1Yk5hdmlnYXRpb24iKSAlXQo8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RSUzo6VFQ6OlNjcmlwdFVzYWdlKQoKPGRpdiBpZD0iTWFpbkJveCIgY2xhc3M9IlRpY2tldFpvb20gQVJJQVJvbGVNYWluIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkJhY2siKSAlXQogICAgPGRpdiBjbGFzcz0iQWN0aW9uUm93Ij4KICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdO1slIERhdGEuWm9vbUJhY2tMaW5rIHwgaHRtbCAlXSIgY2xhc3M9Ikhpc3RvcnlCYWNrIj4mbGFycjsgWyUgVHJhbnNsYXRlKCJCYWNrIikgfCBodG1sICVdPC9hPjwvbGk+CiAgICAgICAgPC91bD4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJhY2siKSAlXQoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IkZBUUhlYWRlciI+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0KICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgPHVsIGlkPSJGQVFPcHRpb25zIj4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljRkFRUHJpbnQ7SXRlbUlEPVslIERhdGEuSXRlbUlEIHwgdXJpICVdIiBjbGFzcz0iUHJpbnQgQXNQb3B1cCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUHJpbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtcHJpbnQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJQcmludCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDx1bCBjbGFzcz0iQnJlYWRDcnVtYiI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljRkFRRXhwbG9yZXI7Q2F0ZWdvcnlJRD1bJSBEYXRhLkNhdGVnb3J5SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUVBhdGhDYXRlZ29yeUVsZW1lbnQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFQYXRoSXRlbUVsZW1lbnQiKSAlXQogICAgICAgICAgICA8bGk+WyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRUGF0aEl0ZW1FbGVtZW50IikgJV0KICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8dWwgaWQ9Ik1lc3NhZ2VzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudEhlYWRlciIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iQ3VzdG9tZXIgVmlzaWJsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTo8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXR0YWNobWVudHMiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkxhYmVsIj5bJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnQiKSB8IGh0bWwgJV06PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1wYXBlcmNsaXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkRvd25sb2FkQXR0YWNobWVudCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRG93bmxvYWQgQXR0YWNobWVudCIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IHVyaSAlXTtGaWxlSUQ9WyUgRGF0YS5GaWxlSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmlsZW5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIFslIERhdGEuRmlsZXNpemUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50SGVhZGVyIikgJV0KCiMgU2hvdyBpbmZvLCB0aGF0IGxpbmtzIHdpdGhpbiB0aGUgaWZyYW1lIG11c3QgYmUgY2xpY2tlZCB3aXRoIHN0cmcvY21kL3NoaWZ0IChkZXBlbmRpbmcgb24gdGhlIHVzZWQgYnJvd3NlciBhbmQgb3MpCiMgdG8gb3BlbiB0aGUgbGlua3MgaW4gYSBuZXcgd2luZG93IHdpdGhvdXQgdGhlIHNlY3VyaXR5IHBlcm1pc3Npb25zIGdpdmVuIHRvIHRoZSBpZnJhbWUKICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRkFRTWVzc2FnZUJyb3dzZXIiPgogICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgIFslIFRyYW5zbGF0ZSgiVG8gb3BlbiBsaW5rcyBpbiB0aGUgZm9sbG93aW5nIGRlc2NyaXB0aW9uIGJsb2NrcywgeW91IG1pZ2h0IG5lZWQgdG8gcHJlc3MgQ3RybCBvciBDbWQgb3IgU2hpZnQga2V5IHdoaWxlIGNsaWNraW5nIHRoZSBsaW5rIChkZXBlbmRpbmcgb24geW91ciBicm93c2VyIGFuZCBPUykuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvbGk+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50IikgJV0KICAgICAgICAgICAgPGxpIGNsYXNzPSJDdXN0b21lciBWaXNpYmxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik1lc3NhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoRGF0YS5DYXB0aW9uKSB8IGh0bWwgJV06PC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSJ0cnVlIiBuYW1lPSJGaWVsZFN0YXRlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRQ29udGVudEhUTUwiKSAlXQojIGV4ZWN1dGUgSUZyYW1lIEpTIGFzeW5jaHJvbm91c2x5LiBPdGhlcndpc2UgaXQgY291bGQgaGFwcGVuIGJlZm9yZSBvdXIgQVBJIHdhcyBsb2FkZWQKIyB0aGUgZm9sbG93aW5nIEpTIGNvZGUgbXVzdCBiZSB3aXRoaW4gdGhlIHRlbXBsYXRlLCBvdGhlcndpc2UgaXQgY291bGQgaGFwcGVuLCB0aGF0IGFsc28gdGhpcyBjb2RlIGl0c2VsZiBpcyBub3QgbG9hZGVkIHlldAo8c2NyaXB0PgpmdW5jdGlvbiBDaGVja0lGcmFtZUhlaWdodChJRnJhbWVJRCkgewogICAgaWYgKHR5cGVvZiBGQVEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQ3VzdG9tZXIgPT09ICdvYmplY3QnICYmIHR5cGVvZiBGQVEuQ3VzdG9tZXIuRkFRWm9vbSA9PT0gJ29iamVjdCcpIHsKICAgICAgICBGQVEuQ3VzdG9tZXIuRkFRWm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyMnICsgSUZyYW1lSUQpKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgQ2hlY2tJRnJhbWVIZWlnaHQoSUZyYW1lSUQpOwogICAgICAgIH0sIDUwMCk7CiAgICB9Cn0KPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJNZXNzYWdlQm9keSI+CiMgVXNlIHRoZSBIVE1MNSBzYW5kYm94IGF0dHJpYnV0ZSB0byBwcmV2ZW50IHBsdWdpbnMgYW5kIHNjcmlwdHMgZnJvbSBiZWluZyBleGVjdXRlZCBpbiB0aGUgYnJvd3Nlci4KIyBBcHBlbmQgc2Vzc2lvbiBpbmZvIHRvIFVSTCBiZWNhdXNlIElFIHdpbGwgbm90IHNlbmQgY29va2llcy4KIyBTZXQgJ2FsbG93LXBvcHVwcycgdG8gYWxsb3cgSUUxMCsgdG8gb3BlbiBsaW5rcy4gcmVmOiBodHRwOi8vd3d3LnczLm9yZy9odG1sL3dnL3dpa2kvQ2hhbmdlUHJvcG9zYWxzL3NhbmRib3hfYWxsb3dfcG9wdXBzCiAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zYW1lLW9yaWdpbiBhbGxvdy1wb3B1cHMgbXMtYWxsb3ctcG9wdXBzIGFsbG93LXBvcHVwcy10by1lc2NhcGUtc2FuZGJveCIgY2xhc3M9IkZBUUZpZWxkIiBpZD0iSWZyYW1lRkFRWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0iIG9ubG9hZD0id2luZG93LnNldFRpbWVvdXQoIGZ1bmN0aW9uICgpeyBDaGVja0lGcmFtZUhlaWdodCgnSWZyYW1lRkFRWyUgRGF0YS5GaWVsZCB8IGh0bWwgJV0nKTsgfSwgNTAwKTsiIHNyYz0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0ZBUVpvb207U3ViYWN0aW9uPUhUTUxWaWV3O0l0ZW1JRD1bJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV07RmllbGQ9WyUgRGF0YS5GaWVsZCB8IGh0bWwgJV07Ij48L2lmcmFtZT4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudEhUTUwiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFDb250ZW50UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQXJ0aWNsZUZBUUNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnQgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRkFRQ29udGVudFBsYWluIikgJV0KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUNvbnRlbnQiKSAlXQoKICAgICAgICA8L3VsPgogICAgICAgIDxkaXYgaWQ9Ilpvb21TaWRlYmFyIj4KICAgICAgICAgICAgPHVsIGlkPSJNZXRhZGF0YSI+CiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTWVzc2FnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5bJSBUcmFuc2xhdGUoIkZBUSBJbmZvcm1hdGlvbiIpIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJBcnRpY2xlIE51bWJlciIpIHwgaHRtbCAlXTo8L3NwYW4+IDxzcGFuPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZSgiQ2F0ZWdvcnkiKSB8IGh0bWwgJV06PC9zcGFuPiA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2F0ZWdvcnlOYW1lKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNhdGVnb3J5TmFtZSkgfCBodG1sICVdPC9zcGFuPjwvbGk+CgogICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJLZXl3b3Jkc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSI+WyUgVHJhbnNsYXRlKCJLZXl3b3JkcyIpIHwgaHRtbCAlXTo8L3NwYW4+ClslIFJlbmRlckJsb2NrU3RhcnQoIktleXdvcmRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5d29yZCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIGZvciBhcnRpY2xlcyB3aXRoIGtleXdvcmQiKSB8IGh0bWwgJV06IFslIERhdGEuS2V5d29yZCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljRkFRU2VhcmNoO1N1YmFjdGlvbj1TZWFyY2g7S2V5d29yZD1bJSBEYXRhLktleXdvcmQgfCB1cmkgJV0iPlslIERhdGEuS2V5d29yZCB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiS2V5d29yZHMiKSAlXQogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIlN0YXRlIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlN0YXRlKSB8IGh0bWwgJV08L3NwYW4+PC9saT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGFuZ3VhZ2UiKSAlXQogICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZSgiTGFuZ3VhZ2UiKSB8IGh0bWwgJV06PC9zcGFuPiA8c3BhbiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFuZ3VhZ2UpIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTGFuZ3VhZ2UiKSAlXQoKIyBzaG93IGZhcSBkeW5hbWljIGZpZWxkcwpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGQVFEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJLZXkiPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJGQVFEeW5hbWljRmllbGQiKSAlXQojIGV4YW1wbGUgb2YgaG93IHRvIHVzZSBmaXhlZCBkeW5hbWljIGZpZWxkIGJsb2NrcyBmb3IgY3VzdG9taXphdGlvbnMKIyBOb3RlOiBGaWVsZDEgYW5kIEZpZWxkMiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBmaWVsZHMgYW5kIGhhZCB0byBiZSByZXBsYWNlZCB3aXRoIHRoZSBhY3R1YWwKIyBmaWVsZCBuYW1lcwojWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMSIpICVdCiMgICAgICAgICAgICAgICAgPGxpPgojICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvc3Bhbj4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUxIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KIyAgICAgICAgICAgICAgICA8L2xpPgojWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiRkFRRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgPGxpPgojICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvc3Bhbj4KIyAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIERhdGEuVGl0bGUyIHwgaHRtbCAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvc3Bhbj4KIyAgICAgICAgICAgICAgICA8L2xpPgojWyUgUmVuZGVyQmxvY2tFbmQoIkZBUUR5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld1JhdGluZyIpICVdCiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IktleSBSYXRpbmdMYWJlbCI+WyUgVHJhbnNsYXRlKCJSYXRpbmciKSB8IGh0bWwgJV06PC9zcGFuPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSYXRlU3RhcnMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJSYXRlU3RhciI+PGkgY2xhc3M9ImZhIGZhLXN0YXIiPjwvaT48L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJSYXRlU3RhcnMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSYXRlU3RhcnNDb3VudCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlJhdGVTdGFyVGV4dCIgdGl0bGU9IlslIERhdGEuU3RhcnMgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgib3V0IG9mIDUiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN0YXJzIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIm91dCBvZiA1IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmF0ZVN0YXJzQ291bnQiKSAlXQogICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlZpZXdSYXRpbmciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVmlld1ZvdGVzIikgJV0KICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iS2V5Ij5bJSBUcmFuc2xhdGUoIlZvdGVzIikgfCBodG1sICVdOjwvc3Bhbj4gPHNwYW4gdGl0bGU9IlslIERhdGEuVm90ZXMgfCBodG1sICVdIj5bJSBEYXRhLlZvdGVzIHwgaHRtbCAlXTwvc3Bhbj48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiVmlld1ZvdGVzIikgJV0KICAgICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6RkFROjpJbXBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNTVicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RkFRJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ0ZBUSBpbXBvcnQgdG9vbC4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NlcGFyYXRvcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlZmluZXMgdGhlIHNlcGFyYXRvciBmb3IgZGF0YSBpbiBDU1YgZmlsZSAoZGVmYXVsdCAnOycpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdxdW90ZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlZmluZXMgdGhlIHF1b3RlIGZvciBkYXRhIGluIENTViBmaWxlIChkZWZhdWx0ICdcIicpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NvdXJjZS1wYXRoJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSB0aGUgcGF0aCB0byB0aGUgZmlsZSB3aGljaCBjb250YWluaW5nIEZBUSBpdGVtcyBmb3IgaW1wb3J0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwoKICAgICRTZWxmLT5BZGRpdGlvbmFsSGVscCgKICAgICAgICAiPHllbGxvdz5Gb3JtYXQgb2YgdGhlIENTViBmaWxlOlxuCiAgICAgICAgICAgIHRpdGxlO2NhdGVnb3J5O2xhbmd1YWdlO3N0YXRldHlwZTtmaWVsZDE7ZmllbGQyO2ZpZWxkMztmaWVsZDQ7ZmllbGQ1O2ZpZWxkNjtrZXl3b3JkcwogICAgICAgIDwveWVsbG93PlxuIgogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU291cmNlUGF0aCA9ICRTZWxmLT5HZXRBcmd1bWVudCgnc291cmNlLXBhdGgnKTsKICAgIGlmICggJFNvdXJjZVBhdGggJiYgIS1yICRTb3VyY2VQYXRoICkgewogICAgICAgIGRpZSAiRmlsZSAkU291cmNlUGF0aCBkb2VzIG5vdCBleGlzdCwgY2FuIG5vdCBiZSByZWFkLlxuIjsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+SW1wb3J0aW5nIEZBUSBpdGVtcy4uLjwveWVsbG93PlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8eWVsbG93PiIgLiAoICc9JyB4IDY5ICkgLiAiPC95ZWxsb3c+XG4iICk7CgogICAgbXkgJFNvdXJjZVBhdGggPSAkU2VsZi0+R2V0QXJndW1lbnQoJ3NvdXJjZS1wYXRoJyk7CiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+UmVhZCBGaWxlICRTb3VyY2VQYXRoIDwveWVsbG93PlxuXG4iKTsKCiAgICAjIHJlYWQgc291cmNlIGZpbGUKICAgIG15ICRDU1ZTdHJpbmdSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkU291cmNlUGF0aCwKICAgICAgICBSZXN1bHQgICA9PiAnU0NBTEFSJywKICAgICAgICBNb2RlICAgICA9PiAnYmlubW9kZScsCiAgICApOwoKICAgIGlmICggISRDU1ZTdHJpbmdSZWYgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIkNhbid0IHJlYWQgZmlsZSAkU291cmNlUGF0aC5cbkltcG9ydCBhYm9ydGVkLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgbXkgJFNlcGFyYXRvciA9ICRTZWxmLT5HZXRPcHRpb24oJ3NlcGFyYXRvcicpIHx8ICc7JzsKICAgIG15ICRRdW90ZSAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdxdW90ZScpICAgICB8fCAnIic7CgogICAgIyByZWFkIENTViBkYXRhCiAgICBteSAkRGF0YVJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDU1YnKS0+Q1NWMkFycmF5KAogICAgICAgIFN0cmluZyAgICA9PiAkJENTVlN0cmluZ1JlZiwKICAgICAgICBTZXBhcmF0b3IgPT4gJFNlcGFyYXRvciwKICAgICAgICBRdW90ZSAgICAgPT4gJFF1b3RlLAogICAgKTsKCiAgICBpZiAoICEkRGF0YVJlZiApIHsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXJyb3Igb2NjdXJyZWQuIEltcG9ydCBpbXBvc3NpYmxlISBTZWUgU3lzbG9nIGZvciBkZXRhaWxzLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICBteSAlTGFuZ3VhZ2VJRCA9IHJldmVyc2UgJEZBUU9iamVjdC0+TGFuZ3VhZ2VMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBteSAlU3RhdGVUeXBlSUQgPSByZXZlcnNlICV7ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoIFVzZXJJRCA9PiAxICkgfTsKCiAgICAjIGdldCBncm91cCBpZCBmb3IgRkFRIGdyb3VwCiAgICBteSAkRkFRR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCA9PiAnZmFxJywKICAgICk7CgogICAgbXkgJExpbmVDb3VudGVyOwogICAgbXkgJFN1Y2Nlc3NDb3VudCAgICA9IDA7CiAgICBteSAkVW5TY3VjY2Vzc0NvdW50ID0gMDsKCiAgICBST1dSRUY6CiAgICBmb3IgbXkgJFJvd1JlZiAoIEB7JERhdGFSZWZ9ICkgewoKICAgICAgICAkTGluZUNvdW50ZXIrKzsKCiAgICAgICAgbXkgKAogICAgICAgICAgICAkVGl0bGUsICRDYXRlZ29yeVN0cmluZywgJExhbmd1YWdlLCAkU3RhdGVUeXBlLAogICAgICAgICAgICAkRmllbGQxLCAkRmllbGQyLCAkRmllbGQzLCAkRmllbGQ0LCAkRmllbGQ1LCAkRmllbGQ2LCAkS2V5d29yZHMKICAgICAgICApID0gQHskUm93UmVmfTsKCiAgICAgICAgIyBjaGVjayBsYW5ndWFnZQogICAgICAgIGlmICggISRMYW5ndWFnZUlEeyRMYW5ndWFnZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludEVycm9yKCJFcnJvcjogQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci4gTGFuZ3VhZ2UgJyRMYW5ndWFnZScgZG9lcyBub3QgZXhpc3QuXG4iKTsKICAgICAgICAgICAgbmV4dCBST1dSRUY7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHN0YXRlIHR5cGUKICAgICAgICBpZiAoICEkU3RhdGVUeXBlSUR7JFN0YXRlVHlwZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludEVycm9yKCJFcnJvcjogQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci4gU3RhdGUgJyRTdGF0ZVR5cGUnIGRvZXMgbm90IGV4aXN0LlxuIik7CiAgICAgICAgICAgIG5leHQgUk9XUkVGOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgc3ViY2F0ZWdvcmllcwogICAgICAgIG15IEBDYXRlZ29yeUFycmF5ID0gc3BsaXQgLzo6LywgJENhdGVnb3J5U3RyaW5nOwoKICAgICAgICAjIGNoZWNrIGVhY2ggc3ViY2F0ZWdvcnkgaWYgaXQgZXhpc3RzCiAgICAgICAgbXkgJENhdGVnb3J5SUQ7CiAgICAgICAgbXkgJFBhcmVudElEID0gMDsKCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIGZvciBteSAkQ2F0ZWdvcnkgKEBDYXRlZ29yeUFycmF5KSB7CgogICAgICAgICAgICAjIGdldCB0aGUgY2F0ZWdvcnkgaWQKICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBmYXFfY2F0ZWdvcnkgJwogICAgICAgICAgICAgICAgICAgIC4gJ1dIRVJFIHZhbGlkX2lkID0gMSBBTkQgbmFtZSA9ID8gQU5EIHBhcmVudF9pZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCAgPT4gWyBcJENhdGVnb3J5LCBcJFBhcmVudElEIF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSBAUmVzdWx0OwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgIHB1c2goIEBSZXN1bHQsICRSb3dbMF0gKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICRSZXN1bHRbMF07CgogICAgICAgICAgICAjIGNyZWF0ZSBjYXRlZ29yeSBpZiBpdCBkb2VzIG5vdCBleGlzdAogICAgICAgICAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJENhdGVnb3J5LAogICAgICAgICAgICAgICAgICAgIFBhcmVudElEID0+ICRQYXJlbnRJRCwKICAgICAgICAgICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIG5ldyBjYXRlZ29yeSB0byBGQVEgZ3JvdXAKICAgICAgICAgICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgICAgICAgICBHcm91cElEcyAgID0+IFskRkFRR3JvdXBJRF0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgbmV3IHBhcmVudCBpZAogICAgICAgICAgICAkUGFyZW50SUQgPSAkQ2F0ZWdvcnlJRDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgY2F0ZWdvcnkKICAgICAgICBpZiAoICEkQ2F0ZWdvcnlJRCApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoCiAgICAgICAgICAgICAgICAiRXJyb3I6IENvdWxkIG5vdCBpbXBvcnQgbGluZSAkTGluZUNvdW50ZXIuIENhdGVnb3J5ICckQ2F0ZWdvcnlTdHJpbmcnIGNvdWxkIG5vdCBiZSBjcmVhdGVkLlxuIgogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCBTdGF0ZVR5cGUgdG8gU3RhdGUKICAgICAgICBteSAlU3RhdGVMb29rdXAgPSByZXZlcnNlICRGQVFPYmplY3QtPlN0YXRlTGlzdCggVXNlcklEID0+IDEgKTsKICAgICAgICBteSAkU3RhdGVJRDsKCiAgICAgICAgU1RBVEVOQU1FOgogICAgICAgIGZvciBteSAkU3RhdGVOYW1lICggc29ydCBrZXlzICVTdGF0ZUxvb2t1cCApIHsKICAgICAgICAgICAgaWYgKCAkU3RhdGVOYW1lID1+IG17XEEgJFN0YXRlVHlwZSB9bXN4aSApIHsKICAgICAgICAgICAgICAgICRTdGF0ZUlEID0gJFN0YXRlTG9va3VweyRTdGF0ZU5hbWV9OwogICAgICAgICAgICAgICAgbGFzdCBTVEFURU5BTUU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIHNldCBjb250ZW50IHR5cGUKICAgICAgICBteSAkQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICYmICRDb25maWdPYmplY3QtPkdldCgnRkFROjpJdGVtOjpIVE1MJykgKSB7CiAgICAgICAgICAgICRDb250ZW50VHlwZSA9ICd0ZXh0L2h0bWwnOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgRkFRIGFydGljbGUKICAgICAgICBteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gJExhbmd1YWdlSUR7JExhbmd1YWdlfSwKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJEZpZWxkMSwKICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJEZpZWxkMiwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZpZWxkMywKICAgICAgICAgICAgRmllbGQ0ICAgICAgPT4gJEZpZWxkNCwKICAgICAgICAgICAgRmllbGQ1ICAgICAgPT4gJEZpZWxkNSwKICAgICAgICAgICAgRmllbGQ2ICAgICAgPT4gJEZpZWxkNiwKICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJEtleXdvcmRzIHx8ICcnLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQ29udGVudFR5cGUsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBzdWNjZXNzCiAgICAgICAgaWYgKCRJdGVtSUQpIHsKICAgICAgICAgICAgJFN1Y2Nlc3NDb3VudCsrOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFVuU2N1Y2Nlc3NDb3VudCsrOwogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiQ291bGQgbm90IGltcG9ydCBsaW5lICRMaW5lQ291bnRlci5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJFN1Y2Nlc3NDb3VudCkgewogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPlN1Y2Nlc3NmdWxseSBpbXBvcnRlZCAkU3VjY2Vzc0NvdW50IEZBUSBpdGVtKHMpLjwvZ3JlZW4+XG4iKTsKICAgIH0KICAgIGlmICgkVW5TY3VjY2Vzc0NvdW50KSB7CiAgICAgICAgJFNlbGYtPlByaW50KCJcbjxyZWQ+VW5zdWNjZXNzZnVsbHkgaW1wb3J0ZWQgJFVuU2N1Y2Nlc3NDb3VudCBGQVEgaXRlbXMocykuPC9yZWQ+XG5cbiIpOwoKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+SW1wb3J0IGNvbXBsZXRlIHdpdGggZXJyb3JzLjwvcmVkPlxuIik7CiAgICAgICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+RmFpbDwvcmVkPlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCJcbiIpOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8eWVsbG93PiIgLiAoICc9JyB4IDY5ICkgLiAiPC95ZWxsb3c+XG4iICk7CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6RkFROjpDb250ZW50VHlwZVNldDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpGQVEnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignU2V0cyB0aGUgY29udGVudCB0eXBlIG9mIEZBUSBpdGVtcy4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSA9PiAnZmFxLWl0ZW0taWQnLAogICAgICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgICAgICJzcGVjaWZ5IG9uZSBvciBtb3JlIGlkcyBvZiBmYXEgaXRlbXMgdG8gc2V0IGl0cyBjb250ZW50IHR5cGUgKGlmIG5vdCBzZXQsIGFsbCBGQVEgaXRlbXMgd2lsbCBiZSBhZmZlY3RlZCkuIiwKICAgICAgICBSZXF1aXJlZCAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggPT4gcXIvLiovc214LAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdjb250ZW50LXR5cGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJ0ZXh0L3BsYWluIG9yIHRleHQvaHRtbCAoaWYgbm90IHNldCwgdGhlIGNvbnRlbnQgdHlwZSB3aWxsIGJlIGRldGVybWluZWQgYXV0b21hdGljYWxseSkuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvKD86IHRleHRcL3BsYWluIHwgdGV4dFwvaHRtbCApL3NteCwKICAgICk7CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlNldHRpbmcgY29udGVudCB0eXBlIG9mIEZBUSBpdGVtcy4uLjwveWVsbG93PlxuIik7CgogICAgbXkgQEZBUUl0ZW1JRHMgID0gQHsgJFNlbGYtPkdldE9wdGlvbignZmFxLWl0ZW0taWQnKSAvLyBbXSB9OwogICAgbXkgJENvbnRlbnRUeXBlID0gJFNlbGYtPkdldE9wdGlvbignY29udGVudC10eXBlJykgLy8gJyc7CgogICAgbXkgJUZ1bmN0aW9uUGFyYW1zOwoKICAgIGlmIChARkFRSXRlbUlEcykgewogICAgICAgICRGdW5jdGlvblBhcmFtc3tGQVFJdGVtSURzfSA9IFxARkFRSXRlbUlEczsKICAgIH0KCiAgICBpZiAoJENvbnRlbnRUeXBlKSB7CiAgICAgICAgJEZ1bmN0aW9uUGFyYW1ze0NvbnRlbnRUeXBlfSA9ICRDb250ZW50VHlwZTsKICAgIH0KCiAgICBteSAkU3VjY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5GQVFDb250ZW50VHlwZVNldCglRnVuY3Rpb25QYXJhbXMpOwoKICAgIGlmICggISRTdWNjZXMgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkZhaWwuPC9yZWQ+XG4iKTsKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKCiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OkZBUTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBTY2FsYXI6OlV0aWw7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6RkFRJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpGQVEKCj1oZWFkMSBERVNDUklQVElPTgoKRkFRIG9iamVjdCBoYW5kbGVyIGZvciBEeW5hbWljRmllbGRzCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpGQVEtPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQb3N0VmFsdWVTZXQoKQoKcGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMgYWZ0ZXIgdGhlIFZhbHVlIHNldCBmb3IgdGhpcyBvYmplY3QgdHlwZS4KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRGQVFIYW5kbGVyT2JqZWN0LT5Qb3N0VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsICAgICAgIyBjb21wbGV0ZSBjb25maWcgb2YgdGhlIER5bmFtaWNGaWVsZAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsICAgICAgICAgICAgICAgICMgSUQgb2YgdGhlIGN1cnJlbnQgb2JqZWN0IHRoYXQgdGhlIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IGJlIGxpbmtlZCB0bywgZS4gZy4gRkFRSUQKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLCAgICAgICAgICAgICAgICAgICAjIFZhbHVlIHRvIHN0b3JlLCBkZXBlbmRzIG9uIGJhY2tlbmQgdHlwZQogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIFBvc3RWYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhEeW5hbWljRmllbGRDb25maWcgT2JqZWN0SUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgRHluYW1pY0ZpZWxkQ29uZmlnIChnZW5lcmFsKQogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZmllbGQgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBEeW5hbWljRmllbGRDb25maWcgKGludGVybmFsbHkpCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSUQgRmllbGRUeXBlIE9iamVjdFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEeW5hbWljRmllbGRDb25maWchIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgaGlzdG9yeSBpbnNlcnQKICAgICRGQVFPYmplY3QtPkZBUUhpc3RvcnlBZGQoCiAgICAgICAgTmFtZSAgID0+ICJEeW5hbWljRmllbGQgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSBVcGRhdGVkIiwKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICRGQVFPYmplY3QtPl9EZWxldGVGcm9tRkFRQ2FjaGUoIEl0ZW1JRCA9PiAkUGFyYW17T2JqZWN0SUR9ICk7CgogICAgIyBUcmlnZ2VyIGV2ZW50LgogICAgJEZBUU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdGQVFEeW5hbWljRmllbGRVcGRhdGVfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0sCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBGaWVsZE5hbWUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgICAgIE9sZFZhbHVlICA9PiAkUGFyYW17T2xkVmFsdWV9LAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIE9iamVjdERhdGFHZXQoKQoKcmV0cmlldmVzIHRoZSBkYXRhIG9mIHRoZSBjdXJyZW50IG9iamVjdC4KCiAgICBteSAlT2JqZWN0RGF0YSA9ICREeW5hbWljRmllbGRGQVFIYW5kbGVyT2JqZWN0LT5PYmplY3REYXRhR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgICAgICMgY29tcGxldGUgY29uZmlnIG9mIHRoZSBEeW5hbWljRmllbGQKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMTIzLAogICAgKTsKCnJldHVybnM6CgogICAgJU9iamVjdERhdGEgPSAoCiAgICAgICAgT2JqZWN0SUQgPT4gMTIzLAogICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgRkFRSUQgICAgICAgICAgICAgPT4gMzIsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICAgICAgPT4gJzInLAogICAgICAgICAgICAjIC4uLgogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhEeW5hbWljRmllbGRDb25maWcgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgRHluYW1pY0ZpZWxkQ29uZmlnIChnZW5lcmFsKS4KICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGZpZWxkIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZCIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBDaGVjayBEeW5hbWljRmllbGRDb25maWcgKGludGVybmFsbHkpLgogICAgZm9yIG15ICROZWVkZWQgKHF3KElEIEZpZWxkVHlwZSBPYmplY3RUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQgaW4gRHluYW1pY0ZpZWxkQ29uZmlnISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEl0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oCiAgICAgICAgUGFyYW0gPT4gJ0l0ZW1JRCcsCiAgICApOwoKICAgIHJldHVybiBpZiAhJEl0ZW1JRDsKCiAgICBteSAlRkFRID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpLT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICElRkFRICkgewoKICAgICAgICByZXR1cm4gKAogICAgICAgICAgICBPYmplY3RJRCA9PiAkSXRlbUlELAogICAgICAgICAgICBEYXRhICAgICA9PiB7fQogICAgICAgICk7CiAgICB9CgogICAgbXkgJVJlc3VsdCA9ICgKICAgICAgICBPYmplY3RJRCA9PiAkSXRlbUlELAogICAgKTsKCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAlRkFRICkgewoKICAgICAgICAkUmVzdWx0e0RhdGF9LT57JEF0dHJpYnV0ZX0gPSAkRkFReyRBdHRyaWJ1dGV9OwogICAgfQoKICAgIHJldHVybiAlUmVzdWx0OwoKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OkNhdGVnb3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RkFROjpDYXRlZ29yeSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OkZBUQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgRkFRIGNhdGVnb3J5IGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgQ2F0ZWdvcnlBZGQoKQoKYWRkIGEgY2F0ZWdvcnkKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgIE5hbWUgICAgID0+ICdDYXRlZ29yeUEnLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIGNvbW1lbnQnLCAgICAgIyBPcHRpb25hbAogICAgICAgIFBhcmVudElEID0+IDIsICAgICAgICAgICAgICAgICAgIyBNYW5kYXRvcnksIGJ1dCBjb3VsZCBiZSAwCiAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SUQgPSAzNDsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhdGVnb3J5IGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIENhdGVnb3J5QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBVc2VySUQgVmFsaWRJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgUGFyZW50SUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayB0aGF0IFBhcmVudElEIGlzIG5vdCBhbiBlbXB0eSBzdHJpbmcgYnV0IG51bWJlciAwIGlzIGFsbG93ZWQKICAgIGlmICggJFBhcmFte1BhcmVudElEfSBlcSAnJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmVudElEIGNhbm5vdCBiZSBlbXB0eSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGluc2VydCByZWNvcmQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfY2F0ZWdvcnkgKG5hbWUsIHBhcmVudF9pZCwgY29tbWVudHMsIHZhbGlkX2lkLCBjcmVhdGVkLCBjcmVhdGVkX2J5LAogICAgICAgICAgICAgICAgY2hhbmdlZCwgY2hhbmdlZF9ieSkKICAgICAgICAgICAgVkFMVUVTICggPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17UGFyZW50SUR9LCBcJFBhcmFte0NvbW1lbnR9LCBcJFBhcmFte1ZhbGlkSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCBuZXcgY2F0ZWdvcnkgaWQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgICAgICBXSEVSRSBuYW1lID0gPyBBTkQgcGFyZW50X2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9LCBcJFBhcmFte1BhcmVudElEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRDYXRlZ29yeUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENhdGVnb3J5SUQgPSAkUm93WzBdOwogICAgfQoKICAgICMgbG9nIG5vdGljZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgTWVzc2FnZSAgPT4gIkZBUUNhdGVnb3J5OiAnJFBhcmFte05hbWV9JyBDYXRlZ29yeUlEOiAnJENhdGVnb3J5SUQnICIKICAgICAgICAgICAgLiAiY3JlYXRlZCBzdWNjZXNzZnVsbHkgKCRQYXJhbXtVc2VySUR9KSEiLAogICAgKTsKCiAgICByZXR1cm4gJENhdGVnb3J5SUQ7Cn0KCj1oZWFkMiBDYXRlZ29yeUNvdW50KCkKCkNvdW50IHRoZSBudW1iZXIgb2YgY2F0ZWdvcmllcy4KCiAgICBteSAkQ2F0ZWdvcnlDb3VudCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5Q291bnQoCiAgICAgICAgUGFyZW50SURzID0+IFsgMSwgMiwgMywgNCBdLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5Q291bnQgPSA2OwoKPWN1dAoKc3ViIENhdGVnb3J5Q291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEc30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFBhcmVudElEcyEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgQ09VTlQoKikKICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgIFdIRVJFIHZhbGlkX2lkIElOICgnCiAgICAgICAgLiBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpCiAgICAgICAgLiAnKSc7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBwYXJlbnQgaWRzIGFyZSBnaXZlbgogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtQYXJlbnRJRHN9ICkgewoKICAgICAgICAjIGludGVnZXIgcXVvdGUgdGhlIHBhcmVudCBpZHMKICAgICAgICBmb3IgbXkgJFBhcmVudElEICggQHsgJFBhcmFte1BhcmVudElEc30gfSApIHsKICAgICAgICAgICAgJFBhcmVudElEID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmVudElELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIG15ICRJblN0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte1BhcmVudElEc30gfTsKCiAgICAgICAgJFNRTCAuPSAnIEFORCBwYXJlbnRfaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBhZGQgZ3JvdXAgYnkKICAgICRTUUwgLj0gJyBHUk9VUCBCWSBwYXJlbnRfaWQnOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gMjAwLAogICAgKTsKCiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJENvdW50Owp9Cgo9aGVhZDIgQ2F0ZWdvcnlEZWxldGUoKQoKRGVsZXRlIGEgY2F0ZWdvcnkuCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgICAgICBDYXRlZ29yeUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgRGVsZXRlU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhdGVnb3J5IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgQ2F0ZWdvcnlEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIHRoZSBjYXRlZ29yeQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIERFTEVURSBGUk9NIGZhcV9jYXRlZ29yeQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgICMgZGVsZXRlIHRoZSBjYXRlZ29yeSBncm91cHMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfY2F0ZWdvcnlfZ3JvdXAKICAgICAgICAgICAgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDYXRlZ29yeUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENhdGVnb3J5RHVwbGljYXRlQ2hlY2soKQoKY2hlY2sgYSBjYXRlZ29yeSBmb3IgZHVwbGljYXRlIG5hbWUgdW5kZXIgdGhlIHNhbWUgcGFyZW50CgogICAgbXkgJEV4aXN0cyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RHVwbGljYXRlQ2hlY2soCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NvbWUgTmFtZScsCiAgICAgICAgUGFyZW50SUQgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRFeGlzdHMgPSAxOyAgICAgICAgICAgICAgICAjIGlmIGNhdGVnb3J5IG5hbWUgYWxyZWFkeSBleGlzdHMgd2l0aCB0aGUgc2FtZSBwYXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAgaWYgdGhlIG5hbWUgZG9lcyBub3QgZXhpc3RzIHdpdGggdGhlIHNhbWUgcGFyZW50Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlEdXBsaWNhdGVDaGVjayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdHMKICAgICRQYXJhbXtOYW1lfSAvLz0gJyc7CiAgICAkUGFyYW17UGFyZW50SUR9IHx8PSAwOwogICAgbXkgQFZhbHVlczsKICAgIHB1c2ggQFZhbHVlcywgXCRQYXJhbXtOYW1lfTsKICAgIHB1c2ggQFZhbHVlcywgXCRQYXJhbXtQYXJlbnRJRH07CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBkYiBxdW90ZQogICAgJFBhcmFte1BhcmVudElEfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtQYXJlbnRJRH0sICdJbnRlZ2VyJyApOwoKICAgICMgYnVpbGQgU1FMCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBpZAogICAgICAgIEZST00gZmFxX2NhdGVnb3J5CiAgICAgICAgV0hFUkUgbmFtZSA9ID8KICAgICAgICAgICAgQU5EIHBhcmVudF9pZCA9ID8KICAgICAgICAnOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKICAgICAgICAkU1FMIC49ICIgQU5EIGlkICE9ID8iOwogICAgICAgIHB1c2ggQFZhbHVlcywgXCRQYXJhbXtDYXRlZ29yeUlEfTsKCiAgICB9CgogICAgIyBwcmVwYXJlIFNRTCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gXEBWYWx1ZXMsCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEV4aXN0cyA9IDE7CiAgICB9CgogICAgcmV0dXJuICRFeGlzdHM7Cn0KCj1oZWFkMiBDYXRlZ29yeUdldCgpCgpnZXQgYSBjYXRlZ29yeSBhcyBoYXNoCgogICAgbXkgJUNhdGVnb3J5ID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVDYXRlZ29yeSA9ICgsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAyLAogICAgICAgIFBhcmVudElEICAgPT4gMCwKICAgICAgICBOYW1lICAgICAgID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgQ29tbWVudCAgICA9PiAnVGhpcyBpcyBteSBmaXJzdCBjYXRlZ29yeS4nLAogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhdGVnb3J5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDYXRlZ29yeUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdDYXRlZ29yeUdldDo6JyAuICRQYXJhbXtDYXRlZ29yeUlEfTsKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIG15ICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgIHJldHVybiAleyRDYWNoZX0gaWYgJENhY2hlOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZSwgY29tbWVudHMsIHZhbGlkX2lkCiAgICAgICAgICAgIEZST00gZmFxX2NhdGVnb3J5CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBQYXJlbnRJRCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgQ29tbWVudCAgICA9PiAkUm93WzNdLAogICAgICAgICAgICBWYWxpZElEICAgID0+ICRSb3dbNF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAyLAogICAgKTsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1oZWFkMiBDYXRlZ29yeUdyb3VwR2V0KCkKCmdldCBncm91cHMgb2YgYSBjYXRlZ29yeQoKICAgIG15ICRHcm91cEFycmF5UmVmID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlHcm91cEdldCgKICAgICAgICBDYXRlZ29yeUlEID0+IDMsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEdyb3VwQXJyYXlSZWYgPSBbCiAgICAgICAgMiwKICAgICAgICA5LAogICAgICAgIDEwLAogICAgXTsKCj1jdXQKCnN1YiBDYXRlZ29yeUdyb3VwR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBncm91cHMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBncm91cF9pZAogICAgICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cAogICAgICAgICAgICBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NhdGVnb3J5SUR9IF0sCiAgICApOwoKICAgIG15IEBHcm91cHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBHcm91cHMsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxAR3JvdXBzOwp9Cgo9aGVhZDIgQ2F0ZWdvcnlHcm91cEdldEFsbCgpCgpnZXQgYWxsIGNhdGVnb3J5LWdyb3VwcwoKICAgIG15ICRBbGxDYXRlZ29yeUdyb3VwSGFzaFJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5R3JvdXBHZXRBbGwoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQWxsQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiB7CiAgICAgICAgICAgIDIgID0+IDEsCiAgICAgICAgfSwKICAgICAgICAyID0+IHsKICAgICAgICAgICAgMiAgPT4gMSwKICAgICAgICAgICAgOSAgPT4gMSwKICAgICAgICAgICAgMTAgPT4gMSwKICAgICAgICB9LAogICAgICAgIDMgPT4gewogICAgICAgICAgICAyICA9PiAxLAogICAgICAgICAgICA5ICA9PiAxLAogICAgICAgICAgICAxMCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgNCA9PiB7CiAgICAgICAgICAgIDEgID0+IDEsCiAgICAgICAgICAgIDIgID0+IDEsCiAgICAgICAgICAgIDMgID0+IDEsCiAgICAgICAgICAgIDQgID0+IDEsCiAgICAgICAgICAgIDUgID0+IDEsCiAgICAgICAgICAgIDkgID0+IDEsCiAgICAgICAgICAgIDEwID0+IDEsCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlHcm91cEdldEFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5R3JvdXBHZXRBbGx9ICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfTsKICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBncm91cHMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBncm91cF9pZCwgY2F0ZWdvcnlfaWQKICAgICAgICAgICAgRlJPTSBmYXFfY2F0ZWdvcnlfZ3JvdXAnLAogICAgKTsKCiAgICBteSAlR3JvdXBzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEdyb3Vwc3sgJFJvd1sxXSB9LT57ICRSb3dbMF0gfSA9IDE7CiAgICB9CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUdyb3VwR2V0QWxsfSA9IFwlR3JvdXBzOwoKICAgIHJldHVybiBcJUdyb3VwczsKfQoKPWhlYWQyIENhdGVnb3J5TGlzdCgpCgpnZXQgdGhlIGNhdGVnb3J5IGxpc3QgYXMgaGFzaAoKICAgIG15ICRDYXRlZ29yeUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsICAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlIYXNoUmVmID0gewogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICAgICAgNCA9PiAnU3ViIENhdGVnb3J5IEInLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIENhdGVnb3J5TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgbXkgJFZhbGlkID0gMDsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsaWR9ICkgewogICAgICAgICRWYWxpZCA9ICRQYXJhbXtWYWxpZH07CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e0NhdGVnb3J5TGlzdH0tPnskVmFsaWR9ICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUxpc3R9LT57JFZhbGlkfTsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZQogICAgICAgIEZST00gZmFxX2NhdGVnb3J5JzsKICAgIGlmICgkVmFsaWQpIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgICAgICRTUUwgLj0gJyBXSEVSRSB2YWxpZF9pZCBJTiAoJwogICAgICAgICAgICAuIGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCkKICAgICAgICAgICAgLiAnKSc7CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBwcmVwYXJlIFNRTCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKCBTUUwgPT4gJFNRTCApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1sxXSB9LT57ICRSb3dbMF0gfSA9ICRSb3dbMl07CiAgICB9CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntDYXRlZ29yeUxpc3R9LT57JFZhbGlkfSA9IFwlRGF0YTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aGVhZDIgQ2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgYW4gYXJyYXkgcmVmCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5U2VhcmNoKAogICAgICAgIE5hbWUgICAgICAgID0+ICdUZXN0JywKICAgICAgICBQYXJlbnRJRCAgICA9PiAzLAogICAgICAgIFBhcmVudElEcyAgID0+IFsgMSwgMywgOCBdLAogICAgICAgIENhdGVnb3J5SURzID0+IFsgMiwgNSwgNyBdLAogICAgICAgIE9yZGVyQnkgICAgID0+ICdOYW1lJywKICAgICAgICBTb3J0QnkgICAgICA9PiAnZG93bicsCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgMiwKICAgIF07Cgo9Y3V0CgpzdWIgQ2F0ZWdvcnlTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgU1FMCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBpZAogICAgICAgIEZST00gZmFxX2NhdGVnb3J5CiAgICAgICAgV0hFUkUgdmFsaWRfaWQgSU4gKCcKICAgICAgICAuIGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCkKICAgICAgICAuICcpJzsKCiAgICBteSAkRXh0ID0gJyc7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBzZWFyY2ggZm9yIG5hbWUKICAgIGlmICggZGVmaW5lZCAkUGFyYW17TmFtZX0gKSB7CgogICAgICAgICMgZGIgbGlrZSBxdW90ZQogICAgICAgICRQYXJhbXtOYW1lfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtOYW1lfSwgJ0xpa2UnICk7CgogICAgICAgICRFeHQgLj0gIiBBTkQgbmFtZSBMSUtFICclIiAuICRQYXJhbXtOYW1lfSAuICIlJyAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgcGFyZW50IGlkCiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKCiAgICAgICAgIyBkYiBpbnRlZ2VyIHF1b3RlCiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtQYXJlbnRJRH0sICdJbnRlZ2VyJyApOwoKICAgICAgICAkRXh0IC49ICcgQU5EIHBhcmVudF9pZCA9ICcgLiAkUGFyYW17UGFyZW50SUR9OwogICAgfQoKICAgICMgc2VhcmNoIGZvciBwYXJlbnQgaWRzCiAgICBlbHNpZiAoCiAgICAgICAgZGVmaW5lZCAkUGFyYW17UGFyZW50SURzfQogICAgICAgICYmIHJlZiAkUGFyYW17UGFyZW50SURzfSBlcSAnQVJSQVknCiAgICAgICAgJiYgQHsgJFBhcmFte1BhcmVudElEc30gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBwYXJlbnQgaWRzCiAgICAgICAgZm9yIG15ICRQYXJlbnRJRCAoIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH0gKSB7CiAgICAgICAgICAgICRQYXJlbnRJRCA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJlbnRJRCwgJ0ludGVnZXInICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzdHJpbmcKICAgICAgICBteSAkSW5TdHJpbmcgPSBqb2luICcsICcsIEB7ICRQYXJhbXtQYXJlbnRJRHN9IH07CgogICAgICAgICRFeHQgPSAnIEFORCBwYXJlbnRfaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNhdGVnb3J5IGlkcwogICAgZWxzaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0NhdGVnb3J5SURzfQogICAgICAgICYmIHJlZiAkUGFyYW17Q2F0ZWdvcnlJRHN9IGVxICdBUlJBWScKICAgICAgICAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgaW50ZWdlciBxdW90ZSB0aGUgY2F0ZWdvcnkgaWRzCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlJRCA9ICREQk9iamVjdC0+UXVvdGUoICRDYXRlZ29yeUlELCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIG15ICRJblN0cmluZyA9IGpvaW4gJywgJywgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9OwoKICAgICAgICAkRXh0ID0gJyBBTkQgaWQgSU4gKCcgLiAkSW5TdHJpbmcgLiAnKSc7CiAgICB9CgogICAgIyBPUkRFUiBCWQogICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gKSB7CiAgICAgICAgJEV4dCAuPSAiIE9SREVSIEJZIG5hbWUiOwoKICAgICAgICAjIHNldCB0aGUgZGVmYXVsdCBzb3J0IG9yZGVyCiAgICAgICAgJFBhcmFte1NvcnRCeX0gfHw9ICd1cCc7CgogICAgICAgICMgU09SVAogICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gZXEgJ3VwJyApIHsKICAgICAgICAgICAgICAgICRFeHQgLj0gIiBBU0MiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte1NvcnRCeX0gZXEgJ2Rvd24nICkgewogICAgICAgICAgICAgICAgJEV4dCAuPSAiIERFU0MiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgU1FMIFNUQVRFTUVOVAogICAgJFNRTCAuPSAkRXh0OwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gNTAwLAogICAgKTsKCiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxATGlzdDsKfQoKPWhlYWQyIENhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QoKQoKZ2V0IGFsbCBzdWJjYXRlZ29yeSBpZHMgb2YgYSBjYXRlZ29yeQoKICAgIG15ICRTdWJDYXRlZ29yeUlEQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgIFBhcmVudElEICAgICA9PiAxLAogICAgICAgIE1vZGUgICAgICAgICA9PiAnUHVibGljJywgIyAoQWdlbnQsIEN1c3RvbWVyLCBQdWJsaWMpCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd0dCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3ViQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgIDMsCiAgICAgICAgNCwKICAgICAgICA1LAogICAgICAgIDYsCiAgICBdOwoKPWN1dAoKc3ViIENhdGVnb3J5U3ViQ2F0ZWdvcnlJRExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1BhcmVudElEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUGFyZW50SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENhdGVnb3JpZXMgPSB7fTsKCiAgICBpZiAoICRQYXJhbXtNb2RlfSAmJiAkUGFyYW17TW9kZX0gZXEgJ0FnZW50JyApIHsKCiAgICAgICAgIyBnZXQgYWdlbnRzIGNhdGVnb3JpZXMKICAgICAgICAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17TW9kZX0gJiYgJFBhcmFte01vZGV9IGVxICdDdXN0b21lcicgKSB7CgogICAgICAgICMgZ2V0IGN1c3RvbWVyIGNhdGVnb3JpZXMKICAgICAgICAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAncm8nLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzCiAgICAgICAgJENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgQFN1YkNhdGVnb3J5SURzOwogICAgbXkgQFRlbXBTdWJDYXRlZ29yeUlEcyA9IGtleXMgJXsgJENhdGVnb3JpZXMtPnsgJFBhcmFte1BhcmVudElEfSB9IH07CiAgICBTVUJDQVRFR09SWUlEOgogICAgd2hpbGUgKEBUZW1wU3ViQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgIyBnZXQgbmV4dCBzdWJjYXRlZ29yeSBpZAogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEID0gc2hpZnQgQFRlbXBTdWJDYXRlZ29yeUlEczsKCiAgICAgICAgIyBhZGQgdG8gcmVzdWx0CiAgICAgICAgcHVzaCBAU3ViQ2F0ZWdvcnlJRHMsICRTdWJDYXRlZ29yeUlEOwoKICAgICAgICAjIGNoZWNrIGlmIHN1YmNhdGVnb3J5IGhhcyBvd24gc3ViY2F0ZWdvcmllcwogICAgICAgIG5leHQgU1VCQ0FURUdPUllJRCBpZiAhJENhdGVnb3JpZXMtPnskU3ViQ2F0ZWdvcnlJRH07CgogICAgICAgICMgYWRkIG5ldyBzdWJjYXRlZ29yaWVzCiAgICAgICAgcHVzaCBAVGVtcFN1YkNhdGVnb3J5SURzLCBrZXlzICV7ICRDYXRlZ29yaWVzLT57JFN1YkNhdGVnb3J5SUR9IH07CiAgICB9CgogICAgIyBzb3J0IHN1YmNhdGVnb3JpZXMgbnVtZXJpY2FsbHkKICAgIEBTdWJDYXRlZ29yeUlEcyA9IHNvcnQgeyAkYSA8PT4gJGIgfSBAU3ViQ2F0ZWdvcnlJRHM7CgogICAgcmV0dXJuIFxAU3ViQ2F0ZWdvcnlJRHM7Cn0KCj1oZWFkMiBDYXRlZ29yeVRyZWVMaXN0KCkKCmdldCBhbGwgY2F0ZWdvcmllcyBhcyB0cmVlICh3aXRoIHRoZWlyIGxvbmcgbmFtZXMpCgogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VHJlZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsICAjICgwfDEsIG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5VHJlZSA9IHsKICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgMyA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgICAgICA0ID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEInLAogICAgfTsKCj1jdXQKCnN1YiBDYXRlZ29yeVRyZWVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0CiAgICBteSAkVmFsaWQgPSAwOwogICAgaWYgKCAkUGFyYW17VmFsaWR9ICkgewogICAgICAgICRWYWxpZCA9ICRQYXJhbXtWYWxpZH07CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e0dldENhdGVnb3J5VHJlZX0tPnskVmFsaWR9ICkgewoKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfTsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIHBhcmVudF9pZCwgbmFtZQogICAgICAgIEZST00gZmFxX2NhdGVnb3J5JzsKCiAgICAjIGFkZCB3aGVyZSBjbGF1c2UgZm9yIHZhbGlkIGNhdGVnb3JpZXMKICAgIGlmICgkVmFsaWQpIHsKICAgICAgICAkU1FMIC49ICcgV0hFUkUgdmFsaWRfaWQgSU4gKCcKICAgICAgICAgICAgLiBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpCiAgICAgICAgICAgIC4gJyknOwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcHJlcGFyZSBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAkU1FMLAogICAgKTsKCiAgICAjIGZldGNoIHJlc3VsdAogICAgbXkgJUNhdGVnb3J5TWFwOwogICAgbXkgJUNhdGVnb3J5TmFtZUxvb2t1cDsKICAgIG15ICVQYXJlbnRJRExvb2t1cDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDYXRlZ29yeU1hcHsgJFJvd1sxXSB9LT57ICRSb3dbMF0gfSA9ICRSb3dbMl07CiAgICAgICAgJENhdGVnb3J5TmFtZUxvb2t1cHsgJFJvd1swXSB9ICAgICAgID0gJFJvd1syXTsKICAgICAgICAkUGFyZW50SURMb29rdXB7ICRSb3dbMF0gfSAgICAgICAgICAgPSAkUm93WzFdOwogICAgfQoKICAgICMgdG8gc3RvcmUgdGhlIGNhdGVnb3J5IHRyZWUKICAgIG15ICVDYXRlZ29yeVRyZWU7CgogICAgIyBjaGVjayBhbGwgcGFyZW50IElEcwogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICVDYXRlZ29yeU1hcCApIHsKCiAgICAgICAgIyBnZXQgc3ViY2F0ZWdvcmllcyBhbmQgbmFtZXMgZm9yIHRoaXMgcGFyZW50IGlkCiAgICAgICAgd2hpbGUgKCBteSAoICRDYXRlZ29yeUlELCAkQ2F0ZWdvcnlOYW1lICkgPSBlYWNoICV7ICRDYXRlZ29yeU1hcHskUGFyZW50SUR9IH0gKSB7CgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgcGFyZW50cyBuYW1lCiAgICAgICAgICAgIG15ICROZXdQYXJlbnRJRCA9ICRQYXJlbnRJRDsKICAgICAgICAgICAgd2hpbGUgKCROZXdQYXJlbnRJRCkgewoKICAgICAgICAgICAgICAgICMgcHJlLWFwcGVuZCBwYXJlbnRzIGNhdGVnb3J5IG5hbWUKICAgICAgICAgICAgICAgIGlmICggJENhdGVnb3J5TmFtZUxvb2t1cHskTmV3UGFyZW50SUR9ICkgewogICAgICAgICAgICAgICAgICAgICRDYXRlZ29yeU5hbWUgPSAkQ2F0ZWdvcnlOYW1lTG9va3VweyROZXdQYXJlbnRJRH0gLiAnOjonIC4gJENhdGVnb3J5TmFtZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCB1cCBvbmUgcGFyZW50IGxldmVsCiAgICAgICAgICAgICAgICAkTmV3UGFyZW50SUQgPSAkUGFyZW50SURMb29rdXB7JE5ld1BhcmVudElEfSB8fCAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCBjYXRlZ29yeSB0byB0cmVlCiAgICAgICAgICAgICRDYXRlZ29yeVRyZWV7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5TmFtZTsKICAgICAgICB9CiAgICB9CgogICAgIyBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntHZXRDYXRlZ29yeVRyZWV9LT57JFZhbGlkfSA9IFwlQ2F0ZWdvcnlUcmVlOwoKICAgIHJldHVybiBcJUNhdGVnb3J5VHJlZTsKfQoKPWhlYWQyIENhdGVnb3J5VXBkYXRlKCkKCnVwZGF0ZSBhIGNhdGVnb3J5CgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVVwZGF0ZSgKICAgICAgICBDYXRlZ29yeUlEID0+IDIsCiAgICAgICAgUGFyZW50SUQgICA9PiAxLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NvbWUgQ2F0ZWdvcnknLAogICAgICAgIENvbW1lbnQgICAgPT4gJ3NvbWUgY29tbWVudCcsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhdGVnb3J5IGNvdWxkIG5vdCBiZSB1cGRhdGVkCgo9Y3V0CgpzdWIgQ2F0ZWdvcnlVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgUGFyZW50SUQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgdGhhdCBQYXJlbnRJRCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nIGJ1dCBudW1iZXIgMCBpcyBhbGxvd2VkCiAgICBpZiAoICRQYXJhbXtQYXJlbnRJRH0gZXEgJycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJlbnRJRCBjYW5ub3QgYmUgZW1wdHkhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgZmFxX2NhdGVnb3J5CiAgICAgICAgICAgIFNFVCBwYXJlbnRfaWQgPSA/LCBuYW1lID0gPywgY29tbWVudHMgPSA/LCB2YWxpZF9pZCA9ID8sIGNoYW5nZWQgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZWRfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17UGFyZW50SUR9LCBcJFBhcmFte05hbWV9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LCAgXCRQYXJhbXtWYWxpZElEfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBsb2cgbm90aWNlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICBNZXNzYWdlICA9PiAiRkFRQ2F0ZWdvcnk6ICckUGFyYW17TmFtZX0nICIKICAgICAgICAgICAgLiAiSUQ6ICckUGFyYW17Q2F0ZWdvcnlJRH0nIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5ICgkUGFyYW17VXNlcklEfSkhIiwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGNhY2hlLCBhcyBGQVFHZXQoKSB3aWxsIGJlIGFsc28gYWZmZWN0ZWQuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEFnZW50Q2F0ZWdvcnlTZWFyY2goKQoKZ2V0IHRoZSBjYXRlZ29yeSBzZWFyY2ggYXMgYXJyYXkgcmVmCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9ICRGQVFPYmplY3QtPkFnZW50Q2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgICAgICAgICA9PiAzLCAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICAgICBHZXRTdWJDYXRlZ29yaWVzID0+IDEsICAjIChvcHRpb25hbCwgZGVmYXVsdCAwKQogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgJzQnLAogICAgICAgICc4JywKICAgIF07Cgo9Y3V0CgpzdWIgQWdlbnRDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBwYXJlbnQgaWQKICAgIG15ICRQYXJlbnRJRCA9ICRQYXJhbXtQYXJlbnRJRH0gPyAkUGFyYW17UGFyZW50SUR9IDogMDsKCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiBbXSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENhdGVnb3JpZXMpOwoKICAgIG15ICVDYXRlZ29yeSAgICA9ICV7ICRDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwogICAgbXkgQENhdGVnb3J5SURzID0gc29ydCB7ICRDYXRlZ29yeXskYX0gY21wICRDYXRlZ29yeXskYn0gfSAoIGtleXMgJUNhdGVnb3J5ICk7CgogICAgcmV0dXJuIFxAQ2F0ZWdvcnlJRHMgaWYgISRQYXJhbXtHZXRTdWJDYXRlZ29yaWVzfTsKCiAgICAjIENoZWNrIGlmIHNvbWUgSURzIGhhdmUgYSBzdWJjYXRlZ29yeSBhbmQgYWRkIHRoaXMgYWxzbyB0byB0aGUgbGlzdC4KICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICMgZ2V0IGFsbCBzdWJjYXRlZ29yeSBpZHMgZm9yIHRoaXMgY2F0ZWdvcnkKICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHMgPSAkU2VsZi0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBzdWIgY2F0ZWdvcmllcyB0byB0aGUgY2F0ZWdvcnkgaWRzLgogICAgICAgIHB1c2ggQENhdGVnb3J5SURzLCBAeyRTdWJDYXRlZ29yeUlEc307CiAgICB9CgogICAgIyBSZW1vdmUgYW55IGR1cGxpY2F0ZSBJRHMgZnJvbSB0aGUgbGVzdAogICAgbXkgJVNlZW47CiAgICBAQ2F0ZWdvcnlJRHMgPSBncmVwIHsgISRTZWVueyRffSsrIH0gQENhdGVnb3J5SURzOwoKICAgIHJldHVybiBcQENhdGVnb3J5SURzOwp9Cgo9aGVhZDIgQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgpCgpnZXQgdGhlIGNhdGVnb3J5IHNlYXJjaCBhcyBoYXNoCgogICAgbXkgJENhdGVnb3J5SURBcnJheVJlZiA9IEB7JEZBUU9iamVjdC0+Q3VzdG9tZXJDYXRlZ29yeVNlYXJjaCgKICAgICAgICBDdXN0b21lclVzZXIgID0+ICd0dCcsCiAgICAgICAgUGFyZW50SUQgICAgICA9PiAzLCAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICAgICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLCAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICAgICBNb2RlICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKX07CgpSZXR1cm5zOgoKICAgICRDYXRlZ29yeUlEQXJyYXlSZWYgPSBbCiAgICAgICAgJzQnLAogICAgICAgICc4JywKICAgIF07Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEN1c3RvbWVyVXNlciBNb2RlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyZW50IGlkCiAgICBteSAkUGFyZW50SUQgPSAkUGFyYW17UGFyZW50SUR9ID8gJFBhcmFte1BhcmVudElEfSA6IDA7CgogICAgbXkgJENhdGVnb3JpZXMgPSAkU2VsZi0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3JvJywKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVDYXRlZ29yeSAgICA9ICV7ICRDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwogICAgbXkgQENhdGVnb3J5SURzID0gc29ydCB7ICRDYXRlZ29yeXskYX0gY21wICRDYXRlZ29yeXskYn0gfSAoIGtleXMgJUNhdGVnb3J5ICk7CgogICAgbXkgQEFsbG93ZWRDYXRlZ29yeUlEczsKICAgIG15ICVBcnRpY2xlczsKCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnQ3VzdG9tZXJDYXRlZ29yeVNlYXJjaDo6QXJ0aWNsZXMnOwogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX0gKSB7CiAgICAgICAgJUFydGljbGVzID0gJXsgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9IH07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgICAgICBteSAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpOwoKICAgICAgICBteSAkU1FMID0gIgogICAgICAgICAgICBTRUxFQ1QgZmFxX2l0ZW0uaWQsIGZhcV9pdGVtLmNhdGVnb3J5X2lkCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0sIGZhcV9zdGF0ZV90eXBlLCBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgZmFxX3N0YXRlLmlkID0gZmFxX2l0ZW0uc3RhdGVfaWQKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGUudHlwZV9pZCA9IGZhcV9zdGF0ZV90eXBlLmlkCiAgICAgICAgICAgICAgICBBTkQgZmFxX3N0YXRlX3R5cGUubmFtZSAhPSAnaW50ZXJuYWwnCiAgICAgICAgICAgICAgICBBTkQgZmFxX2l0ZW0udmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykKICAgICAgICAgICAgICAgIEFORCBmYXFfaXRlbS5hcHByb3ZlZCA9IDEiOwoKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAkU1FMLAogICAgICAgICk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRBcnRpY2xlc3sgJFJvd1sxXSB9Kys7CiAgICAgICAgfQoKICAgICAgICAjIGNhY2hlCiAgICAgICAgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9ID0gXCVBcnRpY2xlczsKICAgIH0KCiAgICByZXR1cm4gXEBDYXRlZ29yeUlEcyBpZiAhJFBhcmFte0dldFN1YkNhdGVnb3JpZXN9OwoKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQENhdGVnb3J5SURzKSB7CgogICAgICAgICMgZ2V0IGFsbCBzdWJjYXRlZ29yeSBpZHMgZm9yIHRoaXMgY2F0ZWdvcnkKICAgICAgICBteSAkU3ViQ2F0ZWdvcnlJRHMgPSAkU2VsZi0+Q2F0ZWdvcnlTdWJDYXRlZ29yeUlETGlzdCgKICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBNb2RlICAgICAgICAgPT4gJFBhcmFte01vZGV9LAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFBhcmFte0N1c3RvbWVyVXNlcn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGlzIGNhdGVnb3J5IGlkCiAgICAgICAgbXkgQElEcyA9ICggJENhdGVnb3J5SUQsIEB7JFN1YkNhdGVnb3J5SURzfSApOwoKICAgICAgICAjIGNoZWNrIGlmIGNhdGVnb3J5IGNvbnRhaW5zIGFydGljbGVzIHdpdGggc3RhdGUgZXh0ZXJuYWwgb3IgcHVibGljCiAgICAgICAgSUQ6CiAgICAgICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICAgICBuZXh0IElEIGlmICEkQXJ0aWNsZXN7JElEfTsKICAgICAgICAgICAgcHVzaCBAQWxsb3dlZENhdGVnb3J5SURzLCAkSUQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcQEFsbG93ZWRDYXRlZ29yeUlEczsKfQoKPWhlYWQyIFB1YmxpY0NhdGVnb3J5U2VhcmNoKCkKCmdldCB0aGUgY2F0ZWdvcnkgc2VhcmNoIGFzIGhhc2gKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+UHVibGljQ2F0ZWdvcnlTZWFyY2goCiAgICAgICAgUGFyZW50SUQgICAgICA9PiAzLCAgICMgKG9wdGlvbmFsLCBkZWZhdWx0IDApCiAgICAgICAgTW9kZSAgICAgICAgICA9PiAnUHVibGljJywKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ2F0ZWdvcnlJREFycmF5UmVmID0gWwogICAgICAgICc0JywKICAgICAgICAnOCcsCiAgICBdOwoKPWN1dAoKc3ViIFB1YmxpY0NhdGVnb3J5U2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTW9kZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQYXJlbnRJRH0gKSB7CiAgICAgICAgJFBhcmFte1BhcmVudElEfSA9IDA7CiAgICB9CgogICAgbXkgJENhdGVnb3J5TGlzdENhdGVnb3JpZXMgPSAkU2VsZi0+Q2F0ZWdvcnlMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIGlmICEkQ2F0ZWdvcnlMaXN0Q2F0ZWdvcmllcy0+eyAkUGFyYW17UGFyZW50SUR9IH07CgogICAgbXkgJUNhdGVnb3J5ICAgID0gJXsgJENhdGVnb3J5TGlzdENhdGVnb3JpZXMtPnsgJFBhcmFte1BhcmVudElEfSB9IH07CiAgICBteSBAQ2F0ZWdvcnlJRHMgPSBzb3J0IHsgJENhdGVnb3J5eyRhfSBjbXAgJENhdGVnb3J5eyRifSB9ICgga2V5cyAlQ2F0ZWdvcnkgKTsKICAgIG15IEBBbGxvd2VkQ2F0ZWdvcnlJRHM7CgogICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgIG15ICRWYWxpZElEc1N0cmluZyA9IGpvaW4gJywgJywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkSURzR2V0KCk7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgZm9yIG15ICRDYXRlZ29yeUlEIChAQ2F0ZWdvcnlJRHMpIHsKCiAgICAgICAgIyBnZXQgYWxsIHN1YmNhdGVnb3J5IGlkcyBmb3IgdGhpcyBjYXRlZ29yeQogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEcyA9ICRTZWxmLT5DYXRlZ29yeVN1YkNhdGVnb3J5SURMaXN0KAogICAgICAgICAgICBQYXJlbnRJRCAgICAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIE1vZGUgICAgICAgICA9PiAkUGFyYW17TW9kZX0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17Q3VzdG9tZXJVc2VyfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoaXMgY2F0ZWdvcnkgaWQKICAgICAgICBteSBASURzID0gKCAkQ2F0ZWdvcnlJRCwgQHskU3ViQ2F0ZWdvcnlJRHN9ICk7CgogICAgICAgICMgY2hlY2sgaWYgY2F0ZWdvcnkgY29udGFpbnMgYXJ0aWNsZXMgd2l0aCBzdGF0ZSBwdWJsaWMKICAgICAgICBteSAkRm91bmRBcnRpY2xlID0gMDsKCiAgICAgICAgbXkgJFNRTCA9ICIKICAgICAgICAgICAgU0VMRUNUIGZhcV9pdGVtLmlkCiAgICAgICAgICAgIEZST00gZmFxX2l0ZW0sIGZhcV9zdGF0ZV90eXBlLCBmYXFfc3RhdGUKICAgICAgICAgICAgV0hFUkUgZmFxX2l0ZW0uY2F0ZWdvcnlfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgZmFxX2l0ZW0udmFsaWRfaWQgSU4gKCRWYWxpZElEc1N0cmluZykKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGUuaWQgPSBmYXFfaXRlbS5zdGF0ZV9pZAogICAgICAgICAgICAgICAgQU5EIGZhcV9zdGF0ZS50eXBlX2lkID0gZmFxX3N0YXRlX3R5cGUuaWQKICAgICAgICAgICAgICAgIEFORCBmYXFfc3RhdGVfdHlwZS5uYW1lID0gJ3B1YmxpYycKICAgICAgICAgICAgICAgIEFORCBmYXFfaXRlbS5hcHByb3ZlZCA9IDEiOwoKICAgICAgICBJRDoKICAgICAgICBmb3IgbXkgJElEIChASURzKSB7CgogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgICAgICBCaW5kICA9PiBbIFwkSUQgXSwKICAgICAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJEZvdW5kQXJ0aWNsZSA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBJRCBpZiAkRm91bmRBcnRpY2xlOwogICAgICAgIH0KCiAgICAgICAgIyBhbiBhcnRpY2xlIHdhcyBmb3VuZAogICAgICAgIGlmICgkRm91bmRBcnRpY2xlKSB7CiAgICAgICAgICAgIHB1c2ggQEFsbG93ZWRDYXRlZ29yeUlEcywgJENhdGVnb3J5SUQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcQEFsbG93ZWRDYXRlZ29yeUlEczsKCn0KCj1oZWFkMiBHZXRVc2VyQ2F0ZWdvcmllcygpCgpnZXQgdXNlciBjYXRlZ29yeS1ncm91cHMKCiAgICBteSAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4ge30sCiAgICAgICAgMCA9PiB7CiAgICAgICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgfSwKICAgICAgICAyID0+IHsKICAgICAgICAgICAgMyA9PiAnU3ViIENhdGVnb3J5IEEnLAogICAgICAgICAgICA0ID0+ICdTdWIgQ2F0ZWdvcnkgQicsCiAgICAgICAgfSwKICAgICAgICAzID0+IHt9LAogICAgICAgIDQgPT4ge30sCiAgICB9OwoKPWN1dAoKc3ViIEdldFVzZXJDYXRlZ29yaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ2F0ZWdvcmllcyA9ICRTZWxmLT5DYXRlZ29yeUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkQ2F0ZWdvcnlHcm91cHMgPSAkU2VsZi0+Q2F0ZWdvcnlHcm91cEdldEFsbCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVVc2VyR3JvdXBzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgKTsKCiAgICBteSAkVXNlckNhdGVnb3JpZXMgPSAkU2VsZi0+X1VzZXJDYXRlZ29yaWVzKAogICAgICAgIENhdGVnb3JpZXMgICAgID0+ICRDYXRlZ29yaWVzLAogICAgICAgIENhdGVnb3J5R3JvdXBzID0+ICRDYXRlZ29yeUdyb3VwcywKICAgICAgICBVc2VyR3JvdXBzICAgICA9PiBcJVVzZXJHcm91cHMsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkVXNlckNhdGVnb3JpZXM7Cn0KCj1oZWFkMiBHZXRVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lcygpCgpnZXQgdXNlciBjYXRlZ29yeS1ncm91cHMgKHNob3cgY2F0ZWdvcnkgbG9uZyBuYW1lcykKCiAgICBteSAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0VXNlckNhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkVXNlckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gewogICAgICAgIDEgPT4gJ01pc2MnLAogICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICAzID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgICAgIDQgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICB9OwoKPWN1dAoKc3ViIEdldFVzZXJDYXRlZ29yaWVzTG9uZ05hbWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJFVzZXJDYXRlZ29yaWVzID0gJFNlbGYtPkdldFVzZXJDYXRlZ29yaWVzKAogICAgICAgIFR5cGUgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHVzZXIgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKICAgIG15ICVVc2VyQ2F0ZWdvcmllc0xvbmdOYW1lczsKCiAgICAjIGdldCB0aGUgbG9uZyBuYW1lcyBvZiB0aGUgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIFBBUkVOVElEOgogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRVc2VyQ2F0ZWdvcmllc30gKSB7CgogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISRVc2VyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH07CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiByZWYgJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSBuZSAnSEFTSCc7CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJXsgJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXsgJFVzZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9ICkgewogICAgICAgICAgICAkVXNlckNhdGVnb3JpZXNMb25nTmFtZXN7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5VHJlZS0+eyRDYXRlZ29yeUlEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlVXNlckNhdGVnb3JpZXNMb25nTmFtZXM7Cn0KCj1oZWFkMiBHZXRDdXN0b21lckNhdGVnb3JpZXMoKQoKZ2V0IGN1c3RvbWVyIHVzZXIgY2F0ZWdvcmllcwoKICAgIG15ICRDdXN0b21lclVzZXJDYXRlZ29yeUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdoYW5zJywKICAgICAgICBUeXBlICAgICAgICAgPT4gJ3J3JywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRDdXN0b21lclVzZXJDYXRlZ29yeUhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiB7fSwKICAgICAgICAwID0+IHsKICAgICAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgICAgIDIgPT4gJ015IENhdGVnb3J5JywKICAgICAgICB9LAogICAgICAgIDIgPT4gewogICAgICAgICAgICAzID0+ICdTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgICAgIDQgPT4gJ1N1YiBDYXRlZ29yeSBCJywKICAgICAgICB9LAogICAgICAgIDMgPT4ge30sCiAgICAgICAgNCA9PiB7fSwKICAgIH07Cgo9Y3V0CgpzdWIgR2V0Q3VzdG9tZXJDYXRlZ29yaWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ3VzdG9tZXJVc2VyIFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0dldEN1c3RvbWVyQ2F0ZWdvcmllczo6Q3VzdG9tZXJVc2VyOjonIC4gJFBhcmFte0N1c3RvbWVyVXNlcn07CiAgICBpZiAoIGRlZmluZWQgJFNlbGYtPntDYWNoZX0tPnskQ2FjaGVLZXl9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+eyRDYWNoZUtleX07CiAgICB9CgogICAgIyBnZXQgYWxsIHZhbGlkIGNhdGVnb3JpZXMKICAgIG15ICRDYXRlZ29yaWVzID0gJFNlbGYtPkNhdGVnb3J5TGlzdCgKICAgICAgICBWYWxpZCAgPT4gMSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRDYXRlZ29yeUdyb3VwcyA9ICRTZWxmLT5DYXRlZ29yeUdyb3VwR2V0QWxsKAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVVzZXJHcm91cHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICApOwoKICAgIG15ICRDdXN0b21lckNhdGVnb3JpZXMgPSAkU2VsZi0+X1VzZXJDYXRlZ29yaWVzKAogICAgICAgIENhdGVnb3JpZXMgICAgID0+ICRDYXRlZ29yaWVzLAogICAgICAgIENhdGVnb3J5R3JvdXBzID0+ICRDYXRlZ29yeUdyb3VwcywKICAgICAgICBVc2VyR3JvdXBzICAgICA9PiBcJVVzZXJHcm91cHMsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57JENhY2hlS2V5fSA9ICRDdXN0b21lckNhdGVnb3JpZXM7CgogICAgcmV0dXJuICRDdXN0b21lckNhdGVnb3JpZXM7Cn0KCj1oZWFkMiBHZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMoKQoKZ2V0IGN1c3RvbWVyIGNhdGVnb3J5LWdyb3VwcyAoc2hvdyBjYXRlZ29yeSBsb25nIG5hbWVzKQoKICAgIG15ICRDdXN0b21lckNhdGVnb3J5R3JvdXBIYXNoUmVmID0gJEZBUU9iamVjdC0+R2V0Q3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnaGFucycsCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQ3VzdG9tZXJDYXRlZ29yeUdyb3VwSGFzaFJlZiA9IHsKICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAyID0+ICdNeSBDYXRlZ29yeScsCiAgICAgICAgMyA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgICAgICA0ID0+ICdNeSBDYXRlZ29yeTo6U3ViIENhdGVnb3J5IEEnLAogICAgfTsKCj1jdXQKCnN1YiBHZXRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDdXN0b21lclVzZXIgVHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjYXRlZ29yaWVzIHdoZXJlIHVzZXIgaGFzIHJpZ2h0cwogICAgbXkgJEN1c3RvbWVyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRDdXN0b21lckNhdGVnb3JpZXMoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgIFR5cGUgICAgICAgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGV4dHJhY3QgY2F0ZWdvcnkgaWRzCiAgICBteSAlQWxsQ2F0ZWdvcnlJRHM7CiAgICBmb3IgbXkgJFBhcmVudElEICggc29ydCBrZXlzICV7JEN1c3RvbWVyQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRBbGxDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgY3VzdG9tZXIgY2F0ZWdvcnkgaWRzCiAgICBteSBAQ3VzdG9tZXJDYXRlZ29yeUlEczsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIDAsIGtleXMgJUFsbENhdGVnb3J5SURzICkgewogICAgICAgIHB1c2ggQEN1c3RvbWVyQ2F0ZWdvcnlJRHMsIEB7CiAgICAgICAgICAgICRTZWxmLT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgICAgICAgICAgUGFyZW50SUQgICAgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICAgICAgTW9kZSAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICkKICAgICAgICB9OwogICAgfQoKICAgICMgYnVpbGQgY3VzdG9tZXIgY2F0ZWdvcnkgaGFzaAogICAgJEN1c3RvbWVyQ2F0ZWdvcmllcyA9IHt9OwogICAgZm9yIG15ICRDYXRlZ29yeUlEIChAQ3VzdG9tZXJDYXRlZ29yeUlEcykgewogICAgICAgIG15ICVDYXRlZ29yeSA9ICRTZWxmLT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgICRDdXN0b21lckNhdGVnb3JpZXMtPnsgJENhdGVnb3J5e1BhcmVudElEfSB9LT57ICRDYXRlZ29yeXtDYXRlZ29yeUlEfSB9ID0gJENhdGVnb3J5e05hbWV9OwogICAgfQoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgdXNlciBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJUN1c3RvbWVyQ2F0ZWdvcmllc0xvbmdOYW1lczsKCiAgICAjIGdldCB0aGUgbG9uZyBuYW1lcyBvZiB0aGUgY2F0ZWdvcmllcyB3aGVyZSB1c2VyIGhhcyByaWdodHMKICAgIFBBUkVOVElEOgogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRDdXN0b21lckNhdGVnb3JpZXN9ICkgewoKICAgICAgICBuZXh0IFBBUkVOVElEIGlmICEkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmIHJlZiAkQ3VzdG9tZXJDYXRlZ29yaWVzLT57JFBhcmVudElEfSBuZSAnSEFTSCc7CiAgICAgICAgbmV4dCBQQVJFTlRJRCBpZiAhJXsgJEN1c3RvbWVyQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gfTsKCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRDdXN0b21lckNhdGVnb3JpZXNMb25nTmFtZXN7JENhdGVnb3J5SUR9ID0gJENhdGVnb3J5VHJlZS0+eyRDYXRlZ29yeUlEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ3VzdG9tZXJDYXRlZ29yaWVzTG9uZ05hbWVzOwp9Cgo9aGVhZDIgR2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcygpCgpnZXQgcHVibGljIGNhdGVnb3J5LWdyb3VwcyAoc2hvdyBjYXRlZ29yeSBsb25nIG5hbWVzKQoKICAgIG15ICRQdWJsaWNDYXRlZ29yeUdyb3VwSGFzaFJlZiA9ICRGQVFPYmplY3QtPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkUHVibGljQ2F0ZWdvcnlHcm91cEhhc2hSZWYgPSB7CiAgICAgICAgMSA9PiAnTWlzYycsCiAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIDMgPT4gJ015IENhdGVnb3J5OjpTdWIgQ2F0ZWdvcnkgQScsCiAgICAgICAgNCA9PiAnTXkgQ2F0ZWdvcnk6OlN1YiBDYXRlZ29yeSBBJywKICAgIH07Cgo9Y3V0CgpzdWIgR2V0UHVibGljQ2F0ZWdvcmllc0xvbmdOYW1lcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYWxsIGNhdGVnb3JpZXMKICAgIG15ICRQdWJsaWNDYXRlZ29yaWVzID0gJFNlbGYtPkNhdGVnb3J5TGlzdCggVXNlcklEID0+ICRQYXJhbXtVc2VySUR9ICk7CgogICAgIyBleHRyYWN0IGNhdGVnb3J5IGlkcwogICAgbXkgJUFsbENhdGVnb3J5SURzOwogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRQdWJsaWNDYXRlZ29yaWVzfSApIHsKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXsgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRBbGxDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgcHVibGljIGNhdGVnb3J5IGlkcwogICAgbXkgQFB1YmxpY0NhdGVnb3J5SURzOwogICAgZm9yIG15ICRDYXRlZ29yeUlEICggMCwga2V5cyAlQWxsQ2F0ZWdvcnlJRHMgKSB7CiAgICAgICAgcHVzaCBAUHVibGljQ2F0ZWdvcnlJRHMsIEB7CiAgICAgICAgICAgICRTZWxmLT5QdWJsaWNDYXRlZ29yeVNlYXJjaCgKICAgICAgICAgICAgICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgTW9kZSAgICAgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKQogICAgICAgIH07CiAgICB9CgogICAgIyBidWlsZCBwdWJsaWMgY2F0ZWdvcnkgaGFzaAogICAgJFB1YmxpY0NhdGVnb3JpZXMgPSB7fTsKICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoQFB1YmxpY0NhdGVnb3J5SURzKSB7CiAgICAgICAgbXkgJUNhdGVnb3J5ID0gJFNlbGYtPkNhdGVnb3J5R2V0KAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFB1YmxpY0NhdGVnb3JpZXMtPnsgJENhdGVnb3J5e1BhcmVudElEfSB9LT57ICRDYXRlZ29yeXtDYXRlZ29yeUlEfSB9ID0gJENhdGVnb3J5e05hbWV9OwogICAgfQoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJENhdGVnb3J5VHJlZSA9ICRTZWxmLT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgdXNlciBjYXRlZ29yaWVzIHdpdGggdGhlaXIgbG9uZyBuYW1lcwogICAgbXkgJVB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXM7CgogICAgIyBnZXQgdGhlIGxvbmcgbmFtZXMgb2YgdGhlIGNhdGVnb3JpZXMgd2hlcmUgdXNlciBoYXMgcmlnaHRzCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IGtleXMgJXskUHVibGljQ2F0ZWdvcmllc30gKSB7CgogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISRQdWJsaWNDYXRlZ29yaWVzLT57JFBhcmVudElEfTsKICAgICAgICBuZXh0IFBBUkVOVElEIGlmIHJlZiAkUHVibGljQ2F0ZWdvcmllcy0+eyRQYXJlbnRJRH0gbmUgJ0hBU0gnOwogICAgICAgIG5leHQgUEFSRU5USUQgaWYgISV7ICRQdWJsaWNDYXRlZ29yaWVzLT57JFBhcmVudElEfSB9OwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXsgJFB1YmxpY0NhdGVnb3JpZXMtPnskUGFyZW50SUR9IH0gKSB7CiAgICAgICAgICAgICRQdWJsaWNDYXRlZ29yaWVzTG9uZ05hbWVzeyRDYXRlZ29yeUlEfSA9ICRDYXRlZ29yeVRyZWUtPnskQ2F0ZWdvcnlJRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJVB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXM7Cn0KCj1oZWFkMiBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKQoKZ2V0IHVzZXIgcGVybWlzc2lvbiBmb3IgYSBjYXRlZ29yeQoKICAgIG15ICRQZXJtaXNzaW9uU3RyaW5nID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgIENhdGVnb3J5SUQgPT4gJzEyMycsCiAgICAgICAgVHlwZSAgICAgICA9PiAncncnLCAgICAgIyAob3B0aW9uYWwpIHJ3IG9yIHJvLCBkZWZhdWx0IHJvCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFBlcm1pc3Npb25TdHJpbmcgPSAncncnOyAgICAgICAgICAgICAgICMgb3IgJ3JvJyBvciAnJwoKPWN1dAoKc3ViIENoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1R5cGV9ICkgewogICAgICAgICRQYXJhbXtUeXBlfSA9ICdybyc7CiAgICB9CgogICAgJFBhcmFte1R5cGV9ID0gbGMgJFBhcmFte1R5cGV9OwoKICAgIGlmICggJFBhcmFte1R5cGV9IG5lICdydycgJiYgJFBhcmFte1R5cGV9IG5lICdybycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUeXBlIGlzIGludmFsaWQhIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRVc2VyQ2F0ZWdvcmllcyA9ICRTZWxmLT5HZXRVc2VyQ2F0ZWdvcmllcygKICAgICAgICBUeXBlICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRVc2VyQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgbXkgJENhdGVnb3JpZXMgPSAkVXNlckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlJRCAoIHNvcnQga2V5cyAleyRDYXRlZ29yaWVzfSApIHsKICAgICAgICAgICAgaWYgKCAkQ2F0ZWdvcnlJRCA9PSAkUGFyYW17Q2F0ZWdvcnlJRH0gKSB7CgogICAgICAgICAgICAgICAgcmV0dXJuICRQYXJhbXtUeXBlfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCj1oZWFkMiBDaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKCkKCmdldCBjdXN0b21lciB1c2VyIHBlcm1pc3Npb24gZm9yIGEgY2F0ZWdvcnkKCiAgICBteSAkUGVybWlzc2lvblN0cmluZyAkRkFRT2JqZWN0LT5DaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAnbW0nLAogICAgICAgIENhdGVnb3J5SUQgICA9PiAnMTIzJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRQZXJtaXNzaW9uU3RyaW5nID0gJ3J3JzsgICAgICAgICAgICAgICAjIG9yICdybycgb3IgJycKCj1jdXQKCnN1YiBDaGVja0NhdGVnb3J5Q3VzdG9tZXJQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ3VzdG9tZXJVc2VyIENhdGVnb3J5SUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRQZXJtaXNzaW9uIChxdyhydyBybykpIHsKICAgICAgICBteSAkQ3VzdG9tZXJDYXRlZ29yaWVzID0gJFNlbGYtPkdldEN1c3RvbWVyQ2F0ZWdvcmllcygKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ3JvJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRQYXJlbnRJRCAoIHNvcnQga2V5cyAleyRDdXN0b21lckNhdGVnb3JpZXN9ICkgewogICAgICAgICAgICBteSAkQ2F0ZWdvcmllcyA9ICRDdXN0b21lckNhdGVnb3JpZXMtPnskUGFyZW50SUR9OwogICAgICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBzb3J0IGtleXMgJXskQ2F0ZWdvcmllc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRDYXRlZ29yeUlEID09ICRQYXJhbXtDYXRlZ29yeUlEfSApIHsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRQZXJtaXNzaW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAnJzsKfQoKPWhlYWQyIFNldENhdGVnb3J5R3JvdXAoKQoKc2V0IGdyb3VwcyB0byBhIGNhdGVnb3J5CgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgIENhdGVnb3J5SUQgPT4gMywKICAgICAgICBHcm91cElEcyAgID0+IFsgMiw0LDEsNSw3NyBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGdyb3VwcyBjb3VsZCBub3QgYmUgc2V0IHRvIGEgY2F0ZWdvcnkKCj1jdXQKCnN1YiBTZXRDYXRlZ29yeUdyb3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2F0ZWdvcnlJRCBHcm91cElEcyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGRlbGV0ZSBvbGQgZ3JvdXBzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gZmFxX2NhdGVnb3J5X2dyb3VwCiAgICAgICAgICAgIFdIRVJFIGNhdGVnb3J5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2F0ZWdvcnlJRH0gXSwKICAgICk7CgogICAgIyBpbnNlcnQgZ3JvdXBzCiAgICAkUGFyYW17Q2F0ZWdvcnlJRH0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17Q2F0ZWdvcnlJRH0sICdJbnRlZ2VyJyApOwogICAgZm9yIG15ICRHcm91cElEICggQHsgJFBhcmFte0dyb3VwSURzfSB9ICkgewoKICAgICAgICAjIGRiIHF1b3RlCiAgICAgICAgJEdyb3VwSUQgPSAkREJPYmplY3QtPlF1b3RlKCAkR3JvdXBJRCwgJ0ludGVnZXInICk7CgogICAgICAgIG15ICRTUUwgPSAiCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGZhcV9jYXRlZ29yeV9ncm91cCAoY2F0ZWdvcnlfaWQsIGdyb3VwX2lkLCBjaGFuZ2VkLCBjaGFuZ2VkX2J5LCBjcmVhdGVkLAogICAgICAgICAgICAgICAgY3JlYXRlZF9ieSkKICAgICAgICAgICAgVkFMVUVTICgkUGFyYW17Q2F0ZWdvcnlJRH0sICRHcm91cElELCBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0pIjsKCiAgICAgICAgIyB3cml0ZSBhdHRhY2htZW50IHRvIGRiCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKCBTUUwgPT4gJFNRTCApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDEgUFJJVkFURSBGVU5DVElPTlMKCj1oZWFkMiBfVXNlckNhdGVnb3JpZXMoKQoKcmVkdWNlcyB0aGUgY2F0ZWdvcmllcyAoIGZyb20gQ2F0ZWdvcnlMaXN0KCkgKSB0byBvbmx5IHRoZSBvbmVzIHdoZXJlIHRoZSB1c2VyIGhhcyBwcml2aWxlZ2VzLgoKICAgIG15ICRVc2VyQ2F0ZWdvcmllcyA9ICRGQVFPYmplY3QtPl9Vc2VyQ2F0ZWdvcmllcygKICAgICAgICBDYXRlZ29yaWVzICAgICA9PiAkQ2F0ZWdvcnlIYXNoUmVmLCAgICAgICAgICMgYXMgcmV0dXJuZWQgZm9ybSBDYXRlZ29yeUxpc3QoKQogICAgICAgIENhdGVnb3J5R3JvdXBzID0+ICRDYXRlZ29yeUdyb3VwSGFzaFJlZiwgICAgICMgYXMgcmV0dXJuZWQgZnJvbSBDYXRlZ29yeUdyb3VwR2V0QWxsCiAgICAgICAgVXNlckdyb3VwcyAgICAgPT4gJFVzZXJHcm91cHNIYXNoUmVmLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEyMywKICAgICk7CgpSZXR1cm5zOgoKICAgICRVc2VyQ2F0ZWdvaWVzID0gewogICAgICAgIDAgPT4gewogICAgICAgICAgICAxID0+ICdNaXNjJywKICAgICAgICAgICAgMiA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgIH0sCiAgICAgICAgMiA9PiB7CiAgICAgICAgICAgIDMgPT4gJ1N1YiBDYXRlZ29yeSBBJywKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBfVXNlckNhdGVnb3JpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yaWVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVVc2VyQ2F0ZWdvcmllczsKCiAgICBQQVJFTlRJRDoKICAgIGZvciBteSAkUGFyZW50SUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkUGFyYW17Q2F0ZWdvcmllc30gfSApIHsKCiAgICAgICAgbXkgJVN1YkNhdGVnb3JpZXM7CgogICAgICAgIENBVEVHT1JZSUQ6CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtDYXRlZ29yaWVzfS0+eyRQYXJlbnRJRH0gfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgY2F0ZWdvcnkgZ3JvdXBzCiAgICAgICAgICAgIG5leHQgQ0FURUdPUllJRCBpZiAhZGVmaW5lZCAkUGFyYW17Q2F0ZWdvcnlHcm91cHN9LT57JENhdGVnb3J5SUR9OwoKICAgICAgICAgICAgIyBjaGVjayB1c2VyIGdyb3VwcwogICAgICAgICAgICBHUk9VUElEOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0NhdGVnb3J5R3JvdXBzfS0+eyRDYXRlZ29yeUlEfSB9ICkgewoKICAgICAgICAgICAgICAgIG5leHQgR1JPVVBJRCBpZiAhZGVmaW5lZCAkUGFyYW17VXNlckdyb3Vwc30tPnskR3JvdXBJRH07CgogICAgICAgICAgICAgICAgIyBhZGQgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICRTdWJDYXRlZ29yaWVzeyRDYXRlZ29yeUlEfSA9ICRQYXJhbXtDYXRlZ29yaWVzfS0+eyRQYXJlbnRJRH0tPnskQ2F0ZWdvcnlJRH07CgogICAgICAgICAgICAgICAgIyBhZGQgZW1wdHkgaGFzaCBpZiBjYXRlZ29yeSBoYXMgbm8gc3ViY2F0ZWdvcmllcwogICAgICAgICAgICAgICAgaWYgKCAhJFVzZXJDYXRlZ29yaWVzeyRDYXRlZ29yeUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAkVXNlckNhdGVnb3JpZXN7JENhdGVnb3J5SUR9ID0ge307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGFzdCBHUk9VUElEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkVXNlckNhdGVnb3JpZXN7JFBhcmVudElEfSA9IFwlU3ViQ2F0ZWdvcmllczsKICAgIH0KCiAgICByZXR1cm4gXCVVc2VyQ2F0ZWdvcmllczsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6Okxhbmd1YWdlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVE6Okxhbmd1YWdlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6RkFRCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEgbGFuZ3VhZ2UgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBMYW5ndWFnZUFkZCgpCgphZGQgYSBsYW5ndWFnZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VBZGQoCiAgICAgICAgTmFtZSAgID0+ICdTb21lIExhbmd1YWdlJywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0gMTsgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIGxhbmd1YWdlIGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIExhbmd1YWdlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoTmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfbGFuZ3VhZ2UgKG5hbWUpCiAgICAgICAgICAgIFZBTFVFUyAoPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgTGFuZ3VhZ2VEZWxldGUoKQoKRGVsZXRlIGEgbGFuZ3VhZ2UuCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZURlbGV0ZSgKICAgICAgICBMYW5ndWFnZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnMKCiAgICAkRGVsZXRlU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIGRlbGV0ZWQKCj1jdXQKCnN1YiBMYW5ndWFnZURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXR0cmlidXRlIChxdyhMYW5ndWFnZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBdHRyaWJ1dGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgdGhlIGxhbmd1YWdlCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfbGFuZ3VhZ2UKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtMYW5ndWFnZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIExhbmd1YWdlRHVwbGljYXRlQ2hlY2soKQoKY2hlY2sgYSBsYW5ndWFnZQoKICAgIG15ICRFeGlzdHMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUR1cGxpY2F0ZUNoZWNrKAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NvbWUgTmFtZScsCiAgICAgICAgTGFuZ3VhZ2VJRCA9PiAxLCAgICAgICAgIyBmb3IgdXBkYXRlCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEV4aXN0cyA9IDE7ICAgICAgICAgICAgICAgICMgaWYgbGFuZ3VhZ2UgYWxyZWFkeSBleGlzdHMsIG9yIDAgaWYgZG9lcyBub3QgZXhpc3QKCj1jdXQKCnN1YiBMYW5ndWFnZUR1cGxpY2F0ZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgQEJpbmQgPSAoIFwkUGFyYW17TmFtZX0gKTsKICAgIG15ICRTUUwgID0gJwogICAgICAgIFNFTEVDVCBpZAogICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgV0hFUkUgbmFtZSA9ID8nOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtMYW5ndWFnZUlEfSApIHsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte0xhbmd1YWdlSUR9OwogICAgICAgICRTUUwgLj0gIiBBTkQgaWQgIT0gPyI7CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBwcmVwYXJlIFNRTCBzdGF0ZW1lbnQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICBCaW5kICA9PiBcQEJpbmQsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEV4aXN0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRFeGlzdHMgPSAxOwogICAgfQoKICAgIHJldHVybiAkRXhpc3RzOwp9Cgo9aGVhZDIgTGFuZ3VhZ2VHZXQoKQoKZ2V0IGEgbGFuZ3VhZ2UgZGV0YWlscyBhcyBhIGhhc2gKCiAgICBteSAlTGFuZ3VhZ2UgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUdldCgKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUxhbmd1YWdlID0gKAogICAgICAgIExhbmd1YWdlSUQgPT4gJzEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ2VuJywKICAgICk7Cgo9Y3V0CgpzdWIgTGFuZ3VhZ2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhMYW5ndWFnZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICAgICAgRlJPTSBmYXFfbGFuZ3VhZ2UKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICVEYXRhID0gKAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFJvd1sxXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIExhbmd1YWdlTGlzdCgpCgpnZXQgdGhlIGxhbmd1YWdlIGxpc3QgYXMgYSBoYXNoCgogICAgbXkgJUxhbmd1YWdlcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVMYW5ndWFnZXMgPSAoCiAgICAgICAgMSA9PiAnZW4nLAogICAgICAgIDIgPT4gJ2RlJywKICAgICAgICAzID0+ICdlcycsCiAgICApOwoKPWN1dAoKc3ViIExhbmd1YWdlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBidWlsZCBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZQogICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZScsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJUxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkTGlzdHsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICByZXR1cm4gJUxpc3Q7Cn0KCj1oZWFkMiBMYW5ndWFnZUxvb2t1cCgpCgpUaGlzIG1ldGhvZCBkb2VzIGEgbG9va3VwIGZvciBhIEZBUSBsYW5ndWFnZS4KSWYgYSBsYW5ndWFnZSBpZCBpcyBnaXZlbiwgaXQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbGFuZ3VhZ2UuCklmIHRoZSBuYW1lIG9mIHRoZSBsYW5ndWFnZSBpcyBnaXZlbiwgdGhlIGxhbmd1YWdlIGlkIGlzIHJldHVybmVkLgoKICAgIG15ICRMYW5ndWFnZU5hbWUgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICApOwoKICAgIG15ICRMYW5ndWFnZUlEID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgTmFtZSA9PiAnZW4nLAogICAgKTsKClJldHVybnM6CgogICAgJExhbmd1YWdlTmFtZSA9ICdlbic7CgogICAgJExhbmd1YWdlSUQgPSAxOwoKPWN1dAoKc3ViIExhbmd1YWdlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBpZiBib3RoIHBhcmFtZXRlcnMgYXJlIGdpdmVuCiAgICBpZiAoICRQYXJhbXtMYW5ndWFnZUlEfSAmJiAkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIExhbmd1YWdlSUQgb3IgTmFtZSAtIG5vdCBib3RoIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgaWYgYm90aCBwYXJhbWV0ZXJzIGFyZSBub3QgZ2l2ZW4KICAgIGlmICggISRQYXJhbXtMYW5ndWFnZUlEfSAmJiAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBMYW5ndWFnZUlEIG9yIE5hbWUgLSBub25lIGlzIGdpdmVuIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgaWYgTGFuZ3VhZ2VJRCBpcyBhIG51bWJlcgogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gJiYgJFBhcmFte0xhbmd1YWdlSUR9ICF+IG17IFxBIFxkKyBceiB9eG1zICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTGFuZ3VhZ2VJRCBtdXN0IGJlIGEgbnVtYmVyISAoTGFuZ3VhZ2VJRDogJFBhcmFte0xhbmd1YWdlSUR9KSIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcHJlcGFyZSBTUUwgc3RhdGVtZW50cwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRH0gKSB7CgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIG5hbWUKICAgICAgICAgICAgICAgIEZST00gZmFxX2xhbmd1YWdlCiAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17TmFtZX0gKSB7CgogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgICAgICBGUk9NIGZhcV9sYW5ndWFnZQogICAgICAgICAgICAgICAgV0hFUkUgbmFtZSA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJExvb2t1cDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRMb29rdXAgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkTG9va3VwOwp9Cgo9aGVhZDIgTGFuZ3VhZ2VVcGRhdGUoKQoKdXBkYXRlIGEgbGFuZ3VhZ2UKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkxhbmd1YWdlVXBkYXRlKAogICAgICAgIExhbmd1YWdlSUQgPT4gMSwKICAgICAgICBOYW1lICAgICAgID0+ICdkZScsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgbGFuZ3VhZ2UgY291bGQgbm90IGJlIHVwZGF0ZWQKCj1jdXQKCnN1YiBMYW5ndWFnZVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExhbmd1YWdlSUQgTmFtZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGJ1aWxkIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBmYXFfbGFuZ3VhZ2UKICAgICAgICAgICAgU0VUIG5hbWUgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17TGFuZ3VhZ2VJRH0gXSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGNhY2hlLCBhcyBGQVFHZXQoKSB3aWxsIGJlIGFsc28gYWZmZWN0ZWQuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlJlbGF0ZWRBcnRpY2xlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVE6OlJlbGF0ZWRBcnRpY2xlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6RkFRCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCByZWxhdGVkIGZhcSBhcnRpY2xlIGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QoKQoKR2V0IHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlIGxpc3QgZm9yIHRoZSBnaXZlbiBzdWJqZWN0IGFuZCBib2R5LgoKICAgIG15IEBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCA9ICRGQVFPYmplY3QtPlJlbGF0ZWRBZ2VudEFydGljbGVMaXN0KAogICAgICAgIFN1YmplY3QgICA9PiAnVGl0bGUgRXhhbXBsZScsCiAgICAgICAgQm9keSAgICAgID0+ICdUZXh0IEV4YW1wbGUnLCAgIyBwb3NzaWJsZSB3aXRoIGh0bWwgdGFncyAod2lsbCBiZSByZW1vdmVkIGZvciB0aGUgc2VhcmNoKQogICAgICAgIExhbmd1YWdlcyA9PlsgJ2VuJyBdLCAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBMaW1pdCAgICAgPT4gMTAsICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKUmV0dXJucwoKICAgIG15IEBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnRkFRIFRpdGxlJywKICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lID0+ICdNaXNjJywKICAgICAgICAgICAgQ3JlYXRlZCAgICAgID0+ICcyMDE0LTEwLTEwIDEwOjEwOjAwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdGQVEgVGl0bGUnLAogICAgICAgICAgICBDYXRlZ29yeU5hbWUgPT4gJ01pc2MnLAogICAgICAgICAgICBDcmVhdGVkICAgICAgPT4gJzIwMTQtMTAtMTAgMTA6MTA6MDAnLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5fUmVsYXRlZEFydGljbGVMaXN0KCVQYXJhbSk7Cn0KCj1oZWFkMiBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCgpCgpHZXQgdGhlIHJlbGF0ZWQgZmFxIGFydGljbGUgbGlzdCBmb3IgdGhlIGdpdmVuIHN1YmplY3QgYW5kIGJvZHkuCgogICAgbXkgQFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0gJEZBUU9iamVjdC0+UmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QoCiAgICAgICAgU3ViamVjdCAgID0+ICdUaXRsZSBFeGFtcGxlJywKICAgICAgICBCb2R5ICAgICAgPT4gJ1RleHQgRXhhbXBsZScsICAjIHBvc3NpYmxlIHdpdGggaHRtbCB0YWdzICh3aWxsIGJlIHJlbW92ZWQgZm9yIHRoZSBzZWFyY2gpCiAgICAgICAgTGFuZ3VhZ2VzID0+WyAnZW4nIF0sICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIExpbWl0ICAgICA9PiAxMCwgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zCgogICAgbXkgQFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdGQVEgVGl0bGUnLAogICAgICAgICAgICBDYXRlZ29yeU5hbWUgPT4gJ01pc2MnLAogICAgICAgICAgICBDcmVhdGVkICAgICAgPT4gJzIwMTQtMTAtMTAgMTA6MTA6MDAnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ0ZBUSBUaXRsZScsCiAgICAgICAgICAgIENhdGVnb3J5TmFtZSA9PiAnTWlzYycsCiAgICAgICAgICAgIENyZWF0ZWQgICAgICA9PiAnMjAxNC0xMC0xMCAxMDoxMDowMCcsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPl9SZWxhdGVkQXJ0aWNsZUxpc3QoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cn0KCj1oZWFkMSBQUklWQVRFIEZVTkNUSU9OUwoKPWhlYWQyIF9SZWxhdGVkQXJ0aWNsZUxpc3QoKQoKR2V0IHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlIGxpc3QgZm9yIHRoZSBnaXZlbiBzdWJqZWN0IGFuZCBib2R5LgoKICAgIG15IEBSZWxhdGVkQXJ0aWNsZUxpc3QgPSAkRkFRT2JqZWN0LT5fUmVsYXRlZEFydGljbGVMaXN0KAogICAgICAgIFN1YmplY3QgICAgICA9PiAnVGl0bGUgRXhhbXBsZScsCiAgICAgICAgQm9keSAgICAgICAgID0+ICdUZXh0IEV4YW1wbGUnLCAgIyBwb3NzaWJsZSB3aXRoIGh0bWwgdGFncyAod2lsbCBiZSByZW1vdmVkIGZvciB0aGUgc2VhcmNoKQogICAgICAgIExhbmd1YWdlcyAgICA9PlsgJ2VuJyBdLCAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBMaW1pdCAgICAgICAgPT4gMTAsICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdqb2UnICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKClJldHVybnMKCiAgICBteSBAUmVsYXRlZEFydGljbGVMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdGQVEgVGl0bGUnLAogICAgICAgICAgICBDYXRlZ29yeU5hbWUgPT4gJ01pc2MnLAogICAgICAgICAgICBDcmVhdGVkICAgICAgPT4gJzIwMTQtMTAtMTAgMTA6MTA6MDAnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ0ZBUSBUaXRsZScsCiAgICAgICAgICAgIENhdGVnb3J5TmFtZSA9PiAnTWlzYycsCiAgICAgICAgICAgIENyZWF0ZWQgICAgICA9PiAnMjAxNC0xMC0xMCAxMDoxMDowMCcsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgX1JlbGF0ZWRBcnRpY2xlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSBAQ29udGVudDsKCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKHF3KFN1YmplY3QgQm9keSkpIHsKCiAgICAgICAgIyBHZXQgQVNDSUkgY29udGVudCBmb3JtIHRoZSBnaXZlbiBib2R5LCB0byBoYXZlIG5vIGh0bWwgdGFncyBmb3IgdGhlIGNoZWNrLgogICAgICAgIGlmICggJEZpZWxkIGVxICdCb2R5JyApIHsKICAgICAgICAgICAgJFBhcmFteyRGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFteyRGaWVsZH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBuZXh0IEZJRUxEIGlmICEkUGFyYW17JEZpZWxkfTsKCiAgICAgICAgcHVzaCBAQ29udGVudCwgJFBhcmFteyRGaWVsZH07CiAgICB9CgogICAgcmV0dXJuIGlmICFAQ29udGVudDsKCiAgICAjIFRvIHNhdmUgdGhlIGtleXdvcmRzIGFuZCB0aGUgY291bnRlciBmb3IgdGhlIGRpZmZlcmVudCBrZXl3b3Jkcy4KICAgIG15ICVDb250ZW50S2V5d29yZHMgPSAkU2VsZi0+X0J1aWxkS2V5d29yZENvdW50ZXJGcm9tQ29udGVudCgKICAgICAgICBDb250ZW50ID0+IFxAQ29udGVudAogICAgKTsKCiAgICByZXR1cm4gaWYgISVDb250ZW50S2V5d29yZHM7CgogICAgIyBHZXQgdGhlIGtleXdvcmQgYXJ0aWNsZSBsaXN0IGZvciB0aGUgZ2l2ZW4gbGFuZ3VhZ2VzLgogICAgbXkgJUZBUUtleXdvcmRBcnRpY2xlTGlzdCA9ICRTZWxmLT5GQVFLZXl3b3JkQXJ0aWNsZUxpc3QoJVBhcmFtKTsKCiAgICByZXR1cm4gaWYgISVGQVFLZXl3b3JkQXJ0aWNsZUxpc3Q7CgogICAgcmV0dXJuICRTZWxmLT5fQnVpbGRSZWxhdGVkRkFRQXJ0aWNsZUxpc3QoCiAgICAgICAgQ29udGVudEtleXdvcmRzICAgID0+IFwlQ29udGVudEtleXdvcmRzLAogICAgICAgIEtleXdvcmRBcnRpY2xlTGlzdCA9PiBcJUZBUUtleXdvcmRBcnRpY2xlTGlzdCwKICAgICAgICBMaW1pdCAgICAgICAgICAgICAgPT4gJFBhcmFte0xpbWl0fSwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwp9Cgo9aGVhZDIgX0J1aWxkUmVsYXRlZEZBUUFydGljbGVMaXN0KCkKCkJ1aWxkIHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlIGxpc3QgZnJvbSB0aGUgZ2l2ZW4gY29udGVudCBrZXl3b3JkcyBhbmQgYXJ0aWNsZSBrZXl3b3JkIHJlbGF0aW9uLgoKICAgIG15IEBSZWxhdGVkQXJ0aWNsZUxpc3QgPSAkRkFRT2JqZWN0LT5fQnVpbGRSZWxhdGVkRkFRQXJ0aWNsZUxpc3QoCiAgICAgICAgQ29udGVudEtleXdvcmRzID0+IHsKICAgICAgICAgICAgZXhhbXBsZSA9PiAxLAogICAgICAgICAgICB0ZXN0ICAgID0+IDMsCiAgICAgICAgICAgIGZhcSAgICAgPT4gNiwKICAgICAgICB9LAogICAgICAgIEtleXdvcmRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgICdFeGFtcGxlS2V5d29yZCcgPT4gWwogICAgICAgICAgICAgICAgMTIsCiAgICAgICAgICAgICAgICAxMywKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ1Rlc3RLZXl3b3JkJyA9PiBbCiAgICAgICAgICAgICAgICA4NzYsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBMaW1pdCAgPT4gMTAsICMgb3B0aW9uYWwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zCgogICAgbXkgQFJlbGF0ZWRBcnRpY2xlTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnRkFRIFRpdGxlJywKICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lID0+ICdNaXNjJywKICAgICAgICAgICAgQ3JlYXRlZCAgICAgID0+ICcyMDE0LTEwLTEwIDEwOjEwOjAwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdGQVEgVGl0bGUnLAogICAgICAgICAgICBDYXRlZ29yeU5hbWUgPT4gJ01pc2MnLAogICAgICAgICAgICBDcmVhdGVkICAgICAgPT4gJzIwMTQtMTAtMTAgMTA6MTA6MDAnLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIF9CdWlsZFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17Q29udGVudEtleXdvcmRzfSApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0tleXdvcmRBcnRpY2xlTGlzdH0gKTsKCiAgICAjIFNhdmUgZ2l2ZW4gcGFyYW1ldGVycyBpbiBvd24gdmFyaWFibGVzIGZvciBiZXR0ZXIgdXNhZ2UuCiAgICBteSAlQ29udGVudEtleXdvcmRzICAgID0gJXsgJFBhcmFte0NvbnRlbnRLZXl3b3Jkc30gfTsKICAgIG15ICVLZXl3b3JkQXJ0aWNsZUxpc3QgPSAleyAkUGFyYW17S2V5d29yZEFydGljbGVMaXN0fSB9OwoKICAgICMgQnVpbGQgdGhlIHJlbGF0ZWQgZmFxIGFydGljbGVzIGFuZCBzYXZlIGEgcXVhbnRpZmllciBmb3IgdGhlIGRpZmZlcmVudCBhcnRpY2xlcyB3aXRoIHRoZSByZWxldmFuY2UKICAgICMgICBmcm9tIHRoZSBrZXl3b3JkLCB3aGljaCBpcyByZWxhdGVkIHRvIHRoZSBmYXEgYXJ0aWNsZS4KICAgICMgRS5nLgogICAgIyAgIC0gRkFRQXJ0aWNsZSAxIHdpdGgga2V5d29yZHM6ICAnaXRzbScsICdjaGFuZ2VtYW5hZ2VtZW50JywgJ3RpY2tldCcKICAgICMgICAtIEZBUUFydGljbGUgMiB3aXRoIGtleXdvcmRzOiAnaXRzbScsICdjaGFuZ2VtYW5nZW1lbnQnCiAgICAjICAgLSBGQVFBcnRpY2xlIDMgd2l0aCBrZXl3b3JkczogJ3RpY2tldCcKICAgICMgR2l2ZW4gS2V5d29yZCBmcm9tIHRleHQgKHdpdGggY291bnRlcik6CiAgICAjICAgLSBjaGFuZ2VtYW5hZ2VtZW50ICg1KQogICAgIyAgIC0gdGlja2V0ICg0KQogICAgIyAgIC0gaXRzbSAoMSkKICAgICMgUmVzdWx0IChGQVFBcnRpY2xlSUQgPT4gQ2FsY3VsYXRlZCBRdWFudGlmaWVyKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiAxMQogICAgIyAgIC0gRkFRQXJ0aWNsZSAyID0+IDYKICAgICMgICAtIEZBUUFydGljbGUgMyA9PiA0CiAgICBteSAlTG9va3VwUmVsYXRlZEZBUUFydGljbGVzOwoKICAgIENPTlRFTlRLRVlXT1JEOgogICAgZm9yIG15ICRDb250ZW50S2V5d29yZCAoIHNvcnQga2V5cyAlQ29udGVudEtleXdvcmRzICkgewoKICAgICAgICBuZXh0IENPTlRFTlRLRVlXT1JEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRLZXl3b3JkQXJ0aWNsZUxpc3R7JENvbnRlbnRLZXl3b3JkfSApOwoKICAgICAgICBGQVFBUlRJQ0xFSUQ6CiAgICAgICAgZm9yIG15ICRGQVFBcnRpY2xlSUQgKCBAeyAkS2V5d29yZEFydGljbGVMaXN0eyRDb250ZW50S2V5d29yZH0gfSApIHsKCiAgICAgICAgICAgIGlmICggISRMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXN7JEZBUUFydGljbGVJRH0gKSB7CgogICAgICAgICAgICAgICAgbXkgJUZBUUFydGljbGVEYXRhID0gJFNlbGYtPkZBUUdldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUUFydGljbGVJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJEZBUUFydGljbGVEYXRhe1ZvdGVzfSApIHsKICAgICAgICAgICAgICAgICAgICAkRkFRQXJ0aWNsZURhdGF7U3RhckNvdW50ZXJ9ID0gaW50KCAkRkFRQXJ0aWNsZURhdGF7Vm90ZVJlc3VsdH0gKiAwLjA1ICk7CgogICAgICAgICAgICAgICAgICAgICMgQWRkIDEgYmVjYXVzZSBsb3dlc3QgdmFsdWUgc2hvdWxkIGJlIGFsd2F5cyAxLgogICAgICAgICAgICAgICAgICAgIGlmICggJEZBUUFydGljbGVEYXRhe1N0YXJDb3VudGVyfSA8IDUgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGQVFBcnRpY2xlRGF0YXtTdGFyQ291bnRlcn0rKzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBBZGQgdGhlIEZBUSBhcnRpY2xlIGRhdGEgdG8gdGhlIHJlbGF0ZWQgRkFRIGFydGljbGVzLgogICAgICAgICAgICAgICAgJExvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlc3skRkFRQXJ0aWNsZUlEfSA9IHsKICAgICAgICAgICAgICAgICAgICAlRkFRQXJ0aWNsZURhdGEsCiAgICAgICAgICAgICAgICAgICAgS2V5d29yZENvdW50ZXIgPT4gJENvbnRlbnRLZXl3b3Jkc3skQ29udGVudEtleXdvcmR9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIEluY3JlYXNlIHRoZSBxdWFudGlmaWVyLCBpZiB0aGUgYXJ0aWNsZSBoYXMgbW9yZSB0aGVuIG9uZSByZWxldmFudCBrZXl3b3JkLgogICAgICAgICAgICAgICAgJExvb2t1cFJlbGF0ZWRGQVFBcnRpY2xlc3skRkFRQXJ0aWNsZUlEfS0+e0tleXdvcmRDb3VudGVyfSArPSAkQ29udGVudEtleXdvcmRzeyRDb250ZW50S2V5d29yZH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBUbyBzYXZlIHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlIGZyb20gdGhlIGxvb2t1cCBoYXNoLgogICAgbXkgQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCA9IG1hcCB7ICRMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXN7JF99IH0gc29ydCBrZXlzICVMb29rdXBSZWxhdGVkRkFRQXJ0aWNsZXM7CgogICAgIyBTb3J0IHRoZSByZXN1bHRzIGZyb20gdGhlIHBsdWctaW5zIGJ5ICdrZXl3b3JkIHF1YW50aWZpZXInLCAnY2hhbmdlIHRpbWUnIGFuZCAnaWQgKGNyZWF0ZSB0aW1lKScuCiAgICBAUmVsYXRlZEZBUUFydGljbGVMaXN0ID0gc29ydCB7CiAgICAgICAgJGItPntLZXl3b3JkQ291bnRlcn0gPD0+ICRhLT57S2V5d29yZENvdW50ZXJ9CiAgICAgICAgICAgIHx8ICRiLT57Q2hhbmdlZH0gY21wICRhLT57Q2hhbmdlZH0KICAgICAgICAgICAgfHwgaW50ICRiLT57SUR9IDw9PiBpbnQgJGEtPntJRH0KICAgIH0gQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdDsKCiAgICAjIEN1dCB0aGUgbm90IG5lZWRlZCBhcnRpY2xlcyBmcm9tIHRoZSBhcnJheSwgaWYgYSBsaW1pdCBpcyBnaXZlbi4KICAgIGlmICggJFBhcmFte0xpbWl0fSAmJiBzY2FsYXIgQFJlbGF0ZWRGQVFBcnRpY2xlTGlzdCA+ICRQYXJhbXtMaW1pdH0gKSB7CiAgICAgICAgc3BsaWNlIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3QsICRQYXJhbXtMaW1pdH07CiAgICB9CgogICAgcmV0dXJuIEBSZWxhdGVkRkFRQXJ0aWNsZUxpc3Q7Cn0KCj1oZWFkMiBfQnVpbGRLZXl3b3JkQ291bnRlckZyb21Db250ZW50KCkKCkJ1aWxkIHRoZSBrZXl3b3JkcyBmb3IgdGhlIGdpdmVuIGNvbnRlbnQuCgogICAgbXkgJENvbnRlbnQgPSAkRkFRT2JqZWN0LT5fQnVpbGRLZXl3b3JkQ291bnRlckZyb21Db250ZW50KAogICAgICAgIENvbnRlbnQgPT4gJ1NvbWUgVGV4dCB3aXRoIGEgbGluay4gTW9yZSB0ZXh0LiBbMV0gaHR0cHM6Ly9vdHJzLmNvbS8nLAogICAgKTsKClJldHVybnMKCiAgICAlQ29udGVudEtleXdvcmRzID0gKAogICAgICAgIGV4YW1wbGUgPT4gMSwKICAgICAgICB0ZXN0ICAgID0+IDMsCiAgICAgICAgZmFxICAgICA9PiA2LAogICAgICAgIC4uLgogICAgKTsKCj1jdXQKCnN1YiBfQnVpbGRLZXl3b3JkQ291bnRlckZyb21Db250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtDb250ZW50fSApOwoKICAgIG15ICVDb250ZW50S2V5d29yZHM7CgogICAgIyBTdHJpcCBub3Qgd2FudGVkIHN0dWZmIGZyb20gdGhlIGdpdmVuIHN1YmplY3QgYW5kIGJvZHkuCiAgICBmb3IgbXkgJENvbnRlbnQgKCBAeyAkUGFyYW17Q29udGVudH0gfSApIHsKCiAgICAgICAgJENvbnRlbnQgfHw9ICcnOwoKICAgICAgICAjIFJlbW92ZSB0aGUgbGlua3MgZnJvbSB0aGUgY29udGVudC4KICAgICAgICAkQ29udGVudCA9ICRTZWxmLT5fUmVtb3ZlTGlua3NGcm9tQ29udGVudCgKICAgICAgICAgICAgQ29udGVudCA9PiAkQ29udGVudCwKICAgICAgICApOwoKICAgICAgICAjIFNwbGl0IHRoZSB0ZXh0IGluIHdvcmQgYW5kIHNhdmUgdGhlIHdvcmQgYXMgdGhlIGdpdmVuIGtleXdvcmRzIChzZXBhcmF0b3IgaXMgYSB3aGl0ZXNwYWNlKS4KICAgICAgICAkQ29udGVudCA9fiBze1tcLlwsXDtcOl0oXHN8XHM/IFxaICl9eyB9eG1zZzsKICAgICAgICBteSBARmllbGRLZXl3b3JkcyA9ICggJENvbnRlbnQgPX4gbXsgW1x3XHh7MDk4MH0tXHh7MDlGRn1cLV0rXC4/W1x3XHh7MDk4MH0tXHh7MDlGRn1cLV0qIH14bXNnICk7CgogICAgICAgIEtFWVdPUkQ6CiAgICAgICAgZm9yIG15ICRLZXl3b3JkIChARmllbGRLZXl3b3JkcykgewoKICAgICAgICAgICAgIyBTYXZlIHRoZSBrZXl3b3JkcyBhbHdheXMgYXMgbG93ZXIgY2FzZS4KICAgICAgICAgICAgJEtleXdvcmQgPSBsYyAkS2V5d29yZDsKCiAgICAgICAgICAgICMgSW5jcmVhc2UgdGhlIGtleXdvcmQgY291bnRlciBmcm9tIHRoZSB0ZXh0IGNvbnRlbnQsIHRvIGluY3JlYXNlIHRoZSByZWxldmFuY2UgZm9yIHRoaXMga2V5d29yZC4KICAgICAgICAgICAgJENvbnRlbnRLZXl3b3Jkc3skS2V5d29yZH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVDb250ZW50S2V5d29yZHM7Cn0KCj1oZWFkMiBfUmVtb3ZlTGlua3NGcm9tQ29udGVudCgpCgpSZW1vdmUgbGlua3MgZnJvbSB0aGUgZ2l2ZW4gY29udGVudC4KCiAgICBteSAkQ29udGVudCA9ICRGQVFPYmplY3QtPl9SZW1vdmVMaW5rc0Zyb21Db250ZW50KAogICAgICAgIENvbnRlbnQgPT4gJ1NvbWUgVGV4dCB3aXRoIGEgbGluay4gTW9yZSB0ZXh0LiBbMV0gaHR0cHM6Ly9vdHJzLmNvbS8nLAogICAgKTsKClJldHVybnMKCiAgICAkQ29udGVudCA9ICdTb21lIFRleHQgd2l0aCBhIGxpbmsuIE1vcmUgdGV4dC4nOwoKPWN1dAoKc3ViIF9SZW1vdmVMaW5rc0Zyb21Db250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0NvbnRlbnR9ID1+IHN7IFxbXGQqXF0gfXt9eG1zZzsKICAgICRQYXJhbXtDb250ZW50fSA9fiBzeyBodHRwczovL1teXHNdKiB9e314bXNnOwoKICAgIHJldHVybiAkUGFyYW17Q29udGVudH07Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlN0YXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpGQVE6OlN0YXRlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6RkFRCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEgc3RhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBTdGF0ZUFkZCgpCgphZGQgYSBzdGF0ZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+U3RhdGVBZGQoCiAgICAgICAgTmFtZSAgID0+ICdwdWJsaWMnLAogICAgICAgIFR5cGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgc3RhdGUgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgU3RhdGVBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhOYW1lIFR5cGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfc3RhdGUgKG5hbWUsIHR5cGVfaWQpCiAgICAgICAgICAgIFZBTFVFUyAoID8sID8gKScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17VHlwZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFN0YXRlR2V0KCkKCmdldCBhIHN0YXRlIGFzIGhhc2gKCiAgICBteSAlU3RhdGUgPSAkRkFRT2JqZWN0LT5TdGF0ZUdldCgKICAgICAgICBTdGF0ZUlEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJVN0YXRlID0gKAogICAgICAgIFN0YXRlSUQgID0+IDEsCiAgICAgICAgTmFtZSAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgIFR5cGVJRCAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3RhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lLCB0eXBlX2lkCiAgICAgICAgICAgIEZST00gZmFxX3N0YXRlCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1N0YXRlSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgU3RhdGVJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBOYW1lICAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIFR5cGVJRCAgPT4gJFJvd1syXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIFN0YXRlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIGxpc3QgYXMgaGFzaAoKICAgIG15ICVTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKb3B0aW9uYWwsIGdldCBzdGF0ZSBsaXN0IGZvciBzb21lIHN0YXRlIHR5cGVzOgoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJ10sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlU3RhdGVzID0gKAogICAgICAgIDEgPT4gJ2ludGVybmFsIChhZ2VudCknLAogICAgICAgIDIgPT4gJ2V4dGVybmFsIChjdXN0b21lciknLAogICAgICAgIDMgPT4gJ3B1YmxpYyAoYWxsKScsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9zdGF0ZSc7CgogICAgIyBGaWx0ZXIgc3RhdGUgbGlzdCBieSB0eXBlIGlkIGlmIGF2YWlsYWJsZS4KICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17VHlwZXN9ICkgKSB7CiAgICAgICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkU2VsZi0+U3RhdGVUeXBlTGlzdCgKICAgICAgICAgICAgVHlwZXMgID0+ICRQYXJhbXtUeXBlc30sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFN0YXRlVHlwZUhhc2hSZWYpICkgewogICAgICAgICAgICAkU1FMIC49ICcgV0hFUkUgdHlwZV9pZCBJTiAoICcgLiBqb2luKCAnLCAnLCBzb3J0IGtleXMgJXskU3RhdGVUeXBlSGFzaFJlZn0gKSAuICcgKSc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKCBTUUwgPT4gJFNRTCApOwoKICAgIG15ICVMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuICVMaXN0Owp9Cgo9aGVhZDIgU3RhdGVVcGRhdGUoKQoKdXBkYXRlIGEgc3RhdGUKCiAgICBteSBTdWNjZXNzID0gJEZBUU9iamVjdC0+U3RhdGVVcGRhdGUoCiAgICAgICAgU3RhdGVJRCA9PiAxLAogICAgICAgIE5hbWUgICAgPT4gJ3B1YmxpYycsCiAgICAgICAgVHlwZUlEICA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgIFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIHN0YXRlIGNvdWxkIG5vdCBiZSB1cGRhdGVkCgo9Y3V0CgpzdWIgU3RhdGVVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdGF0ZUlEIE5hbWUgVHlwZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgU1FMCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgZmFxX3N0YXRlCiAgICAgICAgICAgIFNFVCBuYW1lID0gPywgdHlwZV9pZCA9ID8sCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17VHlwZUlEfSwgXCRQYXJhbXtTdGF0ZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFN0YXRlVHlwZUdldCgpCgpnZXQgYSBzdGF0ZSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlR2V0KAogICAgICAgIFN0YXRlSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKT3IKCiAgICBteSAkU3RhdGVUeXBlSGFzaFJlZiA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICBOYW1lICAgID0+ICdpbnRlcm5hbCcsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN0YXRlVHlwZUhhc2hSZWYgPSB7CiAgICAgICAgJ1N0YXRlSUQnID0+IDEsCiAgICAgICAgJ05hbWUnICAgID0+ICdpbnRlcm5hbCcsCiAgICB9OwoKPWN1dAoKc3ViIFN0YXRlVHlwZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICBGUk9NIGZhcV9zdGF0ZV90eXBlCiAgICAgICAgV0hFUkUnOwogICAgbXkgQEJpbmQ7CiAgICBteSAkQ2FjaGVLZXkgPSAnU3RhdGVUeXBlR2V0OjonOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTdGF0ZUlEfSApIHsKICAgICAgICAkU1FMIC49ICcgaWQgPSA/JzsKICAgICAgICBwdXNoIEBCaW5kLCBcJFBhcmFte1N0YXRlSUR9OwogICAgICAgICRDYWNoZUtleSAuPSAnSUQ6OicgLiAkUGFyYW17U3RhdGVJRH07CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICkgewogICAgICAgICRTUUwgLj0gJyBuYW1lID0gPyc7CiAgICAgICAgcHVzaCBAQmluZCwgXCRQYXJhbXtOYW1lfTsKICAgICAgICAkQ2FjaGVLZXkgLj0gJ05hbWU6OicgLiAkUGFyYW17TmFtZX07CiAgICB9CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgcmV0dXJuICRDYWNoZSBpZiAkQ2FjaGU7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJFNRTCwKICAgICAgICBCaW5kID0+IFxAQmluZCwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgU3RhdGVJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBOYW1lICAgID0+ICRSb3dbMV0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAyLAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aGVhZDIgU3RhdGVUeXBlTGlzdCgpCgpnZXQgdGhlIHN0YXRlIHR5cGUgbGlzdCBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRTdGF0ZVR5cGVIYXNoUmVmID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpvcHRpb25hbCwgZ2V0IHN0YXRlIHR5cGUgbGlzdCBmb3Igc29tZSBzdGF0ZXM6CgogICAgbXkgJFN0YXRlVHlwZUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5TdGF0ZVR5cGVMaXN0KAogICAgICAgIFR5cGVzICA9PiBbICdwdWJsaWMnLCAnaW50ZXJuYWwnXSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdGF0ZVR5cGVIYXNoUmVmID0gewogICAgICAgIDEgPT4gJ2ludGVybmFsJywKICAgICAgICAzID0+ICdwdWJsaWMnLAogICAgICAgIDIgPT4gJ2V4dGVybmFsJywKICAgIH07Cgo9Y3V0CgpzdWIgU3RhdGVUeXBlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBVc2VySUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBidWlsZCBTUUwKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGlkLCBuYW1lCiAgICAgICAgRlJPTSBmYXFfc3RhdGVfdHlwZSc7CgogICAgIyB0eXBlcyBhcmUgZ2l2ZW4KICAgIGlmICggJFBhcmFte1R5cGVzfSApIHsKCiAgICAgICAgaWYgKCByZWYgJFBhcmFte1R5cGVzfSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnVHlwZXMgc2hvdWxkIGJlIGFuIGFycmF5IHJlZmVyZW5jZSEnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjYWxsIFN0YXRlVHlwZUxpc3Qgd2l0aG91dCBwYXJhbWV0ZXJzIHRvIHZhbGlkYXRlIFR5cGVzCiAgICAgICAgbXkgJFN0YXRlVHlwZUxpc3QgPSAkU2VsZi0+U3RhdGVUeXBlTGlzdCggVXNlcklEID0+ICRQYXJhbXtVc2VySUR9ICk7CiAgICAgICAgbXkgJVN0YXRlVHlwZXMgICAgPSByZXZlcnNlICV7ICRTdGF0ZVR5cGVMaXN0IHx8IHt9IH07CiAgICAgICAgbXkgQFR5cGVzOwoKICAgICAgICAjIG9ubHkgYWRkIHR5cGVzIHRvIGxpc3QgdGhhdCBleGlzdAogICAgICAgIFRZUEU6CiAgICAgICAgZm9yIG15ICRUeXBlICggQHsgJFBhcmFte1R5cGVzfSB9ICkgewogICAgICAgICAgICBuZXh0IFRZUEUgaWYgISRTdGF0ZVR5cGVzeyRUeXBlfTsKICAgICAgICAgICAgcHVzaCBAVHlwZXMsICInJFR5cGUnIjsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIGlmIChAVHlwZXMpIHsKICAgICAgICAgICAgJFNRTCAuPSAnIFdIRVJFIG5hbWUgSU4gKCAnIC4gam9pbiggJywgJywgQFR5cGVzICkgLiAnICknOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHByZXBhcmUgU1FMCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJExpc3R7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgcmV0dXJuIFwlTGlzdDsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlZvdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUTo6Vm90ZSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OkZBUQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgRkFRIHZvdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBWb3RlQWRkKCkKCmFkZCBhIHZvdGUKCiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlZvdGVBZGQoCiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAnMTIzNDU2JywKICAgICAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgICAgIEludGVyZmFjZSA9PiAnU29tZSBUZXh0JywKICAgICAgICBSYXRlICAgICAgPT4gMTAwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiB2b3RlIGNvdWxkIG5vdCBiZSBhZGRlZAoKPWN1dAoKc3ViIFZvdGVBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDcmVhdGVkQnkgSXRlbUlEIElQIEludGVyZmFjZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfdm90aW5nIChjcmVhdGVkX2J5LCBpdGVtX2lkLCBpcCwgaW50ZXJmYWNlLCByYXRlLCBjcmVhdGVkICkKICAgICAgICAgICAgVkFMVUVTICggPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAgKScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17Q3JlYXRlZEJ5fSwgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte0lQfSwgXCRQYXJhbXtJbnRlcmZhY2V9LAogICAgICAgICAgICBcJFBhcmFte1JhdGV9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICBteSAkQ2FjaGVLZXkgPSAnSXRlbVZvdGVEYXRhR2V0OjonIC4gJFBhcmFte0l0ZW1JRH07CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVm90ZURlbGV0ZSgpCgpkZWxldGUgYSB2b3RlCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5Wb3RlRGVsZXRlKAogICAgICAgIFZvdGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJERlbGV0ZVN1Y2Nlc3MgPSAxOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiB2b3RlIGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgVm90ZURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFZvdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Vm90ZUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZvdGVHZXQoKQoKZ2V0IGEgdm90ZSBpbmZvcm1hdGlvbgoKICAgIG15ICVWb3RlRGF0YSA9ICRGQVFPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgQ3JlYXRlQnkgID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAnMTIzNDU2JywKICAgICAgICBJUCAgICAgICAgPT4gJzEyNy4wLjAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICdTb21lIFRleHQnLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJVZvdGVEYXRhID0gKAogICAgICAgIEl0ZW1JRCAgICA9PiAyMywKICAgICAgICBSYXRlICAgICAgPT4gNTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCBvciAyNSBvciA3NSBvciAxMDAKICAgICAgICBJUCAgICAgICAgPT4gJzE5Mi4xNjguMC4xJywKICAgICAgICBJbnRlcmZhY2UgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW50ZXJmYWNlIElECiAgICAgICAgQ3JlYXRlZEJ5ID0+IDEsCiAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTA2LTE0IDEyOjMyOjAzJywKICAgICk7Cgo9Y3V0CgpzdWIgVm90ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENyZWF0ZUJ5IEl0ZW1JRCBJbnRlcmZhY2UgSVAgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgQFZhbHVlczsKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIGNyZWF0ZWRfYnksIGl0ZW1faWQsIGludGVyZmFjZSwgaXAsIGNyZWF0ZWQsIHJhdGUKICAgICAgICBGUk9NIGZhcV92b3RpbmcKICAgICAgICBXSEVSRSc7CgogICAgIyBwdWJsaWMKICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzMnICkgewogICAgICAgICRTUUwgLj0gJwogICAgICAgICAgICBpcCA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/JzsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtJUH0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgICMgY3VzdG9tZXIKICAgIGVsc2lmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJzInIHx8ICRQYXJhbXtJbnRlcmZhY2V9IGVxICcxJyApIHsKICAgICAgICAkU1FMIC49ICcKICAgICAgICAgICAgY3JlYXRlZF9ieSA9ID8KICAgICAgICAgICAgQU5EIGl0ZW1faWQgPSA/JzsKICAgICAgICBwdXNoIEBWYWx1ZXMsICggXCRQYXJhbXtDcmVhdGVCeX0sIFwkUGFyYW17SXRlbUlEfSApOwogICAgfQoKICAgICMgbGVhdmUgYSBzcGFjZSBiZXR3ZWVuIEFORCBjb25kaXRpb24gYW5kIE9SREVSIEJZIHN0YXRlbWVudAogICAgJFNRTCAuPSAnCiAgICAgICAgT1JERVIgQlkgY3JlYXRlZCBERVNDJzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIEJpbmQgID0+IFxAVmFsdWVzLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAkUm93WzBdLAogICAgICAgICAgICBJdGVtSUQgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRSb3dbMl0sCiAgICAgICAgICAgIElQICAgICAgICA9PiAkUm93WzNdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1s0XSwKICAgICAgICAgICAgUmF0ZSAgICAgID0+ICRSb3dbNV0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gaWYgISVEYXRhOwogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWhlYWQyIFZvdGVTZWFyY2goKQoKcmV0dXJucyBhbiBhcnJheSB3aXRoIFZvdGVJRHMKCiAgICBteSAkVm90ZUlEQXJyYXlyZWYgPSAkRkFRT2JqZWN0LT5Wb3RlU2VhcmNoKAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFZvdGVJREFycmF5cmVmID0gWwogICAgICAgIDIzLAogICAgICAgIDQ1LAogICAgXTsKCj1jdXQKCnN1YiBWb3RlU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIGZhcV92b3RpbmcKICAgICAgICAgICAgV0hFUkUgaXRlbV9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgQFZvdGVJRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBWb3RlSURzLCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBcQFZvdGVJRHM7Cn0KCj1oZWFkMiBJdGVtVm90ZURhdGFHZXQoKQoKUmV0dXJucyBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlIG51bWJlciBvZiB2b3RlcyBhbmQgdGhlIHZvdGUgcmVzdWx0LgoKICAgIG15ICRWb3RlRGF0YUhhc2hSZWYgPSAkRkFRT2JqZWN0LT5JdGVtVm90ZURhdGFHZXQoCiAgICAgICAgSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRWb3RlRGF0YUhhc2hSZWYgPSB7CiAgICAgICAgUmVzdWx0ID0+IDc1LjAwMDAsCiAgICAgICAgVm90ZXMgID0+IDUKICAgIH07Cgo9Y3V0CgpzdWIgSXRlbVZvdGVEYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdJdGVtVm90ZURhdGFHZXQ6OicgLiAkUGFyYW17SXRlbUlEfTsKICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgIHJldHVybiAkQ2FjaGUgaWYgJENhY2hlOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHZvdGUgZnJvbSBkYgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGNvdW50KCopLCBhdmcocmF0ZSkKICAgICAgICAgICAgRlJPTSBmYXFfdm90aW5nCiAgICAgICAgICAgIFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXtWb3Rlc30gID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtSZXN1bHR9ID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIGNhY2hlIHJlc3VsdAogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwlRGF0YSwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMjQgKiAyLAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0IHF3KCk7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OkZBUVNlYXJjaAogICAgS2VybmVsOjpTeXN0ZW06OkZBUTo6TGFuZ3VhZ2UKICAgIEtlcm5lbDo6U3lzdGVtOjpGQVE6OkNhdGVnb3J5CiAgICBLZXJuZWw6OlN5c3RlbTo6RkFROjpTdGF0ZQogICAgS2VybmVsOjpTeXN0ZW06OkZBUTo6UmVsYXRlZEFydGljbGUKICAgIEtlcm5lbDo6U3lzdGVtOjpGQVE6OlZvdGUKICAgIEtlcm5lbDo6U3lzdGVtOjpFdmVudEhhbmRsZXIKKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VHlwZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUSAtICBGQVEgbGliCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEgZnVuY3Rpb25zLiBFLiBnLiB0byBhZGQgRkFRcyBvciB0byBnZXQgRkFRcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgbGlrZSBlc2NhcGUgc3RyaW5nIG5lZWRlZCBmb3Igc29tZSBkYXRhYmFzZXMgKGUuZy4gb3JhY2xlKQogICAgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdMaWtlRXNjYXBlU3RyaW5nJyk7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZGVmYXVsdCBvcHRpb25zCiAgICAkU2VsZi0+e1ZvdGluZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Vm90aW5nJyk7CgogICAgIyBnZXQgdGhlIGNhY2hlIFRUTCAoaW4gc2Vjb25kcykKICAgICRTZWxmLT57Q2FjaGVUVEx9ID0gaW50KCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6Q2FjaGVUVEwnKSB8fCA2MCAqIDYwICogMjQgKiAyICk7CgogICAgIyBpbml0IG9mIGV2ZW50IGhhbmRsZXIKICAgICMgY3VycmVudGx5IHRoZXJlIGFyZSBubyBGQVEgZXZlbnQgbW9kdWxlcyBidXQgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgb3RoZXJ3aXNlIGVycm9ycyBhcmUKICAgICMgICAgIGxvZyBkdWUgdG8gc2VhcmNoaW5nIHVuZGVmaW5lZCBzZXR0aW5nIGludG8gQ29uZmlnT2JqZWN0LgogICAgJFNlbGYtPkV2ZW50SGFuZGxlckluaXQoCiAgICAgICAgQ29uZmlnID0+ICcnLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBGQVFHZXQoKQoKZ2V0IGFuIEZBUSBpdGVtCgogICAgbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBJdGVtRmllbGRzID0+IDAsICAgICAgICAjIE9wdGlvbmFsLCBkZWZhdWx0IDAuIFRvIGluY2x1ZGUgdGhlIGl0ZW0gZmllbGQgY29udGVudCBmb3IgdGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBGQVEgaXRlbSBvbiB0aGUgcmV0dXJuIHN0cnVjdHVyZS4KICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAlRkFRID0gKAogICAgICAgIElEICAgICAgICAgICAgICAgID0+IDMyLAogICAgICAgIEl0ZW1JRCAgICAgICAgICAgID0+IDMyLAogICAgICAgIEZBUUlEICAgICAgICAgICAgID0+IDMyLAogICAgICAgIE51bWJlciAgICAgICAgICAgID0+IDEwMDAzMiwKICAgICAgICBDYXRlZ29yeUlEICAgICAgICA9PiAnMicsCiAgICAgICAgQ2F0ZWdvcnlOYW1lJyAgICAgPT4gJ0NhdGVnb3J5QTo6Q2F0ZWdvcnlCJywKICAgICAgICBDYXRlZ29yeVNob3J0TmFtZSA9PiAnQ2F0ZWdvcnlCJywKICAgICAgICBMYW5ndWFnZUlEICAgICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlICAgICAgICAgID0+ICdlbicsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgPT4gJ0FydGljbGUgVGl0bGUnLAogICAgICAgIEFwcHJvdmVkICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwCiAgICAgICAgVmFsaWRJRCAgICAgICAgICAgPT4gMSwKICAgICAgICBWYWxpZCAgICAgICAgICAgICA9PiAndmFsaWQnLAogICAgICAgIEtleXdvcmRzICAgICAgICAgID0+ICdLZXlXb3JkMSBLZXlXb3JkMicsCiAgICAgICAgVm90ZXMgICAgICAgICAgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG51bWJlciBvZiB2b3RlcwogICAgICAgIFZvdGVSZXN1bHQgICAgICAgID0+ICcwLjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBiZXR3ZWVuIDAuMDAgYW5kIDEwMC4wMAogICAgICAgIFN0YXRlSUQgICAgICAgICAgID0+IDEsCiAgICAgICAgU3RhdGUgICAgICAgICAgICAgPT4gJ2ludGVybmFsIChhZ2VudCknLCAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCAoY3VzdG9tZXIpJyBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAncHVibGljIChhbGwpJwogICAgICAgIFN0YXRlVHlwZUlEICAgICAgID0+IDEsCiAgICAgICAgU3RhdGVUeXBlTmFtZSAgICAgPT4gJ2ludGVybmFsJywgICAgICAgICAgICAgICAgICAgICAjIG9yICdleHRlcm5hbCcgb3IgJ3B1YmxpYycKICAgICAgICBDcmVhdGVkQnkgICAgICAgICA9PiAxLAogICAgICAgIENoYW5nZWQnICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICBDaGFuZ2VkQnkgICAgICAgICA9PiAnMScsCiAgICAgICAgQ3JlYXRlZCAgICAgICAgICAgPT4gJzIwMTEtMDEtMDUgMjE6NTM6NTAnLAogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICcxMjk0Mjg2MDMwLTMxLjE2OTcyOTcxMDQ3MzInLCAgIyBGQVEgQXJ0aWNsZSBuYW1lIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHN5c3RlbXRpbWUgKyAnLScgKyByYW5kb20gbnVtYmVyCiAgICApOwoKICAgIG15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVGQVEgPSAoCgogICAgICAgICMgQ29tcGF0aWJpbGl0eSBJRCBuYW1lcy4KICAgICAgICBJRCAgICAgICAgICAgICAgICA9PiAzMiwKICAgICAgICBGQVFJRCAgICAgICAgICAgICA9PiAzMiwKCiAgICAgICAgSXRlbUlEICAgICAgICAgICAgPT4gMzIsCiAgICAgICAgTnVtYmVyICAgICAgICAgICAgPT4gMTAwMDMyLAogICAgICAgIENhdGVnb3J5SUQgICAgICAgID0+ICcyJywKICAgICAgICBDYXRlZ29yeU5hbWUnICAgICA9PiAnQ2F0ZWdvcnlBOjpDYXRlZ29yeUInLAogICAgICAgIENhdGVnb3J5U2hvcnROYW1lID0+ICdDYXRlZ29yeUInLAogICAgICAgIExhbmd1YWdlSUQgICAgICAgID0+IDEsCiAgICAgICAgTGFuZ3VhZ2UgICAgICAgICAgPT4gJ2VuJywKICAgICAgICBUaXRsZSAgICAgICAgICAgICA9PiAnQXJ0aWNsZSBUaXRsZScsCiAgICAgICAgRmllbGQxICAgICAgICAgICAgPT4gJ1RoZSBTeW1wdG9tcycsCiAgICAgICAgRmllbGQyICAgICAgICAgICAgPT4gJ1RoZSBQcm9ibGVtJywKICAgICAgICBGaWVsZDMgICAgICAgICAgICA9PiAnVGhlIFNvbHV0aW9uJywKICAgICAgICBGaWVsZDQgICAgICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGFjdGl2ZSBieSBkZWZhdWx0CiAgICAgICAgRmllbGQ1ICAgICAgICAgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdCBhY3RpdmUgYnkgZGVmYXVsdAogICAgICAgIEZpZWxkNiAgICAgICAgICAgID0+ICdDb21tZW50cycsCiAgICAgICAgQXBwcm92ZWQgICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAKICAgICAgICBWYWxpZElEICAgICAgICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlICAgICAgID0+ICd0ZXh0L3BsYWluJywgICAgICAgICAgICAgICAgICAjIG9yICd0ZXh0L2h0bWwnCiAgICAgICAgVmFsaWQgICAgICAgICAgICAgPT4gJ3ZhbGlkJywKICAgICAgICBLZXl3b3JkcyAgICAgICAgICA9PiAnS2V5V29yZDEgS2V5V29yZDInLAogICAgICAgIFZvdGVzICAgICAgICAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBudW1iZXIgb2Ygdm90ZXMKICAgICAgICBWb3RlUmVzdWx0ICAgICAgICA9PiAnMC4wMCcsICAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgYmV0d2VlbiAwLjAwIGFuZCAxMDAuMDAKICAgICAgICBTdGF0ZUlEICAgICAgICAgICA9PiAxLAogICAgICAgIFN0YXRlICAgICAgICAgICAgID0+ICdpbnRlcm5hbCAoYWdlbnQpJywgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ3B1YmxpYyAoYWxsKScKICAgICAgICBTdGF0ZVR5cGVJRCAgICAgICA9PiAxLAogICAgICAgIFN0YXRlVHlwZU5hbWUgICAgID0+ICdpbnRlcm5hbCcsICAgICAgICAgICAgICAgICAgICAgIyBvciAnZXh0ZXJuYWwnIG9yICdwdWJsaWMnCiAgICAgICAgQ3JlYXRlZEJ5ICAgICAgICAgPT4gMSwKICAgICAgICBDaGFuZ2VkJyAgICAgICAgICA9PiAnMjAxMS0wMS0wNSAyMTo1Mzo1MCcsCiAgICAgICAgQ2hhbmdlZEJ5ICAgICAgICAgPT4gJzEnLAogICAgICAgIENyZWF0ZWQgICAgICAgICAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAnMTI5NDI4NjAzMC0zMS4xNjk3Mjk3MTA0NzMyJywgICMgRkFRIEFydGljbGUgbmFtZSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzeXN0ZW10aW1lICsgJy0nICsgcmFuZG9tIG51bWJlcgogICAgKTsKCj1jdXQKCnN1YiBGQVFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlbmFtZSBmcm9tIEl0ZW1JRCB0byBGQVFJRAogICAgaWYgKCAkUGFyYW17RkFRSUR9ICkgewogICAgICAgICRQYXJhbXtJdGVtSUR9ID0gJFBhcmFte0ZBUUlEfTsKICAgIH0KCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhVc2VySUQgSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJEZldGNoSXRlbUZpZWxkcyA9ICRQYXJhbXtJdGVtRmllbGRzfSA/IDEgOiAwOwoKICAgIG15ICRDYWNoZUtleSA9ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9IC4gJzo6SXRlbUZpZWxkczo6JyAuICRGZXRjaEl0ZW1GaWVsZHM7CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkREJPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBzZXQgJURhdGEgZnJvbSBjYWNoZSBpZiBhbnkKICAgIG15ICVEYXRhOwogICAgaWYgKCByZWYgJENhY2hlIGVxICdIQVNIJyApIHsKICAgICAgICAlRGF0YSA9ICV7JENhY2hlfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSBnZXQgJURhdGEgZnJvbSB0aGUgREIKICAgIGVsc2UgewoKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpLmZfbmFtZSwgaS5mX2xhbmd1YWdlX2lkLCBpLmZfc3ViamVjdCwgaS5jcmVhdGVkLCBpLmNyZWF0ZWRfYnksIGkuY2hhbmdlZCwKICAgICAgICAgICAgICAgICAgICBpLmNoYW5nZWRfYnksIGkuY2F0ZWdvcnlfaWQsIGkuc3RhdGVfaWQsIGMubmFtZSwgcy5uYW1lLCBsLm5hbWUsIGkuZl9rZXl3b3JkcywKICAgICAgICAgICAgICAgICAgICBpLmFwcHJvdmVkLCBpLnZhbGlkX2lkLCBpLmNvbnRlbnRfdHlwZSwgaS5mX251bWJlciwgc3QuaWQsIHN0Lm5hbWUKICAgICAgICAgICAgICAgIEZST00gZmFxX2l0ZW0gaSwgZmFxX2NhdGVnb3J5IGMsIGZhcV9zdGF0ZSBzLCBmYXFfc3RhdGVfdHlwZSBzdCwgZmFxX2xhbmd1YWdlIGwKICAgICAgICAgICAgICAgIFdIRVJFIGkuc3RhdGVfaWQgPSBzLmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIHMudHlwZV9pZCA9IHN0LmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIGkuY2F0ZWdvcnlfaWQgPSBjLmlkCiAgICAgICAgICAgICAgICAgICAgQU5EIGkuZl9sYW5ndWFnZV9pZCA9IGwuaWQKICAgICAgICAgICAgICAgICAgICBBTkQgaS5pZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CgogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAgICAgJURhdGEgPSAoCgogICAgICAgICAgICAgICAgIyBDb21wYXRpYmlsaXR5IElEIG5hbWVzLgogICAgICAgICAgICAgICAgSUQgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGQVFJRCA9PiAkUGFyYW17SXRlbUlEfSwKCiAgICAgICAgICAgICAgICAjIEdldCBkYXRhIGF0dHJpYnV0ZXMuCiAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgICA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICAgICAgQ3JlYXRlZCAgICAgICA9PiAkUm93WzNdLAogICAgICAgICAgICAgICAgQ3JlYXRlZEJ5ICAgICA9PiAkUm93WzRdLAogICAgICAgICAgICAgICAgQ2hhbmdlZCAgICAgICA9PiAkUm93WzVdLAogICAgICAgICAgICAgICAgQ2hhbmdlZEJ5ICAgICA9PiAkUm93WzZdLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgICA9PiAkUm93WzddLAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgICA9PiAkUm93WzhdLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlOYW1lICA9PiAkUm93WzldLAogICAgICAgICAgICAgICAgU3RhdGUgICAgICAgICA9PiAkUm93WzEwXSwKICAgICAgICAgICAgICAgIExhbmd1YWdlICAgICAgPT4gJFJvd1sxMV0sCiAgICAgICAgICAgICAgICBLZXl3b3JkcyAgICAgID0+ICRSb3dbMTJdLAogICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgICA9PiAkUm93WzEzXSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gJFJvd1sxNF0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgID0+ICRSb3dbMTVdLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICA9PiAkUm93WzE2XSwKICAgICAgICAgICAgICAgIFN0YXRlVHlwZUlEICAgPT4gJFJvd1sxN10sCiAgICAgICAgICAgICAgICBTdGF0ZVR5cGVOYW1lID0+ICRSb3dbMThdLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICElRGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggSXRlbUlEICRQYXJhbXtJdGVtSUR9ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIEZBUSBpdGVtIGZpZWxkcyBhcmUgcmVxdWlyZWQKICAgICAgICBpZiAoJEZldGNoSXRlbUZpZWxkcykgewoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBmaWVsZCBuYW1lCiAgICAgICAgICAgICAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGROdW1iZXIiOwoKICAgICAgICAgICAgICAgICMgZ2V0IGVhY2ggZmllbGQgY29udGVudAogICAgICAgICAgICAgICAgJERhdGF7JEZpZWxkfSA9ICRTZWxmLT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIG51bWJlcgogICAgICAgIGlmICggISREYXRhe051bWJlcn0gKSB7CgogICAgICAgICAgICBteSAkTnVtYmVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdTeXN0ZW1JRCcpIC4gJzAwJyAuICREYXRhe0l0ZW1JRH07CgogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUIGZfbnVtYmVyID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkTnVtYmVyLCBcJERhdGF7SXRlbUlEfSBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJERhdGF7TnVtYmVyfSA9ICROdW1iZXI7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgY2F0ZWdvcnkgbG9uZyBuYW1lcwogICAgICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkU2VsZi0+Q2F0ZWdvcnlUcmVlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2F2ZSB0aGUgY2F0ZWdvcnkgc2hvcnQgbmFtZQogICAgICAgICREYXRhe0NhdGVnb3J5U2hvcnROYW1lfSA9ICREYXRhe0NhdGVnb3J5TmFtZX07CgogICAgICAgICMgZ2V0IHRoZSBjYXRlZ29yeSBsb25nIG5hbWUKICAgICAgICAkRGF0YXtDYXRlZ29yeU5hbWV9ID0gJENhdGVnb3J5VHJlZS0+eyAkRGF0YXtDYXRlZ29yeUlEfSB9OwoKICAgICAgICAjIGdldCB2YWxpZCBsaXN0CiAgICAgICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgICAgICAkRGF0YXtWYWxpZH0gPSAkVmFsaWRMaXN0eyAkRGF0YXtWYWxpZElEfSB9OwoKICAgICAgICAjIGNhY2hlIHJlc3VsdAogICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAnRkFRJywKICAgICAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICAgICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFZvdGVEYXRhOwogICAgaWYgKCAkU2VsZi0+e1ZvdGluZ30gKSB7CiAgICAgICAgJFZvdGVEYXRhID0gJFNlbGYtPkl0ZW1Wb3RlRGF0YUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgZnJvbSBjb25maWcKICAgIG15ICREZWNpbWFsUGxhY2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkV4cGxvcmVyOjpJdGVtTGlzdDo6Vm90aW5nUmVzdWx0RGVjaW1hbFBsYWNlcycpIHx8IDA7CgogICAgIyBmb3JtYXQgdGhlIHZvdGUgcmVzdWx0CiAgICBteSAkVm90ZVJlc3VsdCA9IHNwcmludGYoICIlMC4iIC4gJERlY2ltYWxQbGFjZXMgLiAiZiIsICRWb3RlRGF0YS0+e1Jlc3VsdH0gfHwgMCApOwoKICAgICMgYWRkIHZvdGluZyBpbmZvcm1hdGlvbiB0byBGQVEgaXRlbQogICAgJERhdGF7Vm90ZVJlc3VsdH0gPSAkVm90ZVJlc3VsdDsKICAgICREYXRhe1ZvdGVzfSAgICAgID0gJFZvdGVEYXRhLT57Vm90ZXN9IHx8IDA7CgogICAgIyBjaGVjayBpZiBuZWVkIHRvIHJldHVybiBEeW5hbWljRmllbGRzCiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGRzfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIGR5bmFtaWMgZmllbGRzIGZvciB0aGUgb2JqZWN0IHR5cGUgRkFRCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0ZBUScKICAgICAgICApOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgICAgICMgdmFsaWRhdGUgZWFjaCBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30gKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBjdXJyZW50IHZhbHVlIGZvciBlYWNoIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgbXkgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgbmFtZSBhbmQgdmFsdWUgaW50byB0aGUgZGF0YSBoYXNoCiAgICAgICAgICAgICREYXRheyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVEYXRhOwp9CgpzdWIgSXRlbUZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIEl0ZW1JRCBGaWVsZCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgZm9yIHZhbGlkIGZpZWxkIG5hbWUKICAgIGlmICggJFBhcmFte0ZpZWxkfSAhfiBteyBcQSBGaWVsZCBbMS02XSBceiB9bXN4aSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkZpZWxkICckUGFyYW17RmllbGR9JyBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgY2FjaGUKICAgIG15ICRDYWNoZUtleSA9ICdJdGVtRmllbGRHZXQ6Okl0ZW1JRDo6JyAuICRQYXJhbXtJdGVtSUR9OwoKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIG15ICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBjYWNoZSBlbnRyeSBleGlzdHMgZm9yIHRoZSBnaXZlbiBGaWVsZAogICAgaWYgKCByZWYgJENhY2hlIGVxICdIQVNIJyAmJiBleGlzdHMgJENhY2hlLT57ICRQYXJhbXtGaWVsZH0gfSApIHsKCiAgICAgICAgcmV0dXJuICRDYWNoZS0+eyAkUGFyYW17RmllbGR9IH07CiAgICB9CgogICAgIyBjcmVhdGUgYSBmaWVsZCBsb29rdXAgdGFibGUKICAgIG15ICVGaWVsZExvb2t1cCA9ICgKICAgICAgICBGaWVsZDEgPT4gJ2ZfZmllbGQxJywKICAgICAgICBGaWVsZDIgPT4gJ2ZfZmllbGQyJywKICAgICAgICBGaWVsZDMgPT4gJ2ZfZmllbGQzJywKICAgICAgICBGaWVsZDQgPT4gJ2ZfZmllbGQ0JywKICAgICAgICBGaWVsZDUgPT4gJ2ZfZmllbGQ1JywKICAgICAgICBGaWVsZDYgPT4gJ2ZfZmllbGQ2JywKICAgICk7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgJyAuICRGaWVsZExvb2t1cHsgJFBhcmFte0ZpZWxkfSB9IC4gJwogICAgICAgICAgICBGUk9NIGZhcV9pdGVtCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkRmllbGQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRmllbGQgPSAkUm93WzBdIHx8ICcnOwogICAgfQoKICAgIGlmICggcmVmICRDYWNoZSBlcSAnSEFTSCcgKSB7CgogICAgICAgICMgQ2FjaGUgZmlsZSBmb3IgSXRlbUlEIGFscmVhZHkgZXhpc3RzLCBhZGQgZmllbGQgZGF0YS4KICAgICAgICAkQ2FjaGUtPnsgJFBhcmFte0ZpZWxkfSB9ID0gJEZpZWxkOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgQ3JlYXRlIG5ldyBjYWNoZSBmaWxlLgogICAgICAgICRDYWNoZSA9IHsKICAgICAgICAgICAgJFBhcmFte0ZpZWxkfSA9PiAkRmllbGQsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHNldCBjYWNoZQogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+ICRDYWNoZSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICk7CgogICAgcmV0dXJuICRGaWVsZDsKfQoKPWhlYWQyIEZBUUFkZCgpCgphZGQgYW4gYXJ0aWNsZQoKICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgTnVtYmVyICAgICAgPT4gJzEzNDAyJywgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMnLCAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1N5bXB0b20uLi4nLCAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1Byb2JsZW0uLi4nLCAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQzICAgICAgPT4gJ1NvbHV0aW9uLi4uJywgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQ0ICAgICAgPT4gJ0ZpZWxkNC4uLicsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQ1ICAgICAgPT4gJ0ZpZWxkNS4uLicsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmllbGQ2ICAgICAgPT4gJ0NvbW1lbnQuLi4nLCAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsICAgICAjIG9yICd0ZXh0L2h0bWwnCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRJdGVtSUQgPSAzNDsKCj1jdXQKCnN1YiBGQVFBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENhdGVnb3J5SUQgU3RhdGVJRCBMYW5ndWFnZUlEIFRpdGxlIFVzZXJJRCBDb250ZW50VHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlIGZvciBWYWxpZElECiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWxpZElEfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgICAgIG15IEBWYWxpZElEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpOwoKICAgICAgICAkUGFyYW17VmFsaWRJRH0gPSAkVmFsaWRJRHNbMF07CiAgICB9CgogICAgIyBjaGVjayBuYW1lCiAgICBpZiAoICEkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFBhcmFte05hbWV9ID0gdGltZSgpIC4gJy0nIC4gcmFuZCgxMDApOwogICAgfQoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgbnVtYmVyCiAgICBpZiAoICEkUGFyYW17TnVtYmVyfSApIHsKICAgICAgICAkUGFyYW17TnVtYmVyfSA9ICRDb25maWdPYmplY3QtPkdldCgnU3lzdGVtSUQnKSAuIHJhbmQoMTAwKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGFwcHJvdmFsIGZlYXR1cmUgaXMgdXNlZAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICkgewoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgICAgICBteSAlR3JvdXBzID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBhcHByb3ZhbCBncm91cAogICAgICAgIG15ICRBcHByb3ZhbEdyb3VwID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKTsKCiAgICAgICAgIyBzZXQgZGVmYXVsdCB0byAwIGlmIGFwcHJvdmVkIHBhcmFtIGlzIG5vdCBnaXZlbgogICAgICAgICMgb3IgaWYgdXNlciBkb2VzIG5vdCBoYXZlIHRoZSByaWdodHMgdG8gYXBwcm92ZQogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFte0FwcHJvdmVkfSB8fCAhJEdyb3Vwc3skQXBwcm92YWxHcm91cH0gKSB7CiAgICAgICAgICAgICRQYXJhbXtBcHByb3ZlZH0gPSAwOwogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIGFwcHJvdmFsIGZlYXR1cmUgaXMgbm90IGFjdGl2YXRlZCwgYSBuZXcgRkFRIGl0ZW0gaXMgYWx3YXlzIGFwcHJvdmVkCiAgICBlbHNlIHsKICAgICAgICAkUGFyYW17QXBwcm92ZWR9ID0gMTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBmYXFfaXRlbQogICAgICAgICAgICAgICAgKGZfbnVtYmVyLCBmX25hbWUsIGZfbGFuZ3VhZ2VfaWQsIGZfc3ViamVjdCwKICAgICAgICAgICAgICAgIGNhdGVnb3J5X2lkLCBzdGF0ZV9pZCwgZl9rZXl3b3JkcywgYXBwcm92ZWQsIHZhbGlkX2lkLCBjb250ZW50X3R5cGUsCiAgICAgICAgICAgICAgICBmX2ZpZWxkMSwgZl9maWVsZDIsIGZfZmllbGQzLCBmX2ZpZWxkNCwgZl9maWVsZDUsIGZfZmllbGQ2LAogICAgICAgICAgICAgICAgY3JlYXRlZCwgY3JlYXRlZF9ieSwgY2hhbmdlZCwgY2hhbmdlZF9ieSkKICAgICAgICAgICAgVkFMVUVTCiAgICAgICAgICAgICAgICAoPywgPywgPywgPywKICAgICAgICAgICAgICAgID8sID8sID8sID8sID8sID8sCiAgICAgICAgICAgICAgICA/LCA/LCA/LCA/LCA/LCA/LAogICAgICAgICAgICAgICAgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TnVtYmVyfSwgICAgIFwkUGFyYW17TmFtZX0sICAgIFwkUGFyYW17TGFuZ3VhZ2VJRH0sIFwkUGFyYW17VGl0bGV9LAogICAgICAgICAgICBcJFBhcmFte0NhdGVnb3J5SUR9LCBcJFBhcmFte1N0YXRlSUR9LCBcJFBhcmFte0tleXdvcmRzfSwgICBcJFBhcmFte0FwcHJvdmVkfSwKICAgICAgICAgICAgXCRQYXJhbXtWYWxpZElEfSwgICAgXCRQYXJhbXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQxfSwgXCRQYXJhbXtGaWVsZDJ9LCBcJFBhcmFte0ZpZWxkM30sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQ0fSwgXCRQYXJhbXtGaWVsZDV9LCBcJFBhcmFte0ZpZWxkNn0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgYnVpbGQgU1FMIHRvIGdldCB0aGUgaWQgb2YgdGhlIG5ld2x5IGluc2VydGVkIEZBUSBhcnRpY2xlCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBpZCBGUk9NIGZhcV9pdGVtCiAgICAgICAgV0hFUkUgZl9udW1iZXIgPSA/CiAgICAgICAgICAgIEFORCBmX25hbWUgPSA/CiAgICAgICAgICAgIEFORCBmX2xhbmd1YWdlX2lkID0gPwogICAgICAgICAgICBBTkQgY2F0ZWdvcnlfaWQgPSA/CiAgICAgICAgICAgIEFORCBzdGF0ZV9pZCA9ID8KICAgICAgICAgICAgQU5EIGFwcHJvdmVkID0gPwogICAgICAgICAgICBBTkQgdmFsaWRfaWQgPSA/CiAgICAgICAgICAgIEFORCBjcmVhdGVkX2J5ID0gPwogICAgICAgICAgICBBTkQgY2hhbmdlZF9ieSA9ID8nOwoKICAgICMgaGFuZGxlIHRoZSB0aXRsZQogICAgaWYgKCAkUGFyYW17VGl0bGV9ICkgewogICAgICAgICRTUUwgLj0gJwogICAgICAgICAgICBBTkQgZl9zdWJqZWN0ID0gPyAnOwogICAgfQoKICAgICMgYWRkaXRpb25hbCBTUUwgZm9yIHRoZSBjYXNlIHRoYXQgdGhlIHRpdGxlIGlzIGFuIGVtcHR5IHN0cmluZwogICAgIyBhbmQgdGhlIGRhdGFiYXNlIGlzIG9yYWNsZSwgd2hpY2ggdHJlYXRzIGVtcHR5IHN0cmluZ3MgYXMgTlVMTAogICAgZWxzZSB7CiAgICAgICAgJFNRTCAuPSAnCiAgICAgICAgICAgIEFORCAoKGZfc3ViamVjdCA9ID8pIE9SIChmX3N1YmplY3QgSVMgTlVMTCkpICc7CiAgICB9CgogICAgIyBoYW5kbGUgdGhlIGtleXdvcmRzCiAgICBpZiAoICRQYXJhbXtLZXl3b3Jkc30gKSB7CiAgICAgICAgJFNRTCAuPSAnCiAgICAgICAgICAgIEFORCBmX2tleXdvcmRzID0gPyAnOwogICAgfQoKICAgICMgYWRkaXRpb25hbCBTUUwgZm9yIHRoZSBjYXNlIHRoYXQga2V5d29yZHMgaXMgYW4gZW1wdHkgc3RyaW5nCiAgICAjIGFuZCB0aGUgZGF0YWJhc2UgaXMgb3JhY2xlLCB3aGljaCB0cmVhdHMgZW1wdHkgc3RyaW5ncyBhcyBOVUxMCiAgICBlbHNlIHsKICAgICAgICAkU1FMIC49ICcKICAgICAgICAgICAgQU5EICgoZl9rZXl3b3JkcyA9ID8pIE9SIChmX2tleXdvcmRzIElTIE5VTEwpKSAnOwogICAgfQogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgaWQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJFNRTCwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOdW1iZXJ9LAogICAgICAgICAgICBcJFBhcmFte05hbWV9LAogICAgICAgICAgICBcJFBhcmFte0xhbmd1YWdlSUR9LAogICAgICAgICAgICBcJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBcJFBhcmFte1N0YXRlSUR9LAogICAgICAgICAgICBcJFBhcmFte0FwcHJvdmVkfSwKICAgICAgICAgICAgXCRQYXJhbXtWYWxpZElEfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VGl0bGV9LAogICAgICAgICAgICBcJFBhcmFte0tleXdvcmRzfSwKICAgICAgICBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyB1cGRhdGUgbnVtYmVyCiAgICBteSAkTnVtYmVyID0gJENvbmZpZ09iamVjdC0+R2V0KCdTeXN0ZW1JRCcpIC4gJzAwJyAuICRJRDsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnVVBEQVRFIGZhcV9pdGVtIFNFVCBmX251bWJlciA9ID8gV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCROdW1iZXIsIFwkSUQgXSwKICAgICk7CgogICAgIyBhZGQgaGlzdG9yeQogICAgJFNlbGYtPkZBUUhpc3RvcnlBZGQoCiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkJywKICAgICAgICBJdGVtSUQgPT4gJElELAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBpZiBhcHByb3ZhbCBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnKSAmJiAhJFBhcmFte0FwcHJvdmVkfSApIHsKCiAgICAgICAgIyBjcmVhdGUgbmV3IGFwcHJvdmFsIHRpY2tldAogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPl9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSUQsCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFBhcmFte0NhdGVnb3J5SUR9LAogICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgRkFRTnVtYmVyICA9PiAkTnVtYmVyLAogICAgICAgICAgICBUaXRsZSAgICAgID0+ICRQYXJhbXtUaXRsZX0sCiAgICAgICAgICAgIFN0YXRlSUQgICAgPT4gJFBhcmFte1N0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IGNyZWF0ZSBhcHByb3ZhbCB0aWNrZXQhJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDbGVhbnVwIHRoZSBjYWNoZSBmb3IgJ0ZBUUtleXdvcmRBcnRpY2xlTGlzdCcgYW5kIHRoZSBydW50aW1lIGNhY2hlLgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRkFRS2V5d29yZEFydGljbGVMaXN0JywKICAgICk7CgogICAgIyBDbGVhbnVwIHRoZSBydW50aW1lIGNhY2hlIGZyb20gdGhlIEZBUS9DYXRlZ29yeS5wbS4KICAgIGRlbGV0ZSAkU2VsZi0+e0NhY2hlfTsKCiAgICByZXR1cm4gJElEOwp9Cgo9aGVhZDIgRkFRVXBkYXRlKCkKCnVwZGF0ZSBhbiBhcnRpY2xlCgogICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICAgICBJdGVtSUQgICAgICA9PiAxMjMsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYW4nLCAgICAgIyBvciAndGV4dC9odG1sJwogICAgICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQnLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQXBwcm92YWxPZmYgPT4gMSwgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCAoaWYgc2V0IHRvIDEgYXBwcm92YWwgaXMgaWdub3JlZC4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGltcG9ydGFudCB3aGVuIGNhbGxlZCBmcm9tIEZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUpCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDEgOyAgICAgICAgICAjIG9yIHVuZGVmIGlmIGNhbid0IHVwZGF0ZSB0aGUgRkFRIGFydGljbGUKCj1jdXQKCnN1YiBGQVFVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgQ2F0ZWdvcnlJRCBTdGF0ZUlEIExhbmd1YWdlSUQgVGl0bGUgVXNlcklEIENvbnRlbnRUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZBUURhdGEgPSAkU2VsZi0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgaWYgbm8gbmFtZSB3YXMgZ2l2ZW4gdXNlIG9sZCBuYW1lIGZyb20gRkFRCiAgICBpZiAoICEkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFBhcmFte05hbWV9ID0gJEZBUURhdGF7TmFtZX07CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgVmFsaWRJRAogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsaWRJRH0gKSB7CiAgICAgICAgJFBhcmFte1ZhbGlkSUR9ID0gJEZBUURhdGF7VmFsaWRJRH07CiAgICB9CgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIGZhcV9pdGVtIFNFVAogICAgICAgICAgICAgICAgZl9uYW1lID0gPywgZl9sYW5ndWFnZV9pZCA9ID8sIGZfc3ViamVjdCA9ID8sIGNhdGVnb3J5X2lkID0gPywKICAgICAgICAgICAgICAgIHN0YXRlX2lkID0gPywgZl9rZXl3b3JkcyA9ID8sIHZhbGlkX2lkID0gPywgY29udGVudF90eXBlID0gPywKICAgICAgICAgICAgICAgIGZfZmllbGQxID0gPywgZl9maWVsZDIgPSA/LAogICAgICAgICAgICAgICAgZl9maWVsZDMgPSA/LCBmX2ZpZWxkNCA9ID8sCiAgICAgICAgICAgICAgICBmX2ZpZWxkNSA9ID8sIGZfZmllbGQ2ID0gPywKICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZWRfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sICAgIFwkUGFyYW17TGFuZ3VhZ2VJRH0sIFwkUGFyYW17VGl0bGV9LCAgIFwkUGFyYW17Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIFwkUGFyYW17U3RhdGVJRH0sIFwkUGFyYW17S2V5d29yZHN9LCAgIFwkUGFyYW17VmFsaWRJRH0sIFwkUGFyYW17Q29udGVudFR5cGV9LAogICAgICAgICAgICBcJFBhcmFte0ZpZWxkMX0sICBcJFBhcmFte0ZpZWxkMn0sCiAgICAgICAgICAgIFwkUGFyYW17RmllbGQzfSwgIFwkUGFyYW17RmllbGQ0fSwKICAgICAgICAgICAgXCRQYXJhbXtGaWVsZDV9LCAgXCRQYXJhbXtGaWVsZDZ9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SXRlbUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJFNlbGYtPl9EZWxldGVGcm9tRkFRQ2FjaGUoJVBhcmFtKTsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHVwZGF0ZSBhcHByb3ZhbAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxSZXF1aXJlZCcpICYmICEkUGFyYW17QXBwcm92YWxPZmZ9ICkgewoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgICAgICBteSAlR3JvdXBzID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBhcHByb3ZhbCBncm91cAogICAgICAgIG15ICRBcHByb3ZhbEdyb3VwID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsR3JvdXAnKTsKCiAgICAgICAgIyBzZXQgYXBwcm92YWwgdG8gMCBpZiB1c2VyIGRvZXMgbm90IGhhdmUgdGhlIHJpZ2h0cyB0byBhcHByb3ZlCiAgICAgICAgaWYgKCAhJEdyb3Vwc3skQXBwcm92YWxHcm91cH0gKSB7CiAgICAgICAgICAgICRQYXJhbXtBcHByb3ZlZH0gPSAwOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdGhlIGFwcHJvdmFsCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkU2VsZi0+X0ZBUUFwcHJvdmFsVXBkYXRlKAogICAgICAgICAgICBJdGVtSUQgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgQXBwcm92ZWQgPT4gJFBhcmFte0FwcHJvdmVkfSB8fCAwLAogICAgICAgICAgICBVc2VySUQgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSBhcHByb3ZhbCBmb3IgSXRlbUlEICRQYXJhbXtJdGVtSUR9ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBjYWNoZQogICAgICAgICRTZWxmLT5fRGVsZXRlRnJvbUZBUUNhY2hlKCVQYXJhbSk7CiAgICB9CgogICAgIyBjaGVjayBpZiBoaXN0b3J5IGVudHJ5IHNob3VsZCBiZSBhZGRlZAogICAgcmV0dXJuIDEgaWYgJFBhcmFte0hpc3RvcnlPZmZ9OwoKICAgICMgd3JpdGUgaGlzdG9yeSBlbnRyeQogICAgJFNlbGYtPkZBUUhpc3RvcnlBZGQoCiAgICAgICAgTmFtZSAgID0+ICdVcGRhdGVkJywKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEF0dGFjaG1lbnRBZGQoKQoKYWRkIGFydGljbGUgYXR0YWNobWVudHMsIHJldHVybnMgdGhlIGF0dGFjaG1lbnQgaWQKCiAgICBteSAkQXR0YWNobWVudElEID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICBJdGVtSUQgICAgICA9PiAxMjMsCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICBGaWxlbmFtZSAgICA9PiAnc29tZW5hbWUueG1sJywKICAgICAgICBJbmxpbmUgICAgICA9PiAxLCAgICgwfDEsIGRlZmF1bHQgMCkKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEF0dGFjaG1lbnRJRCA9IDEyMyA7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYW4ndCBhZGQgdGhlIGF0dGFjaG1lbnQKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSXRlbUlEIENvbnRlbnQgQ29udGVudFR5cGUgRmlsZW5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdAogICAgaWYgKCAhJFBhcmFte0lubGluZX0gKSB7CiAgICAgICAgJFBhcmFte0lubGluZX0gPSAwOwogICAgfQoKICAgICMgZ2V0IGF0dGFjaG1lbnQgc2l6ZQogICAgewogICAgICAgIHVzZSBieXRlczsKICAgICAgICAkUGFyYW17RmlsZXNpemV9ID0gbGVuZ3RoICRQYXJhbXtDb250ZW50fTsKICAgICAgICBubyBieXRlczsKICAgIH0KCiAgICAjIGdldCBhbGwgZXhpc3RpbmcgYXR0YWNobWVudHMKICAgIG15IEBJbmRleCA9ICRTZWxmLT5BdHRhY2htZW50SW5kZXgoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgdGhlIGZpbGVuYW1lCiAgICBteSAkTmV3RmlsZU5hbWUgPSAkUGFyYW17RmlsZW5hbWV9OwoKICAgICMgYnVpbGQgYSBsb29rdXAgaGFzaCBvZiBhbGwgZXhpc3RpbmcgZmlsZSBuYW1lcwogICAgbXkgJVVzZWRGaWxlOwogICAgZm9yIG15ICRGaWxlIChASW5kZXgpIHsKICAgICAgICAkVXNlZEZpbGV7ICRGaWxlLT57RmlsZW5hbWV9IH0gPSAxOwogICAgfQoKICAgICMgdHJ5IHRvIG1vZGlmeSB0aGUgdGhlIGZpbGUgbmFtZSBieSBhZGRpbmcgYSBudW1iZXIgaWYgaXQgZXhpc3RzIGFscmVhZHkKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoICRDb3VudCA8IDUwICkgewoKICAgICAgICAjIGluY3JlYXNlIGNvdW50ZXIKICAgICAgICAkQ291bnQrKzsKCiAgICAgICAgIyBpZiB0aGUgZmlsZSBuYW1lIGV4aXN0cwogICAgICAgIGlmICggZXhpc3RzICRVc2VkRmlsZXskTmV3RmlsZU5hbWV9ICkgewoKICAgICAgICAgICAgIyBmaWxlbmFtZSBoYXMgYSBmaWxlIG5hbWUgZXh0ZW5zaW9uIChlLmcuIHRlc3QuanBnKQogICAgICAgICAgICBpZiAoICRQYXJhbXtGaWxlbmFtZX0gPX4gbXsgXEEgKC4qKSBcLiAoLis/KSBceiB9eG1zICkgewogICAgICAgICAgICAgICAgJE5ld0ZpbGVOYW1lID0gIiQxLSRDb3VudC4kMiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTmV3RmlsZU5hbWUgPSAiJFBhcmFte0ZpbGVuYW1lfS0kQ291bnQiOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc3RvcmUgdGhlIG5ldyBmaWxlbmFtZQogICAgJFBhcmFte0ZpbGVuYW1lfSA9ICROZXdGaWxlTmFtZTsKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZW5jb2RlIGF0dGFjaG1lbnQgaWYgaXQncyBhIHBvc3RncmVzcWwgYmFja2VuZCEhIQogICAgaWYgKCAhJERCT2JqZWN0LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKS0+RW5jb2RlT3V0cHV0KCBcJFBhcmFte0NvbnRlbnR9ICk7CgogICAgICAgICRQYXJhbXtDb250ZW50fSA9IE1JTUU6OkJhc2U2NDo6ZW5jb2RlX2Jhc2U2NCggJFBhcmFte0NvbnRlbnR9ICk7CiAgICB9CgogICAgIyB3cml0ZSBhdHRhY2htZW50IHRvIGRiCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBmYXFfYXR0YWNobWVudCAnIC4KICAgICAgICAgICAgJyAoZmFxX2lkLCBmaWxlbmFtZSwgY29udGVudF90eXBlLCBjb250ZW50X3NpemUsIGNvbnRlbnQsIGlubGluZWF0dGFjaG1lbnQsICcgLgogICAgICAgICAgICAnIGNyZWF0ZWQsIGNyZWF0ZWRfYnksIGNoYW5nZWQsIGNoYW5nZWRfYnkpIFZBTFVFUyAnIC4KICAgICAgICAgICAgJyAoPywgPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17SXRlbUlEfSwgIFwkUGFyYW17RmlsZW5hbWV9LCBcJFBhcmFte0NvbnRlbnRUeXBlfSwgXCRQYXJhbXtGaWxlc2l6ZX0sCiAgICAgICAgICAgIFwkUGFyYW17Q29udGVudH0sIFwkUGFyYW17SW5saW5lfSwgICBcJFBhcmFte1VzZXJJRH0sICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBhdHRhY2htZW50IGlkCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCAnCiAgICAgICAgICAgIC4gJ0ZST00gZmFxX2F0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdXSEVSRSBmYXFfaWQgPSA/IEFORCBmaWxlbmFtZSA9ID8gJwogICAgICAgICAgICAuICdBTkQgY29udGVudF90eXBlID0gPyBBTkQgY29udGVudF9zaXplID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBpbmxpbmVhdHRhY2htZW50ID0gPyAnCiAgICAgICAgICAgIC4gJ0FORCBjcmVhdGVkX2J5ID0gPyBBTkQgY2hhbmdlZF9ieSA9ID8nLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte0l0ZW1JRH0sIFwkUGFyYW17RmlsZW5hbWV9LCBcJFBhcmFte0NvbnRlbnRUeXBlfSwgXCRQYXJhbXtGaWxlc2l6ZX0sCiAgICAgICAgICAgIFwkUGFyYW17SW5saW5lfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEF0dGFjaG1lbnRJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRBdHRhY2htZW50SUQ7Cn0KCj1oZWFkMiBBdHRhY2htZW50R2V0KCkKCmdldCBhdHRhY2htZW50IG9mIGFydGljbGUKCiAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgSXRlbUlEID0+IDEyMywKICAgICAgICBGaWxlSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVGaWxlID0gKAogICAgICAgIEZpbGVzaXplICAgID0+ICc1NDAyODYnLCAgICAgICAgICAgICAgICAjIGZpbGUgc2l6ZSBpbiBieXRlcwogICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICBGaWxlbmFtZSAgICA9PiAnRXJyb3IuanBnJywKICAgICAgICBDb250ZW50ICAgICA9PiAnLi4uJyAgICAgICAgICAgICAgICAgICAgIyBmaWxlIGJpbmFyeSBjb250ZW50CiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgRmlsZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgZmlsZW5hbWUsIGNvbnRlbnRfdHlwZSwgY29udGVudF9zaXplLCBjb250ZW50ICcKICAgICAgICAgICAgLiAnRlJPTSBmYXFfYXR0YWNobWVudCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPyBBTkQgZmFxX2lkID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIGNyZWF0ZWQnLAogICAgICAgIEJpbmQgICA9PiBbIFwkUGFyYW17RmlsZUlEfSwgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICAgICAgRW5jb2RlID0+IFsgMSwgMSwgMSwgMCBdLAogICAgICAgIExpbWl0ICA9PiAxLAogICAgKTsKCiAgICBteSAlRmlsZTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAjIGRlY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQgYW5kIG5vdCBCTE9CCiAgICAgICAgaWYgKCAhJERCT2JqZWN0LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CiAgICAgICAgICAgICRSb3dbM10gPSBNSU1FOjpCYXNlNjQ6OmRlY29kZV9iYXNlNjQoICRSb3dbM10gKTsKICAgICAgICB9CgogICAgICAgICRGaWxle0ZpbGVuYW1lfSAgICA9ICRSb3dbMF07CiAgICAgICAgJEZpbGV7Q29udGVudFR5cGV9ID0gJFJvd1sxXTsKICAgICAgICAkRmlsZXtGaWxlc2l6ZX0gICAgPSAkUm93WzJdOwogICAgICAgICRGaWxle0NvbnRlbnR9ICAgICA9ICRSb3dbM107CiAgICB9CgogICAgcmV0dXJuICVGaWxlOwp9Cgo9aGVhZDIgQXR0YWNobWVudERlbGV0ZSgpCgpkZWxldGUgYXR0YWNobWVudCBvZiBhcnRpY2xlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5BdHRhY2htZW50RGVsZXRlKAogICAgICAgIEl0ZW1JRCA9PiAxMjMsCiAgICAgICAgRmlsZUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDEgOyAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBhdHRhY2htZW50IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBGaWxlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmYXFfYXR0YWNobWVudCBXSEVSRSBpZCA9ID8gQU5EIGZhcV9pZCA9ID8gJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtGaWxlSUR9LCBcJFBhcmFte0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBBdHRhY2htZW50SW5kZXgoKQoKcmV0dXJuIGFuIGF0dGFjaG1lbnQgaW5kZXggb2YgYW4gYXJ0aWNsZQoKICAgIG15IEBJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgICAgID0+IDEyMywKICAgICAgICBTaG93SW5saW5lID0+IDAsICAgKCAwfDEsIGRlZmF1bHQgMSkKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBASW5kZXggPSAoCiAgICAgICAgewogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAnNTI3LjYgS0J5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnRXJyb3IuanBnJywKICAgICAgICAgICAgRmlsZXNpemVSYXcgPT4gNTQwMjg2LAogICAgICAgICAgICBGaWxlSUQgICAgICA9PiA2LAogICAgICAgICAgICBJbmxpbmUgICAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgeywKICAgICAgICAgICAgRmlsZXNpemUgPT4gJzQzMC4wIEtCeXRlcycsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ1NvbHV0aW9uLmpwZycsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDQ0MDI4NiwKICAgICAgICAgICAgRmlsZUlEID0+IDUsCiAgICAgICAgICAgIElubGluZSA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBGaWxlc2l6ZSA9PiAnMjk2IEJ5dGVzJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnQWRkaXRpb25hbENvbW1lbnRzLnR4dCcsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+IDI5NiwKICAgICAgICAgICAgRmlsZUlEID0+IDcsCiAgICAgICAgICAgIElubGluZSA9PiAwLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRJbmRleCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBmaWxlbmFtZSwgY29udGVudF90eXBlLCBjb250ZW50X3NpemUsIGlubGluZWF0dGFjaG1lbnQgJwogICAgICAgICAgICAuICdGUk9NIGZhcV9hdHRhY2htZW50ICcKICAgICAgICAgICAgLiAnV0hFUkUgZmFxX2lkID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIGZpbGVuYW1lJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEwMCwKICAgICk7CgogICAgbXkgQEluZGV4OwogICAgQVRUQUNITUVOVDoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICBteSAkSUQgICAgICAgICAgPSAkUm93WzBdOwogICAgICAgIG15ICRGaWxlbmFtZSAgICA9ICRSb3dbMV07CiAgICAgICAgbXkgJENvbnRlbnRUeXBlID0gJFJvd1syXTsKICAgICAgICBteSAkRmlsZXNpemUgICAgPSAkUm93WzNdOwogICAgICAgIG15ICRJbmxpbmUgICAgICA9ICRSb3dbNF07CgogICAgICAgICMgZG8gbm90IHNob3cgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTaG93SW5saW5lfSAmJiAhJFBhcmFte1Nob3dJbmxpbmV9ICYmICRJbmxpbmUgKSB7CiAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVDsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCB0byBodW1hbiByZWFkYWJsZSBmaWxlIHNpemUKICAgICAgICBteSAkRmlsZVNpemVSYXcgPSAkRmlsZXNpemU7CiAgICAgICAgaWYgKCRGaWxlc2l6ZSkgewogICAgICAgICAgICBpZiAoICRGaWxlc2l6ZSA+ICggMTAyNCAqIDEwMjQgKSApIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZXNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRGaWxlc2l6ZSA+IDEwMjQgKSB7CiAgICAgICAgICAgICAgICAkRmlsZXNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggKCAkRmlsZXNpemUgLyAxMDI0ICkgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRGaWxlc2l6ZSA9ICRGaWxlc2l6ZSAuICcgQnl0ZXMnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBJbmRleCwgewogICAgICAgICAgICBGaWxlSUQgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENvbnRlbnRUeXBlLAogICAgICAgICAgICBGaWxlc2l6ZSAgICA9PiAkRmlsZXNpemUsCiAgICAgICAgICAgIEZpbGVzaXplUmF3ID0+ICRGaWxlU2l6ZVJhdywKICAgICAgICAgICAgSW5saW5lICAgICAgPT4gJElubGluZSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBASW5kZXg7Cn0KCj1oZWFkMiBGQVFDb3VudCgpCgpDb3VudCB0aGUgbnVtYmVyIG9mIGFydGljbGVzIGZvciBhIGRlZmluZWQgY2F0ZWdvcnkuIE9ubHkgdmFsaWQgRkFRIGFydGljbGVzIHdpbGwgYmUgY291bnRlZC4KCiAgICBteSAkQXJ0aWNsZUNvdW50ID0gJEZBUU9iamVjdC0+RkFRQ291bnQoCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWzEsMiwzLDRdLAogICAgICAgIEl0ZW1TdGF0ZXMgPT4gIHsKICAgICAgICAgICAgMSA9PiAnaW50ZXJuYWwnLAogICAgICAgICAgICAyID0+ICdleHRlcm5hbCcsCiAgICAgICAgICAgIDMgPT4gJ3B1YmxpYycsCiAgICAgICAgfSwKICAgICAgICBPbmx5QXBwcm92ZWQgPT4gMSwgICAjIG9wdGlvbmFsIChkZWZhdWx0IDApCiAgICAgICAgVmFsaWQgICAgICAgID0+IDEsICAgIyBvcHRpb25hbCAoZGVmYXVsdCAwKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEFydGljbGVDb3VudCA9IDM7Cgo9Y3V0CgpzdWIgRkFRQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeUlEcyBJdGVtU3RhdGVzIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZQogICAgbXkgJFZhbGlkICAgID0gJFBhcmFte1ZhbGlkfSA/IDEgOiAwOwogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgbXkgJENhdGVnb3J5SURTdHJpbmcgPSAnJzsKICAgIGlmICggJFBhcmFte0NhdGVnb3J5SURzfSAmJiByZWYgJFBhcmFte0NhdGVnb3J5SURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfSApIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBjYXRlZ29yeSBpZHMKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJERCT2JqZWN0LT5RdW90ZSggJENhdGVnb3J5SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFNvcnRlZElEcyA9IHNvcnQgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9OwoKICAgICAgICAjIHNwbGl0IElOIHN0YXRlbWVudCB3aXRoIG1vcmUgdGhhbiA5MDAgZWxlbWVudHMgaW4gbW9yZSBzdGF0ZW1lbnRzIGNvbWJpbmVkIHdpdGggT1IKICAgICAgICAjIGJlY2F1c2UgT3JhY2xlIGRvZXNuJ3Qgc3VwcG9ydCBtb3JlIHRoYW4gMTAwMCBlbGVtZW50cyBpbiBvbmUgSU4gc3RhdGVtZW50LgogICAgICAgIG15IEBTUUxTdHJpbmdzOwogICAgICAgIExPT1A6CiAgICAgICAgd2hpbGUgKCBzY2FsYXIgQFNvcnRlZElEcyApIHsKCiAgICAgICAgICAgIG15IEBTb3J0ZWRJRHNQYXJ0ID0gc3BsaWNlIEBTb3J0ZWRJRHMsIDAsIDkwMDsKCiAgICAgICAgICAgIG15ICRJRFN0cmluZyA9IGpvaW4gJywnLCBAU29ydGVkSURzUGFydDsKCiAgICAgICAgICAgIHB1c2ggQFNRTFN0cmluZ3MsICIgaS5jYXRlZ29yeV9pZCBJTiAoJElEU3RyaW5nKSAiOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNRTFN0cmluZyA9IGpvaW4gJyBPUiAnLCBAU1FMU3RyaW5nczsKCiAgICAgICAgJENhdGVnb3J5SURTdHJpbmcgLj0gJ0FORCAoICcgLiAkU1FMU3RyaW5nIC4gJyApICc7CiAgICB9CgogICAgIyBidWlsZCB2YWxpZCBpZCBzdHJpbmcKICAgIG15ICRWYWxpZElEc1N0cmluZzsKICAgIGlmICgkVmFsaWQpIHsKICAgICAgICAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoKTsKICAgICAgICAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsIGtleXMgJVZhbGlkTGlzdDsKICAgIH0KCiAgICBteSAkU1FMID0gJ1NFTEVDVCBDT1VOVCgqKSAnCiAgICAgICAgLiAnRlJPTSBmYXFfaXRlbSBpLCBmYXFfc3RhdGUgcyAnCiAgICAgICAgLiAnV0hFUkUgaS5zdGF0ZV9pZCA9IHMuaWQgJwogICAgICAgIC4gIkFORCBpLnZhbGlkX2lkIElOICgkVmFsaWRJRHNTdHJpbmcpICIKICAgICAgICAuICRDYXRlZ29yeUlEU3RyaW5nOwoKICAgICMgY291bnQgb25seSBhcHByb3ZlZCBhcnRpY2xlcwogICAgaWYgKCAkUGFyYW17T25seUFwcHJvdmVkfSApIHsKICAgICAgICAkU1FMIC49ICcgQU5EIGkuYXBwcm92ZWQgPSAxJzsKICAgIH0KCiAgICBteSAkRXh0ID0gJyc7CiAgICBpZiAoICRQYXJhbXtJdGVtU3RhdGVzfSAmJiByZWYgJFBhcmFte0l0ZW1TdGF0ZXN9IGVxICdIQVNIJyAmJiAleyAkUGFyYW17SXRlbVN0YXRlc30gfSApIHsKICAgICAgICBteSAkU3RhdGVzU3RyaW5nID0gam9pbiAnLCAnLCBrZXlzICV7ICRQYXJhbXtJdGVtU3RhdGVzfSB9OwogICAgICAgICRFeHQgLj0gIiBBTkQgcy50eXBlX2lkIElOICgkU3RhdGVzU3RyaW5nICkiOwogICAgfQogICAgJEV4dCAuPSAnIEdST1VQIEJZIGNhdGVnb3J5X2lkJzsKICAgICRTUUwgLj0gJEV4dDsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDIwMCwKICAgICk7CgogICAgbXkgJENvdW50ID0gMDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDb3VudCArPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkQ291bnQ7Cn0KCj1oZWFkMiBGQVFEZWxldGUoKQoKRGVsZXRlIGFuIGFydGljbGUuCgogICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgSXRlbUlEID0+IDEsCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVTdWNjZXNzID0gMTsgICAgICAgICAgICAgICMgb3IgdW5kZWYgaWYgYXJ0aWNsZSBjb3VsZCBub3QgYmUgZGVsZXRlZAoKPWN1dAoKc3ViIEZBUURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBhdHRhY2htZW50cwogICAgbXkgQEluZGV4ID0gJFNlbGYtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKICAgIGZvciBteSAkRmlsZUlEIChASW5kZXgpIHsKICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRTZWxmLT5BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEZpbGVJRCA9PiAkRmlsZUlELT57RmlsZUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJERlbGV0ZVN1Y2Nlc3M7CiAgICB9CgogICAgIyBkZWxldGUgdm90ZXMKICAgIG15ICRWb3RlSURzUmVmID0gJFNlbGYtPlZvdGVTZWFyY2goCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICBmb3IgbXkgJFZvdGVJRCAoIEB7JFZvdGVJRHNSZWZ9ICkgewogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJFNlbGYtPlZvdGVEZWxldGUoCiAgICAgICAgICAgIFZvdGVJRCA9PiAkVm90ZUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIGlmICEkRGVsZXRlU3VjY2VzczsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgRkFRIGxpbmtzIG9mIHRoaXMgRkFRIGFydGljbGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtEZWxldGVBbGwoCiAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgIEtleSAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZGVsZXRlIGhpc3RvcnkKICAgIHJldHVybiBpZiAhJFNlbGYtPkZBUUhpc3RvcnlEZWxldGUoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgYXJ0aWNsZQogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZmFxX2l0ZW0gV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICApOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICAkU2VsZi0+X0RlbGV0ZUZyb21GQVFDYWNoZSglUGFyYW0pOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRkFRSGlzdG9yeUFkZCgpCgphZGQgYW4gaGlzdG9yeSB0byBhbiBhcnRpY2xlCgogICAgbXkgJEFkZFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFIaXN0b3J5QWRkKAogICAgICAgIEl0ZW1JRCA9PiAxLAogICAgICAgIE5hbWUgICA9PiAnVXBkYXRlZCBBcnRpY2xlLicsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkQWRkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBhcnRpY2xlIGhpc3RvcnkgY291bGQgbm90IGJlIGFkZGVkCgo9Y3V0CgpzdWIgRkFRSGlzdG9yeUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gZmFxX2hpc3RvcnkgKG5hbWUsIGl0ZW1faWQsICcgLgogICAgICAgICAgICAnIGNyZWF0ZWQsIGNyZWF0ZWRfYnksIGNoYW5nZWQsIGNoYW5nZWRfYnkpJyAuCiAgICAgICAgICAgICcgVkFMVUVTICggPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17TmFtZX0sIFwkUGFyYW17SXRlbUlEfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBGQVFIaXN0b3J5R2V0KCkKCmdldCBhbiBhcnJheSB3aXRoIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlIGhpc3Rvcnkgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICRIaXN0b3J5RGF0YUFycmF5UmVmID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeUdldCgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRIaXN0b3J5RGF0YUFycmF5UmVmID0gWwogICAgICAgIHsKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+IDEsCiAgICAgICAgICAgIENyZWF0ZWQgICA9PiAnMjAxMC0xMS0wMiAwNzo0NToxNScsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnQ3JlYXRlZCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIENyZWF0ZWRCeSA9PiAxLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJzIwMTEtMDYtMTQgMTI6NTM6NTUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ1VwZGF0ZWQnLAogICAgICAgIH0sCiAgICBdOwoKPWN1dAoKc3ViIEZBUUhpc3RvcnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIG5hbWUsIGNyZWF0ZWQsIGNyZWF0ZWRfYnkKICAgICAgICAgICAgRlJPTSBmYXFfaGlzdG9yeQogICAgICAgICAgICBXSEVSRSBpdGVtX2lkID0gPwogICAgICAgICAgICBPUkRFUiBCWSBjcmVhdGVkLCBpZCcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SXRlbUlEfSBdLAogICAgKTsKCiAgICBteSBARGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVSZWNvcmQgPSAoCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRSb3dbMl0sCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBEYXRhLCBcJVJlY29yZDsKICAgIH0KCiAgICByZXR1cm4gXEBEYXRhOwp9Cgo9aGVhZDIgRkFRSGlzdG9yeURlbGV0ZSgpCgpkZWxldGUgdGhlIGhpc3Rvcnkgb2YgYW4gYXJ0aWNsZQoKICAgIG15ICREZWxldGVTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSGlzdG9yeURlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gMSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWxldGVEdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBoaXN0b3J5IGNvdWxkIG5vdCBiZSBkZWxldGVkCgo9Y3V0CgpzdWIgRkFRSGlzdG9yeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEl0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGZhcV9oaXN0b3J5IFdIRVJFIGl0ZW1faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJdGVtSUR9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRkFRSm91cm5hbEdldCgpCgpnZXQgdGhlIHN5c3RlbSBqb3VybmFsCgogICAgbXkgJEhpc3RvcnlEYXRhQXJyYXlSZWYgPSAkRkFRT2JqZWN0LT5GQVFKb3VybmFsR2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJEpvdXJuYWxEYXRhQXJyYXlSZWYgPSBbCiAgICAgICAgewogICAgICAgICAgICBJdGVtSUQgICAgPT4gJzMyJywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJ05ldyBBcnRpY2xlJywKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdDcmVhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjUzOjUwJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSXRlbUlEICAgID0+ICc0JywKICAgICAgICAgICAgTnVtYmVyICAgID0+ICcxMDAwNCcsCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAnTXkgQ2F0ZWdvcnknLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gIk5ldyBBcnRpY2xlIiwKICAgICAgICAgICAgQWN0aW9uICAgID0+ICdVcGRhdGVkJywKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICcxJywKICAgICAgICAgICAgQ3JlYXRlZCAgID0+ICcyMDExLTAxLTA1IDIxOjU1OjMyJywKICAgICAgICB9CiAgICBdOwoKPWN1dAoKc3ViIEZBUUpvdXJuYWxHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICBteSAlR3JvdXBzICAgICAgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Vc2VyR2V0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICk7CgogICAgcmV0dXJuIGlmICElR3JvdXBzOwoKICAgIG15IEBHcm91cElEcyAgICAgICAgICA9IGtleXMgJUdyb3VwczsKICAgIG15ICRHcm91cFBsYWNlaG9sZGVycyA9IGpvaW4gJywgJywgKCc/JykgeCBAR3JvdXBJRHM7CiAgICBteSBAR3JvdXBCaW5kICAgICAgICAgPSBtYXAgeyBcJF8gfSBAR3JvdXBJRHM7CgogICAgbXkgJENhdGVnb3J5U1FMID0KICAgICAgICAiU0VMRUNUIGcuY2F0ZWdvcnlfaWQKICAgICAgICBGUk9NIGZhcV9jYXRlZ29yeV9ncm91cCBnCiAgICAgICAgV0hFUkUgZy5ncm91cF9pZCBJTiAoICRHcm91cFBsYWNlaG9sZGVycyApIjsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJENhdGVnb3J5U1FMLAogICAgICAgIEJpbmQgPT4gXEBHcm91cEJpbmQsCiAgICApOwoKICAgIG15IEBDYXRlZ29yeUlEczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENhdGVnb3J5SURzLCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhQENhdGVnb3J5SURzOwoKICAgIG15IEBCaW5kICAgICAgICAgICAgICAgICA9IG1hcCB7IFwkXyB9IEBDYXRlZ29yeUlEczsKICAgIG15ICRDYXRlZ29yeVBsYWNlaG9sZGVycyA9IGpvaW4gJywgJywgKCc/JykgeCBAQ2F0ZWdvcnlJRHM7CgogICAgIyBidWlsZCBTUUwgcXVlcnkKICAgIG15ICRTUUwgPQogICAgICAgICJTRUxFQ1QgaS5pZCwgaC5uYW1lLCBoLmNyZWF0ZWQsIGguY3JlYXRlZF9ieSwgYy5uYW1lLCBpLmZfc3ViamVjdCwgaS5mX251bWJlcgogICAgICAgIEZST00gZmFxX2l0ZW0gaQogICAgICAgICAgICBJTk5FUiBKT0lOIGZhcV9zdGF0ZSBzIE9OIHMuaWQgPSBpLnN0YXRlX2lkCiAgICAgICAgICAgIElOTkVSIEpPSU4gZmFxX2hpc3RvcnkgaCBPTiBoLml0ZW1faWQgPSBpLmlkCiAgICAgICAgICAgIElOTkVSIEpPSU4gZmFxX2NhdGVnb3J5IGMgT04gYy5pZCA9IGkuY2F0ZWdvcnlfaWQKICAgICAgICBXSEVSRSBjLmlkIElOICgkQ2F0ZWdvcnlQbGFjZWhvbGRlcnMpIjsKCiAgICAjIGFkZCBzdGF0ZXMgY29uZGl0aW9uCiAgICBpZiAoICRQYXJhbXtTdGF0ZXN9ICYmIHJlZiAkUGFyYW17U3RhdGVzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtTdGF0ZXN9IH0gKSB7CiAgICAgICAgcHVzaCBAQmluZCwgbWFwIHsgXCRfIH0gQHsgJFBhcmFte1N0YXRlc30gfTsKICAgICAgICBteSAkU3RhdGVzU3RyaW5nID0gam9pbiAnLCAnLCAoJz8nKSB4IEB7ICRQYXJhbXtTdGF0ZXN9IH07CiAgICAgICAgJFNRTCAuPSAiQU5EIHMubmFtZSBJTiAoJFN0YXRlc1N0cmluZykgIjsKICAgIH0KCiAgICAjIGFkZCBvcmRlciBieSBjbGF1c2UKICAgICRTUUwgLj0gJ09SREVSIEJZIGguY3JlYXRlZCBERVNDJzsKCiAgICAjIGdldCB0aGUgZGF0YSBmcm9tIGRiCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDIwMCwKICAgICAgICBCaW5kICA9PiBcQEJpbmQsCiAgICApOwoKICAgIG15IEBEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJVJlY29yZCA9ICgKICAgICAgICAgICAgSXRlbUlEICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIEFjdGlvbiAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDcmVhdGVkICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgQ3JlYXRlZEJ5ID0+ICRSb3dbM10sCiAgICAgICAgICAgIENhdGVnb3J5ICA9PiAkUm93WzRdLAogICAgICAgICAgICBTdWJqZWN0ICAgPT4gJFJvd1s1XSwKICAgICAgICAgICAgTnVtYmVyICAgID0+ICRSb3dbNl0sCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBEYXRhLCBcJVJlY29yZDsKICAgIH0KCiAgICByZXR1cm4gXEBEYXRhOwp9Cgo9aGVhZDIgS2V5d29yZExpc3QoKQoKZ2V0IGEgbGlzdCBvZiBrZXl3b3JkcyBhcyBhIGhhc2gsIHdpdGggdGhlaXIgY291bnQgYXMgdGhlIHZhbHVlOgoKICAgIG15ICVLZXl3b3JkcyA9ICRGQVFPYmplY3QtPktleXdvcmRMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJUtleXdvcmRzID0gKAogICAgICAgICAgJ21hY29zeCcgICA9PiA4LAogICAgICAgICAgJ3VidW50dScgICA9PiAxLAogICAgICAgICAgJ291dGxvb2snICA9PiAyLAogICAgICAgICAgJ3dpbmRvd3MnICA9PiAzLAogICAgICAgICAgJ2V4Y2hhbmdlJyA9PiAxLAogICAgKTsKCj1jdXQKCiMgVE9ETzogRnVuY3Rpb24gbm90IHVzZWQ/IEtleXdvcmQgc2VwYXJhdG9yIGlzIGhlcmUgYSBvdGhlciBhcyBhdCBvdGhlciBwbGFjZXMuLi4KIyBUT0RPOiBDbGFyaWZ5IC0gUmVtb3ZlIGZ1bmN0aW9uIG9yIGNoYW5nZSB0aGUgc2VwYXJhdG9yPwpzdWIgS2V5d29yZExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQKICAgIG15ICRWYWxpZCA9IDA7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbGlkfSApIHsKICAgICAgICAkVmFsaWQgPSAkUGFyYW17VmFsaWR9OwogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGtleXdvcmRzIGZyb20gZGIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGZfa2V5d29yZHMgRlJPTSBmYXFfaXRlbScsCiAgICApOwoKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgIG15ICRLZXl3b3JkTGlzdCA9IGxjICRSb3dbMF07CgogICAgICAgIGZvciBteSAkS2V5d29yZCAoIHNwbGl0IC8sLywgJEtleXdvcmRMaXN0ICkgewoKICAgICAgICAgICAgIyByZW1vdmUgbGVhZGluZy90YWlsaW5nIHNwYWNlcwogICAgICAgICAgICAkS2V5d29yZCA9fiBzeyBcQSBccysgfXt9eG1zZzsKICAgICAgICAgICAgJEtleXdvcmQgPX4gc3sgXHMrIFx6IH17fXhtc2c7CgogICAgICAgICAgICAjIGluY3JlYXNlIGtleXdvcmQgY291bnRlcgogICAgICAgICAgICAkRGF0YXskS2V5d29yZH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aGVhZDIgRkFRS2V5d29yZEFydGljbGVMaXN0KCkKCkdldCBhIGtleXdvcmQgYW5kIHJlbGF0ZWQgZmFxIGFydGljbGVzIGxvb2t1cCBsaXN0IChvcHRpb25hbCBvbmx5IGZvciB0aGUgZ2l2ZW4gbGFuZ3VhZ2VzKS4KWW91IGNhbiBidWlsZCBhIGxpc3QgZm9yIGEgYWdlbnQgb3IgY3VzdG9tZXIuIElmIHlvdSBnaXZlIG9ubHkgYSBVc2VySUQgdGhlIHJlc3VsdCBpcyBmb3IKdGhlIGdpdmVuIFVzZXJJRCwgd2l0aCBhIGFkZGl0aW9uYWwgQ3VzdG9tZXJVc2VyIHRoZSBsaXN0IGlzIG9ubHkgZm9yIHRoZSBnaXZlbiBDdXN0b21lclVzZXIuCgogICAgbXkgJUZBUUtleXdvcmRBcnRpY2xlTGlzdCA9ICRGQVFPYmplY3QtPkZBUUtleXdvcmRBcnRpY2xlTGlzdCgKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ3R0JywgICAgICAgICAgICMgb3B0aW9uYWwgKHdpdGggdGhpcyB0aGUgcmVzdWx0IGlzIG9ubHkgY3VzdG9tZXIgZmFxIGFydGljbGUpCiAgICAgICAgTGFuZ3VhZ2VzICAgID0+IFsgJ2VuJywgJ2RlJyBdLCAjIG9wdGlvbmFsCiAgICApOwoKUmV0dXJucwoKICAgIG15ICVGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPSAoCiAgICAgICAgJ0V4YW1wbGVLZXl3b3JkJyA9PiBbCiAgICAgICAgICAgIDEyLAogICAgICAgICAgICAxMywKICAgICAgICBdLAogICAgICAgICdUZXN0S2V5d29yZCcgPT4gWwogICAgICAgICAgICA4NzYsCiAgICAgICAgXSwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRS2V5d29yZEFydGljbGVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15IEBMYW5ndWFnZUlEczsKCiAgICBMQU5HVUFHRU5BTUU6CiAgICBmb3IgbXkgJExhbmd1YWdlTmFtZSAoIEB7ICRQYXJhbXtMYW5ndWFnZXN9IH0gKSB7CiAgICAgICAgbmV4dCBMQU5HVUFHRU5BTUUgaWYgISRMYW5ndWFnZU5hbWU7CgogICAgICAgIG15ICRMYW5ndWFnZUlEID0gJFNlbGYtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRMYW5ndWFnZU5hbWUsCiAgICAgICAgKTsKICAgICAgICBuZXh0IExBTkdVQUdFTkFNRSBpZiAhJExhbmd1YWdlSUQ7CgogICAgICAgIHB1c2ggQExhbmd1YWdlSURzLCAkTGFuZ3VhZ2VJRDsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkSW50ZXJmYWNlOwogICAgbXkgJFN0YXRlVHlwZXM7CiAgICBteSAkQ2F0ZWdvcnlJRHM7CgogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJVc2VyfSApIHsKCiAgICAgICAgJEludGVyZmFjZSA9ICdleHRlcm5hbCc7CgogICAgICAgICRTdGF0ZVR5cGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkN1c3RvbWVyOjpTdGF0ZVR5cGVzJyk7CgogICAgICAgICRDYXRlZ29yeUlEcyA9ICRTZWxmLT5DdXN0b21lckNhdGVnb3J5U2VhcmNoKAogICAgICAgICAgICBDdXN0b21lclVzZXIgICAgID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9LAogICAgICAgICAgICBNb2RlICAgICAgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEdldFN1YkNhdGVnb3JpZXMgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICRJbnRlcmZhY2UgPSAnaW50ZXJuYWwnOwoKICAgICAgICAkU3RhdGVUeXBlcyA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycpOwoKICAgICAgICAkQ2F0ZWdvcnlJRHMgPSAkU2VsZi0+QWdlbnRDYXRlZ29yeVNlYXJjaCgKICAgICAgICAgICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJENhdGVnb3J5SURzKTsKCiAgICBteSAkQ2FjaGVLZXkgPSAnRkFRS2V5d29yZEFydGljbGVMaXN0JzsKCiAgICBpZiAoQExhbmd1YWdlSURzKSB7CiAgICAgICAgJENhY2hlS2V5IC49ICc6Okxhbmd1YWdlJyAuIGpvaW4gJzo6Jywgc29ydCBATGFuZ3VhZ2VJRHM7CiAgICB9CiAgICAkQ2FjaGVLZXkgLj0gJzo6Q2F0ZWdvcnlJRHMnIC4gam9pbiAnOjonLCBzb3J0IEB7JENhdGVnb3J5SURzfTsKICAgICRDYWNoZUtleSAuPSAnOjpJbnRlcmZhY2U6OicgLiAkSW50ZXJmYWNlOwoKICAgIG15ICRDYWNoZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5HZXQoCiAgICAgICAgVHlwZSA9PiAnRkFRS2V5d29yZEFydGljbGVMaXN0JywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJXskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICBteSAlRkFRU2VhcmNoUGFyYW1ldGVyOwoKICAgICMgU2V0IGludGVyZmFjZSBzZXR0aW5nIHRvICdleHRlcm5hbCcsIHRvIHNlYXJjaCBvbmx5IGZvciBhcHByb3ZlZCBmYXEgYXJ0aWNsZS4KICAgICRGQVFTZWFyY2hQYXJhbWV0ZXJ7SW50ZXJmYWNlfSA9ICRTZWxmLT5TdGF0ZVR5cGVHZXQoCiAgICAgICAgTmFtZSAgID0+ICdleHRlcm5hbCcsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAkRkFRU2VhcmNoUGFyYW1ldGVye1N0YXRlc30gPSAkU2VsZi0+U3RhdGVUeXBlTGlzdCgKICAgICAgICBUeXBlcyAgPT4gJFN0YXRlVHlwZXMsCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkU2VhcmNoTGltaXQgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6S2V5d29yZEFydGljZUxpc3Q6OlNlYXJjaExpbWl0Jyk7CgogICAgaWYgKEBMYW5ndWFnZUlEcykgewogICAgICAgICRGQVFTZWFyY2hQYXJhbWV0ZXJ7TGFuZ3VhZ2VJRHN9ID0gXEBMYW5ndWFnZUlEczsKICAgIH0KCiAgICAjIEdldCB0aGUgcmVsZXZhbnQgRkFRIGFydGljbGUgZm9yIHRoZSBjdXJyZW50IGN1c3RvbWVyIHVzZXIuCiAgICBteSBARkFRQXJ0aWNsZUlEcyA9ICRTZWxmLT5GQVFTZWFyY2goCiAgICAgICAgJUZBUVNlYXJjaFBhcmFtZXRlciwKICAgICAgICBDYXRlZ29yeUlEcyAgICAgID0+ICRDYXRlZ29yeUlEcywKICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnRkFRSUQnXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnRG93biddLAogICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlYXJjaExpbWl0LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gMSwKICAgICk7CgogICAgbXkgJUtleXdvcmRBcnRpY2VMaXN0OwogICAgbXkgJUxvb2t1cEtleXdvcmRBcnRpY2xlSUQ7CgogICAgRkFRQVJUSUNMRUlEOgogICAgZm9yIG15ICRGQVFBcnRpY2xlSUQgKEBGQVFBcnRpY2xlSURzKSB7CgogICAgICAgIG15ICVGQVFBcnRpY2xlRGF0YSA9ICRTZWxmLT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRQXJ0aWNsZUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBGQVFBUlRJQ0xFSUQgaWYgISRGQVFBcnRpY2xlRGF0YXtLZXl3b3Jkc307CgogICAgICAgICMgUmVwbGFjZSBjb21tYXMgYW5kIHNlbWljb2xvbnMsIGJlY2F1c2UgdGhlIGtleXdvcmRzIGFyZSBub3JtYWwgc3BsaXQgd2l0aCBhbiB3aGl0ZXNwYWNlLgogICAgICAgICRGQVFBcnRpY2xlRGF0YXtLZXl3b3Jkc30gPX4gcy8sLyAvZzsKICAgICAgICAkRkFRQXJ0aWNsZURhdGF7S2V5d29yZHN9ID1+IHMvOy8gL2c7CgogICAgICAgIG15IEBLZXl3b3JkcyA9IHNwbGl0IC9ccysvLCBsYyAkRkFRQXJ0aWNsZURhdGF7S2V5d29yZHN9OwoKICAgICAgICBLRVlXT1JEOgogICAgICAgIGZvciBteSAkS2V5d29yZCAoQEtleXdvcmRzKSB7CgogICAgICAgICAgICBuZXh0IEtFWVdPUkQgaWYgJExvb2t1cEtleXdvcmRBcnRpY2xlSUR7JEtleXdvcmR9LT57JEZBUUFydGljbGVJRH07CgogICAgICAgICAgICBwdXNoIEB7ICRLZXl3b3JkQXJ0aWNlTGlzdHskS2V5d29yZH0gfSwgJEZBUUFydGljbGVJRDsKCiAgICAgICAgICAgICRMb29rdXBLZXl3b3JkQXJ0aWNsZUlEeyRLZXl3b3JkfS0+eyRGQVFBcnRpY2xlSUR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICBUeXBlICA9PiAnRkFRS2V5d29yZEFydGljbGVMaXN0JywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVLZXl3b3JkQXJ0aWNlTGlzdCwKICAgICAgICBUVEwgICA9PiA2MCAqIDYwICogMywKICAgICk7CgogICAgcmV0dXJuICVLZXl3b3JkQXJ0aWNlTGlzdDsKfQoKPWhlYWQyIEZBUVBhdGhMaXN0R2V0KCkKCnJldHVybnMgYSBjYXRlZ29yeSBhcnJheSByZWZlcmVuY2UKCiAgICBteSAkQ2F0ZWdvcnlJREFycmF5UmVmID0gJEZBUU9iamVjdC0+RkFRUGF0aExpc3RHZXQoCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxNTAsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJENhdGVnb3J5SURBcnJheVJlZiA9IFsKICAgICAgICB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJzInLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAnMCcsCiAgICAgICAgICAgIE5hbWUgPT4gJ015IENhdGVnb3J5JywKICAgICAgICAgICAgQ29tbWVudCA9PiAnTXkgRmlyc3QgQ2F0ZWdvcnknLAogICAgICAgICAgICBWYWxpZElEID0+ICcxJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAnNCcsCiAgICAgICAgICAgIFBhcmVudElEID0+ICcyJywKICAgICAgICAgICAgTmFtZSA9PiAnU3ViIENhdGVnb3J5IEEnLAogICAgICAgICAgICBDb21tZW50ID0+ICdUaGlzIElzIENhdGVnb3J5IEEnLAogICAgICAgICAgICBWYWxpZElEID0+ICcxJywKICAgICAgICB9LAogICAgXTsKCj1jdXQKCnN1YiBGQVFQYXRoTGlzdEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQENhdGVnb3J5TGlzdDsKICAgIG15ICRUZW1wQ2F0ZWdvcnlJRCA9ICRQYXJhbXtDYXRlZ29yeUlEfTsKICAgIHdoaWxlICgkVGVtcENhdGVnb3J5SUQpIHsKICAgICAgICBteSAlRGF0YSA9ICRTZWxmLT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkVGVtcENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJURhdGEpIHsKICAgICAgICAgICAgcHVzaCBAQ2F0ZWdvcnlMaXN0LCBcJURhdGE7CiAgICAgICAgfQogICAgICAgICRUZW1wQ2F0ZWdvcnlJRCA9ICREYXRhe1BhcmVudElEfTsKICAgIH0KCiAgICBAQ2F0ZWdvcnlMaXN0ID0gcmV2ZXJzZSBAQ2F0ZWdvcnlMaXN0OwoKICAgIHJldHVybiBcQENhdGVnb3J5TGlzdDsKCn0KCj1oZWFkMiBGQVFMb2dBZGQoKQoKYWRkcyBhY2Nlc3NlZCBGQVEgYXJ0aWNsZSB0byB0aGUgYWNjZXNzIGxvZyB0YWJsZQoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgICAgIEl0ZW1JRCAgICA9PiAnMTIzNDU2JywKICAgICAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRTdWNjZXNzID0xOyAgICAgICAgICAgICAgICAjIG9yIHVuZGVmIGlmIEZBUUxvZyBjb3VsZCBub3QgYmUgYWRkZWQKCj1jdXQKCnN1YiBGQVFMb2dBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgSW50ZXJmYWNlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGVudmlyb25tZW50IHZhcmlhYmxlcwogICAgbXkgJElQICAgICAgICA9ICRFTlZ7J1JFTU9URV9BRERSJ30gICAgIHx8ICdOT05FJzsKICAgIG15ICRVc2VyQWdlbnQgPSAkRU5WeydIVFRQX1VTRVJfQUdFTlQnfSB8fCAnTk9ORSc7CgogICAgIyBEZWZpbmUgdGltZSBwZXJpb2Qgd2hlbiByZWxvYWRzIHdpbGwgbm90IGJlIGxvZ2dlZCAoMTAgbWludXRlcykuCiAgICBteSAkUmVsb2FkQmxvY2tUaW1lID0gMTAgKiA2MDsKCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICREYXRlVGltZU9iamVjdC0+U3VidHJhY3QoIFNlY29uZHMgPT4gJFJlbG9hZEJsb2NrVGltZSApOwogICAgbXkgJFRpbWVTdGFtcCA9ICREYXRlVGltZU9iamVjdC0+VG9TdHJpbmcoKTsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNoZWNrIGlmIGEgbG9nIGVudHJ5IGV4aXN0cyBuZXdlciB0aGFuIHRoZSBSZWxvYWRCbG9ja1RpbWUKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gZmFxX2xvZyAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGl0ZW1faWQgPSA/IEFORCBpcCA9ID8gJwogICAgICAgICAgICAuICdBTkQgdXNlcl9hZ2VudCA9ID8gQU5EIGNyZWF0ZWQgPj0gPyAnLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtJdGVtSUR9LCBcJElQLCBcJFVzZXJBZ2VudCwgXCRUaW1lU3RhbXAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRBbHJlYWR5RXhpc3RzID0gMDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRBbHJlYWR5RXhpc3RzID0gMTsKICAgIH0KCiAgICByZXR1cm4gaWYgJEFscmVhZHlFeGlzdHM7CgogICAgIyBpbnNlcnQgbmV3IGxvZyBlbnRyeQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gZmFxX2xvZyAnCiAgICAgICAgICAgIC4gJyhpdGVtX2lkLCBpbnRlcmZhY2UsIGlwLCB1c2VyX2FnZW50LCBjcmVhdGVkKSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXApJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtJdGVtSUR9LCBcJFBhcmFte0ludGVyZmFjZX0sIFwkSVAsIFwkVXNlckFnZW50LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgRkFRVG9wMTBHZXQoKQoKUmV0dXJucyBhbiBhcnJheSB3aXRoIHRoZSB0b3AgMTAgRkFRIGFydGljbGUgaWRzLgoKICAgIG15ICRUb3AxMElEc1JlZiA9ICRGQVFPYmplY3QtPkZBUVRvcDEwR2V0KAogICAgICAgIEludGVyZmFjZSAgID0+ICdwdWJsaWMnLAogICAgICAgIENhdGVnb3J5SURzID0+IFsgMSwgMiwgMyBdLCAgIyAob3B0aW9uYWwpIE9ubHkgc2hvdyB0aGUgVG9wLTEwIGFydGljbGVzIGZyb20gdGhlc2UgY2F0ZWdvcmllcwogICAgICAgIExpbWl0ICAgICAgID0+IDEwLCAgICAgICAgICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMTApCiAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICRUb3AxMElEc1JlZiA9IFsKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDEzLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAxNTksICAgICAgICAgICAgICAgIyBudW1iZXIgb2YgdmlzaXRzCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdwdWJsaWMnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiA2LAogICAgICAgICAgICAnQ291bnQnICAgICA9PiA3OCwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ3B1YmxpYycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDQsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDU5LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnaW50ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAyMCwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMjksCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdwdWJsaWMnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiAxLAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAyNCwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2V4dGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gMTEsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDI0LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnaW50ZXJuYWwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSXRlbUlEJyAgICA9PiA1LAogICAgICAgICAgICAnQ291bnQnICAgICA9PiAxOCwKICAgICAgICAgICAgJ0ludGVyZmFjZScgPT4gJ2ludGVybmFsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0l0ZW1JRCcgICAgPT4gOSwKICAgICAgICAgICAgJ0NvdW50JyAgICAgPT4gMTYsCiAgICAgICAgICAgICdJbnRlcmZhY2UnID0+ICdleHRlcm5hbCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDIsCiAgICAgICAgICAgICdDb3VudCcgICAgID0+IDE0LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAnaW50ZXJuYWwnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdJdGVtSUQnICAgID0+IDE0LAogICAgICAgICAgICAnQ291bnQnICAgICA9PiA2LAogICAgICAgICAgICAnSW50ZXJmYWNlJyA9PiAncHVibGljJywKICAgICAgICB9CiAgICBdOwoKPWN1dAoKc3ViIEZBUVRvcDEwR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoSW50ZXJmYWNlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgdmFsaWQgaWQgc3RyaW5nCiAgICBteSAkVmFsaWRJRHNTdHJpbmcgPSBqb2luICcsICcsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpOwoKICAgICMgcHJlcGFyZSBTUUwKICAgIG15IEBCaW5kOwogICAgbXkgJFNRTCA9ICdTRUxFQ1QgaXRlbV9pZCwgY291bnQoaXRlbV9pZCkgYXMgaXRlbWNvdW50LCBmYXFfc3RhdGVfdHlwZS5uYW1lLCBhcHByb3ZlZCAnCiAgICAgICAgLiAnRlJPTSBmYXFfbG9nLCBmYXFfaXRlbSwgZmFxX3N0YXRlLCBmYXFfc3RhdGVfdHlwZSAnCiAgICAgICAgLiAnV0hFUkUgZmFxX2xvZy5pdGVtX2lkID0gZmFxX2l0ZW0uaWQgJwogICAgICAgIC4gJ0FORCBmYXFfaXRlbS5zdGF0ZV9pZCA9IGZhcV9zdGF0ZS5pZCAnCiAgICAgICAgLiAiQU5EIGZhcV9pdGVtLnZhbGlkX2lkIElOICgkVmFsaWRJRHNTdHJpbmcpICIKICAgICAgICAuICdBTkQgZmFxX3N0YXRlLnR5cGVfaWQgPSBmYXFfc3RhdGVfdHlwZS5pZCAnOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZmlsdGVyIGp1c3QgY2F0ZWdvcmllcyB3aXRoIGF0IGxlYXN0IHJvIHBlcm1pc3Npb24KICAgIGlmICggJFBhcmFte0NhdGVnb3J5SURzfSAmJiByZWYgJFBhcmFte0NhdGVnb3J5SURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtDYXRlZ29yeUlEc30gfSApIHsKCiAgICAgICAgIyBpbnRlZ2VyIHF1b3RlIHRoZSBjYXRlZ29yeSBpZHMKICAgICAgICBmb3IgbXkgJENhdGVnb3J5SUQgKCBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJERCT2JqZWN0LT5RdW90ZSggJENhdGVnb3J5SUQsICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFNvcnRlZElEcyA9IHNvcnQgQHsgJFBhcmFte0NhdGVnb3J5SURzfSB9OwoKICAgICAgICAjIHNwbGl0IElOIHN0YXRlbWVudCB3aXRoIG1vcmUgdGhhbiA5MDAgZWxlbWVudHMgaW4gbW9yZSBzdGF0ZW1lbnRzIGNvbWJpbmVkIHdpdGggT1IKICAgICAgICAjIGJlY2F1c2UgT3JhY2xlIGRvZXNuJ3Qgc3VwcG9ydCBtb3JlIHRoYW4gMTAwMCBlbGVtZW50cyBpbiBvbmUgSU4gc3RhdGVtZW50LgogICAgICAgIG15IEBTUUxTdHJpbmdzOwogICAgICAgIExPT1A6CiAgICAgICAgd2hpbGUgKCBzY2FsYXIgQFNvcnRlZElEcyApIHsKCiAgICAgICAgICAgIG15IEBTb3J0ZWRJRHNQYXJ0ID0gc3BsaWNlIEBTb3J0ZWRJRHMsIDAsIDkwMDsKCiAgICAgICAgICAgIG15ICRJRFN0cmluZyA9IGpvaW4gJywnLCBAU29ydGVkSURzUGFydDsKCiAgICAgICAgICAgIHB1c2ggQFNRTFN0cmluZ3MsICIgZmFxX2l0ZW0uY2F0ZWdvcnlfaWQgSU4gKCRJRFN0cmluZykgIjsKICAgICAgICB9CgogICAgICAgIG15ICRTUUxTdHJpbmcgPSBqb2luICcgT1IgJywgQFNRTFN0cmluZ3M7CgogICAgICAgICRTUUwgLj0gJyBBTkQgKCAnIC4gJFNRTFN0cmluZyAuICcgKSAnOwogICAgfQoKICAgICMgZmlsdGVyIHJlc3VsdHMgZm9yIHB1YmxpYyBhbmQgY3VzdG9tZXIgaW50ZXJmYWNlCiAgICBpZiAoICggJFBhcmFte0ludGVyZmFjZX0gZXEgJ3B1YmxpYycgKSB8fCAoICRQYXJhbXtJbnRlcmZhY2V9IGVxICdleHRlcm5hbCcgKSApIHsKCiAgICAgICAgIyBvbmx5IHNob3cgYXBwcm92ZWQgYXJ0aWNsZXMKICAgICAgICAkU1FMIC49ICdBTkQgZmFxX2l0ZW0uYXBwcm92ZWQgPSAxICc7CgogICAgICAgICMgb25seSBzaG93IHRoZSBwdWJsaWMgYXJ0aWNsZXMKICAgICAgICAkU1FMIC49ICJBTkQgKCAoIGZhcV9zdGF0ZV90eXBlLm5hbWUgPSAncHVibGljJyBBTkQgZmFxX2xvZy5pbnRlcmZhY2UgPSAncHVibGljJyApICI7CgogICAgICAgICMgY3VzdG9tZXJzIGNhbiBhZGRpdGlvbmFsbHkgc2VlIHRoZSBleHRlcm5hbCBhcnRpY2xlcwogICAgICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0gZXEgJ2V4dGVybmFsJyApIHsKICAgICAgICAgICAgJFNRTCAuPSAiT1IgKCBmYXFfc3RhdGVfdHlwZS5uYW1lID0gJ2V4dGVybmFsJyBBTkQgZmFxX2xvZy5pbnRlcmZhY2UgPSAnZXh0ZXJuYWwnICkgIjsKICAgICAgICB9CgogICAgICAgICRTUUwgLj0gJykgJzsKICAgIH0KCiAgICAjIGZpbHRlciByZXN1bHRzIGZvciBkZWZpbmVkIHRpbWUgcGVyaW9kCiAgICBpZiAoICRQYXJhbXtTdGFydERhdGV9ICYmICRQYXJhbXtFbmREYXRlfSApIHsKICAgICAgICAkU1FMIC49ICdBTkQgZmFxX2xvZy5jcmVhdGVkID49ID8gQU5EIGZhcV9sb2cuY3JlYXRlZCA8PSA/ICc7CiAgICAgICAgcHVzaCBAQmluZCwgKCBcJFBhcmFte1N0YXJ0RGF0ZX0sIFwkUGFyYW17RW5kRGF0ZX0gKTsKICAgIH0KCiAgICAjIGNvbXBsZXRlIFNRTCBzdGF0ZW1lbnQKICAgICRTUUwgLj0gJ0dST1VQIEJZIGl0ZW1faWQsIGZhcV9zdGF0ZV90eXBlLm5hbWUsIGFwcHJvdmVkICcKICAgICAgICAuICdPUkRFUiBCWSBpdGVtY291bnQgREVTQyc7CgogICAgIyBnZXQgdGhlIHRvcCAxMCBhcnRpY2xlIGlkcyBmcm9tIGRhdGFiYXNlCiAgICByZXR1cm4gW10gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIEJpbmQgID0+IFxAQmluZCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9IHx8IDEwLAogICAgKTsKCiAgICBteSBAUmVzdWx0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAUmVzdWx0LCB7CiAgICAgICAgICAgIEl0ZW1JRCAgICA9PiAkUm93WzBdLAogICAgICAgICAgICBDb3VudCAgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgSW50ZXJmYWNlID0+ICRSb3dbMl0sCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gXEBSZXN1bHQ7Cn0KCj1oZWFkMiBGQVFJbmxpbmVBdHRhY2htZW50VVJMVXBkYXRlKCkKClVwZGF0ZXMgdGhlIFVSTHMgb2YgdXBsb2FkZWQgaW5saW5lIGF0dGFjaG1lbnRzLgoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRSW5saW5lQXR0YWNobWVudFVSTFVwZGF0ZSgKICAgICAgICBJdGVtSUQgICAgID0+IDEyLAogICAgICAgIEZvcm1JRCAgICAgPT4gNDU2LAogICAgICAgIEZpbGVJRCAgICAgPT4gNSwKICAgICAgICBBdHRhY2htZW50ID0+IFwlQXR0YWNobWVudCwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICAkU3VjY2VzcyA9IDE7ICAgICAgICAgICAgICAgIyBvZiB1bmRlZiBpZiBhdHRhY2htZW50IFVSTCBjb3VsZCBub3QgYmUgdXBkYXRlZAoKPWN1dAoKc3ViIEZBUUlubGluZUF0dGFjaG1lbnRVUkxVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgQXR0YWNobWVudCBGb3JtSUQgRmlsZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgYXR0YWNobWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlCiAgICBpZiAoIHJlZiAkUGFyYW17QXR0YWNobWVudH0gbmUgJ0hBU0gnICYmICEleyAkUGFyYW17QXR0YWNobWVudH0gfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkF0dGFjaG1lbnQgbXVzdCBiZSBhIGhhc2ggcmVmZXJlbmNlISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgb25seSBjb25zaWRlciBpbmxpbmUgYXR0YWNobWVudHMgaGVyZSAodGhleSBoYXZlIGEgY29udGVudCBpZCkKICAgIHJldHVybiAxIGlmICEkUGFyYW17QXR0YWNobWVudH0tPntDb250ZW50SUR9OwoKICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPkZBUUdldCgKICAgICAgICBJdGVtSUQgICAgID0+ICRQYXJhbXtJdGVtSUR9LAogICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIHBpY3R1cmUgVVJMIGluIHVwbG9hZCBjYWNoZQogICAgbXkgJFNlYXJjaCA9ICJBY3Rpb249UGljdHVyZVVwbG9hZCAuIEZvcm1JRD1cUSRQYXJhbXtGb3JtSUR9XEUgLiAiCiAgICAgICAgLiAiQ29udGVudElEPVxRJFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudElEfVxFIjsKCiAgICAjIHBpY3R1cmUgVVJMIGluIEZBUSBhdHRhY2htZW50CiAgICBteSAkUmVwbGFjZSA9ICJBY3Rpb249QWdlbnRGQVFab29tO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7IgogICAgICAgIC4gIkl0ZW1JRD0kUGFyYW17SXRlbUlEfTtGaWxlSUQ9JFBhcmFte0ZpbGVJRH0iOwoKICAgICMgcmV3cml0ZSBwaWN0dXJlIFVSTHMKICAgIEZJRUxEOgogICAgZm9yIG15ICROdW1iZXIgKCAxIC4uIDYgKSB7CgogICAgICAgICMgY2hlY2sgaWYgZmllbGQgY29udGFpbnMgc29tZXRoaW5nCiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZBUURhdGF7IkZpZWxkJE51bWJlciJ9OwoKICAgICAgICAjIHJlbW92ZSBuZXdsaW5lcwogICAgICAgICRGQVFEYXRheyJGaWVsZCROdW1iZXIifSA9fiBzeyBbXG5ccl0rIH17fWd4bXM7CgogICAgICAgICMgcmVwbGFjZSBVUkwKICAgICAgICAkRkFRRGF0YXsiRmllbGQkTnVtYmVyIn0gPX4gc3skU2VhcmNofXskUmVwbGFjZX14bXM7CiAgICB9CgogICAgIyB1cGRhdGUgRkFRIGFydGljbGUgd2l0aG91dCB3cml0aW5nIGEgaGlzdG9yeSBlbnRyeQogICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+RkFRVXBkYXRlKAogICAgICAgICVGQVFEYXRhLAogICAgICAgIEhpc3RvcnlPZmYgID0+IDEsCiAgICAgICAgQXBwcm92YWxPZmYgPT4gMSwKICAgICAgICBVc2VySUQgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBpZiB1cGRhdGUgd2FzIHN1Y2Nlc3NmdWwKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSBGQVEgSXRlbSMgJyRQYXJhbXtJdGVtSUR9JyEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEZBUUFydGljbGVUaXRsZUNsZWFuKCkKCnN0cmlwL2NsZWFuIHVwIGEgRkFRIGFydGljbGUgdGl0bGUKCiAgICBteSAkTmV3VGl0bGUgPSAkRkFRT2JqZWN0LT5GQVFBcnRpY2xlVGl0bGVDbGVhbigKICAgICAgICBUaXRsZSAgICAgID0+ICRPbGRUaXRsZSwKICAgICAgICBTaXplICAgICAgID0+ICRUaXRsZVNpemVUb0JlRGlzcGxheWVkICAgIyBvcHRpb25hbCwgaWYgMCBkbyBub3QgY3V0IHRpdGxlCiAgICApOwoKPWN1dAoKc3ViIEZBUUFydGljbGVUaXRsZUNsZWFuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFRpdGxlID0gJFBhcmFte1RpdGxlfSB8fCAnJzsKCiAgICAjIGdldCBjb25maWcgb3B0aW9ucwogICAgbXkgJFRpdGxlU2l6ZSA9ICRQYXJhbXtTaXplfTsKICAgIGlmICggIWRlZmluZWQgJFRpdGxlU2l6ZSApIHsKICAgICAgICAkVGl0bGVTaXplID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6OlRpdGxlU2l6ZScpIHx8IDEwMDsKICAgIH0KCiAgICAjIHRyaW0gd2hpdGUgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvciBlbmQKICAgICRUaXRsZSA9fiBzLyheXHMrfFxzKyQpLy87CgogICAgIyByZXNpemUgdGl0bGUgYmFzZWQgb24gY29uZmlnCiAgICAjIGRvIG5vdCBjdXQgdGl0bGUsIGlmIHNpemUgcGFyYW1ldGVyIHdhcyAwCiAgICBpZiAoJFRpdGxlU2l6ZSkgewogICAgICAgICRUaXRsZSA9fiBzL14oLnskVGl0bGVTaXplfSkuKiQvJDEgWy4uLl0vOwogICAgfQoKICAgIHJldHVybiAkVGl0bGU7Cn0KCj1oZWFkMiBGQVFDb250ZW50VHlwZVNldCgpCgpTZXRzIHRoZSBjb250ZW50IHR5cGUgb2YgMSwgc29tZSBvciBhbGwgRkFRIGl0ZW1zLCBieSBhIGdpdmVuIHBhcmFtZXRlciBvciBkZXRlcm1pbmVkIGJ5IHRoZSBGQVEgaXRlbSBjb250ZW50CgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFDb250ZW50VHlwZVNldCgKICAgICAgICBGQVFJdGVtSURzICA9PiBbIDEsIDIsIDMgXSwgICAgICAgICAgICAgIyBvcHRpb25hbCwKICAgICAgICBDb250ZW50VHlwZSA9PiAnc29tZSBjb250ZW50IHR5cGUnLCAgICAgIyBvcHRpb25hbCwKICAgICk7Cgo9Y3V0CgpzdWIgRkFRQ29udGVudFR5cGVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICRQYXJhbXtGQVFJdGVtSURzfSAmJiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RkFRSXRlbUlEc30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgRkFRSXRlbUlEcyBmb3JtYXQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJENvbnRlbnRUeXBlID0gJFBhcmFte0NvbnRlbnRUeXBlfSB8fCAnJzsKCiAgICAjIEdldCBkZWZhdWx0IGNvbnRlbnQgdHlwZSBmcm9tIHRoZSBjb25maWcgaWYgaXQgd2FzIG5vdCBnaXZlbi4KICAgIGlmICggISRDb250ZW50VHlwZSApIHsKCiAgICAgICAgJENvbnRlbnRUeXBlID0gJ3RleHQvcGxhaW4nOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6SXRlbTo6SFRNTCcpICkgewogICAgICAgICAgICAkQ29udGVudFR5cGUgPSAndGV4dC9odG1sJzsKICAgICAgICB9CiAgICB9CgogICAgIyBTUUwgdG8gc2V0IHRoZSBjb250ZW50IHR5cGUgKGRlZmF1bHQgb3IgZ2l2ZW4pLgogICAgbXkgJFNRTCA9ICcKICAgICAgICBVUERBVEUgZmFxX2l0ZW0KICAgICAgICBTRVQgY29udGVudF90eXBlID0gPyc7CgogICAgIyBHZXQgRkFRIGl0ZW0gSURzIGZyb20gdGhlIHBhcmFtLgogICAgbXkgQEZBUUl0ZW1JRHMgPSBAeyAkUGFyYW17RkFRSXRlbUlEc30gLy8gW10gfTsKCiAgICAjIFJlc3RyaWN0IHRvIG9ubHkgZ2l2ZW4gRkFRIGl0ZW0gSURzIChpZiBhbnkpLgogICAgaWYgKEBGQVFJdGVtSURzKSB7CgogICAgICAgIG15ICRJRFN0cmluZyA9IGpvaW4gJywnLCBARkFRSXRlbUlEczsKCiAgICAgICAgJFNRTCAuPSAiCiAgICAgICAgICAgIFdIRVJFIGlkIElOICgkSURTdHJpbmcpIjsKICAgIH0KCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFNldCB0aGUgY29udGVudCB0eXBlIGVpdGhlciBieSB0aGUgZ2l2ZW4gcGFyYW0gb3IgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gc2V0dGluZ3MuCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJENvbnRlbnRUeXBlLAogICAgICAgIF0sCiAgICApOwoKICAgICMgTm8gbmVlZCB0byBnbyBmdXJ0aGVyIGlmIGNvbnRlbnQgdHlwZSB3YXMgZ2l2ZW4gKGl0IHdhcyBhbHJlYWR5IHNldCkuCiAgICBpZiAoICRQYXJhbXtDb250ZW50VHlwZX0gKSB7CgogICAgICAgICMgRGVsZXRlIGNhY2hlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBPdGhlcndpc2UgY29udGVudCB0eXBlIGhhcyB0byBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBGQVEgaXRlbSBjb250ZW50LgoKICAgICMgR2V0IGFsbCBGQVFJRHMgKGlmIG5vIGZhcSBpdGVtIHdhcyBnaXZlbikuCiAgICBpZiAoICFARkFRSXRlbUlEcyApIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBESVNUSU5DVChmYXFfaXRlbS5pZCkKICAgICAgICAgICAgICAgIEZST00gZmFxX2l0ZW0KICAgICAgICAgICAgICAgIE9SREVSIEJZIGlkIEFTQycsCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgIHB1c2ggQEZBUUl0ZW1JRHMsICRSb3dbMF07CiAgICAgICAgfQogICAgfQoKICAgICMgTG9vcCB0cm91Z2ggdGhlIEZBUSBpdGVtcy4KICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEIChARkFRSXRlbUlEcykgewogICAgICAgIG15ICREZXRlcm1pbmVkQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbic7CgogICAgICAgICMgR2V0IHRoZSBjb250ZW50cyBvZiBlYWNoIGZpZWxkCiAgICAgICAgRklFTEQ6CiAgICAgICAgZm9yIG15ICRGaWVsZCAocXcoRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ0IEZpZWxkNSBGaWVsZDYpKSB7CgogICAgICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJFNlbGYtPkl0ZW1GaWVsZEdldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgRmllbGQgID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZpZWxkQ29udGVudDsKCiAgICAgICAgICAgICMgaWYgZmllbGQgY29udGVudCBzZWFtcyB0byBiZSBIVE1MIHNldCB0aGUgY29udGVudCB0eXBlIHRvIEhUTUwKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEZpZWxkQ29udGVudAogICAgICAgICAgICAgICAgPX4gbXsoPzogPGJyXHMqLz4gfCA8L2xpPiB8IDwvb2w+IHwgPC91bD4gfCA8L3RhYmxlPiB8IDwvdHI+IHwgPC90ZD4gfCA8L2Rpdj4gfCA8L28+IHwgPC9pPiB8IDwvc3Bhbj4gfCA8L2hcZD4gfCA8L3A+IHwgPC9wcmU+ICl9bXN4CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICREZXRlcm1pbmVkQ29udGVudFR5cGUgPSAndGV4dC9odG1sJzsKICAgICAgICAgICAgICAgIGxhc3QgRklFTEQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG5leHQgSVRFTUlEIGlmICREZXRlcm1pbmVkQ29udGVudFR5cGUgZXEgJENvbnRlbnRUeXBlOwoKICAgICAgICAjIFNldCB0aGUgY29udGVudCB0eXBlIGFjY29yZGluZyB0byB0aGUgZmllbGQgY29udGVudC4KICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgZmFxX2l0ZW0KICAgICAgICAgICAgICAgIFNFVCBjb250ZW50X3R5cGUgPSA/CiAgICAgICAgICAgICAgICBXSEVSRSBpZCA9PycsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCREZXRlcm1pbmVkQ29udGVudFR5cGUsCiAgICAgICAgICAgICAgICBcJEl0ZW1JRCwKICAgICAgICAgICAgXSwKICAgICAgICApOwogICAgfQoKICAgICMgRGVsZXRlIGNhY2hlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQxIERFUFJFQ0FURUQgRlVOQ1RJT05TCgo9aGVhZDIgSGlzdG9yeUdldCgpCgpEZXByZWNhdGVkLCB1c2UgRkFRSm91cm5hbEdldCgpIGluc3RlYWQuCgo9Y3V0CgpzdWIgSGlzdG9yeUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+RkFRSm91cm5hbEdldCglUGFyYW0pOwp9Cgo9aGVhZDEgUFJJVkFURSBGVU5DVElPTlMKCj1oZWFkMiBfRkFRQXBwcm92YWxVcGRhdGUoKQoKdXBkYXRlIHRoZSBhcHByb3ZhbCBzdGF0ZSBvZiBhbiBhcnRpY2xlCgogICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5fRkFRQXBwcm92YWxVcGRhdGUoCiAgICAgICAgSXRlbUlEICAgICA9PiAxMjMsCiAgICAgICAgQXBwcm92ZWQgICA9PiAxLCAgICAjIDB8MSAoZGVmYXVsdCAwKQogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgX0ZBUUFwcHJvdmFsVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0FwcHJvdmVkfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEFwcHJvdmVkIHBhcmFtZXRlciEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHVwZGF0ZSBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgZmFxX2l0ZW0gU0VUICcKICAgICAgICAgICAgLiAnYXBwcm92ZWQgPSA/LCAnCiAgICAgICAgICAgIC4gJ2NoYW5nZWQgPSBjdXJyZW50X3RpbWVzdGFtcCwgJwogICAgICAgICAgICAuICdjaGFuZ2VkX2J5ID0gPyAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17QXBwcm92ZWR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SXRlbUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGFwcHJvdmFsIGZlYXR1cmUgaXMgYWN0aXZhdGVkIGFuZCBGQVEgYXJ0aWNsZSBpcyBub3QgYXBwcm92ZWQgeWV0CiAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRkFROjpBcHByb3ZhbFJlcXVpcmVkJykgJiYgISRQYXJhbXtBcHByb3ZlZH0gKSB7CgogICAgICAgIG15ICVGQVFEYXRhID0gJFNlbGYtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkUGFyYW17SXRlbUlEfSwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIG5ldyBhcHByb3ZhbCB0aWNrZXQKICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0l0ZW1JRH0sCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJEZBUURhdGF7Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gJEZBUURhdGF7TGFuZ3VhZ2VJRH0sCiAgICAgICAgICAgIEZBUU51bWJlciAgPT4gJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgVGl0bGUgICAgICA9PiAkRkFRRGF0YXtUaXRsZX0sCiAgICAgICAgICAgIFN0YXRlSUQgICAgPT4gJEZBUURhdGF7U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb3VsZCBub3QgY3JlYXRlIGFwcHJvdmFsIHRpY2tldCEnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9GQVFBcHByb3ZhbFRpY2tldENyZWF0ZSgpCgpjcmVhdGVzIGFuIGFwcHJvdmFsIHRpY2tldAoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+X0ZBUUFwcHJvdmFsVGlja2V0Q3JlYXRlKAogICAgICAgIEl0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgIENhdGVnb3J5SUQgPT4gMiwKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgRkFRTnVtYmVyICA9PiAxMDIxMSwKICAgICAgICBUaXRsZSAgICAgID0+ICdTb21lIFRpdGxlJywKICAgICAgICBTdGF0ZUlEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBfRkFRQXBwcm92YWxUaWNrZXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhJdGVtSUQgQ2F0ZWdvcnlJRCBGQVFOdW1iZXIgVGl0bGUgU3RhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IHN1YmplY3QKICAgIG15ICRTdWJqZWN0ID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsVGlja2V0U3ViamVjdCcpOwogICAgJFN1YmplY3QgPX4gc3sgPE9UUlNfRkFRX05VTUJFUj4gfXskUGFyYW17RkFRTnVtYmVyfX14bXM7CgogICAgIyBjaGVjayBpZiB3ZSBjYW4gZmluZCBleGlzdGluZyBvcGVuIGFwcHJvdmFsIHRpY2tldHMgZm9yIHRoaXMgRkFRIGFydGljbGUKICAgIG15IEBUaWNrZXRJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgUmVzdWx0ICAgID0+ICdBUlJBWScsCiAgICAgICAgVGl0bGUgICAgID0+ICRTdWJqZWN0LAogICAgICAgIFN0YXRlVHlwZSA9PiAnT3BlbicsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKICAgICMgd2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYW5vdGhlciBhcHByb3ZhbCB0aWNrZXQgaWYgdGhlcmUgaXMgc3RpbGwgYXQgbGVhc3Qgb25lIHRpY2tldCBvcGVuCiAgICAjIGZvciB0aGlzIEZBUSBhcnRpY2xlCiAgICByZXR1cm4gMSBpZiBAVGlja2V0SURzOwoKICAgICMgZ2V0IHRpY2tldCB0eXBlIGZyb20gU3lzQ29uZmlnCiAgICBteSAkVGlja2V0VHlwZSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldFR5cGUnKSB8fCAnJzsKCiAgICAjIHZhbGlkYXRlIHRpY2tldCB0eXBlIGlmIGFueQogICAgaWYgKCRUaWNrZXRUeXBlKSB7CgogICAgICAgICMgZ2V0IGEgdGlja2V0IHR5cGUgbG9va3VwIHRhYmxlCiAgICAgICAgbXkgJVR5cGVMaXN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTGlzdCgpOwogICAgICAgIG15ICVUeXBlTG9va3VwID0gcmV2ZXJzZSAlVHlwZUxpc3Q7CgogICAgICAgICMgc2V0ICRUaWNrZXRUeXBlIHRvIGVtcHR5IGlmIFRpY2tleVR5cGUgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBsb29rdXAgdGFibGUuIElmIHNldCB0bwogICAgICAgICMgICAgZW1wdHkgVGlja2V0Q3JlYXRlKCkgd2lsbCB1c2UgYXMgZGVmYXVsdCBUeXBlSUQgPSAxLCBubyBtYXR0ZXIgaWYgaXQgaXMgdmFsaWQgb3Igbm90LgogICAgICAgICRUaWNrZXRUeXBlID0gJFR5cGVMb29rdXB7JFRpY2tldFR5cGV9ID8gJFRpY2tldFR5cGUgOiAnJzsKICAgIH0KCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgPT4gJFN1YmplY3QsCiAgICAgICAgUXVldWUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsUXVldWUnKSB8fCAnUmF3JywKICAgICAgICBMb2NrICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6QXBwcm92YWxUaWNrZXRQcmlvcml0eScpIHx8ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkFwcHJvdmFsVGlja2V0RGVmYXVsdFN0YXRlJykgfHwgJ25ldycsCiAgICAgICAgVHlwZSAgICAgPT4gJFRpY2tldFR5cGUsCiAgICAgICAgT3duZXJJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICBpZiAoJFRpY2tldElEKSB7CgogICAgICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVN0YXRlID0gJFNlbGYtPlN0YXRlR2V0KAogICAgICAgICAgICBTdGF0ZUlEID0+ICRQYXJhbXtTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNhdGVnb3JpZXMgY2FuIGJlIG5lc3RlZDsgeW91IGNhbiBoYXZlIHNvbWU6Omxvbmc6OmNhdGVnb3J5LgogICAgICAgIG15IEBDYXRlZ29yeU5hbWVzOwogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJFBhcmFte0NhdGVnb3J5SUR9OwogICAgICAgIENBVEVHT1JZOgogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIG15ICVDYXRlZ29yeSA9ICRTZWxmLT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDYXRlZ29yeU5hbWVzLCAkQ2F0ZWdvcnl7TmFtZX07CiAgICAgICAgICAgIGxhc3QgQ0FURUdPUlkgaWYgISRDYXRlZ29yeXtQYXJlbnRJRH07CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJENhdGVnb3J5e1BhcmVudElEfTsKICAgICAgICB9CiAgICAgICAgbXkgJENhdGVnb3J5ID0gam9pbiggJzo6JywgcmV2ZXJzZSBAQ2F0ZWdvcnlOYW1lcyApOwoKICAgICAgICBteSAkTGFuZ3VhZ2U7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6TXVsdGlMYW5ndWFnZScpICkgewogICAgICAgICAgICAkTGFuZ3VhZ2UgPSAkU2VsZi0+TGFuZ3VhZ2VMb29rdXAoCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEID0+ICRQYXJhbXtMYW5ndWFnZUlEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYW5ndWFnZSA9ICctJzsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGJvZHkgZnJvbSBjb25maWcKICAgICAgICBteSAkQm9keSA9ICRDb25maWdPYmplY3QtPkdldCgnRkFROjpBcHByb3ZhbFRpY2tldEJvZHknKTsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfQ0FURUdPUllJRD4gfXskUGFyYW17Q2F0ZWdvcnlJRH19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9DQVRFR09SWT4gICB9eyRDYXRlZ29yeX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX0xBTkdVQUdFPiAgIH17JExhbmd1YWdlfXhtczsKICAgICAgICAkQm9keSA9fiBzeyA8T1RSU19GQVFfSVRFTUlEPiAgICAgfXskUGFyYW17SXRlbUlEfX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX05VTUJFUj4gICAgIH17JFBhcmFte0ZBUU51bWJlcn19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9USVRMRT4gICAgICB9eyRQYXJhbXtUaXRsZX19eG1zOwogICAgICAgICRCb2R5ID1+IHN7IDxPVFJTX0ZBUV9BVVRIT1I+ICAgICB9eyRVc2VyTmFtZX14bXM7CiAgICAgICAgJEJvZHkgPX4gc3sgPE9UUlNfRkFRX1NUQVRFPiAgICAgIH17JFN0YXRle05hbWV9fXhtczsKCiAgICAgICAgbXkgJVVzZXIgPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBmcm9tIHN0cmluZwogICAgICAgIG15ICRGcm9tID0gIlwiJFVzZXJ7VXNlckZ1bGxuYW1lfVwiIDwkVXNlcntVc2VyRW1haWx9PiI7CgogICAgICAgIG15ICRBcnRpY2xlT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwogICAgICAgIG15ICRJbnRlcm5hbEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JDaGFubmVsKCBDaGFubmVsTmFtZSA9PiAnSW50ZXJuYWwnICk7CgogICAgICAgIG15ICRBcnRpY2xlSUQgPSAkSW50ZXJuYWxBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAwLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAkRnJvbSwKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJFN1YmplY3QsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICRCb2R5LAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSA9PgogICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE5vdGUnKS0+e0hpc3RvcnlUeXBlfQogICAgICAgICAgICAgICAgfHwgJ0FkZE5vdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PgogICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldE5vdGUnKS0+e0hpc3RvcnlDb21tZW50fQogICAgICAgICAgICAgICAgfHwgJyUlTm90ZScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRBcnRpY2xlSUQ7CiAgICB9CgogICAgcmV0dXJuOwp9CgojCiMgRGVsZXRlcyBhbGwgbmVlZGVkIEZBUSBpdGVtIGNhY2hlIGVudHJpZXMgZm9yIGEgZ2l2ZW4gRkFRIEl0ZW1JRC4KIwpzdWIgX0RlbGV0ZUZyb21GQVFDYWNoZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBDbGVhciBGQVFHZXQgY2FjaGUKICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkUGFyYW17SXRlbUlEfSAuICc6Okl0ZW1GaWVsZHM6OjEnLAogICAgKTsKICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkUGFyYW17SXRlbUlEfSAuICc6Okl0ZW1GaWVsZHM6OjAnLAogICAgKTsKCiAgICAjIENsZWFyIEl0ZW1GZWxkR2V0IGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgIEtleSAgPT4gJ0l0ZW1GaWVsZEdldDo6SXRlbUlEOjonIC4gJFBhcmFte0l0ZW1JRH0sCiAgICApOwoKICAgICMgQ2xlYW51cCBjYWNoZSBmb3IgdGhlICdGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnLgogICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0ZBUUtleXdvcmRBcnRpY2xlTGlzdCcsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpGQVFTZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkZBUVNlYXJjaCAtIEZBUSBzZWFyY2ggbGliCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBGQVEgc2VhcmNoIGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgRkFRU2VhcmNoKCkKCnNlYXJjaCBpbiBGQVEgYXJ0aWNsZXMKCiAgICBteSBASURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKAoKICAgICAgICBOdW1iZXIgICAgPT4gJyoxMzQqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFRpdGxlICAgICA9PiAnKnNvbWUgdGl0bGUqJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICMgaXMgc2VhcmNoaW5nIGluIE51bWJlciwgVGl0bGUsIEtleXdvcmQgYW5kIEZpZWxkMS02CiAgICAgICAgV2hhdCAgICAgID0+ICcqc29tZSB0ZXh0KicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgS2V5d29yZCAgID0+ICcqd2Vic2VydmVyKicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBTdGF0ZXMgICAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICAxID0+ICdpbnRlcm5hbCcsCiAgICAgICAgICAgIDIgPT4gJ2V4dGVybmFsJywKICAgICAgICB9LAogICAgICAgIExhbmd1YWdlSURzID0+IFsgNCwgNSwgNiBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2F0ZWdvcnlJRHMgPT4gWyA3LCA4LCA5IF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBWYWxpZElEcyAgICA9PiBbIDEsIDIsIDMgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSAoZGVmYXVsdCAxKQoKICAgICAgICAjIEFwcHJvdmVkCiAgICAgICAgIyAgICBPbmx5IGF2YWlsYWJsZSBpbiBpbnRlcm5hbCBpbnRlcmZhY2UgKGFnZW50IGludGVyZmFjZSkKICAgICAgICBBcHByb3ZlZCAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSAxIG9yIDAsCgogICAgICAgICMgVm90ZXMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWzEyMywgNjU0XQogICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDEyMywKICAgICAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gMTIzLAogICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAxMjMsCiAgICAgICAgfQoKICAgICAgICAjIFJhdGUKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWzUwLCA3NV0KICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gNzUsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IDc1LAogICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiA3NSwKICAgICAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gNzUsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDc1LAogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgRkFRIGl0ZW0gcHJvcGVydGllcyAob3B0aW9uYWwpCiAgICAgICAgQ3JlYXRlZFVzZXJJRHMgPT4gWzEsIDEyLCA0NTUsIDMyXQoKICAgICAgICAjIGNoYW5nZSBGQVEgaXRlbSBwcm9wZXJ0aWVzIChvcHRpb25hbCkKICAgICAgICBMYXN0Q2hhbmdlZFVzZXJJRHMgPT4gWzEsIDEyLCA0NTUsIDMyXQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgTGlrZSAgICAgICAgICAgICAgPT4gJ3ZhbHVlKicsICAgICAgICAgICAgICAgICMgImVxdWFscyIgb3BlcmF0b3Igd2l0aCB3aWxkLWNhcmQgc3VwcG9ydAogICAgICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAnMjAwMS0wMS0wMSAwMTowMTowMScsCiAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+ICcyMDAxLTAxLTAxIDAxOjAxOjAxJywKICAgICAgICAgICAgU21hbGxlclRoYW4gICAgICAgPT4gJzIwMDItMDItMDIgMDI6MDI6MDInLAogICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAnMjAwMi0wMi0wMiAwMjowMjowMicsCiAgICAgICAgfQoKICAgICAgICAjIEZBUSBpdGVtcyBjcmVhdGVkIG1vcmUgdGhhbiA2MCBtaW51dGVzIGFnbyAoaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBGQVEgaXRlbSBjcmVhdGVkIGxlc3MgdGhhbiAxMjAgbWludXRlcyBhZ28gKGl0ZW0gbmV3ZXIgdGhhbiAxMjAgbWludXRlcykgKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzID0+IDEyMCwKCiAgICAgICAgIyBGQVEgaXRlbXMgd2l0aCBjcmVhdGUgdGltZSBhZnRlciAuLi4gKGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBGQVEgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoaXRlbSBvbGRlciB0aGFuIHRoaXMgZGF0ZSkgKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDA2LTAxLTE5IDIzOjU5OjU5JywKCiAgICAgICAgIyBGQVEgaXRlbXMgY2hhbmdlZCBtb3JlIHRoYW4gNjAgbWludXRlcyBhZ28gKG9wdGlvbmFsKQogICAgICAgIEl0ZW1DaGFuZ2VUaW1lT2xkZXJNaW51dGVzID0+IDYwLAogICAgICAgICMgRkFRIGl0ZW1zIGNoYW5nZWQgbGVzcyB0aGFuIDEyMCBtaW51dGVzIGFnbyAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIEZBUSBpdGVtIHdpdGggY2hhbmdlZCB0aW1lIGFmdGVyIC4uLiAoaXRlbSBjaGFuZ2VkIG5ld2VyIHRoYW4gdGhpcyBkYXRlKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgRkFRIGl0ZW0gd2l0aCBjaGFuZ2VkIHRpbWUgYmVmb3JlIC4uLiAoaXRlbSBjaGFuZ2VkIG9sZGVyIHRoYW4gdGhpcyBkYXRlKSAob3B0aW9uYWwpCiAgICAgICAgSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICBPcmRlckJ5ID0+IFsgJ0ZBUUlEJywgJ1RpdGxlJyBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICMgZGVmYXVsdDogWyAnRkFRSUQnIF0sCiAgICAgICAgIyAoRkFRSUQsIE51bWJlciwgVGl0bGUsIExhbmd1YWdlLCBDYXRlZ29yeSwgVmFsaWQsIENyZWF0ZWQsCiAgICAgICAgIyBDaGFuZ2VkLCBTdGF0ZSwgVm90ZXMsIFJlc3VsdCkKCiAgICAgICAgIyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBPcmRlckJ5OgogICAgICAgICMgVGhlIE9yZGVyQnlEaXJlY3Rpb24gY2FuIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBPcmRlckJ5IGF0dHJpYnV0ZS4KICAgICAgICAjIFRoZSBwYWlyaW5nIGlzIG1hZGUgYnkgdGhlIGFycmF5IGluZGV4ZXMuCgogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAnRG93bicsICdVcCcgXSwgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdVUCcgXQogICAgICAgICMgKERvd24gfCBVcCkKCiAgICAgICAgTGltaXQgICAgID0+IDE1MCwKCiAgICAgICAgSW50ZXJmYWNlID0+IHsgICAgICAgICAgICAgICMgKGRlZmF1bHQgaW50ZXJuYWwpCiAgICAgICAgICAgIFN0YXRlSUQgPT4gMywKICAgICAgICAgICAgTmFtZSAgICA9PiAncHVibGljJywgICAgIyBwdWJsaWMgfCBleHRlcm5hbCB8IGludGVybmFsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgIEBJRHMgPSAoCiAgICAgICAgMzIsCiAgICAgICAgMTMsCiAgICAgICAgMTIsCiAgICAgICAgOSwKICAgICAgICA2LAogICAgICAgIDUsCiAgICAgICAgNCwKICAgICAgICAxLAogICAgKTsKCj1jdXQKCnN1YiBGQVFTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgaW50ZXJmYWNlCiAgICBpZiAoICEkUGFyYW17SW50ZXJmYWNlfSB8fCAhJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSApIHsKICAgICAgICAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9ID0gJ2ludGVybmFsJzsKICAgIH0KCiAgICAjIHZlcmlmeSB0aGF0IGFsbCBwYXNzZWQgYXJyYXkgcGFyYW1ldGVycyBjb250YWluIGFuIGFycmF5IHJlZmVyZW5jZQogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhPcmRlckJ5IE9yZGVyQnlEaXJlY3Rpb24pKSB7CgogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRQYXJhbXskQXJndW1lbnR9IHx8PSBbXTsKCiAgICAgICAgICAgIG5leHQgQVJHVU1FTlQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFyZ3VtZW50fSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEFyZ3VtZW50IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIG9yZGVyIHRhYmxlCiAgICBteSAlT3JkZXJCeVRhYmxlID0gKAoKICAgICAgICAjIEZBUSBpdGVtIGF0dHJpYnV0ZXMKICAgICAgICBGQVFJRCAgICA9PiAnaS5pZCcsCiAgICAgICAgTnVtYmVyICAgPT4gJ2kuZl9udW1iZXInLAogICAgICAgIFRpdGxlICAgID0+ICdpLmZfc3ViamVjdCcsCiAgICAgICAgTGFuZ3VhZ2UgPT4gJ2kuZl9sYW5ndWFnZV9pZCcsCiAgICAgICAgQ2F0ZWdvcnkgPT4gJ2kuY2F0ZWdvcnlfaWQnLAogICAgICAgIFZhbGlkICAgID0+ICdpLnZhbGlkX2lkJywKICAgICAgICBDcmVhdGVkICA9PiAnaS5jcmVhdGVkJywKICAgICAgICBDaGFuZ2VkICA9PiAnaS5jaGFuZ2VkJywKCiAgICAgICAgIyBTdGF0ZSBhdHRyaWJ1dGVzCiAgICAgICAgU3RhdGUgPT4gJ3MubmFtZScsCgogICAgICAgICMgVm90ZSBhdHRyaWJ1dGVzCiAgICAgICAgVm90ZXMgID0+ICd2b3RlcycsCiAgICAgICAgUmVzdWx0ID0+ICd2cmF0ZScsCiAgICApOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBxdW90ZSBpZCBhcnJheSBlbGVtZW50cwogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEtleSAocXcoTGFuZ3VhZ2VJRHMgQ2F0ZWdvcnlJRHMgVmFsaWRJRHMgQ3JlYXRlZFVzZXJJRHMgTGFzdENoYW5nZWRVc2VySURzKSkgewogICAgICAgIG5leHQgQVJHVU1FTlQgaWYgISRQYXJhbXskS2V5fTsKCiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17JEtleX0gKSApIHsKCiAgICAgICAgICAgICMgbG9nIGVycm9yCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZ2l2ZW4gcGFyYW0gJyRLZXknIGlzIGludmFsaWQgb3IgYW4gZW1wdHkgYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHF1b3RlIGVsZW1lbnRzCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggQHsgJFBhcmFteyRLZXl9IH0gKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJERCT2JqZWN0LT5RdW90ZSggJEVsZW1lbnQsICdJbnRlZ2VyJyApICkgewoKICAgICAgICAgICAgICAgICMgbG9nIGVycm9yCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZ2l2ZW4gcGFyYW0gJyRFbGVtZW50JyBpbiAnJEtleScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkRkFRRHluYW1pY0ZpZWxkcyA9IFtdOwogICAgbXkgJVZhbGlkRHluYW1pY0ZpZWxkUGFyYW1zOwogICAgbXkgJUZBUUR5bmFtaWNGaWVsZE5hbWUyQ29uZmlnOwoKICAgICMgT25seSBmZXRjaCBEeW5hbWljRmllbGQgZGF0YSBpZiBhIGZpZWxkIHdhcyByZXF1ZXN0ZWQgZm9yIHNlYXJjaGluZyBvciBzb3J0aW5nCiAgICBteSAkUGFyYW1DaGVja1N0cmluZyA9ICggam9pbiAnJywga2V5cyAlUGFyYW0gKSB8fCAnJzsKCiAgICBpZiAoIHJlZiAkUGFyYW17T3JkZXJCeX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAkUGFyYW1DaGVja1N0cmluZyAuPSAoIGpvaW4gJycsIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICk7CiAgICB9CiAgICBlbHNpZiAoIHJlZiAkUGFyYW17T3JkZXJCeX0gbmUgJ0hBU0gnICkgewogICAgICAgICRQYXJhbUNoZWNrU3RyaW5nIC49ICRQYXJhbXtPcmRlckJ5fSB8fCAnJzsKICAgIH0KCiAgICBpZiAoICRQYXJhbUNoZWNrU3RyaW5nID1+IG0vRHluYW1pY0ZpZWxkXy9zbXggKSB7CgogICAgICAgICMgQ2hlY2sgYWxsIGNvbmZpZ3VyZWQgRkFRIGR5bmFtaWMgZmllbGRzCiAgICAgICAgJEZBUUR5bmFtaWNGaWVsZHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0ZBUScsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyRGQVFEeW5hbWljRmllbGRzfSApIHsKICAgICAgICAgICAgJFZhbGlkRHluYW1pY0ZpZWxkUGFyYW1zeyAiRHluYW1pY0ZpZWxkXyIgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9IDE7CiAgICAgICAgICAgICRGQVFEeW5hbWljRmllbGROYW1lMkNvbmZpZ3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnkgY29udGFpbnMgb25seSB1bmlxdWUgdmFsaWQgdmFsdWVzCiAgICBteSAlT3JkZXJCeVNlZW47CiAgICBmb3IgbXkgJE9yZGVyQnkgKCBAeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAhJE9yZGVyQnkKICAgICAgICAgICAgfHwgKCAhJE9yZGVyQnlUYWJsZXskT3JkZXJCeX0gJiYgISRWYWxpZER5bmFtaWNGaWVsZFBhcmFtc3skT3JkZXJCeX0gKQogICAgICAgICAgICB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGZvdW5kIGFuIGVycm9yCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJPcmRlckJ5IGNvbnRhaW5zIGludmFsaWQgdmFsdWUgJyRPcmRlckJ5JyAiCiAgICAgICAgICAgICAgICAgICAgLiAnb3IgdGhlIHZhbHVlIGlzIHVzZWQgbW9yZSB0aGFuIG9uY2UhJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UKICAgICAgICAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ID0gMTsKCiAgICB9CgogICAgIyBjaGVjayBpZiBPcmRlckJ5RGlyZWN0aW9uIGFycmF5IGNvbnRhaW5zIG9ubHkgJ1VwJyBvciAnRG93bicKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uICggQHsgJFBhcmFte09yZGVyQnlEaXJlY3Rpb259IH0gKSB7CgogICAgICAgICMgb25seSAnVXAnIG9yICdEb3duJyBhbGxvd2VkCiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnVXAnOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICREaXJlY3Rpb24gZXEgJ0Rvd24nOwoKICAgICAgICAjIGZvdW5kIGFuIGVycm9yCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJPcmRlckJ5RGlyZWN0aW9uIGNhbiBvbmx5IGNvbnRhaW4gJ1VwJyBvciAnRG93bichIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBTUUwKICAgIG15ICRTUUwgPSAnU0VMRUNUIGkuaWQsIGNvdW50KCB2Lml0ZW1faWQgKSBhcyB2b3RlcywgYXZnKCB2LnJhdGUgKSBhcyB2cmF0ZSAnCiAgICAgICAgLiAnRlJPTSBmYXFfaXRlbSBpICcKICAgICAgICAuICdMRUZUIEpPSU4gZmFxX3ZvdGluZyB2IE9OIHYuaXRlbV9pZCA9IGkuaWQgJwogICAgICAgIC4gJ0xFRlQgSk9JTiBmYXFfc3RhdGUgcyBPTiBzLmlkID0gaS5zdGF0ZV9pZCc7CgogICAgIyBleHRlbmRlZCBTUUwKICAgIG15ICRFeHQgPSAnJzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGZ1bGwtdGV4dCBzZWFyY2gKICAgIGlmICggJFBhcmFte1doYXR9ICYmICRQYXJhbXtXaGF0fSBuZSAnKicgKSB7CgogICAgICAgICMgZGVmaW5lIHRoZSBzZWFyY2ggZmllbGRzIGZvciBmdWxsLXRleHQgc2VhcmNoCiAgICAgICAgbXkgQFNlYXJjaEZpZWxkcyA9ICggJ2kuZl9udW1iZXInLCAnaS5mX3N1YmplY3QnLCAnaS5mX2tleXdvcmRzJyApOwoKICAgICAgICAjIHVzZWQgZnJvbSB0aGUgYWdlbnQgaW50ZXJmYWNlIChpbnRlcm5hbCkKICAgICAgICBpZiAoICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gZXEgJ2ludGVybmFsJyApIHsKCiAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBzdGF0ZSBvZiB0aGUgZmllbGQgKGludGVybmFsLCBleHRlcm5hbCwgcHVibGljKQogICAgICAgICAgICAgICAgbXkgJEZpZWxkU3RhdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKS0+e1Nob3d9OwoKICAgICAgICAgICAgICAgICMgYWRkIGFsbCBpbnRlcm5hbCwgZXh0ZXJuYWwgYW5kIHB1YmxpYyBmaWVsZHMKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkRmllbGRTdGF0ZSBlcSAnaW50ZXJuYWwnCiAgICAgICAgICAgICAgICAgICAgfHwgJEZpZWxkU3RhdGUgZXEgJ2V4dGVybmFsJwogICAgICAgICAgICAgICAgICAgIHx8ICRGaWVsZFN0YXRlIGVxICdwdWJsaWMnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEZpZWxkcywgJ2kuZl9maWVsZCcgLiAkTnVtYmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVzZWQgZnJvbSB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlIChleHRlcm5hbCkKICAgICAgICBlbHNpZiAoICRQYXJhbXtJbnRlcmZhY2V9LT57TmFtZX0gZXEgJ2V4dGVybmFsJyApIHsKCiAgICAgICAgICAgIGZvciBteSAkTnVtYmVyICggMSAuLiA2ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBzdGF0ZSBvZiB0aGUgZmllbGQgKGludGVybmFsLCBleHRlcm5hbCwgcHVibGljKQogICAgICAgICAgICAgICAgbXkgJEZpZWxkU3RhdGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICdGQVE6Okl0ZW06OkZpZWxkJyAuICROdW1iZXIgKS0+e1Nob3d9OwoKICAgICAgICAgICAgICAgICMgYWRkIGFsbCBleHRlcm5hbCBhbmQgcHVibGljIGZpZWxkcwogICAgICAgICAgICAgICAgaWYgKCAkRmllbGRTdGF0ZSBlcSAnZXh0ZXJuYWwnIHx8ICRGaWVsZFN0YXRlIGVxICdwdWJsaWMnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaEZpZWxkcywgJ2kuZl9maWVsZCcgLiAkTnVtYmVyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVzZWQgZnJvbSB0aGUgcHVibGljIGludGVyZmFjZSAocHVibGljKQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgbXkgJE51bWJlciAoIDEgLi4gNiApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgc3RhdGUgb2YgdGhlIGZpZWxkIChpbnRlcm5hbCwgZXh0ZXJuYWwsIHB1YmxpYykKICAgICAgICAgICAgICAgIG15ICRGaWVsZFN0YXRlID0gJENvbmZpZ09iamVjdC0+R2V0KCAnRkFROjpJdGVtOjpGaWVsZCcgLiAkTnVtYmVyICktPntTaG93fTsKCiAgICAgICAgICAgICAgICAjIGFkZCBhbGwgcHVibGljIGZpZWxkcwogICAgICAgICAgICAgICAgaWYgKCAkRmllbGRTdGF0ZSBlcSAncHVibGljJyApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hGaWVsZHMsICdpLmZfZmllbGQnIC4gJE51bWJlcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgdGhlIFNRTCBmb3IgdGhlIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICAkRXh0IC49ICREQk9iamVjdC0+UXVlcnlDb25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICAgICA9PiBcQFNlYXJjaEZpZWxkcywKICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRQYXJhbXtXaGF0fSwKICAgICAgICAgICAgU2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgU2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgbnVtYmVyCiAgICBpZiAoICRQYXJhbXtOdW1iZXJ9ICkgewogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte051bWJlcn0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKGkuZl9udW1iZXIpIExJS0UgTE9XRVIoJyIgLiAkUGFyYW17TnVtYmVyfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIHRpdGxlCiAgICBpZiAoICRQYXJhbXtUaXRsZX0gKSB7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9ICJcJSRQYXJhbXtUaXRsZX1cJSI7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17VGl0bGV9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtUaXRsZX0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17VGl0bGV9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiBMT1dFUihpLmZfc3ViamVjdCkgTElLRSBMT1dFUignIiAuICRQYXJhbXtUaXRsZX0gLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGxhbmd1YWdlcwogICAgaWYgKCAkUGFyYW17TGFuZ3VhZ2VJRHN9ICYmIHJlZiAkUGFyYW17TGFuZ3VhZ2VJRHN9IGVxICdBUlJBWScgJiYgQHsgJFBhcmFte0xhbmd1YWdlSURzfSB9ICkgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS5mX2xhbmd1YWdlX2lkJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gJFBhcmFte0xhbmd1YWdlSURzfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBjYXRlZ29yaWVzCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUlEc30gJiYgcmVmICRQYXJhbXtDYXRlZ29yeUlEc30gZXEgJ0FSUkFZJyAmJiBAeyAkUGFyYW17Q2F0ZWdvcnlJRHN9IH0gKSB7CgogICAgICAgIG15ICRJblN0cmluZyA9ICRTZWxmLT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICdpLmNhdGVnb3J5X2lkJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gJFBhcmFte0NhdGVnb3J5SURzfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmFsdWUgZm9yIFZhbGlkSURzIChvbmx5IHNlYXJjaCBmb3IgdmFsaWQgRkFRcykKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbGlkSURzfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGlkcwogICAgICAgIG15IEBWYWxpZElEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZElEc0dldCgpOwoKICAgICAgICAkUGFyYW17VmFsaWRJRHN9ID0gXEBWYWxpZElEczsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgVmFsaWRJRHMKICAgIGlmICggJFBhcmFte1ZhbGlkSURzfSAmJiByZWYgJFBhcmFte1ZhbGlkSURzfSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXtWYWxpZElEc30gfSApIHsKCiAgICAgICAgbXkgJEluU3RyaW5nID0gJFNlbGYtPl9JbkNvbmRpdGlvbkdldCgKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ2kudmFsaWRfaWQnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiAkUGFyYW17VmFsaWRJRHN9LAogICAgICAgICk7CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAkSW5TdHJpbmc7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHN0YXRlcwogICAgaWYgKCAkUGFyYW17U3RhdGVzfSAmJiByZWYgJFBhcmFte1N0YXRlc30gZXEgJ0hBU0gnICYmICV7ICRQYXJhbXtTdGF0ZXN9IH0gKSB7CgogICAgICAgIG15IEBTdGF0ZXMgPSBtYXAgeyAkREJPYmplY3QtPlF1b3RlKCAkXywgJ0ludGVnZXInICkgfSBrZXlzICV7ICRQYXJhbXtTdGF0ZXN9IH07CgogICAgICAgIHJldHVybiBpZiBzY2FsYXIgQFN0YXRlcyAhPSBrZXlzICV7ICRQYXJhbXtTdGF0ZXN9IH07CgogICAgICAgIG15ICRJblN0cmluZyA9ICRTZWxmLT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICdzLnR5cGVfaWQnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiBcQFN0YXRlcywKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBrZXl3b3JkcwogICAgaWYgKCAkUGFyYW17S2V5d29yZH0gKSB7CgogICAgICAgICRQYXJhbXtLZXl3b3JkfSA9fiBzLywvJiYvZzsKICAgICAgICAkUGFyYW17S2V5d29yZH0gPX4gcy87LyYmL2c7CiAgICAgICAgJFBhcmFte0tleXdvcmR9ID1+IHMvIC8mJi9nOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgU1FMIGZvciB0aGUga2V5d29yZCBzZWFyY2gKICAgICAgICAkRXh0IC49ICREQk9iamVjdC0+UXVlcnlDb25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICAgICA9PiAnaS5mX2tleXdvcmRzJywKICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRQYXJhbXtLZXl3b3JkfSwKICAgICAgICAgICAgU2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgU2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBvbmx5IGFwcHJvdmVkIEZBUSBhcnRpY2xlcyBmb3IgcHVibGljIGFuZCBjdXN0b21lciBpbnRlcmZhY2UKICAgIGlmICggJFBhcmFte0ludGVyZmFjZX0tPntOYW1lfSBlcSAncHVibGljJyB8fCAkUGFyYW17SW50ZXJmYWNlfS0+e05hbWV9IGVxICdleHRlcm5hbCcgKSB7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCAnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICcgaS5hcHByb3ZlZCA9IDEnOwogICAgfQoKICAgICMgb3RoZXJ3aXNlIGNoZWNrIGlmIG5lZWQgdG8gc2VhcmNoIGZvciBhcHByb3ZlZCBzdGF0dXMKICAgIGVsc2lmICggZGVmaW5lZCAkUGFyYW17QXBwcm92ZWR9ICkgewogICAgICAgIG15ICRBcHByb3ZlZFZhbHVlID0gJFBhcmFte0FwcHJvdmVkfSA/IDEgOiAwOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIGkuYXBwcm92ZWQgPSAkQXBwcm92ZWRWYWx1ZSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIGNyZWF0ZSB1c2VycwogICAgaWYgKAogICAgICAgICRQYXJhbXtDcmVhdGVkVXNlcklEc30KICAgICAgICAmJiByZWYgJFBhcmFte0NyZWF0ZWRVc2VySURzfSBlcSAnQVJSQVknCiAgICAgICAgJiYgQHsgJFBhcmFte0NyZWF0ZWRVc2VySURzfSB9CiAgICAgICAgKQogICAgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS5jcmVhdGVkX2J5JywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gJFBhcmFte0NyZWF0ZWRVc2VySURzfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gJEluU3RyaW5nOwogICAgfQoKICAgICMgc2VhcmNoIGZvciBsYXN0IGNoYW5nZSB1c2VycwogICAgaWYgKAogICAgICAgICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9CiAgICAgICAgJiYgcmVmICRQYXJhbXtMYXN0Q2hhbmdlZFVzZXJJRHN9IGVxICdBUlJBWScKICAgICAgICAmJiBAeyAkUGFyYW17TGFzdENoYW5nZWRVc2VySURzfSB9CiAgICAgICAgKQogICAgewoKICAgICAgICBteSAkSW5TdHJpbmcgPSAkU2VsZi0+X0luQ29uZGl0aW9uR2V0KAogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAnaS5jaGFuZ2VkX2J5JywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gJFBhcmFte0xhc3RDaGFuZ2VkVXNlcklEc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCAnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICRJblN0cmluZzsKICAgIH0KCiAgICAjIFNlYXJjaCBmb3IgY3JlYXRlIGFuZCBjaGFuZ2UgdGltZXMuCiAgICAjIFJlbWVtYmVyIGN1cnJlbnQgdGltZSB0byBwcmV2ZW50IHNlYXJjaGVzIGZvciBmdXR1cmUgdGltZXN0YW1wcy4KICAgIG15ICREYXRlVGltZU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgbXkgJEN1cnJlbnRTeXN0ZW1UaW1lID0gJERhdGVUaW1lT2JqZWN0LT5Ub0Vwb2NoKCk7CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNyZWF0ZWQgb2xkZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXN9ICkgewogICAgICAgICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICREYXRlVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICREYXRlVGltZS0+U3VidHJhY3QoIFNlY29uZHMgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzfSAqIDYwICk7CiAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSA9ICREYXRlVGltZS0+VG9TdHJpbmcoKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbXMgY3JlYXRlZCBuZXdlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyTWludXRlc30gKSB7CiAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJERhdGVUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICAgICAgJERhdGVUaW1lLT5TdWJ0cmFjdCggU2Vjb25kcyA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXN9ICogNjAgKTsKICAgICAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9ID0gJERhdGVUaW1lLT5Ub1N0cmluZygpOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtcyBjcmVhdGVkIG9sZGVyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBteSAkQ29tcGFyZUNyZWF0ZVRpbWVPbGRlck5ld2VyRGF0ZTsKICAgIGlmICggJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSApIHsKCiAgICAgICAgIyBjaGVjayB0aW1lIGZvcm1hdAogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlfSwKICAgICAgICAgICAgfQogICAgICAgICktPlRvRXBvY2goKTsKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkQ29tcGFyZUNyZWF0ZVRpbWVPbGRlck5ld2VyRGF0ZSA9ICRUaW1lOwoKICAgICAgICAkRXh0IC49ICIgQU5EIGkuY3JlYXRlZCA8PSAnIgogICAgICAgICAgICAuICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZX0gKSAuICInIjsKICAgIH0KCiAgICAjIGdldCBJdGVtcyBjaGFuZ2VkIG5ld2VyIHRoYW4geHh4eC14eC14eCB4eDp4eCBkYXRlCiAgICBpZiAoICRQYXJhbXtJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZX0gKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSchIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgbXkgJFRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUGFyYW17SXRlbUNyZWF0ZVRpbWVOZXdlckRhdGV9LAogICAgICAgICAgICB9CiAgICAgICAgKS0+VG9FcG9jaCgpOwogICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdGltZSAnIgogICAgICAgICAgICAgICAgICAgIC4gJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBuZXdlciBkYXRlIGlzIGFmdGVyIGN1cnJlbnQgZGF0ZQogICAgICAgIHJldHVybiBpZiAkVGltZSA+ICRDdXJyZW50U3lzdGVtVGltZTsKCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgb2xkZXIvbmV3ZXIgZGF0ZSByZXN0cmljdGlvbiBzaG93IG5vdyB2YWxpZCB0aW1lIGZyYW1lCiAgICAgICAgcmV0dXJuIGlmICRDb21wYXJlQ3JlYXRlVGltZU9sZGVyTmV3ZXJEYXRlICYmICRUaW1lID4gJENvbXBhcmVDcmVhdGVUaW1lT2xkZXJOZXdlckRhdGU7CgogICAgICAgICRFeHQgLj0gIiBBTkQgaS5jcmVhdGVkID49ICciCiAgICAgICAgICAgIC4gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlfSApIC4gIiciOwogICAgfQoKICAgICMgZ2V0IEZBUSBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geCBtaW51dGVzCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lT2xkZXJNaW51dGVzfSApIHsKICAgICAgICAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkRGF0ZVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAkRGF0ZVRpbWUtPlN1YnRyYWN0KCBTZWNvbmRzID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyTWludXRlc30gKiA2MCApOwogICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0gPSAkRGF0ZVRpbWUtPlRvU3RyaW5nKCk7CiAgICB9CgogICAgIyBnZXQgRkFRIGl0ZW1zIGNoYW5nZWQgbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXN9ICkgewogICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyTWludXRlc30gfHw9IDA7CgogICAgICAgIG15ICREYXRlVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwogICAgICAgICREYXRlVGltZS0+U3VidHJhY3QoIFNlY29uZHMgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSAqIDYwICk7CiAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfSA9ICREYXRlVGltZS0+VG9TdHJpbmcoKTsKICAgIH0KCiAgICAjIGdldCBGQVEgaXRlbXMgY2hhbmdlZCBvbGRlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgbXkgJENvbXBhcmVDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGU7CiAgICBpZiAoICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0gKSB7CgogICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0KICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICckUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9JyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXtJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZX0sCiAgICAgICAgICAgIH0KICAgICAgICApLT5Ub0Vwb2NoKCk7CiAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9IC4gIichIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJENvbXBhcmVDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGUgPSAkVGltZTsKCiAgICAgICAgJEV4dCAuPSAiIEFORCBpLmNoYW5nZWQgPD0gJyIKICAgICAgICAgICAgLiAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVPbGRlckRhdGV9ICkgLiAiJyI7CiAgICB9CgogICAgIyBnZXQgSXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbUNoYW5nZVRpbWVOZXdlckRhdGV9ICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfQogICAgICAgICAgICAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlfSwKICAgICAgICAgICAgfQogICAgICAgICktPlRvRXBvY2goKTsKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0gLiAiJyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBkb24ndCBleGVjdXRlIHF1ZXJpZXMgaWYgbmV3ZXIgZGF0ZSBpcyBhZnRlciBjdXJyZW50IGRhdGUKICAgICAgICByZXR1cm4gaWYgJFRpbWUgPiAkQ3VycmVudFN5c3RlbVRpbWU7CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG9sZGVyL25ld2VyIGRhdGUgcmVzdHJpY3Rpb24gc2hvdyBub3cgdmFsaWQgdGltZSBmcmFtZQogICAgICAgIHJldHVybiBpZiAkQ29tcGFyZUNoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZSAmJiAkVGltZSA+ICRDb21wYXJlQ2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlOwoKICAgICAgICAkRXh0IC49ICIgQU5EIGkuY2hhbmdlZCA+PSAnIgogICAgICAgICAgICAuICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZX0gKSAuICInIjsKICAgIH0KCiAgICAjIGFkZCBXSEVSRSBzdGF0ZW1lbnQKICAgIGlmICgkRXh0KSB7CiAgICAgICAgJEV4dCA9ICcgV0hFUkUgJyAuICRFeHQ7CiAgICB9CgogICAgIyBSZW1lbWJlciBhbHJlYWR5IGpvaW5lZCB0YWJsZXMgZm9yIHNvcnRpbmcuCiAgICBteSAlRHluYW1pY0ZpZWxkSm9pblRhYmxlczsKICAgIG15ICREeW5hbWljRmllbGRKb2luQ291bnRlciA9IDE7CgogICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrLWVuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIERZTkFNSUNfRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7JEZBUUR5bmFtaWNGaWVsZHN9ICkgewogICAgICAgIG15ICRTZWFyY2hQYXJhbSA9ICRQYXJhbXsgIkR5bmFtaWNGaWVsZF8iIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CgogICAgICAgIG5leHQgRFlOQU1JQ19GSUVMRCBpZiAoICEkU2VhcmNoUGFyYW0gKTsKICAgICAgICBuZXh0IERZTkFNSUNfRklFTEQgaWYgKCByZWYgJFNlYXJjaFBhcmFtIG5lICdIQVNIJyApOwoKICAgICAgICBteSAkTmVlZEpvaW47CgogICAgICAgIGZvciBteSAkT3BlcmF0b3IgKCBzb3J0IGtleXMgJXskU2VhcmNoUGFyYW19ICkgewoKICAgICAgICAgICAgbXkgQFNlYXJjaFBhcmFtcyA9ICggcmVmICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gZXEgJ0FSUkFZJyApCiAgICAgICAgICAgICAgICA/IEB7ICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gfQogICAgICAgICAgICAgICAgOiAoICRTZWFyY2hQYXJhbS0+eyRPcGVyYXRvcn0gKTsKCiAgICAgICAgICAgIG15ICRTUUxFeHRTdWIgPSAnIEFORCAoJzsKICAgICAgICAgICAgbXkgJENvdW50ZXIgICA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICggIWRlZmluZWQgJFRleHQgfHwgJFRleHQgZXEgJycgKTsKCiAgICAgICAgICAgICAgICAkVGV4dCA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgICAgIG5leHQgVEVYVCBpZiAkVGV4dCA9fiAvXlwlezEsM30kLzsKCiAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIGRhdGEgdHlwZQogICAgICAgICAgICAgICAgbXkgJFZhbGlkYXRlU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFZhbGlkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdmFsdWUgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIicgb24gZmllbGQgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICInISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyBPUiAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIiwKICAgICAgICAgICAgICAgICAgICBPcGVyYXRvciAgICAgICAgICAgPT4gJE9wZXJhdG9yLAogICAgICAgICAgICAgICAgICAgIFNlYXJjaFRlcm0gICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcpJzsKICAgICAgICAgICAgaWYgKCRDb3VudGVyKSB7CiAgICAgICAgICAgICAgICAkRXh0IC49ICRTUUxFeHRTdWI7CiAgICAgICAgICAgICAgICAkTmVlZEpvaW4gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJE5lZWRKb2luKSB7CgogICAgICAgICAgICAjIEpvaW4gdGhlIHRhYmxlIGZvciB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgJFNRTCAuPSAiIElOTkVSIEpPSU4gZHluYW1pY19maWVsZF92YWx1ZSBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIKICAgICAgICAgICAgICAgIE9OIChpLmlkID0gZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLm9iamVjdF9pZAogICAgICAgICAgICAgICAgICAgIEFORCBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIuZmllbGRfaWQgPSAiIC4KICAgICAgICAgICAgICAgICREQk9iamVjdC0+UXVvdGUoICREeW5hbWljRmllbGQtPntJRH0sICdJbnRlZ2VyJyApIC4gIikgIjsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luVGFibGVzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICJkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyKys7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIEdST1VQIEJZCiAgICAkRXh0CiAgICAgICAgLj0gJyBHUk9VUCBCWSBpLmlkLCBpLmZfc3ViamVjdCwgaS5mX2xhbmd1YWdlX2lkLCBpLmNyZWF0ZWQsIGkuY2hhbmdlZCwgcy5uYW1lLCB2Lml0ZW1faWQgJzsKCiAgICAjIGFkZCBIQVZJTkcgY2xhdXNlICggVm90ZXMgYW5kIFJhdGUgYXJlIGFnZ3JlZ2F0ZWQgY29sdW1ucywgdGhleSBjYW4ndCBiZSBpbiB0aGUgV0hFUkUgY2xhdXNlKQogICAgIyBkZWZpbmVkIHZvdGluZyBwYXJhbWV0ZXJzIChmb3IgVm90ZXMgYW5kIFJhdGUpCiAgICBteSAlVm90aW5nT3BlcmF0b3JzID0gKAogICAgICAgIEVxdWFscyAgICAgICAgICAgID0+ICc9JywKICAgICAgICBHcmVhdGVyVGhhbiAgICAgICA9PiAnPicsCiAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJz49JywKICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnPCcsCiAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzw9JywKICAgICk7CgogICAgbXkgJEhhdmluZ1ByaW50OwogICAgbXkgJEFkZGVkQ29uZGl0aW9uOwoKICAgIEhBVklOR19QQVJBTToKICAgIGZvciBteSAkSGF2aW5nUGFyYW0gKHF3KFZvdGVzIFJhdGUpKSB7CiAgICAgICAgbXkgJFNlYXJjaFBhcmFtID0gJFBhcmFteyRIYXZpbmdQYXJhbX07CgogICAgICAgIG5leHQgSEFWSU5HX1BBUkFNIGlmICggISRTZWFyY2hQYXJhbSApOwogICAgICAgIG5leHQgSEFWSU5HX1BBUkFNIGlmICggcmVmICRTZWFyY2hQYXJhbSBuZSAnSEFTSCcgKTsKCiAgICAgICAgT1BFUkFUT1I6CiAgICAgICAgZm9yIG15ICRPcGVyYXRvciAoIHNvcnQga2V5cyAleyRTZWFyY2hQYXJhbX0gKSB7CgogICAgICAgICAgICBuZXh0IE9QRVJBVE9SIGlmICEoICRWb3RpbmdPcGVyYXRvcnN7JE9wZXJhdG9yfSApOwoKICAgICAgICAgICAgIyBwcmludCBIQVZJTkcgY2xhdXNlIGp1c3Qgb25jZSBpZiBhbmQganVzdCBpZiB0aGUgb3BlcmF0b3IgaXMgdmFsaWQKICAgICAgICAgICAgaWYgKCAhJEhhdmluZ1ByaW50ICkgewogICAgICAgICAgICAgICAgJEV4dCAuPSAnIEhBVklORyAnOwogICAgICAgICAgICAgICAgJEhhdmluZ1ByaW50ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFNRTEV4dFN1YjsKCiAgICAgICAgICAgIG15IEBTZWFyY2hQYXJhbXMgPSAoIHJlZiAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IGVxICdBUlJBWScgKQogICAgICAgICAgICAgICAgPyBAeyAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9IH0KICAgICAgICAgICAgICAgIDogKCAkU2VhcmNoUGFyYW0tPnskT3BlcmF0b3J9ICk7CgogICAgICAgICAgICAjIGRvIG5vdCB1c2UgQU5EIG9uIHRoZSBmaXJzdCBjb25kaXRpb24KICAgICAgICAgICAgaWYgKCRBZGRlZENvbmRpdGlvbikgewogICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnIEFORCAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyAoJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgICAgIFRFWFQ6CiAgICAgICAgICAgIGZvciBteSAkVGV4dCAoQFNlYXJjaFBhcmFtcykgewogICAgICAgICAgICAgICAgbmV4dCBURVhUIGlmICggIWRlZmluZWQgJFRleHQgfHwgJFRleHQgZXEgJycgKTsKCiAgICAgICAgICAgICAgICAkVGV4dCA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAgICAgIyBjaGVjayBzZWFyY2ggYXR0cmlidXRlLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2ggZm9yICoKICAgICAgICAgICAgICAgIG5leHQgVEVYVCBpZiAkVGV4dCA9fiAvXlwlezEsM30kLzsKCiAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcgT1IgJyBpZiAoJENvdW50ZXIpOwoKICAgICAgICAgICAgICAgICMgZGVmaW5lIGFnZ3JlZ2F0aW9uIGNvbHVtbgogICAgICAgICAgICAgICAgbXkgJEFnZ3JlZ2F0ZUNvbHVtbiA9ICdjb3VudCggdi5pdGVtX2lkICknOwogICAgICAgICAgICAgICAgaWYgKCAkSGF2aW5nUGFyYW0gZXEgJ1JhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRBZ2dyZWdhdGVDb2x1bW4gPSAnYXZnKCB2LnJhdGUgKSc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzZXQgY29uZGl0aW9uCiAgICAgICAgICAgICAgICAkU1FMRXh0U3ViIC49ICIgJEFnZ3JlZ2F0ZUNvbHVtbiAkVm90aW5nT3BlcmF0b3JzeyRPcGVyYXRvcn0gIjsKICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJERCT2JqZWN0LT5RdW90ZSggJFRleHQsICdOdW1iZXInICkgLiAiICI7CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjbG9zZSBjb25kaXRpb24KICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAnKSAnOwoKICAgICAgICAgICAgIyBhZGQgY29uZGl0aW9uIHRvIHRoZSBmaW5hbCBTUUwgc3RhdGVtZW50CiAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgJEV4dCAuPSAkU1FMRXh0U3ViOwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZGl0aW9uID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGRhdGFiYXNlIHF1ZXJ5IGZvciBzb3J0L29yZGVyIGJ5IG9wdGlvbgogICAgbXkgJEV4dE9yZGVyQnkgPSAnIE9SREVSIEJZJzsKICAgIGZvciBteSAkQ291bnQgKCAwIC4uICQjeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKICAgICAgICBpZiAoICRDb3VudCA+IDAgKSB7CiAgICAgICAgICAgICRFeHRPcmRlckJ5IC49ICcsJzsKICAgICAgICB9CgogICAgICAgICMgc29ydCBieSBkeW5hbWljIGZpZWxkCiAgICAgICAgaWYgKCAkVmFsaWREeW5hbWljRmllbGRQYXJhbXN7ICRQYXJhbXtPcmRlckJ5fS0+WyRDb3VudF0gfSApIHsKICAgICAgICAgICAgbXkgKCREeW5hbWljRmllbGROYW1lKSA9ICRQYXJhbXtPcmRlckJ5fS0+WyRDb3VudF0gPX4gbS9eRHluYW1pY0ZpZWxkXyguKikkL3NteDsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRkFRRHluYW1pY0ZpZWxkTmFtZTJDb25maWd7JER5bmFtaWNGaWVsZE5hbWV9OwoKICAgICAgICAgICAgIyBJZiB0aGUgdGFibGUgd2FzIGFscmVhZHkgam9pbmVkIGZvciBzZWFyY2hpbmcsIHdlIHJldXNlIGl0LgogICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3skRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgIyBKb2luIHRoZSB0YWJsZSBmb3IgdGhpcyBkeW5hbWljIGZpZWxkOyB1c2UgYSBsZWZ0IG91dGVyIGpvaW4gaW4gdGhpcyBjYXNlLgogICAgICAgICAgICAgICAgIyBXaXRoIGFuIElOTkVSIEpPSU4gd2UnZCBsaW1pdCB0aGUgcmVzdWx0IHNldCB0byB0aWNrZXRzIHdoaWNoIGhhdmUgYW4gZW50cnkKICAgICAgICAgICAgICAgICMgICBmb3IgdGhlIERGIHdoaWNoIGlzIHVzZWQgZm9yIHNvcnRpbmcuCiAgICAgICAgICAgICAgICAkU1FMCiAgICAgICAgICAgICAgICAgICAgLj0gIiBMRUZUIE9VVEVSIEpPSU4gZHluYW1pY19maWVsZF92YWx1ZSBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIKICAgICAgICAgICAgICAgICAgICBPTiAoaS5pZCA9IGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlci5vYmplY3RfaWQKICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlci5maWVsZF9pZCA9ICIgLgogICAgICAgICAgICAgICAgICAgICREQk9iamVjdC0+UXVvdGUoICREeW5hbWljRmllbGQtPntJRH0sICdJbnRlZ2VyJyApIC4gIikgIjsKCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIjsKCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFNRTE9yZGVyRmllbGQgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMT3JkZXJGaWVsZEdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgVGFibGVBbGlhcyAgICAgICAgID0+ICREeW5hbWljRmllbGRKb2luVGFibGVzeyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEV4dCAgICAgICAgLj0gIiwgJFNRTE9yZGVyRmllbGQgIjsKICAgICAgICAgICAgJEV4dE9yZGVyQnkgLj0gIiAkU1FMT3JkZXJGaWVsZCAiOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgUmVndWxhciBzb3J0LgogICAgICAgICAgICAkRXh0T3JkZXJCeSAuPSAnICcgLiAkT3JkZXJCeVRhYmxleyAkUGFyYW17T3JkZXJCeX0tPlskQ291bnRdIH07CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gZXEgJ1VwJyApIHsKICAgICAgICAgICAgJEV4dE9yZGVyQnkgLj0gJyBBU0MnOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEV4dE9yZGVyQnkgLj0gJyBERVNDJzsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgdGhlIG9yZGVyaW5nIGlzIG5vdCBkZXRlcm1pbmVkCiAgICAjIHdlIGFkZCBhbiBkZXNjZW5kaW5nIG9yZGVyaW5nIGJ5IGlkCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ0ZBUUlEJyB9ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSApIHsKICAgICAgICBpZiAoICQjeyAkUGFyYW17T3JkZXJCeX0gfSA+PSAwICkgewogICAgICAgICAgICAkRXh0T3JkZXJCeSAuPSAnLCc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBkZWZhdWx0IG9yZGVyIGJ5IGRpcmVjdGlvbgogICAgICAgIG15ICRPcmRlckJ5RGlyZWN0aW9uID0gJ0FTQyc7CgogICAgICAgICMgdHJ5IHRvIGdldCB0aGUgb3JkZXIgYnkgZGlyZWN0aW9uIG9mIHRoZSBsYXN0CiAgICAgICAgIyB1c2VkICdDcmVhdGVkJyBvciAnQ2hhbmdlZCcgT3JkZXJCeSBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJE9yZGVyQnkgKCBAeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnQ3JlYXRlZCcgfHwgJE9yZGVyQnkgZXEgJ0NoYW5nZWQnICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5RGlyZWN0aW9uID0gJ0FTQyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeURpcmVjdGlvbiA9ICdERVNDJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICB9CgogICAgICAgICRFeHRPcmRlckJ5IC49ICcgJyAuICRPcmRlckJ5VGFibGV7RkFRSUR9IC4gJyAnIC4gJE9yZGVyQnlEaXJlY3Rpb247CiAgICB9CgogICAgIyBhZGQgZXh0ZW5kZWQgU1FMCiAgICAkU1FMIC49ICRFeHQgLiAkRXh0T3JkZXJCeTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9IHx8IDUwMCwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIEBMaXN0Owp9Cgo9aGVhZDEgUFJJVkFURSBGVU5DVElPTlMKCj1oZWFkMiBfSW5Db25kaXRpb25HZXQoKQoKaW50ZXJuYWwgZnVuY3Rpb24gdG8gY3JlYXRlIGFuCgogICAgdGFibGUuY29sdW1uIElOICh2YWx1ZXMpCgpjb25kaXRpb24gc3RyaW5nIGZyb20gYW4gYXJyYXkuCgogICAgbXkgJFNRTFBhcnQgPSAkVGlja2V0T2JqZWN0LT5fSW5Db25kaXRpb25HZXQoCiAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3RhYmxlLmNvbHVtbicsCiAgICAgICAgSURSZWYgICAgICAgPT4gJEFycmF5UmVmLAogICAgKTsKCj1jdXQKCnN1YiBfSW5Db25kaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VGFibGVDb2x1bW59ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUYWJsZUNvbHVtbiEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0lEUmVmfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBJRFJlZiEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc29ydCBpZHMgdG8gY2FjaGUgdGhlIFNRTCBxdWVyeQogICAgbXkgQFNvcnRlZElEcyA9IHNvcnQgeyAkYSA8PT4gJGIgfSBAeyAkUGFyYW17SURSZWZ9IH07CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIEVycm9yIG91dCBpZiBzb21lIHZhbHVlcyB3ZXJlIG5vdCBpbnRlZ2Vycy4KICAgIEBTb3J0ZWRJRHMgPSBtYXAgeyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICRfLCAnSW50ZWdlcicgKSB9IEBTb3J0ZWRJRHM7CiAgICByZXR1cm4gaWYgc2NhbGFyIEBTb3J0ZWRJRHMgIT0gc2NhbGFyIEB7ICRQYXJhbXtJRFJlZn0gfTsKCiAgICAjIHNwbGl0IElOIHN0YXRlbWVudCB3aXRoIG1vcmUgdGhhbiA5MDAgZWxlbWVudHMgaW4gbW9yZSBzdGF0ZW1lbnRzIGNvbWJpbmVkIHdpdGggT1IKICAgICMgYmVjYXVzZSBPcmFjbGUgZG9lc24ndCBzdXBwb3J0IG1vcmUgdGhhbiAxMDAwIGVsZW1lbnRzIGluIG9uZSBJTiBzdGF0ZW1lbnQuCiAgICBteSBAU1FMU3RyaW5nczsKICAgIExPT1A6CiAgICB3aGlsZSAoIHNjYWxhciBAU29ydGVkSURzICkgewoKICAgICAgICBteSBAU29ydGVkSURzUGFydCA9IHNwbGljZSBAU29ydGVkSURzLCAwLCA5MDA7CgogICAgICAgIG15ICRJRFN0cmluZyA9IGpvaW4gJywgJywgQFNvcnRlZElEc1BhcnQ7CgogICAgICAgIHB1c2ggQFNRTFN0cmluZ3MsICIgJFBhcmFte1RhYmxlQ29sdW1ufSBJTiAoJElEU3RyaW5nKSAiOwogICAgfQoKICAgIG15ICRTUUwgPSBqb2luICcgT1IgJywgQFNRTFN0cmluZ3M7CiAgICAkU1FMID0gJyAoICcgLiAkU1FMIC4gJyApICc7CgogICAgcmV0dXJuICRTUUw7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEpOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpGQVEKCj1oZWFkMSBERVNDUklQVElPTgoKRkFRIGJhY2tlbmQgZm9yIHRoZSBsaW5rIG9iamVjdC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEZBUU9iamVjdEJhY2tlbmQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6RkFRJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIExpbmtMaXN0V2l0aERhdGEoKQoKZmlsbCB1cCB0aGUgbGluayBsaXN0IHdpdGggZGF0YQoKICAgICRTdWNjZXNzID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgTGlua0xpc3QgPT4gJEhhc2hSZWYsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0xpc3RXaXRoRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExpbmtMaXN0IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbGluayBsaXN0CiAgICBpZiAoIHJlZiAkUGFyYW17TGlua0xpc3R9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0xpbmtMaXN0IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fSB9ICkgewoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfSB9ICkgewoKICAgICAgICAgICAgSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259IH0gKSB7CgogICAgICAgICAgICAgICAgbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBpZCBmcm9tIGhhc2ggaWYgbm8gRkFRIGRhdGEgd2FzIGZvdW5kCiAgICAgICAgICAgICAgICBpZiAoICElRkFRRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufS0+eyRJdGVtSUR9OwogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTUlEOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIEZBUSBkYXRhCiAgICAgICAgICAgICAgICAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JEl0ZW1JRH0gPSBcJUZBUURhdGE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBPYmplY3RQZXJtaXNzaW9uKCkKCmNoZWNrcyByZWFkIHBlcm1pc3Npb24gZm9yIGEgZ2l2ZW4gb2JqZWN0IGFuZCBVc2VySUQuCgogICAgJFBlcm1pc3Npb24gPSAkTGlua09iamVjdC0+T2JqZWN0UGVybWlzc2lvbigKICAgICAgICBPYmplY3QgID0+ICdGQVEnLAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0UGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdCBLZXkgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBtb2R1bGUgcmVnaXN0cnkgb2YgQWdlbnRGQVFab29tCiAgICBteSAkTW9kdWxlUmVnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyktPntBZ2VudEZBUVpvb219OwoKICAgICMgZG8gbm90IGdyYW50IGFjY2VzcyBpZiBmcm9udGVuZCBtb2R1bGUgaXMgbm90IHJlZ2lzdGVyZWQKICAgIHJldHVybiBpZiAhJE1vZHVsZVJlZzsKCiAgICAjIGdyYW50IGFjY2VzcyBpZiBtb2R1bGUgcGVybWlzc2lvbiBoYXMgbm8gR3JvdXAgb3IgR3JvdXBSbyBkZWZpbmVkCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRNb2R1bGVSZWctPntHcm91cFJvfSApICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRNb2R1bGVSZWctPntHcm91cH0gKSApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICBQRVJNSVNTSU9OOgogICAgZm9yIG15ICRQZXJtaXNzaW9uIChxdyhHcm91cFJvIEdyb3VwKSkgewoKICAgICAgICBuZXh0IFBFUk1JU1NJT04gaWYgISRNb2R1bGVSZWctPnskUGVybWlzc2lvbn07CiAgICAgICAgbmV4dCBQRVJNSVNTSU9OIGlmIHJlZiAkTW9kdWxlUmVnLT57JFBlcm1pc3Npb259IG5lICdBUlJBWSc7CgogICAgICAgIGZvciBteSAkR3JvdXAgKCBAeyAkTW9kdWxlUmVnLT57JFBlcm1pc3Npb259IH0gKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgZ3JvdXAgaWQKICAgICAgICAgICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKCBHcm91cCA9PiAkR3JvdXAgKTsKCiAgICAgICAgICAgIG15ICRUeXBlOwogICAgICAgICAgICBpZiAoICRQZXJtaXNzaW9uIGVxICdHcm91cFJvJyApIHsKICAgICAgICAgICAgICAgICRUeXBlID0gJ3JvJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRQZXJtaXNzaW9uIGVxICdHcm91cCcgKSB7CiAgICAgICAgICAgICAgICAkVHlwZSA9ICdydyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHVzZXIgZ3JvdXBzLCB3aGVyZSB0aGUgdXNlciBoYXMgdGhlIGFwcHJvcHJpYXRlIHByaXZpbGVnZQogICAgICAgICAgICBteSAlR3JvdXBzID0gJEdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgaWYgYWdlbnQgaXMgYSBtZW1iZXIgaW4gdGhlIGdyb3VwCiAgICAgICAgICAgIHJldHVybiAxIGlmICRHcm91cHN7JEdyb3VwSUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCj1oZWFkMiBPYmplY3REZXNjcmlwdGlvbkdldCgpCgpyZXR1cm4gYSBoYXNoIG9mIG9iamVjdCBkZXNjcmlwdGlvbnMKClJldHVybgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAiRkFRIyAxMjM0IiwKICAgICAgICBMb25nICAgPT4gIkZBUSMgMTIzNDogRkFRVGl0bGUiLAogICAgKTsKCiAgICAlRGVzY3JpcHRpb24gPSAkTGlua09iamVjdC0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgS2V5ICAgICA9PiAxMjMsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3REZXNjcmlwdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdCBLZXkgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgZGVzY3JpcHRpb24KICAgIG15ICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gJ0ZBUScsCiAgICAgICAgTG9uZyAgID0+ICdGQVEnLAogICAgKTsKCiAgICByZXR1cm4gJURlc2NyaXB0aW9uIGlmICRQYXJhbXtNb2RlfSAmJiAkUGFyYW17TW9kZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgbXkgJUZBUSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRR2V0KAogICAgICAgIEl0ZW1JRCAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSXRlbUZpZWxkcyA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJUZBUTsKCiAgICAjIGRlZmluZSBkZXNjcmlwdGlvbiB0ZXh0CiAgICBteSAkRkFRSG9vayAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6OkZBUUhvb2snKTsKICAgIG15ICREZXNjcmlwdGlvblRleHQgPSAiJEZBUUhvb2sgJEZBUXtOdW1iZXJ9IjsKCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAkRGVzY3JpcHRpb25UZXh0LAogICAgICAgIExvbmcgICA9PiAiJERlc2NyaXB0aW9uVGV4dDogJEZBUXtUaXRsZX0iLAogICAgKTsKCiAgICByZXR1cm4gJURlc2NyaXB0aW9uOwp9Cgo9aGVhZDIgT2JqZWN0U2VhcmNoKCkKCnJldHVybiBhIGhhc2ggbGlzdCBvZiB0aGUgc2VhcmNoIHJlc3VsdHMKClJldHVybgogICAgJFNlYXJjaExpc3QgPSB7CiAgICAgICAgTk9ULUxJTktFRCA9PiB7CiAgICAgICAgICAgIFNvdXJjZSA9PiB7CiAgICAgICAgICAgICAgICAxMiAgPT4gJERhdGFPZkl0ZW0xMiwKICAgICAgICAgICAgICAgIDIxMiA9PiAkRGF0YU9mSXRlbTIxMiwKICAgICAgICAgICAgICAgIDMzMiA9PiAkRGF0YU9mSXRlbTMzMiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKCiAgICAkU2VhcmNoTGlzdCA9ICRMaW5rT2JqZWN0QmFja2VuZC0+T2JqZWN0U2VhcmNoKAogICAgICAgIFNlYXJjaFBhcmFtcyA9PiAkSGFzaFJlZiwgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zCiAgICAkUGFyYW17U2VhcmNoUGFyYW1zfSB8fD0ge307CgogICAgIyBhZGQgd2lsZC1jYXJkcwogICAgbXkgJVNlYXJjaDsKICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntUaXRsZX0gKSB7CiAgICAgICAgJFNlYXJjaHtUaXRsZX0gPSAnKicgLiAkUGFyYW17U2VhcmNoUGFyYW1zfS0+e1RpdGxlfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2h7TnVtYmVyfSA9ICcqJyAuICRQYXJhbXtTZWFyY2hQYXJhbXN9LT57TnVtYmVyfSAuICcqJzsKICAgIH0KICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSApIHsKICAgICAgICAkU2VhcmNoe1doYXR9ID0gJyonIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPntXaGF0fSAuICcqJzsKICAgIH0KCiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgc2VhcmNoIHRoZSBGQVFzCiAgICBteSBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCgKICAgICAgICAleyAkUGFyYW17U2VhcmNoUGFyYW1zfSB9LAogICAgICAgICVTZWFyY2gsCiAgICAgICAgT3JkZXIgID0+ICdDcmVhdGVkJywKICAgICAgICBTb3J0ICAgPT4gJ2Rvd24nLAogICAgICAgIExpbWl0ICA9PiA1MCwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICVTZWFyY2hMaXN0OwogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CgogICAgICAgIG15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IElURU1JRCBpZiAhJUZBUURhdGE7CgogICAgICAgICMgYWRkIEZBUSBkYXRhCiAgICAgICAgJFNlYXJjaExpc3R7Tk9UTElOS0VEfS0+e1NvdXJjZX0tPnskSXRlbUlEfSA9IFwlRkFRRGF0YTsKICAgIH0KCiAgICByZXR1cm4gXCVTZWFyY2hMaXN0Owp9Cgo9aGVhZDIgTGlua0FkZFByZSgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rQWRkUHJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIExpbmtBZGRQb3N0KCkKCmxpbmsgYWRkIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnRkFRJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0FkZFBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgVHlwZSBTdGF0ZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgTGlua0RlbGV0ZVByZSgpCgpsaW5rIGRlbGV0ZSBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnRkFRJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdGQVEnLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rRGVsZXRlUHJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIExpbmtEZWxldGVQb3N0KCkKCmxpbmsgZGVsZXRlIHBvc3QgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIG9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0ZBUScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtEZWxldGVQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6U3RhdGljOjpGQVFBY2Nlc3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkZBUScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEdldE9iamVjdEJlaGF2aW91cnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlQmVoYXZpb3VycyA9ICgKICAgICAgICBQcm92aWRlc0Rhc2hib2FyZFdpZGdldCA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gJUJlaGF2aW91cnM7Cn0KCnN1YiBQYXJhbSB7CgogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICBteSBAUGFyYW1zID0gKCk7CgogICAgIyBHZXQgY3VycmVudCB0aW1lLgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICk7CiAgICBteSAkRGF0ZVRpbWVTZXR0aW5ncyA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CgogICAgbXkgJEQgPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZVNldHRpbmdzLT57RGF5fSApOwogICAgbXkgJE0gPSBzcHJpbnRmKCAiJTAyZCIsICREYXRlVGltZVNldHRpbmdzLT57TW9udGh9ICk7CiAgICBteSAkWSA9IHNwcmludGYoICIlMDJkIiwgJERhdGVUaW1lU2V0dGluZ3MtPntZZWFyfSApOwoKICAgICMgQ3JlYXRlIHBvc3NpYmxlIHRpbWUgc2VsZWN0aW9ucy4KICAgIG15ICVZZWFyICA9IG1hcCB7ICRfID0+ICRfIH0gKCAkWSAtIDEwIC4uICRZICsgMSApOwogICAgbXkgJU1vbnRoID0gbWFwIHsgc3ByaW50ZiggIiUwMmQiLCAkXyApID0+IHNwcmludGYoICIlMDJkIiwgJF8gKSB9ICggMSAuLiAxMiApOwogICAgbXkgJURheSAgID0gbWFwIHsgc3ByaW50ZiggIiUwMmQiLCAkXyApID0+IHNwcmludGYoICIlMDJkIiwgJF8gKSB9ICggMSAuLiAzMSApOwoKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ1N0YXJ0IGRheScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnREYXknLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAnMDEnLAogICAgICAgIERhdGEgICAgICAgPT4gewogICAgICAgICAgICAlRGF5LAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnU3RhcnQgbW9udGgnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1N0YXJ0TW9udGgnLAogICAgICAgIE11bHRpcGxlICAgPT4gMCwKICAgICAgICBTaXplICAgICAgID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkTSwKICAgICAgICBEYXRhICAgICAgID0+IHsKICAgICAgICAgICAgJU1vbnRoLAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnU3RhcnQgeWVhcicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnU3RhcnRZZWFyJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFksCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwogICAgcHVzaCBAUGFyYW1zLCB7CiAgICAgICAgRnJvbnRlbmQgICA9PiAnRW5kIGRheScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnRW5kRGF5JywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJEQsCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVEYXksCiAgICAgICAgfSwKICAgIH07CiAgICBwdXNoIEBQYXJhbXMsIHsKICAgICAgICBGcm9udGVuZCAgID0+ICdFbmQgbW9udGgnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0VuZE1vbnRoJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJE0sCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVNb250aCwKICAgICAgICB9LAogICAgfTsKICAgIHB1c2ggQFBhcmFtcywgewogICAgICAgIEZyb250ZW5kICAgPT4gJ0VuZCB5ZWFyJywKICAgICAgICBOYW1lICAgICAgID0+ICdFbmRZZWFyJywKICAgICAgICBNdWx0aXBsZSAgID0+IDAsCiAgICAgICAgU2l6ZSAgICAgICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFksCiAgICAgICAgRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgICVZZWFyLAogICAgICAgIH0sCiAgICB9OwoKICAgIHJldHVybiBAUGFyYW1zOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAocXcoU3RhcnRZZWFyIFN0YXJ0TW9udGggU3RhcnREYXkgRW5kWWVhciBFbmRNb250aCBFbmREYXkpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRQYXJhbU5hbWV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkUGFyYW1OYW1lISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERhdGVUaW1lT2JqZWN0U3RhcnQgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFllYXIgICAgID0+ICRQYXJhbXtTdGFydFllYXJ9LAogICAgICAgICAgICBNb250aCAgICA9PiAkUGFyYW17U3RhcnRNb250aH0sCiAgICAgICAgICAgIERheSAgICAgID0+IDEsCiAgICAgICAgICAgIFRpbWVab25lID0+ICdmbG9hdGluZycsCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJExhc3REYXlPZk1vbnRoU3RhcnQ7CiAgICBpZiAoIGRlZmluZWQgJERhdGVUaW1lT2JqZWN0U3RhcnQgKSB7CiAgICAgICAgJExhc3REYXlPZk1vbnRoU3RhcnQgPSAkRGF0ZVRpbWVPYmplY3RTdGFydC0+TGFzdERheU9mTW9udGhHZXQoKTsKICAgIH0KCiAgICAjIENvcnJlY3Qgc3RhcnQgZGF5IG9mIG1vbnRoIGlmIGVudGVyZWQgd3JvbmcgYnkgdXNlci4KICAgIG15ICRTdGFydERheSA9IHNwcmludGYoICIlMDJkIiwgJExhc3REYXlPZk1vbnRoU3RhcnQgKTsKICAgIGlmICggJFBhcmFte1N0YXJ0RGF5fSA8ICRTdGFydERheSApIHsKICAgICAgICAkU3RhcnREYXkgPSAkUGFyYW17U3RhcnREYXl9OwogICAgfQoKICAgIG15ICREYXRlVGltZU9iamVjdEVuZCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgWWVhciAgICAgPT4gJFBhcmFte0VuZFllYXJ9LAogICAgICAgICAgICBNb250aCAgICA9PiAkUGFyYW17RW5kTW9udGh9LAogICAgICAgICAgICBEYXkgICAgICA9PiAxLAogICAgICAgICAgICBUaW1lWm9uZSA9PiAnZmxvYXRpbmcnLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRMYXN0RGF5T2ZNb250aEVuZDsKICAgIGlmICggZGVmaW5lZCAkRGF0ZVRpbWVPYmplY3RFbmQgKSB7CiAgICAgICAgJExhc3REYXlPZk1vbnRoRW5kID0gJERhdGVUaW1lT2JqZWN0RW5kLT5MYXN0RGF5T2ZNb250aEdldCgpOwogICAgfQoKICAgICMgQ29ycmVjdCBlbmQgZGF5IG9mIG1vbnRoIGlmIGVudGVyZWQgd3JvbmcgYnkgdXNlci4KICAgIG15ICRFbmREYXkgPSBzcHJpbnRmKCAiJTAyZCIsICRMYXN0RGF5T2ZNb250aEVuZCApOwogICAgaWYgKCAkUGFyYW17RW5kRGF5fSA8ICRFbmREYXkgKSB7CiAgICAgICAgJEVuZERheSA9ICRQYXJhbXtFbmREYXl9OwogICAgfQoKICAgICMgU2V0IHN0YXJ0IGFuZCBlbmQgZGF0ZS4KICAgIG15ICRTdGFydERhdGUgPSAiJFBhcmFte1N0YXJ0WWVhcn0tJFBhcmFte1N0YXJ0TW9udGh9LSRTdGFydERheSAwMDowMDowMCI7CiAgICBteSAkRW5kRGF0ZSAgID0gIiRQYXJhbXtFbmRZZWFyfS0kUGFyYW17RW5kTW9udGh9LSRFbmREYXkgMjM6NTk6NTkiOwoKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJEZBUVRvcDEwTGltaXRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RXhwbG9yZXI6OlRvcDEwOjpMaW1pdCcpOwoKICAgICMgR2V0IGEgY291bnQgb2YgYWxsIEZBUSBhcnRpY2xlcy4KICAgIG15ICRUb3AxMEl0ZW1JRHNSZWYgPSAkRkFRT2JqZWN0LT5GQVFUb3AxMEdldCgKICAgICAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgICAgICBTdGFydERhdGUgPT4gJFN0YXJ0RGF0ZSwKICAgICAgICBFbmREYXRlICAgPT4gJEVuZERhdGUsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgTGltaXQgICAgID0+ICRGQVFUb3AxMExpbWl0Q29uZmlnLAogICAgKSB8fCBbXTsKCiAgICAjIEJ1aWxkIHJlc3VsdCB0YWJsZS4KICAgIG15IEBEYXRhOwogICAgZm9yIG15ICRJdGVtSURSZWYgKCBAeyRUb3AxMEl0ZW1JRHNSZWZ9ICkgewoKICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlEUmVmLT57SXRlbUlEfSwKICAgICAgICAgICAgSXRlbUZpZWxkcyA9PiAwLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFZvdGVEYXRhID0gJEZBUU9iamVjdC0+SXRlbVZvdGVEYXRhR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRFJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgbXkgJFZvdGVSZXN1bHQgPSBzcHJpbnRmKAogICAgICAgICAgICAiJTAuIgogICAgICAgICAgICAgICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoCiAgICAgICAgICAgICAgICAiRkFROjpFeHBsb3Jlcjo6SXRlbUxpc3Q6OlZvdGluZ1Jlc3VsdERlY2ltYWxQbGFjZXMiCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAuICJmIiwKICAgICAgICAgICAgJFZvdGVEYXRhLT57UmVzdWx0fQogICAgICAgICAgICAgICAgfHwgMAogICAgICAgICk7CiAgICAgICAgbXkgJFZvdGVzID0gJFZvdGVEYXRhLT57Vm90ZXN9IHx8IDA7CgogICAgICAgICMgQnVpbGQgdGFibGUgcm93LgogICAgICAgIHB1c2ggQERhdGEsIFsKICAgICAgICAgICAgJEZBUURhdGF7TnVtYmVyfSwKICAgICAgICAgICAgJEZBUURhdGF7VGl0bGV9LAogICAgICAgICAgICAkSXRlbUlEUmVmLT57Q291bnR9LAogICAgICAgICAgICAkVm90ZVJlc3VsdCwKICAgICAgICAgICAgJFZvdGVzLAogICAgICAgIF07CiAgICB9CgogICAgIyBTZXQgcmVwb3J0IHRpdGxlLgogICAgbXkgJFRpdGxlID0gIiRQYXJhbXtTdGFydFllYXJ9LSRQYXJhbXtTdGFydE1vbnRofS0kU3RhcnREYXkgLSAkUGFyYW17RW5kWWVhcn0tJFBhcmFte0VuZE1vbnRofS0kRW5kRGF5IjsKCiAgICAjIFRhYmxlIGhlYWRsaW5lcy4KICAgIG15IEBIZWFkRGF0YSA9ICgKICAgICAgICAnRkFRICMnLAogICAgICAgICdUaXRsZScsCiAgICAgICAgJ0NvdW50JywKICAgICAgICAnVm90ZSBSZXN1bHQnLAogICAgICAgICdWb3RlcycsCiAgICApOwoKICAgIG15IEBSZXN1bHQgPSAoIFskVGl0bGVdLCBbQEhlYWREYXRhXSwgQERhdGEgKTsKCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6RkFROjpJbXBvcnQnKTsKCiMgdGVzdCBjb21tYW5kIHdpdGhvdXQgc291cmNlIGFyZ3VtZW50Cm15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIk9wdGlvbiAtIHdpdGhvdXQgc291cmNlLXBhdGggYXJndW1lbnQiLAopOwoKbXkgJFNvdXJjZVBhdGggPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKSAuICIvc2NyaXB0cy90ZXN0L3NhbXBsZS9GQVEuY3N2IjsKCiMgdGVzdCBjb21tYW5kIHdpdGggc291cmNlIGFyZ3VtZW50CiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1zZXBhcmF0b3InLCAnOycsICctLXF1b3RlJywgJycsICRTb3VyY2VQYXRoICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIHdpdGggc291cmNlIGFyZ3VtZW50IiwKKTsKCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAnMCcKRGVzY3JpcHRpb246ICdGQVEgQ29ubmVjdG9yIFJFU1QgU2FtcGxlJwpGcmFtZXdvcmtWZXJzaW9uOiA2LjAueCBnaXQKUHJvdmlkZXI6CiAgT3BlcmF0aW9uOgogICAgTGFuZ3VhZ2VMaXN0OgogICAgICBEZXNjcmlwdGlvbjogTGlzdCBhbGwgYXZhaWxhYmxlcyBsYW5ndWFnZXMKICAgICAgVHlwZTogRkFROjpMYW5ndWFnZUxpc3QKICAgIFB1YmxpY0NhdGVnb3J5TGlzdDoKICAgICAgRGVzY3JpcHRpb246IExpc3QgYWxsIHB1YmxpYyBGQVEgY2F0ZWdvcmllcyAod2l0aCB0cmVlIGluZm9ybWF0aW9uKQogICAgICBUeXBlOiBGQVE6OlB1YmxpY0NhdGVnb3J5TGlzdAogICAgUHVibGljRkFRR2V0OgogICAgICBEZXNjcmlwdGlvbjogUmV0cmlldmUgcHVibGljIEZBUSBlbnRyaWVzCiAgICAgIFR5cGU6IEZBUTo6UHVibGljRkFRR2V0CiAgICBQdWJsaWNGQVFTZWFyY2g6CiAgICAgIERlc2NyaXB0aW9uOiBTZWFyY2ggZm9yIHB1YmxpYyBGQVFzCiAgICAgIFR5cGU6IEZBUTo6UHVibGljRkFRU2VhcmNoCiAgVHJhbnNwb3J0OgogICAgQ29uZmlnOgogICAgICBLZWVwQWxpdmU6ICcnCiAgICAgIE1heExlbmd0aDogJzEwMDAwMDAwJwogICAgICBSb3V0ZU9wZXJhdGlvbk1hcHBpbmc6CiAgICAgICAgTGFuZ3VhZ2VMaXN0OgogICAgICAgICAgUmVxdWVzdE1ldGhvZDoKICAgICAgICAgIC0gR0VUCiAgICAgICAgICBSb3V0ZTogL0xhbmd1YWdlTGlzdAogICAgICAgIFB1YmxpY0NhdGVnb3J5TGlzdDoKICAgICAgICAgIFJlcXVlc3RNZXRob2Q6CiAgICAgICAgICAtIEdFVAogICAgICAgICAgUm91dGU6IC9QdWJsaWNDYXRlZ29yeUxpc3QKICAgICAgICBQdWJsaWNGQVFHZXQ6CiAgICAgICAgICBSZXF1ZXN0TWV0aG9kOgogICAgICAgICAgLSBHRVQKICAgICAgICAgIFJvdXRlOiAvUHVibGljRkFRR2V0CiAgICAgICAgUHVibGljRkFRU2VhcmNoOgogICAgICAgICAgUmVxdWVzdE1ldGhvZDoKICAgICAgICAgIC0gUE9TVAogICAgICAgICAgUm91dGU6IC9QdWJsaWNGQVFTZWFyY2gKICAgIFR5cGU6IEhUVFA6OlJFU1QKUmVtb3RlU3lzdGVtOiAnJwpSZXF1ZXN0ZXI6CiAgVHJhbnNwb3J0OgogICAgVHlwZTogJycK
LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAnMCcKRGVzY3JpcHRpb246ICdGQVEgQ29ubmVjdG9yIFNPQVAgU2FtcGxlJwpGcmFtZXdvcmtWZXJzaW9uOiA2LjAueCBnaXQKUHJvdmlkZXI6CiAgT3BlcmF0aW9uOgogICAgTGFuZ3VhZ2VMaXN0OgogICAgICBEZXNjcmlwdGlvbjogTGlzdCAgYWxsIGF2YWlsYWJsZXMgbGFuZ3VhZ2VzCiAgICAgIFR5cGU6IEZBUTo6TGFuZ3VhZ2VMaXN0CiAgICBQdWJsaWNDYXRlZ29yeUxpc3Q6CiAgICAgIERlc2NyaXB0aW9uOiBMaXN0IGFsbCBwdWJsaWMgRkFRIGNhdGVnb3JpZXMgKHdpdGggdHJlZSBpbmZvcm1hdGlvbikKICAgICAgVHlwZTogRkFROjpQdWJsaWNDYXRlZ29yeUxpc3QKICAgIFB1YmxpY0ZBUUdldDoKICAgICAgRGVzY3JpcHRpb246IFJldHJpZXZlIHB1YmxpYyBGQVEgZW50cmllcwogICAgICBUeXBlOiBGQVE6OlB1YmxpY0ZBUUdldAogICAgUHVibGljRkFRU2VhcmNoOgogICAgICBEZXNjcmlwdGlvbjogU2VhcmNoIGZvciBwdWJsaWMgRkFRcwogICAgICBUeXBlOiBGQVE6OlB1YmxpY0ZBUVNlYXJjaAogIFRyYW5zcG9ydDoKICAgIENvbmZpZzoKICAgICAgTWF4TGVuZ3RoOiAnMTAwMDAwMDAwJwogICAgICBOYW1lU3BhY2U6IGh0dHA6Ly93d3cub3Rycy5vcmcvRkFRQ29ubmVjdG9yLwogICAgICBSZXF1ZXN0TmFtZUZyZWVUZXh0OiAnJwogICAgICBSZXF1ZXN0TmFtZVNjaGVtZTogUGxhaW4KICAgICAgUmVzcG9uc2VOYW1lRnJlZVRleHQ6ICcnCiAgICAgIFJlc3BvbnNlTmFtZVNjaGVtZTogUmVzcG9uc2UKICAgIFR5cGU6IEhUVFA6OlNPQVAKUmVtb3RlU3lzdGVtOiAnJwpSZXF1ZXN0ZXI6CiAgVHJhbnNwb3J0OgogICAgVHlwZTogJycK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpGQVE6OkNvbnRlbnRUeXBlU2V0Jyk7CgpteSAoICRSZXN1bHQsICRFeGl0Q29kZSApOwp7CiAgICBsb2NhbCAqU1RET1VUOwogICAgb3BlbiBTVERPVVQsICc+OmVuY29kaW5nKFVURi04KScsIFwkUmVzdWx0OwogICAgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKS0+RW5jb2RlSW5wdXQoIFwkUmVzdWx0ICk7Cn0KCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpGQVE6OkNvbnRlbnRUeXBlU2V0IGV4aXQgY29kZSIsCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgR2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgpteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICBVc2VySUQgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRJdGVtSUQsCiAgICAnRkFRQWRkKCknLAopOwoKbXkgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgojIEJ1aWxkIGEgdGVzdCBEeW5hbWljIGZpZWxkIENvbmZpZy4KbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9IHsKICAgIElEICAgICAgICAgPT4gMTIzLAogICAgRmllbGRUeXBlICA9PiAnVGV4dCcsCiAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAp9OwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgPT4gJ05vIFBhcmFtcycsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBSZXF1ZXN0ID0+ICJBY3Rpb249c29tZWFjdGlvbjtTdWJhY3Rpb249c29tZXN1YmFjdGlvbjtJdGVtSUQ9JEl0ZW1JRCIsCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgVXNlcklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICB9LAogICAgICAgIFJlcXVlc3QgPT4gIkFjdGlvbj1zb21lYWN0aW9uO1N1YmFjdGlvbj1zb21lc3ViYWN0aW9uO0l0ZW1JRD0kSXRlbUlEIiwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWlzc2luZyBEeW5hbWljRmllbGRDb25maWcnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVxdWVzdCA9PiAiQWN0aW9uPXNvbWVhY3Rpb247U3ViYWN0aW9uPXNvbWVzdWJhY3Rpb247SXRlbUlEPSRJdGVtSUQiLAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdNaXNzaW5nIEZBUUlEIGluIHRoZSByZXF1ZXN0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZXF1ZXN0ID0+ICJBY3Rpb249c29tZWFjdGlvbjtTdWJhY3Rpb249c29tZXN1YmFjdGlvbjsiLAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBGQVFJRCBpbiB0aGUgcmVxdWVzdCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVxdWVzdCAgICAgICA9PiAiQWN0aW9uPXNvbWVhY3Rpb247U3ViYWN0aW9uPXNvbWVzdWJhY3Rpb247SXRlbUlEPS0xIiwKICAgICAgICBTdWNjZXNzICAgICAgID0+IDEsCiAgICAgICAgRXhlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgIE9iamVjdElEID0+IC0xLAogICAgICAgICAgICBEYXRhICAgICA9PiB7fSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NvcnJlY3QgRkFRJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZXF1ZXN0ICAgICAgID0+ICJBY3Rpb249c29tZWFjdGlvbjtTdWJhY3Rpb249c29tZXN1YmFjdGlvbjtJdGVtSUQ9JEl0ZW1JRCIsCiAgICAgICAgU3VjY2VzcyAgICAgICA9PiAxLAogICAgICAgIEV4ZWN0ZWRSZXN1bHQgPT4gewogICAgICAgICAgICBPYmplY3RJRCA9PiAkSXRlbUlELAogICAgICAgICAgICBEYXRhICAgICA9PiBcJUZBUURhdGEsCiAgICAgICAgfSwKICAgIH0sCgopOwoKbXkgJE9iamVjdEhhbmRsZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpGQVEnKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbG9jYWwgJUVOViA9ICgKICAgICAgICBSRVFVRVNUX01FVEhPRCA9PiAnR0VUJywKICAgICAgICBRVUVSWV9TVFJJTkcgICA9PiAkVGVzdC0+e1JlcXVlc3R9IC8vICcnLAogICAgKTsKCiAgICBDR0ktPmluaXRpYWxpemVfZ2xvYmFscygpOwogICAgbXkgJFJlcXVlc3QgPSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0LT5uZXcoKTsKCiAgICBteSAlT2JqZWN0RGF0YSA9ICRPYmplY3RIYW5kbGVyT2JqZWN0LT5PYmplY3REYXRhR2V0KCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICBcJU9iamVjdERhdGEsCiAgICAgICAgICAgIHt9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIE9iamVjdERhdGFHZXQoKSB1bnN1Y2Nlc3NmdWwiLAogICAgICAgICk7CiAgICAgICAgbmV4dCBURVNUOwogICAgfQoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICBcJU9iamVjdERhdGEsCiAgICAgICAgJFRlc3QtPntFeGVjdGVkUmVzdWx0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBPYmplY3REYXRhR2V0KCkiLAogICAgKTsKfQpjb250aW51ZSB7CiAgICAkS2VybmVsOjpPTS0+T2JqZWN0c0Rpc2NhcmQoCiAgICAgICAgT2JqZWN0cyA9PiBbICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywgXSwKICAgICk7Cn0KCiMgY2xlYW51cCBpcyBkb25lIGJ5IFJlc3RvcmVEYXRhYmFzZQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIGFycmF5JywKICAgICAgICBQYXJhbXMgPT4gewogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAndGVzdC50YWJsZScsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gdW5kZWYsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnU2luZ2xlIEludGVnZXInLAogICAgICAgIFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICd0ZXN0LnRhYmxlJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gWzFdLAogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+ICcgKCAgdGVzdC50YWJsZSBJTiAoMSkgICkgJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdTb3J0ZWQgdmFsdWVzJywKICAgICAgICBQYXJhbXMgPT4gewogICAgICAgICAgICBUYWJsZUNvbHVtbiA9PiAndGVzdC50YWJsZScsCiAgICAgICAgICAgIElEUmVmICAgICAgID0+IFsgMiwgMSwgLTEsIDAgXSwKICAgICAgICB9LAogICAgICAgIFJlc3VsdCA9PiAnICggIHRlc3QudGFibGUgSU4gKC0xLCAwLCAxLCAyKSAgKSAnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0ludmFsaWQgdmFsdWUnLAogICAgICAgIFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFRhYmxlQ29sdW1uID0+ICd0ZXN0LnRhYmxlJywKICAgICAgICAgICAgSURSZWYgICAgICAgPT4gWzEuMV0sCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gdW5kZWYsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWl4IG9mIHZhbGlkIGFuZCBpbnZhbGlkIHZhbHVlcycsCiAgICAgICAgUGFyYW1zID0+IHsKICAgICAgICAgICAgVGFibGVDb2x1bW4gPT4gJ3Rlc3QudGFibGUnLAogICAgICAgICAgICBJRFJlZiAgICAgICA9PiBbIDEsIDEuMSBdLAogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IHVuZGVmLAogICAgfSwKKTsKCiMgZ2V0IEZBUSBvYmplY3QKbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyICRGQVFPYmplY3QtPl9JbkNvbmRpdGlvbkdldCggJXsgJFRlc3QtPntQYXJhbXN9IH0gKSwKICAgICAgICAkVGVzdC0+e1Jlc3VsdH0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gX0luQ29uZGl0aW9uR2V0KCkiCiAgICApOwp9CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UuCgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJEZBUU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwpteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCm15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzJywKICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CiRTZWxmLT5Jc05vdCgKICAgICRJdGVtSUQsCiAgICB1bmRlZiwKICAgICJGQVFBZGQoKSAtIDEiLAopOwoKbXkgJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCm15ICVGQVFUZXN0ID0gKAogICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCcsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCik7Cgpmb3IgbXkgJFRlc3QgKCBzb3J0IGtleXMgJUZBUVRlc3QgKSB7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZBUXskVGVzdH0sCiAgICAgICAgJEZBUVRlc3R7JFRlc3R9LAogICAgICAgICJGQVFHZXQoKSAtICRUZXN0IiwKICAgICk7Cn0KCm15ICRGQVFVcGRhdGUgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICBJdGVtSUQgICAgICA9PiAkSXRlbUlELAogICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICBMYW5ndWFnZUlEICA9PiAyLAogICAgQXBwcm92ZWQgICAgPT4gMSwKICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQyJywKICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzMicsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLjInLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uIGZvdW5kLi4uMicsCiAgICBVc2VySUQgICAgICA9PiAxLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAopOwoKJUZBUSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRCwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiVGQVFUZXN0ID0gKAogICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dDInLAogICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICBMYW5ndWFnZUlEICA9PiAyLAogICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMyJywKICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uMicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24gZm91bmQuLi4yJywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKKTsKCmZvciBteSAkVGVzdCAoIHNvcnQga2V5cyAlRkFRVGVzdCApIHsKICAgICRTZWxmLT5JcygKICAgICAgICAkRkFRVGVzdHskVGVzdH0sCiAgICAgICAgJEZBUXskVGVzdH0sCiAgICAgICAgIkZBUUdldCgpIC0gJFRlc3QiLAogICAgKTsKfQoKbXkgJE9rID0gJEZBUU9iamVjdC0+Vm90ZUFkZCgKICAgIENyZWF0ZWRCeSA9PiAnU29tZSBUZXh0JywKICAgIEl0ZW1JRCAgICA9PiAkSXRlbUlELAogICAgSVAgICAgICAgID0+ICc1NC40My4zMC4xJywKICAgIEludGVyZmFjZSA9PiAnMicsCiAgICBSYXRlICAgICAgPT4gMTAwLAogICAgVXNlcklEICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRPaywKICAgICJWb3RlQWRkKCkiLAopOwoKbXkgJFZvdGUgPSAkRkFRT2JqZWN0LT5Wb3RlR2V0KAogICAgQ3JlYXRlQnkgID0+ICdTb21lIFRleHQnLAogICAgSXRlbUlEICAgID0+ICRJdGVtSUQsCiAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgSW50ZXJmYWNlID0+ICcyJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwoKJFNlbGYtPklzKAogICAgJFZvdGUtPntJUH0sCiAgICAnNTQuNDMuMzAuMScsCiAgICAiVm90ZUdldCgpIC0gSVAiLAopOwoKbXkgJEl0ZW1JRDIgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUnLAogICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgS2V5d29yZHMgICAgPT4gJycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbSBEZXNjcmlwdGlvbiAxLi4uJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEl0ZW1JRDIsCiAgICAiRkFRQWRkKCkgLSAyIiwKKTsKCm15ICRIb21lICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKbXkgQEF0dGFjaG1lbnRUZXN0cyA9ICgKICAgIHsKICAgICAgICBGaWxlID0+ICdGQVEtVGVzdDEucGRmJywKICAgICAgICBNRDUgID0+ICc1ZWU3NjdmM2I2OGYyNGE5MjEzZTBiZWY4MmRjNTNlNScsCiAgICB9LAogICAgewogICAgICAgIEZpbGUgPT4gJ0ZBUS1UZXN0MS5kb2MnLAogICAgICAgIE1ENSAgPT4gJzJlNTIwMDM2YTBjZGE2YTgwNmE4ODM4YjEwMDBkOWQ3JywKICAgIH0sCik7CgojIGdldCBtYWluIG9iamVjdApteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7Cgpmb3IgbXkgJEF0dGFjaG1lbnRUZXN0IChAQXR0YWNobWVudFRlc3RzKSB7CiAgICBteSAkQ29udGVudFNDQUxBUlJlZiA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkSG9tZSAuICcvc2NyaXB0cy90ZXN0L3NhbXBsZS8nIC4gJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0sCiAgICApOwogICAgbXkgJEFkZCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRBZGQoCiAgICAgICAgSXRlbUlEICAgICAgPT4gJEl0ZW1JRDIsCiAgICAgICAgQ29udGVudCAgICAgPT4gJHskQ29udGVudFNDQUxBUlJlZn0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQveG1sJywKICAgICAgICBGaWxlbmFtZSAgICA9PiAkQXR0YWNobWVudFRlc3QtPntGaWxlfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRBZGQsCiAgICAgICAgIkF0dGFjaG1lbnRBZGQoKSAtICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7CiAgICBteSBAQXR0YWNobWVudEluZGV4ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlEMiwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlRmlsZSA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQyLAogICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudEluZGV4WzBdLT57RmlsZUlEfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEZpbGV7RmlsZW5hbWV9LAogICAgICAgICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9LAogICAgICAgICJBdHRhY2htZW50R2V0KCkgLSBGaWxlbmFtZSAkQXR0YWNobWVudFRlc3QtPntGaWxlfSIsCiAgICApOwogICAgbXkgJE1ENSA9ICRNYWluT2JqZWN0LT5NRDVzdW0oCiAgICAgICAgU3RyaW5nID0+IFwkRmlsZXtDb250ZW50fSwKICAgICk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJE1ENSwKICAgICAgICAkQXR0YWNobWVudFRlc3QtPntNRDV9LAogICAgICAgICJBdHRhY2htZW50R2V0KCkgLSBNRDUgJEF0dGFjaG1lbnRUZXN0LT57RmlsZX0iLAogICAgKTsKCiAgICBteSAkRGVsZXRlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudERlbGV0ZSgKICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRDIsCiAgICAgICAgRmlsZUlEID0+ICRBdHRhY2htZW50SW5kZXhbMF0tPntGaWxlSUR9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICREZWxldGUsCiAgICAgICAgIkF0dGFjaG1lbnREZWxldGUoKSAtICRBdHRhY2htZW50VGVzdC0+e0ZpbGV9IiwKICAgICk7Cn0KCm15ICRWb3RlSURzUmVmID0gJEZBUU9iamVjdC0+Vm90ZVNlYXJjaCgKICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgVXNlcklEID0+IDEsCik7Cgpmb3IgbXkgJFZvdGVJRCAoIEB7JFZvdGVJRHNSZWZ9ICkgewogICAgbXkgJFZvdGVEZWxldGUgPSAkRkFRT2JqZWN0LT5Wb3RlRGVsZXRlKAogICAgICAgIFZvdGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRWb3RlRGVsZXRlLAogICAgICAgICJWb3RlRGVsZXRlKCkiLAogICAgKTsKfQoKIyBhZGQgRkFRIGFydGljbGUgdG8gbG9nCm15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgSXRlbUlEICAgID0+ICRJdGVtSUQsCiAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgIFVzZXJJRCAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkZBUUxvZ0FkZCgpIC0gJEl0ZW1JRCIsCik7CgojIHRyeSB0byBhZGQgc2FtZSBGQVEgYXJ0aWNsZSB0byBsb2cgYWdhaW4gKG11c3QgcmV0dXJuIGZhbHNlKQokU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUxvZ0FkZCgKICAgIEl0ZW1JRCAgICA9PiAkSXRlbUlELAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPkZhbHNlKAogICAgJFN1Y2Nlc3MsCiAgICAiRkFRTG9nQWRkKCkgLSAkSXRlbUlEIiwKKTsKCiMgYWRkIGFub3RoZXIgRkFRIGFydGljbGUgdG8gbG9nCiRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRTG9nQWRkKAogICAgSXRlbUlEICAgID0+ICRJdGVtSUQyLAogICAgSW50ZXJmYWNlID0+ICdpbnRlcm5hbCcsCiAgICBVc2VySUQgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJGQVFMb2dBZGQoKSAtICRJdGVtSUQyIiwKKTsKCiMgZ2V0IEZBUSBUb3AtMTAKbXkgJFRvcDEwSURzUmVmID0gJEZBUU9iamVjdC0+RkFRVG9wMTBHZXQoCiAgICBJbnRlcmZhY2UgPT4gJ2ludGVybmFsJywKICAgIExpbWl0ICAgICA9PiAxMCwKICAgIFVzZXJJRCAgICA9PiAxLAopIHx8IFtdOwokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciBAeyRUb3AxMElEc1JlZn0sCiAgICAiRkFRVG9wMTBHZXQoKSIsCik7CgojIHRlc3QgTGFuZ3VhZ2VMb29rdXAoKQpteSAkTGFuZ3VhZ2VOYW1lID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VMb29rdXAoCiAgICBMYW5ndWFnZUlEID0+IDEsCiAgICBVc2VySUQgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJExhbmd1YWdlTmFtZSwKICAgICJMYW5ndWFnZUxvb2t1cCgpIGZvciBMYW5ndWFnZUlEICcxJyBpcyAnJExhbmd1YWdlTmFtZSciLAopOwoKbXkgJExhbmd1YWdlSUQgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxvb2t1cCgKICAgIE5hbWUgICA9PiAkTGFuZ3VhZ2VOYW1lLAogICAgVXNlcklEID0+IDEsCik7CiRTZWxmLT5JcygKICAgICRMYW5ndWFnZUlELAogICAgMSwKICAgICJMYW5ndWFnZUxvb2t1cCgpIGZvciBMYW5ndWFnZU5hbWUgJyRMYW5ndWFnZU5hbWUnIiwKKTsKCm15ICRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBJdGVtSUQ6ICRJdGVtSUQiLAopOwoKbXkgJEZBUURlbGV0ZTIgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEl0ZW1JRDIsCiAgICBVc2VySUQgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlMiwKICAgICJGQVFEZWxldGUoKSAtIEl0ZW1JRDogJEl0ZW1JRDIiLAopOwoKbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICdUZXN0Q2F0ZWdvcnknLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+IDAsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SUQsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKIyBzZXQgUGFyZW50SUQgdG8gZW1wdHkgdG8gbWFrZSBpdCBmYWlsCm15ICRDYXRlZ29yeUlERmFpbCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ1Rlc3RDYXRlZ29yeScsCiAgICBDb21tZW50ICA9PiAnQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gJycsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRDYXRlZ29yeUlERmFpbCwKICAgICJDYXRlZ29yeUFkZCgpIC0gUm9vdCBDYXRlZ29yeSIsCik7CgpteSAkQ2F0ZWdvcnlVcGRhdGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVVwZGF0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICBQYXJlbnRJRCAgID0+IDAsCiAgICBOYW1lICAgICAgID0+ICdSb290Q2F0ZWdvcnknLAogICAgQ29tbWVudCAgICA9PiAnUm9vdCBDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBWYWxpZElEICAgID0+IDEsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeVVwZGF0ZSwKICAgICJDYXRlZ29yeVVwZGF0ZSgpIC0gUm9vdCBDYXRlZ29yeSIsCik7CgojIHNldCBQYXJlbnRJRCB0byBlbXB0eSB0byBtYWtlIGl0IGZhaWwKbXkgJENhdGVnb3J5VXBkYXRlRmFpbCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5VXBkYXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgIFBhcmVudElEICAgPT4gJycsCiAgICBOYW1lICAgICAgID0+ICdSb290Q2F0ZWdvcnknLAogICAgQ29tbWVudCAgICA9PiAnUm9vdCBDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBWYWxpZElEICAgID0+IDEsCiAgICBVc2VySUQgICAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkQ2F0ZWdvcnlVcGRhdGVGYWlsLAogICAgIkNhdGVnb3J5VXBkYXRlKCkgLSBSb290IENhdGVnb3J5IiwKKTsKCm15ICRDaGlsZENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICdDaGlsZENhdGVnb3J5JywKICAgIENvbW1lbnQgID0+ICdDaGlsZCBDYXRlZ29yeSBmb3IgdGVzdGluZycsCiAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2hpbGRDYXRlZ29yeUlELAogICAgIkNhdGVnb3J5QWRkKCkgLSBDaGlsZCBDYXRlZ29yeSIsCik7CgpteSAkQ2hpbGRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2hpbGRDYXRlZ29yeUlELAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2hpbGRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKbXkgJENhdGVnb3J5RGVsZXRlID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgVXNlcklEICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlEZWxldGUsCiAgICAiQ2F0ZWdvcnlEZWxldGUoKSAtIFJvb3QgQ2F0ZWdvcnkiLAopOwoKI0l0ZW1GaWVsZEdldCBUZXN0cwpteSAlVGVzdEZpZWxkcyA9ICgKICAgIEZpZWxkMSA9PiAnU3ltcHRvbS4uLicsCiAgICBGaWVsZDIgPT4gJ1Byb2JsZW0uLi4nLAogICAgRmllbGQzID0+ICdTb2x1dGlvbi4uLicsCiAgICBGaWVsZDQgPT4gJ1VzZXIgRmllbGQ0Li4uJywKICAgIEZpZWxkNSA9PiAnVXNlciBGaWVsZDUuLi4nLAogICAgRmllbGQ2ID0+ICdDb21tZW50Li4uJywKKTsKCiRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgU3RhdGVJRCAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCA9PiAxLAogICAgS2V5d29yZHMgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAlVGVzdEZpZWxkcywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEl0ZW1JRCwKICAgICJGQVFBZGQoKSBmb3IgSXRlbUZpZWxkR2V0IHdpdGggVHJ1ZSIsCik7CgpteSAlUmVzdWx0RmllbGRzOwoKbXkgJENoZWNrRmllbGRzID0gc3ViIHsKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIGZvciBteSAkRmllbGRDb3VudCAoIDEgLi4gNiApIHsKICAgICAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGRDb3VudCI7CgogICAgICAgICMgY2hlY2sgdGhhdCBjYWNoZSBpcyBjbGVhbgogICAgICAgIG15ICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgID0+ICJJdGVtRmllbGRHZXQ6Okl0ZW1JRDo6JEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBvbiBiZWZvcmUgZmlyc3QgR2V0IGNhY2hlIHNob3VsZCBiZSB1bmRlZiwgYWZ0ZXIgZmlycyBjYWNoZSBleGlzdCwgYnV0IHRoZSBGaWVsZCBrZXkgbXVzdCBiZQogICAgICAgICMgdW5kZWYKICAgICAgICBpZiAoIHJlZiAkQ2FjaGUgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkQ2FjaGUtPnskRmllbGR9LAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAiQ2FjaGUgYmVmb3JlIEl0ZW1GaWVsZEdldCgpOiAkRmllbGQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJENhY2hlLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAiQ2FjaGUgYmVmb3JlIEl0ZW1GaWVsZEdldCgpOiBDb21wbGV0ZSBjYWNoZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgZmllbGQKICAgICAgICAkUmVzdWx0RmllbGRzeyRGaWVsZH0gPSAkRkFRT2JqZWN0LT5JdGVtRmllbGRHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBGaWVsZCAgPT4gJEZpZWxkLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGNhY2hlIGlzIHNldAogICAgICAgICRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgID0+ICJJdGVtRmllbGRHZXQ6Okl0ZW1JRDo6JEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICByZWYgJENhY2hlLAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJDYWNoZSBhZnRlciBJdGVtRmllbGRHZXQoKTogcmVmIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJENhY2hlLT57JEZpZWxkfSwKICAgICAgICAgICAgJFBhcmFte0NvbXBhcmVGaWVsZHN9LT57JEZpZWxkfSwKICAgICAgICAgICAgIkNhY2hlIGFmdGVyIEl0ZW1GaWVsZEdldCgpOiAkRmllbGQgbWF0Y2hlZCB3aXRoIG9yaWdpbmFsIGZpZWxkIGRhdGEiLAogICAgICAgICk7CiAgICB9Cn07CgokQ2hlY2tGaWVsZHMtPiggQ29tcGFyZUZpZWxkcyA9PiBcJVRlc3RGaWVsZHMgKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgIFwlUmVzdWx0RmllbGRzLAogICAgXCVUZXN0RmllbGRzLAogICAgIkl0ZW1GaWVsZEdldCgpOiBmb3IgYWxsIGZpZWxkcyBtYXRjaCBleHBlY3RlZCBkYXRhIiwKKTsKCiMgdXBkYXRlIHRoZSBGQVEgaXRlbQpteSAlVXBkYXRlZFRlc3RGaWVsZHMgPSAoCiAgICBGaWVsZDEgPT4gJ1VwZGF0ZWQgU3ltcHRvbS4uLicsCiAgICBGaWVsZDIgPT4gJ1VwZGF0ZWQgUHJvYmxlbS4uLicsCiAgICBGaWVsZDMgPT4gJ1VwZGF0ZWQgU29sdXRpb24uLi4nLAogICAgRmllbGQ0ID0+ICdVcGRhdGVkIFVzZXIgRmllbGQ0Li4uJywKICAgIEZpZWxkNSA9PiAnVXBkYXRlZCBVc2VyIEZpZWxkNS4uLicsCiAgICBGaWVsZDYgPT4gJ1VwZGF0ZWQgQ29tbWVudC4uLicsCik7CgokRkFRVXBkYXRlID0gJEZBUU9iamVjdC0+RkFRVXBkYXRlKAogICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgJVVwZGF0ZWRUZXN0RmllbGRzLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICBVc2VySUQgICAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRVXBkYXRlLAogICAgIkZBUVVwZGF0ZSgpIGZvciBJdGVtRmllbGRHZXQgd2l0aCBUcnVlIiwKKTsKCiRDaGVja0ZpZWxkcy0+KCBDb21wYXJlRmllbGRzID0+IFwlVXBkYXRlZFRlc3RGaWVsZHMgKTsKCiRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgIFVzZXJJRCA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlLAogICAgIkZBUURlbGV0ZSgpIGZvciBJdGVtRmllbGRHZXQ6IHdpdGggVHJ1ZSIsCik7CgojIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KbXkgJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAiSXRlbUZpZWxkR2V0OjpJdGVtSUQ6OiRJdGVtSUQiLAopOwoKJFNlbGYtPklzKAogICAgJENhY2hlLAogICAgdW5kZWYsCiAgICAiQ2FjaGUgZm9yIEl0ZW1GaWVsZEdldCgpIGFmdGVyIEZBUURlbGV0ZTogQ29tcGxldGUgY2FjaGUiLAopOwoKIyBGQVEgaXRlbSBjYWNoZSB0ZXN0cwokSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgVGl0bGUgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgPT4gMSwKICAgIFN0YXRlSUQgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgPT4gMSwKICAgIEtleXdvcmRzICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgJVRlc3RGaWVsZHMsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CgojIGNoZWNrIHRoYXQgY2FjaGUgaXMgY2xlYW4KJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkSXRlbUlEIC4gJzo6SXRlbUZpZWxkczo6MCcsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgTm8gSXRlbUZpZWxkcyBCZWZvcmUgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIiwKKTsKJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkSXRlbUlEIC4gJzo6SXRlbUZpZWxkczo6MScsCik7CiRTZWxmLT5JcygKICAgICRDYWNoZSwKICAgIHVuZGVmLAogICAgIkNhY2hlIGZvciBGQVEgV2l0aCBJdGVtRmllbGRzIEJlZm9yZSBGQVFHZXQoKTogQ29tcGxldGUgY2FjaGUiLAopOwoKIyBnZXQgRkFRIG5vIEl0ZW0gRmllbGRzCm15ICVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgSXRlbUZpZWxkcyA9PiAwLAogICAgVXNlcklEICAgICA9PiAxCik7CgokU2VsZi0+SXMoCiAgICAkRkFRRGF0YXtJdGVtSUR9LAogICAgJEl0ZW1JRCwKICAgICJTYW5pdHkgQ2hlY2sgZm9yIEZBUUdldCgpOiBtYXRjaCBJdGVtSUQiCik7CgojIHNhbml0eSBjaGVjayBJdGVtIEZpZWxkcwpmb3IgbXkgJEZpZWxkQ291bnQgKCAxIC4uIDYgKSB7CiAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGRDb3VudCI7CgogICAgJFNlbGYtPklzKAogICAgICAgICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlNhbml0eSBDaGVjayBmb3IgRkFRR2V0KCk6IG5vIEl0ZW1GaWVsZHMgJEZpZWxkIiwKICAgICk7Cn0KJENhY2hlID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICBUeXBlID0+ICdGQVEnLAogICAgS2V5ICA9PiAnRkFRR2V0OjpJdGVtSUQ6OicgLiAkSXRlbUlEIC4gJzo6SXRlbUZpZWxkczo6MCcsCik7CiRTZWxmLT5JcygKICAgIHJlZiAkQ2FjaGUsCiAgICAnSEFTSCcsCiAgICAiQ2FjaGUgZm9yIEZBUSBObyBJdGVtRmllbGRzIEFmdGVyIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSByZWYiLAopOwokQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRJdGVtSUQgLiAnOjpJdGVtRmllbGRzOjoxJywKKTsKJFNlbGYtPklzKAogICAgJENhY2hlLAogICAgdW5kZWYsCiAgICAiQ2FjaGUgZm9yIEZBUSBXaXRoIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIiwKKTsKCiMgZ2V0IEZBUSB3aXRoIEl0ZW0gRmllbGRzCiVGQVFEYXRhID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgSXRlbUlEICAgICA9PiAkSXRlbUlELAogICAgSXRlbUZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICA9PiAxCik7CgokU2VsZi0+SXMoCiAgICAkRkFRRGF0YXtJdGVtSUR9LAogICAgJEl0ZW1JRCwKICAgICJTYW5pdHkgQ2hlY2sgZm9yIEZBUUdldCgpOiBtYXRjaCBJdGVtSUQiCik7CgojIHNhbml0eSBjaGVjayBJdGVtIEZpZWxkcwpmb3IgbXkgJEZpZWxkQ291bnQgKCAxIC4uIDYgKSB7CiAgICBteSAkRmllbGQgPSAiRmllbGQkRmllbGRDb3VudCI7CgogICAgJFNlbGYtPklzTm90KAogICAgICAgICRGQVFEYXRheyRGaWVsZH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlNhbml0eSBDaGVjayBmb3IgRkFRR2V0KCk6IHdpdGggSXRlbUZpZWxkcyAkRmllbGQiLAogICAgKTsKfQokQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgIFR5cGUgPT4gJ0ZBUScsCiAgICBLZXkgID0+ICdGQVFHZXQ6Okl0ZW1JRDo6JyAuICRJdGVtSUQgLiAnOjpJdGVtRmllbGRzOjowJywKKTsKJFNlbGYtPklzKAogICAgcmVmICRDYWNoZSwKICAgICdIQVNIJywKICAgICJDYWNoZSBmb3IgRkFRIE5vIEl0ZW1GaWVsZHMgQWZ0ZXIgRkFRR2V0KCk6IENvbXBsZXRlIGNhY2hlIHJlZiIsCik7CiRDYWNoZSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgVHlwZSA9PiAnRkFRJywKICAgIEtleSAgPT4gJ0ZBUUdldDo6SXRlbUlEOjonIC4gJEl0ZW1JRCAuICc6Okl0ZW1GaWVsZHM6OjEnLAopOwokU2VsZi0+SXMoCiAgICByZWYgJENhY2hlLAogICAgJ0hBU0gnLAogICAgIkNhY2hlIGZvciBGQVEgV2l0aCBJdGVtRmllbGRzIEFmdGVyIEZBUUdldCgpOiBDb21wbGV0ZSBjYWNoZSByZWYiLAopOwoKIwojIEZBUSBTdGF0ZSB0ZXN0cwojCm15ICVTdGF0ZXMgPSAkRkFRT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5Jc05vdCgKICAgIHNjYWxhciBrZXlzICVTdGF0ZXMsCiAgICAwLAogICAgIlN0YXRlTGlzdCgpIG51bWJlciBvZiBlbGVtZW50cyBzaG91bGQgbm90IGJlIDAiCik7Cgpmb3IgbXkgJFN0YXRlSUQgKCBzb3J0IGtleXMgJVN0YXRlcyApIHsKICAgIG15ICVTdGF0ZSA9ICRGQVFPYmplY3QtPlN0YXRlR2V0KAogICAgICAgIFN0YXRlSUQgPT4gJFN0YXRlSUQsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle1N0YXRlSUR9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTdGF0ZUdldCgpIFN0YXRlSUQgZm9yIFN0YXRlSUQ6ICckU3RhdGVJRCcgc2hvdWxkIG5vdCBiZSB1bmRlZiIKICAgICk7CiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle05hbWV9LAogICAgICAgIHVuZGVmLAogICAgICAgICJTdGF0ZUdldCgpIE5hbWUgZm9yIFN0YXRlSUQ6ICAgICckU3RhdGVJRCcgc2hvdWxkIG5vdCBiZSB1bmRlZiIKICAgICk7CiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJFN0YXRle1R5cGVJRH0sCiAgICAgICAgdW5kZWYsCiAgICAgICAgIlN0YXRlR2V0KCkgVHlwZUlEIGZvciBTdGF0ZUlEOiAgJyRTdGF0ZUlEJyBzaG91bGQgbm90IGJlIHVuZGVmIgogICAgKTsKfQoKJVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgIFR5cGVzICA9PiBbJ2ludGVybmFsJ10sCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICVTdGF0ZXMsCiAgICAxLAogICAgIlN0YXRlTGlzdCgpIGhhcyAxIGtleSIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVzezJ9LAogICAgJ2ludGVybmFsIChhZ2VudCknLAogICAgIlN0YXRlTGlzdCgpIDIgaXMgaW50ZXJuYWwiLAopOwoKJVN0YXRlcyA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgIFR5cGVzICA9PiBbICdwdWJsaWMnLCAnZXh0ZXJuYWwnIF0sCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICVTdGF0ZXMsCiAgICAyLAogICAgIlN0YXRlTGlzdCgpIGhhcyAyIGtleXMiLAopOwoKJFNlbGYtPklzKAogICAgJFN0YXRlc3sxfSwKICAgICdleHRlcm5hbCAoY3VzdG9tZXIpJywKICAgICJTdGF0ZUxpc3QoKSAxIGlzIGV4dGVybmFsIiwKKTsKCiRTZWxmLT5JcygKICAgICRTdGF0ZXN7M30sCiAgICAncHVibGljIChhbGwpJywKICAgICJTdGF0ZUxpc3QoKSAzIGlzIHB1YmxpYyIsCik7CgpteSAkU3RhdGVUeXBlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHJlZiAkU3RhdGVUeXBlTGlzdCwKICAgICdIQVNIJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgcmV0dXJucyBoYXNocmVmIiwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICV7JFN0YXRlVHlwZUxpc3R9LAogICAgMywKICAgICJTdGF0ZVR5cGVMaXN0KCkgaGFzIDMga2V5cyIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezF9LAogICAgJ2ludGVybmFsJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMSBpcyBpbnRlcm5hbCIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezJ9LAogICAgJ2V4dGVybmFsJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMiBpcyBleHRlcm5hbCIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezN9LAogICAgJ3B1YmxpYycsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDMgaXMgcHVibGljIiwKKTsKCiRTdGF0ZVR5cGVMaXN0ID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgIFR5cGVzICA9PiBbICdwdWJsaWMnLCAnZXh0ZXJuYWwnIF0sCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICV7JFN0YXRlVHlwZUxpc3R9LAogICAgMiwKICAgICJTdGF0ZVR5cGVMaXN0KCkgaGFzIDIga2V5cyIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezJ9LAogICAgJ2V4dGVybmFsJywKICAgICJTdGF0ZVR5cGVMaXN0KCkgMiBpcyBleHRlcm5hbCIsCik7CgokU2VsZi0+SXMoCiAgICAkU3RhdGVUeXBlTGlzdC0+ezN9LAogICAgJ3B1YmxpYycsCiAgICAiU3RhdGVUeXBlTGlzdCgpIDMgaXMgcHVibGljIiwKKTsKCiRTdGF0ZVR5cGVMaXN0ID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgIFR5cGVzICA9PiBbJ2ludGVybmFsJ10sCiAgICBVc2VySUQgPT4gMSwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBrZXlzICV7JFN0YXRlVHlwZUxpc3R9LAogICAgMSwKICAgICJTdGF0ZVR5cGVMaXN0KCkgaGFzIDEga2V5IiwKKTsKCiRTZWxmLT5JcygKICAgICRTdGF0ZVR5cGVMaXN0LT57MX0sCiAgICAnaW50ZXJuYWwnLAogICAgIlN0YXRlVHlwZUxpc3QoKSAxIGlzIGludGVybmFsIiwKKTsKCiMgQ29udGVudFR5cGVTZXQoKSB0ZXN0cwoKbXkgJEZBUUl0ZW1JRDEgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0JywKICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tLi4uJywgICAgIyAob3B0aW9uYWwpCiAgICBWYWxpZElEICAgICA9PiAxLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLCAgICAjIG9yICd0ZXh0L2h0bWwnCiAgICBVc2VySUQgICAgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICB1bmRlZiwKICAgICRGQVFJdGVtSUQxLAogICAgIkZBUUFkZCgpIgopOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDxiciAvPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tIDxiciAvPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC9saT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPGxpPlN5bXB0b20gPC9saT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvb2w+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxvbD5TeW1wdG9tIDwvb2w+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L3VsPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8dWw+U3ltcHRvbSA8L3VsPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC90YWJsZT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHRhYmxlPlN5bXB0b20gPC90YWJsZT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvdHI+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzx0cj5TeW1wdG9tIDwvdHI+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L3RkPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8dGQ+U3ltcHRvbSA8L3RkPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC90ZD4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHRkPlN5bXB0b20gPC90ZD4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvZGl2PicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8ZGl2PlN5bXB0b20gPC9kaXY+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L28+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxvPlN5bXB0b20gPC9vPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC9zcGFuPicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8c3Bhbj5TeW1wdG9tIDwvc3Bhbj4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvcD4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHA+U3ltcHRvbSA8L3A+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L3ByZT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHByZT5TeW1wdG9tIDwvcHJlPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9odG1sJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC9oMT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPGgxPlN5bXB0b20gPC9oMT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvaHRtbCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvaDk+JywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJzxoOT5TeW1wdG9tIDwvaDk+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L2h0bWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCBvdXQgSFRNTCB0YWdzJywKICAgICAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICAgICAgVXBkYXRlID0+IHsKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJ1N5bXB0b20gJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L3BsYWluJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdUZXh0IHdpdGggPC91PicsCiAgICAgICAgSXRlbUlEID0+ICRGQVFJdGVtSUQxLAogICAgICAgIFVwZGF0ZSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICc8dT5TeW1wdG9tIDwvdT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdEF1dG8gPT4gJ3RleHQvcGxhaW4nLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1RleHQgd2l0aCA8L2RpYj4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPGRpYj5TeW1wdG9tIDwvZGliPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0QXV0byA9PiAndGV4dC9wbGFpbicsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVGV4dCB3aXRoIDwvc3BhbT4nLAogICAgICAgIEl0ZW1JRCA9PiAkRkFRSXRlbUlEMSwKICAgICAgICBVcGRhdGUgPT4gewogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnPHNwYW0+U3ltcHRvbSA8L3NwYW0+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRBdXRvID0+ICd0ZXh0L3BsYWluJywKICAgIH0sCik7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgZm9yIG15ICRDb250ZW50VHlwZVJhdyAocXcoYXV0byB0ZXh0L3BsYWluIHRleHQvaHRtbCkpIHsKCiAgICAgICAgbXkgJENvbnRlbnRUeXBlID0gJENvbnRlbnRUeXBlUmF3IGVxICdhdXRvJyA/ICcnIDogJENvbnRlbnRUeXBlUmF3OwoKICAgICAgICBteSAlRkFRRGF0YSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0LT57SXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEZBUVVwZGF0ZSA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICAgICAgICAgJUZBUURhdGEsCiAgICAgICAgICAgICV7ICRUZXN0LT57VXBkYXRlfSB9LAogICAgICAgICAgICBJdGVtSUQgPT4gJFRlc3QtPntJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUUNvbnRlbnRUeXBlU2V0KAogICAgICAgICAgICBGQVFJdGVtSURzICA9PiBbICRUZXN0LT57SXRlbUlEfSBdLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQ29udGVudFR5cGUsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEV4cGVjdGVkUmVzdWx0ID0gJENvbnRlbnRUeXBlUmF3IGVxICdhdXRvJyA/ICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRBdXRvfSA6ICRDb250ZW50VHlwZTsKCiAgICAgICAgJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVGVzdC0+e0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJEZBUURhdGF7Q29udGVudFR5cGV9LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ29udGVudFR5cGUgYWZ0ZXIgc2V0IHRvICRDb250ZW50VHlwZVJhdyIsCiAgICAgICAgKTsKICAgIH0KfQoKJUZBUURhdGEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgPT4gJEZBUUl0ZW1JRDEsCiAgICBVc2VySUQgPT4gMSwKKTsKJEZBUVVwZGF0ZSA9ICRGQVFPYmplY3QtPkZBUVVwZGF0ZSgKICAgICVGQVFEYXRhLAogICAgSXRlbUlEICA9PiAkRkFRSXRlbUlEMSwKICAgIFZhbGlkSUQgPT4gMiwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkRkFRVXBkYXRlLAogICAgIkZBUVVwZGF0ZSgpIHNldCBGQVEgJEZBUUl0ZW1JRDEgdG8gaW52YWxpZCIsCik7CgpteSAkSW50ZXJmYWNlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVUeXBlTGlzdCgKICAgIFR5cGVzICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0ZBUTo6QWdlbnQ6OlN0YXRlVHlwZXMnKSwKICAgIFVzZXJJRCA9PiAxLAopOwoKbXkgJEFydGljbGVDb3VudCA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgQ2F0ZWdvcnlJRHMgPT4gWyAxLCBdLAogICAgSXRlbVN0YXRlcyAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgIFZhbGlkICAgICAgID0+IDAsCiAgICBVc2VySUQgICAgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICAkQXJ0aWNsZUNvdW50LAogICAgMCwKICAgICJGQVFDb3VudCgpIFZhbGlkIGFuZCBJbnZhbGlkIiwKKTsKCm15ICRBcnRpY2xlQ291bnRWYWxpZCA9ICRGQVFPYmplY3QtPkZBUUNvdW50KAogICAgQ2F0ZWdvcnlJRHMgPT4gWyAxLCBdLAogICAgSXRlbVN0YXRlcyAgPT4gJEludGVyZmFjZVN0YXRlcywKICAgIFZhbGlkICAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICAkQXJ0aWNsZUNvdW50VmFsaWQsCiAgICAwLAogICAgIkZBUUNvdW50KCkgVmFsaWQiLAopOwoKJFNlbGYtPlRydWUoCiAgICAkQXJ0aWNsZUNvdW50VmFsaWQgPCAkQXJ0aWNsZUNvdW50ID8gMSA6IDAsCiAgICAiVmFsaWQgSXRlbXMgYXJlIGxlc3MgdGhhbiBWYWxpZCBhbmQgSW52YWxpZCAoJEFydGljbGVDb3VudFZhbGlkIDwgJEFydGljbGVDb3VudCkgd2l0aCB0cnVlIiwKKTsKCiMgVGVzdCBGQVFDb3VudCgpIHdpdGggbXVsdGlwbGUgQ2F0ZWdvcmllcywgc2VlIGJ1ZyM3OTgwLgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwpteSBAQ2F0ZWdvcnlJRHM7Cm15ICRDb3VudCA9IDA7CmZvciBteSAkSW5kZXggKCAxIC4uIDMgKSB7CgogICAgIyBDcmVhdGUgdGVzdCBDYXRlZ29yeS4KICAgIG15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgTmFtZSAgICAgPT4gJEluZGV4IC4gJ0NhdGVnb3J5JyAuICRSYW5kb21JRCwKICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQ2F0ZWdvcnlJRCwKICAgICAgICAiQ2F0ZWdvcnlJRCAkQ2F0ZWdvcnlJRCBpcyBjcmVhdGVkIgogICAgKTsKICAgIHB1c2ggQENhdGVnb3J5SURzLCAkQ2F0ZWdvcnlJRDsKCiAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgIG15ICRGQVFJRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBUaXRsZSAgICAgICA9PiAkSW5kZXggLiAnRkFRJyAuICRSYW5kb21JRCwKICAgICAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUUlELAogICAgICAgICJGQVFJRCAkRkFRSUQgaXMgY3JlYXRlZCIKICAgICk7CgogICAgJENvdW50Kys7Cn0KCm15ICRNdWx0aUNhdGVnb3J5QXJ0aWNsZUNvdW50ID0gJEZBUU9iamVjdC0+RkFRQ291bnQoCiAgICBDYXRlZ29yeUlEcyA9PiBbQENhdGVnb3J5SURzXSwKICAgIEl0ZW1TdGF0ZXMgID0+ICRJbnRlcmZhY2VTdGF0ZXMsCiAgICBWYWxpZCAgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKJFNlbGYtPklzKAogICAgJE11bHRpQ2F0ZWdvcnlBcnRpY2xlQ291bnQsCiAgICAkQ291bnQsCiAgICAiRkFRQ291bnQoKSB3aXRoIG11bHRpcGxlIENhdGVnb3JpZXMgc3VjY2VzcyIKKTsKCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgc2V0IGNvbmZpZyBvcHRpb25zCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPlNldCgKICAgIEtleSAgID0+ICdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnLAogICAgVmFsdWUgPT4gMCwKKTsKCiMgZ2VuZXJhdGUgYSByYW5kb20gc3RyaW5nIHRvIGhlbHAgc2VhcmNoZXMKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiMgY3JlYXRlIGRpZmZlcmVudCB1c2VycyBmb3IgQ3JlYXRlZFVzZXJJRHMgc2VhcmNoCm15IEBBZGRlZFVzZXJzOwpmb3IgbXkgJENvdW50ZXIgKCAxIC4uIDQgKSB7CiAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICk7CiAgICBteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICApOwogICAgcHVzaCBAQWRkZWRVc2VycywgJFVzZXJJRDsKfQoKbXkgQEFkZGVkRkFRczsKCiMgYWRkIHNvbWUgRkFRcwpteSAlRkFRQWRkVGVtcGxhdGUgPSAoCiAgICBUaXRsZSAgICAgICA9PiAiU29tZSBUZXh0ICRSYW5kb21JRCIsCiAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgU3RhdGVJRCAgICAgPT4gMSwKICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICBLZXl3b3JkcyAgICA9PiAkUmFuZG9tSUQsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgVXNlcklEICAgICAgPT4gMSwKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAopOwoKIyBmcmVlemUgdGltZQokSGVscGVyLT5GaXhlZFRpbWVTZXQoKTsKCiMgZ2V0IEZBUSBvYmplY3QKbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCmZvciBteSAkQ291bnRlciAoIDEgLi4gMiApIHsKICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgJUZBUUFkZFRlbXBsYXRlLAogICAgICAgIFVzZXJJRCA9PiAkQWRkZWRVc2Vyc1sgJENvdW50ZXIgLSAxIF0sCiAgICApOwoKICAgICRTZWxmLT5Jc05vdCgKICAgICAgICB1bmRlZiwKICAgICAgICAkSXRlbUlELAogICAgICAgICJGQVFBZGQoKSBJdGVtSUQ6JyRJdGVtSUQnIGZvciBGQVFTZWFyY2goKSIsCiAgICApOwoKICAgIHB1c2ggQEFkZGVkRkFRcywgJEl0ZW1JRDsKCiAgICAjIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7Cn0KCiMgYWRkIHNvbWUgdm90ZXMKbXkgQFZvdGVzVG9BZGQgPSAoCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzBdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMScsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gMTAwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRBZGRlZEZBUXNbMF0sCiAgICAgICAgSVAgICAgICAgID0+ICc1NC40My4zMC4yJywKICAgICAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgQ3JlYXRlZEJ5ID0+ICdTb21lIFRleHQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAkQWRkZWRGQVFzWzBdLAogICAgICAgIElQICAgICAgICA9PiAnNTQuNDMuMzAuMycsCiAgICAgICAgSW50ZXJmYWNlID0+ICcyJywKICAgICAgICBSYXRlICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICB9LAogICAgewogICAgICAgIENyZWF0ZWRCeSA9PiAnU29tZSBUZXh0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEFkZGVkRkFRc1sxXSwKICAgICAgICBJUCAgICAgICAgPT4gJzU0LjQzLjMwLjEnLAogICAgICAgIEludGVyZmFjZSA9PiAnMicsCiAgICAgICAgUmF0ZSAgICAgID0+IDUwLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBDcmVhdGVkQnkgPT4gJ1NvbWUgVGV4dCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRBZGRlZEZBUXNbMV0sCiAgICAgICAgSVAgICAgICAgID0+ICc1NC40My4zMC4yJywKICAgICAgICBJbnRlcmZhY2UgPT4gJzInLAogICAgICAgIFJhdGUgICAgICA9PiA1MCwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgIH0sCgopOwpmb3IgbXkgJFZvdGUgKEBWb3Rlc1RvQWRkKSB7CiAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlZvdGVBZGQoICV7JFZvdGV9ICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgIlZvdGVBZGQoKTogSXRlbUlEOickVm90ZS0+e0l0ZW1JRH0nIElQOickVm90ZS0+e0lQfScgUmF0ZTonJFZvdGUtPntSYXRlfScgd2l0aCB0cnVlIiwKICAgICk7Cn0KCiMgZG8gdm90ZSBzZWFyY2ggdGVzdHMKbXkgJVNlYXJjaENvbmZpZ1RlbXBsYXRlID0gKAogICAgS2V5d29yZCAgICAgICAgICA9PiAiJFJhbmRvbUlEIiwKICAgIFN0YXRlcyAgICAgICAgICAgPT4gWyAncHVibGljJywgJ2ludGVybmFsJyBdLAogICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ0ZBUUlEJ10sCiAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnVXAnXSwKICAgIExpbWl0ICAgICAgICAgICAgPT4gMTUwLAogICAgVXNlcklEICAgICAgICAgICA9PiAxLAoKKTsKbXkgQFRlc3RzID0gKAoKICAgICMgdm90ZXMgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgR3JlYXRlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gMiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgU2ltcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDIsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFNpbXBsZSBTbWFsbGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBWb3RlcyA9PiB7CiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbiA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBTaW1wbGUgU21hbGxlclRoYW5FcXVhbHMgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gMywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiBbIDIsIDMgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdWb3RlcywgTXVsdGlwbGUgR3JlYXRlclRoYW4gT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAxLCAyIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIE11bHRpcGxlIEdyZWF0ZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFsgMiwgMyBdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIE11bHRpcGxlIFNtYWxsZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IFsgMywgMiBdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIE11bHRpcGxlIFNtYWxsZXJUaGFuRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFsgMiwgMyBdCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnVm90ZXMsIFdyb25nIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIExlc3NUaGFuRXF1YWxzID0+IFs0XQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBDb21wbGV4IE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFZvdGVzID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAzLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBTaW1wbGUgRXF1YWxzIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzID0+IDUwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIFJhdGUgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBHcmVhdGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuID0+IDUwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBHcmVhdGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IDUwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBTbWFsbGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IDY2LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIFNpbXBsZSBTbWFsbGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDY3LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIEVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiBbIDUwLCA2Ni42NyBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1JhdGUsIE11bHRpcGxlIEdyZWF0ZXJUaGFuIE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAyMCwgNDAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBNdWx0aXBsZSBHcmVhdGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIEdyZWF0ZXJUaGFuRXF1YWxzID0+IFsgNTAsIDY2IF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBNdWx0aXBsZSBTbWFsbGVyVGhhbiBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuID0+IFsgNjYsIDYwIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBNdWx0aXBsZSBTbWFsbGVyVGhhbkVxdWFscyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IFsgNTAsIDY3IF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBXcm9uZyBPcGVyYXRvcicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBSYXRlID0+IHsKICAgICAgICAgICAgICAgIExlc3NUaGFuRXF1YWxzID0+IFsxMF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdSYXRlLCBDb21wbGV4IE9wZXJhdG9yJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gWyA1MCwgNjAgXSwKICAgICAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+IDY3LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbXBsZXggdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1ZvdGVzLCBSYXRlLCBDb21wbGV4ICsgV3JvbmcgT3BlcmF0b3InLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgVm90ZXMgPT4gewogICAgICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gWyAyLCAzLCA0IF0sCiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiBbM10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJhdGUgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW4gPT4gWyAyMCwgIDUwIF0sCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbiA9PiBbIDEwMCwgMTIwIF0sCiAgICAgICAgICAgICAgICBMb3dlclRoYW4gICA9PiBbOTldLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIG15IEBJdGVtSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICBcQEl0ZW1JRHMsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IEZBUVNlYXJjaCgpIiwKICAgICk7Cn0KCiMgb3RoZXIgdGVzdHMKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnU3RhdGVzIEhhc2ggQ29ycmVjdCBJRHMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgU3RhdGVzID0+IHsKICAgICAgICAgICAgICAgIDEgPT4gJ0ludGVybmFsJywKICAgICAgICAgICAgICAgIDIgPT4gJ0V4dGVybmFsJywKICAgICAgICAgICAgICAgIDMgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWyAkQWRkZWRGQVFzWzBdLCAkQWRkZWRGQVFzWzFdIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnU3RhdGVzIEhhc2ggSW5jb3JyZWN0IElEcyAoRmxvYXQpJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIFN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAxLjEgPT4gJ0ludGVybmFsJywKICAgICAgICAgICAgICAgIDIuMiA9PiAnRXh0ZXJuYWwnLAogICAgICAgICAgICAgICAgMy4zID0+ICdQdWJsaWMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFtdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1N0YXRlcyBIYXNoIEluY29ycmVjdCBJRHMgKFN0cmluZyknLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgU3RhdGVzID0+IHsKICAgICAgICAgICAgICAgICdJbnRlcm5hbCcgPT4gJ0ludGVybmFsJywKICAgICAgICAgICAgICAgICdFeHRlcm5hbCcgPT4gJ0V4dGVybmFsJywKICAgICAgICAgICAgICAgICdQdWJsaWMnICAgPT4gJ1B1YmxpYycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gW10sCiAgICB9LAoKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIG15IEBJdGVtSURzID0gJEZBUU9iamVjdC0+RkFRU2VhcmNoKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICBcQEl0ZW1JRHMsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IEZBUVNlYXJjaCgpIiwKICAgICk7Cn0KCiMgdGltZSBiYXNlZCB0ZXN0cwoKIyB1cGRhdGUgRkFRcwpteSAlRkFRVXBkYXRlVGVtcGxhdGUgPSAoCiAgICBUaXRsZSAgICAgICA9PiAiTmV3IFRleHQgJFJhbmRvbUlEIiwKICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEtleXdvcmRzICAgID0+ICRSYW5kb21JRCwKICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICBVc2VySUQgICAgICA9PiAxLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCik7CgojIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQokSGVscGVyLT5GaXhlZFRpbWVBZGRTZWNvbmRzKDYwKTsKCm15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRVXBkYXRlKAogICAgJUZBUVVwZGF0ZVRlbXBsYXRlLAogICAgSXRlbUlEID0+ICRBZGRlZEZBUXNbMF0sCiAgICBVc2VySUQgPT4gJEFkZGVkVXNlcnNbMl0sCik7CgokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIkZBUVVwZGF0ZSgpIEl0ZW1JRDonJEFkZGVkRkFRc1swXScgZm9yIEZBUVNlYXJjaCgpIiwKKTsKCiRIZWxwZXItPkZpeGVkVGltZUFkZFNlY29uZHMoNjApOwoKJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAlRkFRVXBkYXRlVGVtcGxhdGUsCiAgICBJdGVtSUQgPT4gJEFkZGVkRkFRc1sxXSwKICAgIFVzZXJJRCA9PiAkQWRkZWRVc2Vyc1szXSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiRkFRVXBkYXRlKCkgSXRlbUlEOickQWRkZWRGQVFzWzFdJyBmb3IgRkFRU2VhcmNoKCkiLAopOwoKIyBhZGQgMiBtaW51dGVzIHRvIGZyb3plbiB0aW1lCiRIZWxwZXItPkZpeGVkVGltZUFkZFNlY29uZHMoMTIwKTsKCm15ICREYXRlVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwoKIyBTdWJ0cmFjdCAyIG1pbnV0ZXMuCiREYXRlVGltZS0+U3VidHJhY3QoIFNlY29uZHMgPT4gMTIxICk7Cm15ICREYXRlTWludXMyTWlucyA9ICREYXRlVGltZS0+VG9TdHJpbmcoKTsKCiMgU3VidHJhY3QgdG90YWx5IDUgbWludXRlcy4KJERhdGVUaW1lLT5TdWJ0cmFjdCggU2Vjb25kcyA9PiAxODAgKTsKbXkgJERhdGVNaW51czVNaW5zID0gJERhdGVUaW1lLT5Ub1N0cmluZygpOwoKIyBTdWJ0cmFjdCB0b3RhbHkgNiBtaW51dGVzLgokRGF0ZVRpbWUtPlN1YnRyYWN0KCBTZWNvbmRzID0+IDYwICk7Cm15ICREYXRlTWludXM2TWlucyA9ICREYXRlVGltZS0+VG9TdHJpbmcoKTsKCkBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgMyBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gMywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lT2xkZXJNaW51dGVzIDYgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJNaW51dGVzID0+IDYsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ3JlYXRlVGltZU5ld2VyTWludXRlcyA2IG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU5ld2VyTWludXRlcyA9PiA2LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgNSBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gNSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lT2xkZXJEYXRlIDUgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICREYXRlTWludXM1TWlucywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lTmV3ZXJEYXRlIDUgbWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICREYXRlTWludXM1TWlucywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVUaW1lT2xkZXJEYXRlIENyZWF0ZVRpbWVOZXdlckRhdGUnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJERhdGVNaW51czZNaW5zLAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAkRGF0ZU1pbnVzNU1pbnMsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ2hhbmdlVGltZU9sZGVyTWludXRlcyAzIG1pbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBJdGVtQ2hhbmdlVGltZU9sZGVyTWludXRlcyA9PiAzLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NoYW5nZVRpbWVOZXdlck1pbnV0ZXMgMiBtaW4nLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgSXRlbUNoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMiwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDaGFuZ2VUaW1lT2xkZXJEYXRlIDIgTWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICREYXRlTWludXMyTWlucywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDaGFuZ2VUaW1lTmV3ZXJEYXRlIDIgTWluJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIEl0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICREYXRlTWludXMyTWlucywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0KKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgXEBJdGVtSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIGNyZWF0ZWQgdXNlciB0ZXN0cwpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAxJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMF0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMV0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDcmVhdGVkVXNlcklEcyAxIGFuZCAyJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMF0sICRBZGRlZFVzZXJzWzFdIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAkQWRkZWRGQVFzWzBdLAogICAgICAgICAgICAkQWRkZWRGQVFzWzFdLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnV3JvbmcgQ3JlYXRlZFVzZXJJRHMgRm9ybWF0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIENyZWF0ZWRVc2VySURzID0+ICRBZGRlZFVzZXJzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKKTsKCiMgbGFzdCBjaGFuZ2VkIHVzZXIgdGVzdHMKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnTGFzdENoYW5nZWRVc2VySURzIDMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgTGFzdENoYW5nZWRVc2VySURzID0+IFsgJEFkZGVkVXNlcnNbMl0gXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMF0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdMYXN0Q2hhbmdlZFVzZXJJRHMgNCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBMYXN0Q2hhbmdlZFVzZXJJRHMgPT4gWyAkQWRkZWRVc2Vyc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0xhc3RDaGFuZ2VkVXNlcklEcyAzIGFuZCA0JywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAlU2VhcmNoQ29uZmlnVGVtcGxhdGUsCiAgICAgICAgICAgIExhc3RDaGFuZ2VkVXNlcklEcyA9PiBbICRBZGRlZFVzZXJzWzJdLCAkQWRkZWRVc2Vyc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICAgICAgJEFkZGVkRkFRc1sxXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1dyb25nIExhc3RDaGFuZ2VkVXNlcklEcyBGb3JtYXQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgTGFzdENoYW5nZWRVc2VySURzID0+ICRBZGRlZFVzZXJzWzJdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFtdLAogICAgfSwKKTsKCiMgZXhlY3V0ZSB0aGUgdGVzdHMKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSBASXRlbUlEcyA9ICRGQVFPYmplY3QtPkZBUVNlYXJjaCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgXEBJdGVtSURzLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBGQVFTZWFyY2goKSIsCiAgICApOwp9CgojIGFwcHJvdmFsIHRlc3RzCiMgdXBkYXRlIGRhdGFiYXNlIHRvIHByZXZlbnQgZ2VuZXJhdGlvbiBvZiBhcHByb3ZhbCB0aWNrZXQKcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICBTUUwgPT4gJwogICAgICAgIFVQREFURSBmYXFfaXRlbQogICAgICAgIFNFVCBhcHByb3ZlZCA9ID8KICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgQmluZCA9PiBbCiAgICAgICAgXDAsCiAgICAgICAgXCRBZGRlZEZBUXNbMV0sCiAgICBdLAopOwoKQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICA9PiAnQXBwcm92ZWQgMScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgJVNlYXJjaENvbmZpZ1RlbXBsYXRlLAogICAgICAgICAgICBBcHByb3ZlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgJEFkZGVkRkFRc1swXSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0FwcHJvdmVkIDAnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICVTZWFyY2hDb25maWdUZW1wbGF0ZSwKICAgICAgICAgICAgQXBwcm92ZWQgPT4gMCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICRBZGRlZEZBUXNbMV0sCiAgICAgICAgXSwKICAgIH0sCik7CgojIGV4ZWN1dGUgdGhlIHRlc3RzCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbXkgQEl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgIFxASXRlbUlEcywKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gRkFRU2VhcmNoKCkiLAogICAgKTsKfQoKIyBleGVjdXRlIG9sZCB0ZXN0cwokU2VsZi0+VHJ1ZSgKICAgIDEsCiAgICAiLS1FeGVjdXRlIEZvcm1lciBUZXN0cy0tIiwKKTsKewogICAgbXkgJEl0ZW1JRDEgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAyLAogICAgICAgIExhbmd1YWdlSUQgID0+IDIsCiAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0MicsCiAgICAgICAgS2V5d29yZHMgICAgPT4gInNvbWUkUmFuZG9tSUQga2V5d29yZHMyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLjInLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBmb3VuZC4uLjInLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEl0ZW1JRDEsCiAgICAgICAgIkZBUUFkZCgpIC0gMSIsCiAgICApOwoKICAgICMgYWRkIDEgbWludXRlIHRvIGZyb3plbiB0aW1lCiAgICAkSGVscGVyLT5GaXhlZFRpbWVBZGRTZWNvbmRzKDYwKTsKCiAgICBteSAkSXRlbUlEMiA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUnIC4gJFJhbmRvbUlELAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgIEtleXdvcmRzICAgID0+ICcnLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtIERlc2NyaXB0aW9uIDEuLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJdGVtSUQyLAogICAgICAgICJGQVFBZGQoKSAtIDIiLAogICAgKTsKCiAgICAjIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7CgogICAgbXkgJUtleXdvcmRzID0gKAogICAgICAgIEtleXdvcmQxID0+ICJzb21lMSRSYW5kb21JRCIsCiAgICAgICAgS2V5d29yZDIgPT4gInNvbWUyJFJhbmRvbUlEIiwKICAgICAgICBLZXl3b3JkMyA9PiAic29tZTMkUmFuZG9tSUQiLAogICAgICAgIEtleXdvcmQ0ID0+ICJzb21lNCRSYW5kb21JRCIsCiAgICAgICAgS2V5d29yZDUgPT4gInNvbWU1JFJhbmRvbUlEIiwKICAgICk7CgogICAgbXkgJEl0ZW1JRDMgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICAgPT4gJ1Rlc3QgRkFRLTMnLAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgIEtleXdvcmRzICAgID0+ICIkS2V5d29yZHN7S2V5d29yZDF9ICRLZXl3b3Jkc3tLZXl3b3JkMn0gJEtleXdvcmRze0tleXdvcmQzfSAkS2V5d29yZHN7S2V5d29yZDV9IiwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJdGVtSUQzLAogICAgICAgICJGQVFBZGQoKSAtIDMiLAogICAgKTsKCiAgICAjIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7CgogICAgbXkgJEl0ZW1JRDQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICA9PiAnVGVzdCBGQVEtNCcsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgS2V5d29yZHMgICA9PiAiJEtleXdvcmRze0tleXdvcmQxfSwkS2V5d29yZHN7S2V5d29yZDJ9LCRLZXl3b3Jkc3tLZXl3b3JkM30sJEtleXdvcmRze0tleXdvcmQ0fSIsCiAgICAgICAgLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJdGVtSUQ0LAogICAgICAgICJGQVFBZGQoKSAtIDQiLAogICAgKTsKCiAgICAjIGFkZCAxIG1pbnV0ZSB0byBmcm96ZW4gdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lQWRkU2Vjb25kcyg2MCk7CgogICAgbXkgJEl0ZW1JRDUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgVGl0bGUgICAgICA9PiAnVGVzdCBGQVEtNScsCiAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgPT4gMSwKICAgICAgICBMYW5ndWFnZUlEID0+IDEsCiAgICAgICAgS2V5d29yZHMgICA9PiAiJEtleXdvcmRze0tleXdvcmQxfTskS2V5d29yZHN7S2V5d29yZDJ9OyRLZXl3b3Jkc3tLZXl3b3JkM307JEtleXdvcmRze0tleXdvcmQ0fSIsCiAgICAgICAgLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJdGVtSUQ1LAogICAgICAgICJGQVFBZGQoKSAtIDQiLAogICAgKTsKCiAgICAjIHJlc3RvcmUgdGltZQogICAgJEhlbHBlci0+Rml4ZWRUaW1lVW5zZXQoKTsKCiAgICBAVGVzdHMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIFdoYXQgICAgPT4gJypzKicsCiAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICJzb21lJFJhbmRvbUlEKiIsCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsnVm90ZXMnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQxLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIHdpdGggc3BhY2VzIC0gYWxsJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gIiRLZXl3b3Jkc3tLZXl3b3JkMX0gJEtleXdvcmRze0tleXdvcmQyfSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkSXRlbUlEMywKICAgICAgICAgICAgICAgICRJdGVtSUQ0LAogICAgICAgICAgICAgICAgJEl0ZW1JRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMgd2l0aCBjb21tYSAtIGFsbCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBLZXl3b3JkID0+ICIkS2V5d29yZHN7S2V5d29yZDJ9LCRLZXl3b3Jkc3tLZXl3b3JkMX0iLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEl0ZW1JRDMsCiAgICAgICAgICAgICAgICAkSXRlbUlENCwKICAgICAgICAgICAgICAgICRJdGVtSUQ1LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIHdpdGggc2VtaWNvbG9uIC0gYWxsJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gIiRLZXl3b3Jkc3tLZXl3b3JkMX07JEtleXdvcmRze0tleXdvcmQyfSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkSXRlbUlEMywKICAgICAgICAgICAgICAgICRJdGVtSUQ0LAogICAgICAgICAgICAgICAgJEl0ZW1JRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMxIEtleXdvcmRzMyAgd2l0aCBzcGFjZXMgLSBhbGwnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAiJEtleXdvcmRze0tleXdvcmQxfSAkS2V5d29yZHN7S2V5d29yZDN9IiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQzLAogICAgICAgICAgICAgICAgJEl0ZW1JRDQsCiAgICAgICAgICAgICAgICAkSXRlbUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkczEgS2V5d29yZHMzIHdpdGggY29tbWEgLSBhbGwnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAiJEtleXdvcmRze0tleXdvcmQxfSwkS2V5d29yZHN7S2V5d29yZDN9IiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQzLAogICAgICAgICAgICAgICAgJEl0ZW1JRDQsCiAgICAgICAgICAgICAgICAkSXRlbUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkczEgS2V5d29yZHMzIHdpdGggc2VtaWNvbG9uIC0gYWxsJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gIiRLZXl3b3Jkc3tLZXl3b3JkMX07JEtleXdvcmRze0tleXdvcmQzfSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkSXRlbUlEMywKICAgICAgICAgICAgICAgICRJdGVtSUQ0LAogICAgICAgICAgICAgICAgJEl0ZW1JRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnS2V5d29yZHMgY29tbW9uIGtleXdvcmQnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAkS2V5d29yZHN7S2V5d29yZDN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEl0ZW1JRDMsCiAgICAgICAgICAgICAgICAkSXRlbUlENCwKICAgICAgICAgICAgICAgICRJdGVtSUQ1LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIGNvbW1vbiBrZXl3b3JkIHdpdGggd2lsZGNhcmRzJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJyonIC4gJEtleXdvcmRze0tleXdvcmQzfSAuICcqJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQzLAogICAgICAgICAgICAgICAgJEl0ZW1JRDQsCiAgICAgICAgICAgICAgICAkSXRlbUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkcyBvbmx5IEtleXdvcmQ1JywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIEtleXdvcmQgPT4gJEtleXdvcmRze0tleXdvcmQ1fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQzLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ0tleXdvcmRzIG9ubHkgS2V5d29yZDQnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgS2V5d29yZCA9PiAkS2V5d29yZHN7S2V5d29yZDR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEl0ZW1JRDQsCiAgICAgICAgICAgICAgICAkSXRlbUlENSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkcyBvbmx5IEtleXdvcmQ1IC0gdXBwZXJjYXNlIHN0cmluZycsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBLZXl3b3JkID0+IHVjICRLZXl3b3Jkc3tLZXl3b3JkNX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgICAgICAkSXRlbUlEMywKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgID0+ICdLZXl3b3JkcyBvbmx5IEtleXdvcmQ0IC0gZmlyc3QgY2hhcmFjdGVyIHVwcGVyY2FzZScsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBLZXl3b3JkID0+IHVjZmlyc3QgJEtleXdvcmRze0tleXdvcmQ0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQ0LAogICAgICAgICAgICAgICAgJEl0ZW1JRDUsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnVGl0bGUnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgVGl0bGUgPT4gJ3RJVExlJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICwKICAgICAgICAgICAgICAgIFdoYXQgICAgPT4gJ2wnLAogICAgICAgICAgICAgICAgT3JkZXJCeSA9PiBbJ0NyZWF0ZWQnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQyLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgPT4gJ1doYXQgKExpdGVyYWwpJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJycsCiAgICAgICAgICAgICAgICBXaGF0ICAgID0+ICdzb2x1dGlvbiBmb3VuZCcsCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsnQ3JlYXRlZCddLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICAgICAgJEl0ZW1JRDEsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnV2hhdCAoQU5EKScsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICcnLAogICAgICAgICAgICAgICAgV2hhdCAgICA9PiAnc29sdXRpb24rZm91bmQnLAogICAgICAgICAgICAgICAgT3JkZXJCeSA9PiBbJ0NyZWF0ZWQnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IFsKICAgICAgICAgICAgICAgICRJdGVtSUQxLAogICAgICAgICAgICAgICAgJEl0ZW1JRDIsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAgICAgbXkgQEl0ZW1JRHMgPSAkRkFRT2JqZWN0LT5GQVFTZWFyY2goCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJyonLAogICAgICAgICAgICBTdGF0ZXMgICAgICAgICAgID0+IFsgJ3B1YmxpYycsICdpbnRlcm5hbCcgXSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ1VwJ10sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gMTUwLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICV7ICRUZXN0LT57Q29uZmlnfSB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgXEBJdGVtSURzLAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9LCBGQVFTZWFyY2goKSIsCiAgICAgICAgKTsKICAgIH0KfQoKIyBjbGVhbnVwIGlzIGRvbmUgYnkgcmVzdG9yZSBkYXRhYmFzZQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkVXNlck9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKbXkgJEZBUU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiMgc2V0IGNvbmZpZyBvcHRpb25zCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdGQVE6OkFwcHJvdmFsUmVxdWlyZWQnLAogICAgVmFsdWUgPT4gMCwKKTsKCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdDdXN0b21lckdyb3VwU3VwcG9ydCcsCiAgICBWYWx1ZSA9PiAwLAopOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICd1c2VycycsIF0sCik7Cm15ICRUZXN0VXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCik7CgpteSAkQWRtaW5Vc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKbXkgJEFkbWluVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJEFkbWluVXNlckxvZ2luLAopOwoKIyBjcmVhdGUgc29tZSBjdXN0b21lciB1c2VycwpteSBAQ3VzdG9tZXJVc2VyczsKZm9yICggMCAuLiAxICkgewogICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CiAgICBwdXNoIEBDdXN0b21lclVzZXJzLCAkVGVzdFVzZXJMb2dpbjsKfQoKbXkgJFJhbmRvbU51bWJlciA9ICRIZWxwZXItPkdldFJhbmRvbU51bWJlcigpOwoKbXkgJVN0YXRlTGlzdCA9ICRGQVFPYmplY3QtPlN0YXRlTGlzdCgKICAgIFVzZXJJRCA9PiAkQWRtaW5Vc2VySUQsCik7Cm15ICVSZXZlcnNlU3RhdGVMaXN0ID0gcmV2ZXJzZSAlU3RhdGVMaXN0OwoKIyBDYWxsIHRoaXMgZnVuY3Rpb24gYXQgdGhlIGJlZ2lubmluZywgdG8gY2hlY2sgaWYgdGhlIGNhY2hlIGNsZWFudXAgd29ya3MgY29ycmVjdGx5IGFmdGVyIG5ldyBhcnRpY2xlIHdhcyBjcmVhdGVkLgokRkFRT2JqZWN0LT5GQVFLZXl3b3JkQXJ0aWNsZUxpc3QoCiAgICBDdXN0b21lclVzZXIgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICBVc2VySUQgICAgICAgPT4gJEFkbWluVXNlcklELAopOwoKIyBkZWZpbmUgdGhlIHRpY2tldHMgZm9yIHRoZSBzdGF0aXN0aWMgcmVzdWx0IHRlc3RzCm15IEBGQVFJdGVtcyA9ICgKICAgIHsKICAgICAgICBUaXRsZSAgICAgID0+ICdTb21lIFRleHQnLAogICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgID0+ICRSZXZlcnNlU3RhdGVMaXN0eydleHRlcm5hbCAoY3VzdG9tZXIpJ30sICAgICMgJ2V4dGVybmFsJwogICAgICAgIExhbmd1YWdlSUQgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnZW4nCiAgICAgICAgS2V5d29yZHMgPT4KICAgICAgICAgICAgInRpY2tldCRSYW5kb21OdW1iZXIga2V5d29yZCRSYW5kb21OdW1iZXIgaXRzbSRSYW5kb21OdW1iZXIgZXhhbXBsZSRSYW5kb21OdW1iZXIgJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICBVc2VySUQgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICB9LAogICAgewogICAgICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQgRXhhbXBsZScsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAkUmV2ZXJzZVN0YXRlTGlzdHsnZXh0ZXJuYWwgKGN1c3RvbWVyKSd9LCAgICAjICdleHRlcm5hbCcKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdlbicKICAgICAgICBLZXl3b3JkcyAgICA9PiAiZmFxJFJhbmRvbU51bWJlciBrZXl3b3JkJFJhbmRvbU51bWJlciIsCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJEFkbWluVXNlcklELAogICAgfSwKICAgIHsKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0IEV4YW1wbGUnLAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gJFJldmVyc2VTdGF0ZUxpc3R7J2V4dGVybmFsIChjdXN0b21lciknfSwgICAgICAgICAgICAgICAgICAgICMgJ2V4dGVybmFsJwogICAgICAgIExhbmd1YWdlSUQgID0+IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdkZScKICAgICAgICBLZXl3b3JkcyAgICA9PiAiZmFxJFJhbmRvbU51bWJlciBrZXl3b3JkJFJhbmRvbU51bWJlciBJdFNtJFJhbmRvbU51bWJlciIsCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJEFkbWluVXNlcklELAogICAgfSwKICAgIHsKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0IFB1YmxpYycsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAkUmV2ZXJzZVN0YXRlTGlzdHsncHVibGljIChhbGwpJ30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdwdWJsaWMnCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnZW4nCiAgICAgICAgS2V5d29yZHMgICAgPT4gIkZBUSRSYW5kb21OdW1iZXIga2V5d29yZCRSYW5kb21OdW1iZXIgcHVibGljJFJhbmRvbU51bWJlciIsCiAgICAgICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJEFkbWluVXNlcklELAogICAgfSwKICAgIHsKICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0IEludGVybmFsJywKICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgIFN0YXRlSUQgICAgID0+ICRSZXZlcnNlU3RhdGVMaXN0eydpbnRlcm5hbCAoYWdlbnQpJ30sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdpbnRlcm5hbCcKICAgICAgICBMYW5ndWFnZUlEICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnZW4nCiAgICAgICAgS2V5d29yZHMgICAgPT4gInRpY2tldCRSYW5kb21OdW1iZXIgS2V5V29yZCRSYW5kb21OdW1iZXIgaVRzbSRSYW5kb21OdW1iZXIgaW50ZXJuYWwkUmFuZG9tTnVtYmVyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICBVc2VySUQgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICB9LAogICAgewogICAgICAgIFRpdGxlICAgICAgID0+ICdTb21lIFRleHQgSW50ZXJuYWwnLAogICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgU3RhdGVJRCAgICAgPT4gJFJldmVyc2VTdGF0ZUxpc3R7J2ludGVybmFsIChhZ2VudCknfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ2ludGVybmFsJwogICAgICAgIExhbmd1YWdlSUQgID0+IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICdlbicKICAgICAgICBLZXl3b3JkcyAgICA9PiAidGlja2V0JFJhbmRvbU51bWJlciBLZXlXb3JkJFJhbmRvbU51bWJlciBpVHNtJFJhbmRvbU51bWJlciBpbnRlcm5hbCRSYW5kb21OdW1iZXIiLAogICAgICAgIEZpZWxkMSAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRBZG1pblVzZXJJRCwKICAgIH0sCiAgICB7CiAgICAgICAgVGl0bGUgICAgICAgPT4gJ1NvbWUgVGV4dCBJbnRlcm5hbCcsCiAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICBTdGF0ZUlEICAgICA9PiAkUmV2ZXJzZVN0YXRlTGlzdHsnaW50ZXJuYWwgKGFnZW50KSd9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAnaW50ZXJuYWwnCiAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgJ2VuJwogICAgICAgIEtleXdvcmRzICAgID0+ICJmYXEkUmFuZG9tTnVtYmVyIiwKICAgICAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICBVc2VySUQgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICB9LAopOwoKIyBDcmVhdGUgc29tZSBmYXEgaXRlbXMgZm9yIHRoZSB0ZXN0LgpteSBARkFRSXRlbUlEczsKCkZBUUlURU06CmZvciBteSAkRkFRSXRlbSAoQEZBUUl0ZW1zKSB7CgogICAgbXkgJEZBUUl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAleyRGQVFJdGVtfSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEZBUUl0ZW1JRCwKICAgICAgICAiRkFRQWRkKCkgc3VjY2Vzc2Z1bCBmb3IgdGVzdCAtIEZBUUl0ZW1JRCAkRkFRSXRlbUlEIiwKICAgICk7CgogICAgcHVzaCBARkFRSXRlbUlEcywgJEZBUUl0ZW1JRDsKfQoKIyBEZWZpbmUgc29tZSB0ZXN0IGZvciB0aGUgZnVuY3Rpb24gJ0ZBUUtleXdvcmRBcnRpY2xlTGlzdCcuCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gJ1Rlc3QgZG9lcyBub3QgY29udGFpbiBhbGwgbmVjZXNzYXJ5IGRhdGEgZm9yIEZBUUtleXdvcmRBcnRpY2xlTGlzdCcsCiAgICAgICAgRmFpbHMgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgRkFRS2V5d29yZEFydGljbGVMaXN0ID0+IHt9LAogICAgICAgIFJlZmVyZW5jZURhdGEgICAgICAgICA9PiB7fSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgID0+ICdUZXN0IHdpdGggYSBjdXN0b21lciB1c2VyIGZvciBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnLAogICAgICAgIEZBUUtleXdvcmRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkQ3VzdG9tZXJVc2Vyc1swXSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRBZG1pblVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICAiJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIml0c20kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAicHVibGljJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aWNrZXQkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gIlRlc3Qgd2l0aCBhIGN1c3RvbWVyIHVzZXIsIGJ1dCBvbmx5IHdpdGggbGFuZ3VhZ2UgJ2VuJyBmb3IgRkFRS2V5d29yZEFydGljbGVMaXN0IiwKICAgICAgICBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgICAgIExhbmd1YWdlcyAgICA9PiBbJ2VuJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpdHNtJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJrZXl3b3JkJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAicHVibGljJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aWNrZXQkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gIlRlc3Qgd2l0aCBhIGN1c3RvbWVyIHVzZXIsIGJ1dCBvbmx5IHdpdGggbGFuZ3VhZ2UgJ2RlJyBmb3IgRkFRS2V5d29yZEFydGljbGVMaXN0IiwKICAgICAgICBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgICAgIExhbmd1YWdlcyAgICA9PiBbJ2RlJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaXRzbSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICA9PiAiVGVzdCB3aXRoIGEgY3VzdG9tZXIgdXNlciB3aXRoIGxhbmd1YWdlICdlbicgYW5kICdkZScgZm9yIEZBUUtleXdvcmRBcnRpY2xlTGlzdCIsCiAgICAgICAgRkFRS2V5d29yZEFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRDdXN0b21lclVzZXJzWzBdLAogICAgICAgICAgICBMYW5ndWFnZXMgICAgPT4gWyAnZW4nLCAnZGUnIF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIml0c20kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAicHVibGljJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aWNrZXQkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gIlRlc3Qgd2l0aCBhIHRlc3QgdXNlciwgYnV0IG9ubHkgd2l0aCBsYW5ndWFnZSAnZW4nIGZvciBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QiLAogICAgICAgIEZBUUtleXdvcmRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIExhbmd1YWdlcyA9PiBbJ2VuJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICAiJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzZdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIml0c20kUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s0XSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzRdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAicHVibGljJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpbnRlcm5hbCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzRdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAidGlja2V0JFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNF0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgPT4gIlRlc3Qgd2l0aCBhIHRlc3QgdXNlciwgYnV0IG9ubHkgd2l0aCBsYW5ndWFnZSAnZGUnIGZvciBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QiLAogICAgICAgIEZBUUtleXdvcmRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIExhbmd1YWdlcyA9PiBbJ2RlJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICAiZmFxJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpdHNtJFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNV0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImtleXdvcmQkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s1XSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaW50ZXJuYWwkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s1XSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpY2tldCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICA9PiAiVGVzdCB3aXRoIGEgdGVzdCB1c2VyIHdpdGggbGFuZ3VhZ2UgJ2VuJyBhbmQgJ2RlJyBmb3IgRkFRS2V5d29yZEFydGljbGVMaXN0IiwKICAgICAgICBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBMYW5ndWFnZXMgPT4gWyAnZW4nLCAnZGUnIF0sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkQWRtaW5Vc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgImV4YW1wbGUkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImZhcSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzZdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzFdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaXRzbSRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNF0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAia2V5d29yZCRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNF0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInB1YmxpYyRSYW5kb21OdW1iZXIiID0+IFsKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAiaW50ZXJuYWwkUmFuZG9tTnVtYmVyIiA9PiBbCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s1XSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzRdLAogICAgICAgICAgICBdLAogICAgICAgICAgICAidGlja2V0JFJhbmRvbU51bWJlciIgPT4gWwogICAgICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNV0sCiAgICAgICAgICAgICAgICAkRkFRSXRlbUlEc1s0XSwKICAgICAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAopOwoKIyBkZWZpbmUgdGVzdCBjb3VudGVyCm15ICRUZXN0Q291bnQgPSAxOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNoZWNrIEZBUUtleXdvcmRBcnRpY2xlTGlzdCBhdHRyaWJ1dGUKICAgIGlmICggISRUZXN0LT57RkFRS2V5d29yZEFydGljbGVMaXN0fSB8fCByZWYgJFRlc3QtPntGQVFLZXl3b3JkQXJ0aWNsZUxpc3R9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IE5vIEZBUUtleXdvcmRBcnRpY2xlTGlzdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUOwogICAgfQoKICAgICMgcHJpbnQgdGVzdCBjYXNlIGRlc2NyaXB0aW9uCiAgICBpZiAoICRUZXN0LT57RGVzY3JpcHRpb259ICkgewogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAxLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiAkVGVzdC0+e0Rlc2NyaXB0aW9ufSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlRkFRS2V5d29yZEFydGljbGVMaXN0ID0gJEZBUU9iamVjdC0+RkFRS2V5d29yZEFydGljbGVMaXN0KAogICAgICAgICV7ICRUZXN0LT57RkFRS2V5d29yZEFydGljbGVMaXN0fSB9LAogICAgKTsKCiAgICBpZiAoICRUZXN0LT57RmFpbHN9ICkgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJUZBUUtleXdvcmRBcnRpY2xlTGlzdCA/IDEgOiAwLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBGQVFLZXl3b3JkQXJ0aWNsZUxpc3QoKSAtIHNob3VsZCBmYWlsLiIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBmb3IgbXkgJEtleXdvcmQgKCBzb3J0IGtleXMgJXsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfSB9ICkgewoKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJEZBUUtleXdvcmRBcnRpY2xlTGlzdHskS2V5d29yZH0gfHwgW10sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57JEtleXdvcmR9LAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogRkFRS2V5d29yZEFydGljbGVMaXN0KCkgLSAkS2V5d29yZCAtIHRlc3QgdGhlIHJlc3VsdCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQp9CmNvbnRpbnVlIHsKICAgICRUZXN0Q291bnQrKzsKfQoKIyBDaGVjayBpZiB0aGUgY2FjaGUgZXhpc3RzIGZvciB0aGUgbGFzdCBmdW5jdGlvbiBjYWxsLgpteSBATGFuZ3VhZ2VJRHM7CgpMQU5HVUFHRU5BTUU6CmZvciBteSAkTGFuZ3VhZ2VOYW1lICggQHsgJFRlc3RzWy0xXS0+e0ZBUUtleXdvcmRBcnRpY2xlTGlzdH0tPntMYW5ndWFnZXN9IH0gKSB7CiAgICBteSAkTGFuZ3VhZ2VJRCA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgIE5hbWUgPT4gJExhbmd1YWdlTmFtZSwKICAgICk7CiAgICBuZXh0IExBTkdVQUdFTkFNRSBpZiAhJExhbmd1YWdlSUQ7CgogICAgcHVzaCBATGFuZ3VhZ2VJRHMsICRMYW5ndWFnZUlEOwp9CgpteSAkQ2F0ZWdvcnlJRHMgPSAkRkFRT2JqZWN0LT5BZ2VudENhdGVnb3J5U2VhcmNoKAogICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLAogICAgVXNlcklEICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKKTsKCm15ICRDYWNoZUtleSA9ICdGQVFLZXl3b3JkQXJ0aWNsZUxpc3QnOwoKaWYgKEBMYW5ndWFnZUlEcykgewogICAgJENhY2hlS2V5IC49ICc6Okxhbmd1YWdlJyAuIGpvaW4gJzo6Jywgc29ydCBATGFuZ3VhZ2VJRHM7Cn0KJENhY2hlS2V5IC49ICc6OkNhdGVnb3J5SURzJyAuIGpvaW4gJzo6Jywgc29ydCBAeyRDYXRlZ29yeUlEc307CiRDYWNoZUtleSAuPSAnOjpJbnRlcmZhY2U6OmludGVybmFsJzsKCm15ICRMYXN0RkFRS2V5d29yZEFydGljbGVMaXN0Q2FjaGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgVHlwZSA9PiAnRkFRS2V5d29yZEFydGljbGVMaXN0JywKICAgIEtleSAgPT4gJENhY2hlS2V5LAopOwoKJFNlbGYtPlRydWUoCiAgICAxLAogICAgIlRlc3QgJFRlc3RDb3VudDogVGVzdCB0aGUgY2FjaGUgZm9yIGxhc3QgZnVuY3Rpb24gY2FsbCIsCik7Cgpmb3IgbXkgJEtleXdvcmQgKCBzb3J0IGtleXMgJXsgJFRlc3RzWy0xXS0+e1JlZmVyZW5jZURhdGF9IH0gKSB7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICRMYXN0RkFRS2V5d29yZEFydGljbGVMaXN0Q2FjaGUtPnskS2V5d29yZH0gfHwgW10sCiAgICAgICAgJFRlc3RzWy0xXS0+e1JlZmVyZW5jZURhdGF9LT57JEtleXdvcmR9LAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IENhY2hlIC0gRkFRS2V5d29yZEFydGljbGVMaXN0KCkgLSAkS2V5d29yZCAtIHRlc3QgdGhlIHJlc3VsdCIsCiAgICApOwp9CgojIERlZmluZSBzb21lIHRlc3QgZm9yIHRoZSBmdW5jdGlvbiAnUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLgpAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgPT4gJ1Rlc3QgZG9lcyBub3QgY29udGFpbiBhbGwgbmVjZXNzYXJ5IGRhdGEgZm9yIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0JywKICAgICAgICBGYWlscyAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAnJywKICAgICAgICAgICAgQm9keSAgICA9PiAnJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4ge30sCiAgICB9LAoKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICA9PiAnVGVzdCB3aXRoIGEga2V5d29yZCBpbiB0aGUgc3ViamVjdCBmb3IgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLAogICAgICAgIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAiaXRzbSRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBCb2R5ICAgID0+ICIkUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgVXNlcklEICA9PiAkQ3VzdG9tZXJVc2Vyc1swXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiA1CiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gNAogICAgIyAgIC0gRkFRQXJ0aWNsZSA0ID0+IDEKICAgICMgICAtIEZBUUFydGljbGUgMyA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgPT4gJ1Rlc3Qgd2l0aCBzb21lIGtleXdvcmRzIGluIHRoZSBzdWJqZWN0IGFuZCBib2R5IGZvciBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCcsCiAgICAgICAgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICJpdHNtJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIEJvZHkgICAgPT4gIml0c20kUmFuZG9tTnVtYmVyLCB0aWNrZXQkUmFuZG9tTnVtYmVyIGtleXdvcmQkUmFuZG9tTnVtYmVyIElUU00kUmFuZG9tTnVtYmVyLiIsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiA1CiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gNAogICAgIyAgIC0gRkFRQXJ0aWNsZSA0ID0+IDEKICAgICMgICAtIEZBUUFydGljbGUgMyA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAgICAgJ1Rlc3Qgd2l0aCBzb21lIGh0bWwga2V5d29yZHMgaW4gdGhlIHN1YmplY3QgYW5kIGJvZHkgKHdpdGggaHRtbCBhbmQgbGluaykgZm9yIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0JywKICAgICAgICBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgPT4gIml0c20kUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgQm9keSA9PgogICAgICAgICAgICAgICAgIiRSYW5kb21OdW1iZXIgaXRzbSRSYW5kb21OdW1iZXIgdGlja2V0JFJhbmRvbU51bWJlciA8YnIgLz5rZXl3b3JkJFJhbmRvbU51bWJlciBJVFNNJFJhbmRvbU51bWJlci4gWzFdIGh0dHBzOi8vZmFxLmNvbS8iLAogICAgICAgICAgICBVc2VySUQgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMiA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgPT4gIlRlc3Qgb25seSBmb3IgdGhlIGxhbmd1YWdlICdkZScgZm9yIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0IiwKICAgICAgICBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgICA9PiAiRkFRJFJhbmRvbU51bWJlci4iLAogICAgICAgICAgICBCb2R5ICAgICAgPT4gIiRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBMYW5ndWFnZXMgPT4gWydkZSddLAogICAgICAgICAgICBVc2VySUQgICAgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiA1CiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gNAogICAgewogICAgICAgIERlc2NyaXB0aW9uID0+ICdUZXN0IHdpdGggc29tZSBrZXl3b3JkcyBpbiB0aGUgc3ViamVjdCBhbmQgYm9keSBhbmQgYSBsaW1pdCBmb3IgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnLAogICAgICAgIFJlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAiaXRzbSRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBCb2R5ICAgID0+ICJpdHNtJFJhbmRvbU51bWJlcjsgdGlja2V0JFJhbmRvbU51bWJlciBrZXl3b3JkJFJhbmRvbU51bWJlciBJVFNNJFJhbmRvbU51bWJlci4iLAogICAgICAgICAgICBMaW1pdCAgID0+IDIsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJEN1c3RvbWVyVXNlcnNbMF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgRS5nLgogICAgIyBHaXZlbiBLZXl3b3JkIGZyb20gdGV4dCAod2l0aCBjb3VudGVyKToKICAgICMgICAtIFJhbmRvbU51bW5lci5SYW5kb21OdW1lciAoMikKICAgICMgICAtIGZhcSAoMSkKICAgICMgUmVzdWx0IChGQVFBcnRpY2xlSUQgPT4gQ2FsY3VsYXRlZCBRdWFudGlmaWVyIGFuZCBvcmRlcmluZyBieSBjaGFuZ2UgdGltZSBhbmQgY3JlYXRlIHRpbWUpOgogICAgIyAgIC0gRkFRQXJ0aWNsZSAxID0+IDIKICAgICMgICAtIEZBUUFydGljbGUgNCA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ1Rlc3Qgd2l0aCBzb21lIGtleXdvcmRzIGluIHRoZSBzdWJqZWN0IGFuZCBib2R5IGFuZCBhIGxpbWl0IGZvciBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCcsCiAgICAgICAgUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICIkUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgQm9keSAgICA9PiAiJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyIGZhcSRSYW5kb21OdW1iZXIgJFJhbmRvbU51bWJlci4kUmFuZG9tTnVtYmVyLiIsCiAgICAgICAgICAgIExpbWl0ICAgPT4gMiwKICAgICAgICAgICAgVXNlcklEICA9PiAkQ3VzdG9tZXJVc2Vyc1swXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbM10sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgID0+ICdUZXN0IHdpdGggYSBrZXl3b3JkIGluIHRoZSBzdWJqZWN0IGZvciBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCAoZm9yIGFnZW50KScsCiAgICAgICAgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICJpdHNtJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIEJvZHkgICAgPT4gIiRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1s0XSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgRS5nLgogICAgIyBHaXZlbiBLZXl3b3JkIGZyb20gdGV4dCAod2l0aCBjb3VudGVyKToKICAgICMgICAtIGl0c20gKDMpCiAgICAjICAgLSB0aWNrZXQgKDEpCiAgICAjICAgLSBrZXl3b3JkICgxKQogICAgIyBSZXN1bHQgKEZBUUFydGljbGVJRCA9PiBDYWxjdWxhdGVkIFF1YW50aWZpZXIgYW5kIG9yZGVyaW5nIGJ5IGNoYW5nZSB0aW1lIGFuZCBjcmVhdGUgdGltZSk6CiAgICAjICAgLSBGQVFBcnRpY2xlIDEgPT4gNQogICAgIyAgIC0gRkFRQXJ0aWNsZSAyID0+IDQKICAgICMgICAtIEZBUUFydGljbGUgNCA9PiAxCiAgICAjICAgLSBGQVFBcnRpY2xlIDMgPT4gMQogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgID0+ICdUZXN0IHdpdGggc29tZSBrZXl3b3JkcyBpbiB0aGUgc3ViamVjdCBhbmQgYm9keSBmb3IgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QnLAogICAgICAgIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCA9PiAiaXRzbSRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBCb2R5ICAgID0+ICJpdHNtJFJhbmRvbU51bWJlciwgdGlja2V0JFJhbmRvbU51bWJlciBrZXl3b3JkJFJhbmRvbU51bWJlciBJVFNNJFJhbmRvbU51bWJlci4iLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzVdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1s0XSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMF0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzJdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1szXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gaXRzbSAoMykKICAgICMgICAtIHRpY2tldCAoMSkKICAgICMgICAtIGtleXdvcmQgKDEpCiAgICAjIFJlc3VsdCAoRkFRQXJ0aWNsZUlEID0+IENhbGN1bGF0ZWQgUXVhbnRpZmllciBhbmQgb3JkZXJpbmcgYnkgY2hhbmdlIHRpbWUgYW5kIGNyZWF0ZSB0aW1lKToKICAgICMgICAtIEZBUUFydGljbGUgMSA9PiA1CiAgICAjICAgLSBGQVFBcnRpY2xlIDIgPT4gNAogICAgIyAgIC0gRkFRQXJ0aWNsZSA0ID0+IDEKICAgICMgICAtIEZBUUFydGljbGUgMyA9PiAxCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAgICAgJ1Rlc3Qgd2l0aCBzb21lIGh0bWwga2V5d29yZHMgaW4gdGhlIHN1YmplY3QgYW5kIGJvZHkgKHdpdGggaHRtbCBhbmQgbGluaykgZm9yIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0JywKICAgICAgICBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgPT4gIml0c20kUmFuZG9tTnVtYmVyIiwKICAgICAgICAgICAgQm9keSA9PgogICAgICAgICAgICAgICAgIiRSYW5kb21OdW1iZXIgaXRzbSRSYW5kb21OdW1iZXIgdGlja2V0JFJhbmRvbU51bWJlciA8YnIgLz5rZXl3b3JkJFJhbmRvbU51bWJlciBJVFNNJFJhbmRvbU51bWJlci4gWzFdIGh0dHBzOi8vZmFxLmNvbS8iLAogICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNV0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzRdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1swXSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbMl0sCiAgICAgICAgICAgICRGQVFJdGVtSURzWzNdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1sxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIEUuZy4KICAgICMgR2l2ZW4gS2V5d29yZCBmcm9tIHRleHQgKHdpdGggY291bnRlcik6CiAgICAjICAgLSBpdHNtICgzKQogICAgIyAgIC0gdGlja2V0ICgxKQogICAgIyAgIC0ga2V5d29yZCAoMSkKICAgICMgUmVzdWx0IChGQVFBcnRpY2xlSUQgPT4gQ2FsY3VsYXRlZCBRdWFudGlmaWVyIGFuZCBvcmRlcmluZyBieSBjaGFuZ2UgdGltZSBhbmQgY3JlYXRlIHRpbWUpOgogICAgIyAgIC0gRkFRQXJ0aWNsZSAyID0+IDEKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICA9PiAiVGVzdCBvbmx5IGZvciB0aGUgbGFuZ3VhZ2UgJ2RlJyBmb3IgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QiLAogICAgICAgIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0ID0+IHsKICAgICAgICAgICAgU3ViamVjdCAgID0+ICJGQVEkUmFuZG9tTnVtYmVyLiIsCiAgICAgICAgICAgIEJvZHkgICAgICA9PiAiJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIExhbmd1YWdlcyA9PiBbJ2RlJ10sCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkRkFRSXRlbUlEc1syXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIEUuZy4KICAgICMgR2l2ZW4gS2V5d29yZCBmcm9tIHRleHQgKHdpdGggY291bnRlcik6CiAgICAjICAgLSBpdHNtICgzKQogICAgIyAgIC0gdGlja2V0ICgxKQogICAgIyAgIC0ga2V5d29yZCAoMSkKICAgICMgUmVzdWx0IChGQVFBcnRpY2xlSUQgPT4gQ2FsY3VsYXRlZCBRdWFudGlmaWVyIGFuZCBvcmRlcmluZyBieSBjaGFuZ2UgdGltZSBhbmQgY3JlYXRlIHRpbWUpOgogICAgIyAgIC0gRkFRQXJ0aWNsZSAxID0+IDUKICAgICMgICAtIEZBUUFydGljbGUgMiA9PiA0CiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ1Rlc3Qgd2l0aCBzb21lIGtleXdvcmRzIGluIHRoZSBzdWJqZWN0IGFuZCBib2R5IGFuZCBhIGxpbWl0IGZvciBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCcsCiAgICAgICAgUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QgPT4gewogICAgICAgICAgICBTdWJqZWN0ID0+ICJpdHNtJFJhbmRvbU51bWJlciIsCiAgICAgICAgICAgIEJvZHkgICAgPT4gIml0c20kUmFuZG9tTnVtYmVyOyB0aWNrZXQkUmFuZG9tTnVtYmVyIGtleXdvcmQkUmFuZG9tTnVtYmVyIElUU00kUmFuZG9tTnVtYmVyLiIsCiAgICAgICAgICAgIExpbWl0ICAgPT4gMiwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkRkFRSXRlbUlEc1s1XSwKICAgICAgICAgICAgJEZBUUl0ZW1JRHNbNF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBFLmcuCiAgICAjIEdpdmVuIEtleXdvcmQgZnJvbSB0ZXh0ICh3aXRoIGNvdW50ZXIpOgogICAgIyAgIC0gUmFuZG9tTnVtbmVyLlJhbmRvbU51bWVyICgyKQogICAgIyAgIC0gZmFxICgxKQogICAgIyBSZXN1bHQgKEZBUUFydGljbGVJRCA9PiBDYWxjdWxhdGVkIFF1YW50aWZpZXIgYW5kIG9yZGVyaW5nIGJ5IGNoYW5nZSB0aW1lIGFuZCBjcmVhdGUgdGltZSk6CiAgICAjICAgLSBGQVFBcnRpY2xlIDEgPT4gMgogICAgIyAgIC0gRkFRQXJ0aWNsZSA3ID0+IDEKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnVGVzdCB3aXRoIHNvbWUga2V5d29yZHMgaW4gdGhlIHN1YmplY3QgYW5kIGJvZHkgYW5kIGEgbGltaXQgZm9yIFJlbGF0ZWRBZ2VudEFydGljbGVMaXN0JywKICAgICAgICBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCA9PiB7CiAgICAgICAgICAgIFN1YmplY3QgPT4gIiRSYW5kb21OdW1iZXIiLAogICAgICAgICAgICBCb2R5ICAgID0+ICIkUmFuZG9tTnVtYmVyLiRSYW5kb21OdW1iZXIgZmFxJFJhbmRvbU51bWJlciAkUmFuZG9tTnVtYmVyLiRSYW5kb21OdW1iZXIuIiwKICAgICAgICAgICAgTGltaXQgICA9PiAyLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRGQVFJdGVtSURzWzBdLAogICAgICAgICAgICAkRkFRSXRlbUlEc1s2XSwKICAgICAgICBdLAogICAgfSwKKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBjaGVjayBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCBhdHRyaWJ1dGUKICAgIGlmICgKICAgICAgICAoICEkVGVzdC0+e1JlbGF0ZWRDdXN0b21lckFydGljbGVMaXN0fSB8fCByZWYgJFRlc3QtPntSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gbmUgJ0hBU0gnICkKICAgICAgICAmJiAoICEkVGVzdC0+e1JlbGF0ZWRBZ2VudEFydGljbGVMaXN0fSB8fCByZWYgJFRlc3QtPntSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdH0gbmUgJ0hBU0gnICkKICAgICAgICApCiAgICB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBObyBSZWxhdGVkQWdlbnRBcnRpY2xlTGlzdCBvciBSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUOwogICAgfQoKICAgIG15ICRSZWxhdGVkQXJ0aWNsZUZ1bmN0aW9uOwoKICAgIGlmICggJFRlc3QtPntSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gKSB7CiAgICAgICAgJFJlbGF0ZWRBcnRpY2xlRnVuY3Rpb24gPSAnUmVsYXRlZEN1c3RvbWVyQXJ0aWNsZUxpc3QnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFJlbGF0ZWRBcnRpY2xlRnVuY3Rpb24gPSAnUmVsYXRlZEFnZW50QXJ0aWNsZUxpc3QnOwogICAgfQoKICAgICMgcHJpbnQgdGVzdCBjYXNlIGRlc2NyaXB0aW9uCiAgICBpZiAoICRUZXN0LT57RGVzY3JpcHRpb259ICkgewogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAxLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiAkVGVzdC0+e0Rlc2NyaXB0aW9ufSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAUmVsYXRlZEFydGljbGVMaXN0OwoKICAgIGlmICggJFRlc3QtPntSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gKSB7CgogICAgICAgIEBSZWxhdGVkQXJ0aWNsZUxpc3QgPSAkRkFRT2JqZWN0LT4kUmVsYXRlZEFydGljbGVGdW5jdGlvbigKICAgICAgICAgICAgJXsgJFRlc3QtPntSZWxhdGVkQ3VzdG9tZXJBcnRpY2xlTGlzdH0gfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQFJlbGF0ZWRBcnRpY2xlTGlzdCA9ICRGQVFPYmplY3QtPiRSZWxhdGVkQXJ0aWNsZUZ1bmN0aW9uKAogICAgICAgICAgICAleyAkVGVzdC0+e1JlbGF0ZWRBZ2VudEFydGljbGVMaXN0fSB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkVGVzdC0+e0ZhaWxzfSApIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgIEBSZWxhdGVkQXJ0aWNsZUxpc3QgPyAxIDogMCwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogJFJlbGF0ZWRBcnRpY2xlRnVuY3Rpb24oKSAtIHNob3VsZCBmYWlsLiIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSBAUmVsYXRlZEZBUUFydGljbGVJRHMgPSBtYXAgeyAkXy0+e0l0ZW1JRH0gfSBAUmVsYXRlZEFydGljbGVMaXN0OwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgIFxAUmVsYXRlZEZBUUFydGljbGVJRHMsCiAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0sCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6ICRSZWxhdGVkQXJ0aWNsZUZ1bmN0aW9uKCkgLSB0ZXN0IHRoZSByZXN1bHQiLAogICAgICAgICk7CiAgICB9Cn0KY29udGludWUgewogICAgJFRlc3RDb3VudCsrOwp9CgojIGNsZWFudXAgaXMgZG9uZSBieSByZXN0b3JlIGRhdGFiYXNlCgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwpteSAkUmFuZG9tSUQgICA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwpteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCik7CgpteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKbXkgJENhdGVnb3J5SUQxID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAiQ2F0ZWdvcnkxJFJhbmRvbUlEIiwKICAgIENvbW1lbnQgID0+ICdTb21lIGNvbW1lbnQnLAogICAgUGFyZW50SUQgPT4gMCwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwokU2VsZi0+SXNOb3QoCiAgICAkQ2F0ZWdvcnlJRDEgLy8gMCwKICAgICcwJywKICAgICJDYXRlZ29yeUFkZCBmb3IgQ2F0ZWdvcnkgMSIsCik7Cm15ICRDYXRlZ29yeUlEMiA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gIkNhdGVnb3J5MiRSYW5kb21JRCIsCiAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgIFBhcmVudElEID0+IDAsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKJFNlbGYtPklzTm90KAogICAgJENhdGVnb3J5SUQyIC8vIDAsCiAgICAnMCcsCiAgICAiQ2F0ZWdvcnlBZGQgZm9yIENhdGVnb3J5IDIiLAopOwpteSAkQ2F0ZWdvcnlJRDMgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICJDYXRlZ29yeTMkUmFuZG9tSUQiLAogICAgQ29tbWVudCAgPT4gJ1NvbWUgY29tbWVudCcsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7CiRTZWxmLT5Jc05vdCgKICAgICRDYXRlZ29yeUlEMyAvLyAwLAogICAgJzAnLAogICAgIkNhdGVnb3J5QWRkIGZvciBDYXRlZ29yeSAzIiwKKTsKCm15ICRDYXRlZ29yeUlEMTEgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICJDYXRlZ29yeTEtMSRSYW5kb21JRCIsCiAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlEMSwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwokU2VsZi0+SXNOb3QoCiAgICAkQ2F0ZWdvcnlJRDExIC8vIDAsCiAgICAnMCcsCiAgICAiQ2F0ZWdvcnlBZGQgZm9yIENhdGVnb3J5IDEtMSIsCik7Cm15ICRDYXRlZ29yeUlEMTIgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICJDYXRlZ29yeTEtMiRSYW5kb21JRCIsCiAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlEMSwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwokU2VsZi0+SXNOb3QoCiAgICAkQ2F0ZWdvcnlJRDEyIC8vIDAsCiAgICAnMCcsCiAgICAiQ2F0ZWdvcnlBZGQgZm9yIENhdGVnb3J5IDEtMiIsCik7Cm15ICRDYXRlZ29yeUlEMTIxID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAiQ2F0ZWdvcnkxLTItMSRSYW5kb21JRCIsCiAgICBDb21tZW50ICA9PiAnU29tZSBjb21tZW50JywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlEMTIsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKJFNlbGYtPklzTm90KAogICAgJENhdGVnb3J5SUQxMjEgLy8gMCwKICAgICcwJywKICAgICJDYXRlZ29yeUFkZCBmb3IgQ2F0ZWdvcnkgMS0yLTEiLAopOwoKbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCA9PiAndXNlcnMnLAopOwoKZm9yIG15ICRDYXRlZ29yeUlEICggJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMTEsICRDYXRlZ29yeUlEMTIsICRDYXRlZ29yeUlEMTIxICkgewoKICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRTdWNjZXNzLAogICAgICAgICJDYXRlZ29yeUlEICRDYXRlZ29yeUlEIGFkZGVkIHRvIEdyb3VwSUQgJEdyb3VwSUQiLAogICAgKTsKfQoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgPT4gJ05vIFBhcmFtcycsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWlzc2luZyBVc2VySUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIFBhcmVudCA9PiAwLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIFBhcmVudCBXL1N1YnMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIEdldFN1YkNhdGVnb3JpZXMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzICAgID0+IFsgJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMTEsICRDYXRlZ29yeUlEMTIsICRDYXRlZ29yeUlEMTIxIF0sCiAgICAgICAgTm90RXhwZWN0ZWRSZXN1bHRzID0+IFskQ2F0ZWdvcnlJRDNdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1BhcmVudElEIDAgVy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCAgICAgICAgID0+IDAsCiAgICAgICAgICAgIEdldFN1YkNhdGVnb3JpZXMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzICAgID0+IFsgJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMTEsICRDYXRlZ29yeUlEMTIsICRDYXRlZ29yeUlEMTIxIF0sCiAgICAgICAgTm90RXhwZWN0ZWRSZXN1bHRzID0+IFskQ2F0ZWdvcnlJRDNdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1BhcmVudElEIENhdGVnb3J5IDEgVy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCAgICAgICAgID0+ICRDYXRlZ29yeUlEMSwKICAgICAgICAgICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgICAgPT4gWyAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyLCAkQ2F0ZWdvcnlJRDEyMSBdLAogICAgICAgIE5vdEV4cGVjdGVkUmVzdWx0cyA9PiBbICRDYXRlZ29yeUlEMSwgJENhdGVnb3J5SUQyLCAkQ2F0ZWdvcnlJRDMgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdQYXJlbnRJRCBDYXRlZ29yeSAyIFcvU3VicycsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgUGFyZW50SUQgICAgICAgICA9PiAkQ2F0ZWdvcnlJRDIsCiAgICAgICAgICAgIEdldFN1YkNhdGVnb3JpZXMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIE5vdEV4cGVjdGVkUmVzdWx0cyA9PgogICAgICAgICAgICBbICRDYXRlZ29yeUlEMSwgJENhdGVnb3J5SUQyLCAkQ2F0ZWdvcnlJRDMsICRDYXRlZ29yeUlEMTEsICRDYXRlZ29yeUlEMTIsICRDYXRlZ29yeUlEMTIxIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUGFyZW50SUQgQ2F0ZWdvcnkgMS0xIFcvU3VicycsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgUGFyZW50SUQgICAgICAgICA9PiAkQ2F0ZWdvcnlJRDExLAogICAgICAgICAgICBHZXRTdWJDYXRlZ29yaWVzID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBOb3RFeHBlY3RlZFJlc3VsdHMgPT4KICAgICAgICAgICAgWyAkQ2F0ZWdvcnlJRDEsICRDYXRlZ29yeUlEMiwgJENhdGVnb3J5SUQzLCAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyLCAkQ2F0ZWdvcnlJRDEyMSBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1BhcmVudElEIENhdGVnb3J5IDEtMiBXL1N1YnMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIFBhcmVudElEICAgICAgICAgPT4gJENhdGVnb3J5SUQxMiwKICAgICAgICAgICAgR2V0U3ViQ2F0ZWdvcmllcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgICAgPT4gWyRDYXRlZ29yeUlEMTIxXSwKICAgICAgICBOb3RFeHBlY3RlZFJlc3VsdHMgPT4gWyAkQ2F0ZWdvcnlJRDEsICRDYXRlZ29yeUlEMiwgJENhdGVnb3J5SUQzLCAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIFBhcmVudCBXTy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyAgICA9PiBbICRDYXRlZ29yeUlEMSwgJENhdGVnb3J5SUQyLCBdLAogICAgICAgIE5vdEV4cGVjdGVkUmVzdWx0cyA9PiBbICRDYXRlZ29yeUlEMywgJENhdGVnb3J5SUQxMSwgJENhdGVnb3J5SUQxMiwgJENhdGVnb3J5SUQxMjEgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdQYXJlbnRJRCAwIFdPL1N1YnMnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUGFyZW50SUQgQ2F0ZWdvcnkgMSBXTy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgICAgPT4gWyAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyLCBdLAogICAgICAgIE5vdEV4cGVjdGVkUmVzdWx0cyA9PiBbICRDYXRlZ29yeUlEMSwgJENhdGVnb3J5SUQyLCAkQ2F0ZWdvcnlJRDMsICRDYXRlZ29yeUlEMTIxIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnUGFyZW50SUQgQ2F0ZWdvcnkgMiBXTy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRDIsCiAgICAgICAgICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgTm90RXhwZWN0ZWRSZXN1bHRzID0+CiAgICAgICAgICAgIFsgJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMywgJENhdGVnb3J5SUQxMSwgJENhdGVnb3J5SUQxMiwgJENhdGVnb3J5SUQxMjEgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdQYXJlbnRJRCBDYXRlZ29yeSAxLTEgV08vU3VicycsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQxMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBOb3RFeHBlY3RlZFJlc3VsdHMgPT4KICAgICAgICAgICAgWyAkQ2F0ZWdvcnlJRDEsICRDYXRlZ29yeUlEMiwgJENhdGVnb3J5SUQzLCAkQ2F0ZWdvcnlJRDExLCAkQ2F0ZWdvcnlJRDEyLCAkQ2F0ZWdvcnlJRDEyMSBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ1BhcmVudElEIENhdGVnb3J5IDEtMiBXTy9TdWJzJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBQYXJlbnRJRCA9PiAkQ2F0ZWdvcnlJRDEyLAogICAgICAgICAgICBVc2VySUQgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzICAgID0+IFskQ2F0ZWdvcnlJRDEyMV0sCiAgICAgICAgTm90RXhwZWN0ZWRSZXN1bHRzID0+IFsgJENhdGVnb3J5SUQxLCAkQ2F0ZWdvcnlJRDIsICRDYXRlZ29yeUlEMywgJENhdGVnb3J5SUQxMSwgJENhdGVnb3J5SUQxMiBdLAogICAgfSwKCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15ICRDYXRlZ29yeUlEcyA9ICRGQVFPYmplY3QtPkFnZW50Q2F0ZWdvcnlTZWFyY2goICV7ICRUZXN0LT57Q29uZmlnfSB9ICk7CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRDYXRlZ29yeUlEcywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gQWdlbnRDYXRlZ29yeVNlYXJjaCgpIC0gV2l0aCBmYWxzZSIsCiAgICAgICAgKTsKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZm9yIG15ICRFeHBlY3RlZFJlc3VsdCAoIEB7ICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSB9ICkgewogICAgICAgIG15ICRDb3VudCA9IGdyZXAgeyAkXyBlcSAkRXhwZWN0ZWRSZXN1bHQgfSBAeyRDYXRlZ29yeUlEc307CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgIDEsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IEFnZW50Q2F0ZWdvcnlTZWFyY2goKSBDYXRlZ29yeUlEICRFeHBlY3RlZFJlc3VsdCBmb3VuZCAxIHRpbWUiLAogICAgICAgICk7CiAgICB9CiAgICBmb3IgbXkgJE5vdEV4cGVjdGVkUmVzdWx0ICggQHsgJFRlc3QtPntOb3RFeHBlY3RlZFJlc3VsdHN9IH0gKSB7CiAgICAgICAgbXkgJENvdW50ID0gZ3JlcCB7ICRfIGVxICROb3RFeHBlY3RlZFJlc3VsdCB9IEB7JENhdGVnb3J5SURzfTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRDb3VudCAvLyAwLAogICAgICAgICAgICAwLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBBZ2VudENhdGVnb3J5U2VhcmNoKCkgQ2F0ZWdvcnlJRCAkTm90RXhwZWN0ZWRSZXN1bHQgZm91bmQgMCB0aW1lcyIsCiAgICAgICAgKTsKICAgIH0KCn0KMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgojIGdldCBuZWVkZWQgb2JqZWN0cwokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKbXkgQFRlc3RzICAgID0gKAogICAgewogICAgICAgIE5hbWUgICAgPT4gJ05vIFBhcmFtcycsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTm8gTmFtZScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1NvbWUgQ29tbWVudCcsCiAgICAgICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTm8gUGFyZW50SUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgPT4gIlRlc3RDYXRlZ29yeSRSYW5kb21JRCIsCiAgICAgICAgICAgIENvbW1lbnQgPT4gJ1NvbWUgQ29tbWVudCcsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ05vIFZhbGlkSUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2F0ZWdvcnkkUmFuZG9tSUQiLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU29tZSBDb21tZW50JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdObyBVc2VySUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2F0ZWdvcnkkUmFuZG9tSUQiLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU29tZSBDb21tZW50JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDb3JyZWN0IE5vIENvbW1lbnQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2F0ZWdvcnkxJFJhbmRvbUlEIiwKICAgICAgICAgICAgUGFyZW50SUQgPT4gMCwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdDb3JyZWN0IEFTQ0lJJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAiVGVzdENhdGVnb3J5MiRSYW5kb21JRCIsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NvcnJlY3QgVW5pY29kZScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gIlRlc3RDYXRlZ29yeTPDpMO8w5/DhMOWw5zigqzQuNGBw6HDqcOtw7rDusOBw4nDjcOaw7HDkSRSYW5kb21JRCIsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQgw6TDvMOfw4TDlsOc4oKs0LjRgcOhw6nDrcO6w7rDgcOJw43DmsOxw5EnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKKTsKCm15ICVBZGRlZENhdGVnb3J5SURzOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkQ2F0ZWdvcnlJRCAvLyAwLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBDYXRlZ29yeUFERCgpIC0gV2l0aCBGYWxzZSIsCiAgICAgICAgKTsKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gQ2F0ZWdvcnlBZGQoKSAtIFdpdGggVHJ1ZSIsCiAgICApOwoKICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAkQWRkZWRDYXRlZ29yeUlEc3skQ2F0ZWdvcnlJRH0sCiAgICAgICAgMSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBDYXRlZ29yeUFkZCgpIENhdGVnb3J5SUQgd2FzIG5vdCB1c2VkIHJldHVybmVkIGJlZm9yZSIsCiAgICApOwoKICAgICRBZGRlZENhdGVnb3J5SURzeyRDYXRlZ29yeUlEfSA9IDE7Cn0KCiMgVGVzdCBmb3IgYnVnIzExODg5IC0gQ2F0ZWdvcnlBZGQgcmV0dXJucyB3cm9uZyBDYXRlZ29yeUlEIGlmIHN1YmNhdGVnb3J5IG5hbWUgYWxyZWFkeSBleGlzdHMuCiMgVGhlIGlkZWEgaXMgdG8gY3JlYXRlIHNldmVyYWwgcGFyZW50cyBhbmQgZm9yIGVhY2ggY3JlYXRlIGEgY2hpbGQgY2F0ZWdvcnksIGFsbCBjaGlsZHJlbiBoYXMgdGhlCiMgICBzYW1lIG5hbWUuCmZvciBteSAkUGFyZW50Q291bnQgKCAxIC4uIDEwICkgewoKICAgIG15ICRQYXJlbnRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgTmFtZSAgICAgPT4gIlRlc3RQYXJlbnQkUGFyZW50Q291bnQkUmFuZG9tSUQiLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQnLAogICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkUGFyZW50Q2F0ZWdvcnlJRCwKICAgICAgICAiUGFyZW50ICRQYXJlbnRDb3VudCBDYXRlZ29yeUFkZCgpIC0gV2l0aCBUcnVlIiwKICAgICk7CgogICAgJFNlbGYtPklzTm90KAogICAgICAgICRBZGRlZENhdGVnb3J5SURzeyRQYXJlbnRDYXRlZ29yeUlEfSwKICAgICAgICAxLAogICAgICAgICJQYXJlbnQgJFBhcmVudENvdW50IENhdGVnb3J5QWRkKCkgQ2F0ZWdvcnlJRCB3YXMgbm90IHVzZWQgcmV0dXJuZWQgYmVmb3JlIiwKICAgICk7CgogICAgJEFkZGVkQ2F0ZWdvcnlJRHN7JFBhcmVudENhdGVnb3J5SUR9ID0gMTsKCiAgICBteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgICAgIE5hbWUgICAgID0+ICJUZXN0Q2hpbGQkUmFuZG9tSUQiLAogICAgICAgIENvbW1lbnQgID0+ICdTb21lIENvbW1lbnQnLAogICAgICAgIFBhcmVudElEID0+ICRQYXJlbnRDYXRlZ29yeUlELAogICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgIkNoaWxkIGZvciBQYXJlbnQgJFBhcmVudENvdW50IENhdGVnb3J5QWRkKCkgLSBXaXRoIFRydWUiLAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgJEFkZGVkQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9LAogICAgICAgIDEsCiAgICAgICAgIkNoaWxkIGZvciBQYXJlbnQgJFBhcmVudENvdW50IENhdGVnb3J5QWRkKCkgQ2F0ZWdvcnlJRCB3YXMgbm90IHVzZWQgcmV0dXJuZWQgYmVmb3JlIiwKICAgICk7CgogICAgJEFkZGVkQ2F0ZWdvcnlJRHN7JENhdGVnb3J5SUR9ID0gMTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KCk7CnVzZSB2YXJzIHF3KCRTZWxmKTsKdXNlIHZhcjo6cGFja2FnZXNldHVwOjpGQVE7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7Cm15ICRGQVFPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgpteSAkUmFuZG9tR3JvdXAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICA9PiAnUmVzdG9yZSBwZXJtaXNzaW9ucyBvZiBBZ2VudEZBUUxhbmd1YWdlIGZyb250ZW5kIG1vZHVsZScsCiAgICAgICAgU2V0dGluZ3MgID0+IFsnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRTGFuZ3VhZ2UnXSwKICAgICAgICBPbGRDb25maWcgPT4gewogICAgICAgICAgICAnRnJvbnRlbmQ6Ok1vZHVsZScgPT4gewogICAgICAgICAgICAgICAgJ0FnZW50RkFRTGFuZ3VhZ2UnID0+IHsKICAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24nID0+ICdGQVEgQXJlYS4nLAogICAgICAgICAgICAgICAgICAgICdHcm91cCcgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkUmFuZG9tR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAnTmF2QmFyJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBY2Nlc3NLZXknICAgPT4gJ0wnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Jsb2NrJyAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbicgPT4gJ0xhbmd1YWdlIE1hbmFnZW1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dyb3VwJyAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJhbmRvbUdyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5rJyAgID0+ICdBY3Rpb249QWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTmFtZScgICA9PiAnTGFuZ3VhZ2UgTWFuYWdlbWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTmF2QmFyJyA9PiAnRkFRJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQcmlvJyAgID0+ICc5NDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGUnICAgPT4gJycKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgPT4gJ1Jlc3RvcmUgcGVybWlzc2lvbnMgb2YgQWdlbnRGQVFBZGQgZnJvbnRlbmQgbW9kdWxlJywKICAgICAgICBTZXR0aW5ncyAgPT4gWydGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFBZGQnXSwKICAgICAgICBPbGRDb25maWcgPT4gewogICAgICAgICAgICAnRnJvbnRlbmQ6Ok1vZHVsZScgPT4gewogICAgICAgICAgICAgICAgJ0FnZW50RkFRQWRkJyA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uJyA9PiAnRkFRIEFyZWEuJywKICAgICAgICAgICAgICAgICAgICAnR3JvdXAnICAgICAgID0+IFtdLAogICAgICAgICAgICAgICAgICAgICdOYXZCYXInICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWNjZXNzS2V5JyAgID0+ICdBJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCbG9jaycgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24nID0+ICdOZXcgRkFRIEFydGljbGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dyb3VwJyAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZhcScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmsnICAgPT4gJ0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOYW1lJyAgID0+ICdOZXcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05hdkJhcicgPT4gJ0ZBUScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHJpbycgICA9PiAnOTIwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUeXBlJyAgID0+ICcnCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgID0+ICdSZXN0b3JlIHZhbHVlIG9mIEZBUTo6QXBwcm92YWxHcm91cCcsCiAgICAgICAgU2V0dGluZ3MgID0+IFsnRkFROjpBcHByb3ZhbEdyb3VwJ10sCiAgICAgICAgT2xkQ29uZmlnID0+IHsKICAgICAgICAgICAgJ0ZBUTo6QXBwcm92YWxHcm91cCcgPT4gJFJhbmRvbUdyb3VwLAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICA9PiAnUmVzdG9yZSBwZXJtaXNzaW9ucyBvZiBGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFFeHBsb3JlciB0byB0aGUgb2xkIGRlZmF1bHRzJywKICAgICAgICBTZXR0aW5ncyAgICA9PiBbJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUV4cGxvcmVyJ10sCiAgICAgICAgT2xkQ29uZmlnICAgPT4ge30sCiAgICAgICAgT2xkRGVmYXVsdHMgPT4gewogICAgICAgICAgICAnRnJvbnRlbmQ6Ok1vZHVsZScgPT4gewogICAgICAgICAgICAgICAgJ0FnZW50RkFRRXhwbG9yZXInID0+IHsKICAgICAgICAgICAgICAgICAgICBHcm91cCAgID0+IFsnZmFxJ10sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgICAgIE5hdkJhciAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdGQVEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Jsb2NrJyA9PiAnSXRlbUFyZWEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V4cGxvcmVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCbG9jaycgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cFJvID0+IFsnZmFxJ10KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OC1GQVEtTGFzdENoYW5nZScgPT4geyBHcm91cCA9PiAkUmFuZG9tR3JvdXAgfSwKICAgICAgICB9LAogICAgfSwKKTsKCm15ICRHZXRDb25maWcgPSBzdWIgewogICAgbXkgJFNvdXJjZSAgICAgID0gc2hpZnQ7CiAgICBteSAkU2V0dGluZ05hbWUgPSBzaGlmdDsKCiAgICBteSAkQ29uZmlnID0gJFNvdXJjZTsKICAgIG15IEBLZXlzICAgPSBzcGxpdCAnIyMjJywgJFNldHRpbmdOYW1lOwogICAgd2hpbGUgKCBteSAkS2V5ID0gc2hpZnQgQEtleXMgKSB7CiAgICAgICAgJENvbmZpZyA9ICRDb25maWctPnskS2V5fTsKICAgIH0KCiAgICByZXR1cm4gJENvbmZpZzsKfTsKCm15ICRDaGVja0dyb3VwR3JvdXBSbyA9IHN1YiB7CiAgICBteSAlUGFyYW0gICAgPSBAXzsKICAgIG15ICRFeHBlY3RlZCA9ICRQYXJhbXtFeHBlY3RlZH07CiAgICBteSAkUmVzdWx0ICAgPSAkUGFyYW17UmVzdWx0fTsKICAgIG15ICRUZXN0TmFtZSA9ICRQYXJhbXtUZXN0TmFtZX07CgogICAgaWYgKCAkRXhwZWN0ZWQtPntHcm91cH0gfHwgJEV4cGVjdGVkLT57R3JvdXBSb30gKSB7CgogICAgICAgICMgQ2hlY2sgZm9yIEtleSBHcm91cCBhbmQgR3JvdXBSby4KICAgICAgICBmb3IgbXkgJEtleSAocXcoR3JvdXAgR3JvdXBSbykpIHsKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJFJlc3VsdC0+eyRLZXl9LAogICAgICAgICAgICAgICAgJEV4cGVjdGVkLT57JEtleX0gLy8gW10sCiAgICAgICAgICAgICAgICAkVGVzdE5hbWUgLiAiLCAnJHsgS2V5IH0nIGZpeGVkISIKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn07CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgSWYgdGhlIGtleSAnQ29uZmlnJyBleGlzdHMsIGxldHMgc2V0IHRoZSBuZXcgY29uZmlnIGJlZm9yZSB3ZSBkbyBhbnl0aGluZyBlbHNlLgogICAgaWYgKCAkVGVzdC0+e0NvbmZpZ30gKSB7CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJFRlc3QtPntDb25maWd9IH0gKSB7CiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFRlc3QtPntDb25maWd9LT57JEtleX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgaWYgaXQgd2FzIHJlc3RvcmVkIHRvIHRoZSBvbGQgY29uZmlnLgogICAgbXkgJE9sZENvbmZpZyA9ICRUZXN0LT57T2xkQ29uZmlnfTsKICAgIGxvY2FsICp2YXI6OnBhY2thZ2VzZXR1cDo6RkFROjpfR2V0T1RSUzVDb25maWdCYWNrdXAgPSBzdWIgeyAgICAjIyBubyBjcml0aWMKICAgICAgICByZXR1cm4gJE9sZENvbmZpZzsKICAgIH07CgogICAgdmFyOjpwYWNrYWdlc2V0dXA6OkZBUS0+bmV3KCktPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl81XzBfOTIoKTsKCiAgICAjIENoZWNrIGlmIHRoZSBuZXcgY29uZmlnIGlzIGFjY29yZGluZyB0byB0aGUgb2xkIG9uZS4KICAgIG15IEBTZXR0aW5ncyA9IEB7ICRUZXN0LT57U2V0dGluZ3N9IH07CiAgICBTRVRUSU5HX05BTUU6CiAgICBmb3IgbXkgJFNldHRpbmdOYW1lIChAU2V0dGluZ3MpIHsKICAgICAgICBteSAkU2V0dGluZ09sZENvbmZpZyAgID0gJEdldENvbmZpZy0+KCAkT2xkQ29uZmlnLCAgICAgICAgICAgJFNldHRpbmdOYW1lICk7CiAgICAgICAgbXkgJFNldHRpbmdPbGREZWZhdWx0cyA9ICRHZXRDb25maWctPiggJFRlc3QtPntPbGREZWZhdWx0c30sICRTZXR0aW5nTmFtZSApOwogICAgICAgIG15ICVDb25maWcgICAgICAgICAgICAgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICRTZXR0aW5nTmFtZSwKICAgICAgICApOwogICAgICAgIG15ICRFZmZlY3RpdmVWYWx1ZSA9ICRDb25maWd7RWZmZWN0aXZlVmFsdWV9OwoKICAgICAgICAjIEl0J3Mgbm90IGEgY29tcGxleCB2YWx1ZSwgY2hlY2sgb25seSBpZiB0aGUgdmFsdWUgd2FzIHJlc3RvcmVkLgogICAgICAgIGlmICggISggcmVmICRFZmZlY3RpdmVWYWx1ZSApICkgewogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkRWZmZWN0aXZlVmFsdWUsCiAgICAgICAgICAgICAgICAkU2V0dGluZ09sZENvbmZpZyAvLyAkU2V0dGluZ09sZERlZmF1bHRzLAogICAgICAgICAgICAgICAgJFRlc3QtPntOYW1lfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgU0VUVElOR19OQU1FOwogICAgICAgIH0KCiAgICAgICAgJENoZWNrR3JvdXBHcm91cFJvLT4oCiAgICAgICAgICAgIEV4cGVjdGVkID0+ICRTZXR0aW5nT2xkQ29uZmlnIC8vICRTZXR0aW5nT2xkRGVmYXVsdHMsCiAgICAgICAgICAgIFJlc3VsdCAgID0+ICRFZmZlY3RpdmVWYWx1ZSwKICAgICAgICAgICAgVGVzdE5hbWUgPT4gJFRlc3QtPntOYW1lfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRTZXR0aW5nT2xkQ29uZmlnLT57TmF2QmFyfSB8fCAkU2V0dGluZ09sZERlZmF1bHRzLT57TmF2QmFyfSApIHsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIG5hdmlnYXRpb24gcGVybWlzc2lvbnMuCiAgICAgICAgICAgIG15ICggdW5kZWYsICRGcm9udGVuZCApID0gc3BsaXQgJyMjIycsICRTZXR0aW5nTmFtZTsKCiAgICAgICAgICAgICMgR2V0IHRoZSBvbGQgbmF2aWdhdGlvbi4KICAgICAgICAgICAgbXkgJE9sZE5hdmlnYXRpb24gPSAkU2V0dGluZ09sZENvbmZpZy0+e05hdkJhcn0gLy8gJFNldHRpbmdPbGREZWZhdWx0cy0+e05hdkJhcn07CgogICAgICAgICAgICAjIEdldCB0aGUgY3VycmVudCBuYXZpZ2F0aW9uLgogICAgICAgICAgICBteSAkTmV3TmF2aWdhdGlvbgogICAgICAgICAgICAgICAgPSAkR2V0Q29uZmlnLT4oICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyksICdGcm9udGVuZDo6TmF2aWdhdGlvbiMjIycgLiAkRnJvbnRlbmQgKTsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIHBlcm1pc3Npb24gaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBvbmUuCiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCBzb3J0IGtleXMgJXskTmV3TmF2aWdhdGlvbn0gKSB7CiAgICAgICAgICAgICAgICBteSAkTmV3SXRlbXMgPSAkTmV3TmF2aWdhdGlvbi0+eyRJbmRleH07CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5ld0l0ZW0gKCBAeyROZXdJdGVtc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE9sZEl0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgPSBMaXN0OjpVdGlsOjpmaXJzdCB7ICRfLT57TmFtZX0gZXEgJE5ld0l0ZW0tPntOYW1lfSAmJiAkXy0+e0Jsb2NrfSBlcSAkTmV3SXRlbS0+e0Jsb2NrfSB9CiAgICAgICAgICAgICAgICAgICAgQHskT2xkTmF2aWdhdGlvbn07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBORVdfSVRFTSBpZiAhJE9sZEl0ZW07CgogICAgICAgICAgICAgICAgICAgICRDaGVja0dyb3VwR3JvdXBSby0+KAogICAgICAgICAgICAgICAgICAgICAgICBFeHBlY3RlZCA9PiAkT2xkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0ICAgPT4gJE5ld0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3ROYW1lID0+IHNwcmludGYoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e05hbWV9IC4gJyAoTmF2aWdhdGlvbiAlcyknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdJdGVtLT57QmxvY2t9ID8gJy0nIC4gJE5ld0l0ZW0tPntCbG9ja30gOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgojIFJlc3RvcmUgZGVmYXVsdCBzZXR0aW5nIHZhbHVlcyBhZnRlciB0ZXN0aW5nLCBzaW5jZSBvdmVycmlkZXMgYXJlIGRlcGxveWVkIGZyb20gZXh0ZXJuYWwgY29kZS4KbXkgQFNldHRpbmdzID0gKAogICAgJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUV4cGxvcmVyJywKICAgICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFMYW5ndWFnZScsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRRWRpdCcsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRQWRkJywKICAgICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFDYXRlZ29yeScsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRU2VhcmNoJywKICAgICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFTZWFyY2hTbWFsbCcsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRWm9vbScsCiAgICAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRUmljaFRleHQnLAogICAgJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVByaW50JywKICAgICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFKb3VybmFsJywKICAgICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFIaXN0b3J5JywKICAgICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFEZWxldGUnLAogICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMzk4LUZBUS1MYXN0Q2hhbmdlJywKICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OS1GQVEtTGFzdENyZWF0ZScsCiAgICAnRkFROjpBcHByb3ZhbEdyb3VwJywKICAgICdGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50RkFRRXhwbG9yZXIjIyMwMDItRkFRJywKICAgICdGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50RkFRQWRkIyMjMDAyLUZBUScsCiAgICAnRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUUxhbmd1YWdlIyMjMDAyLUZBUScsCiAgICAnRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUUNhdGVnb3J5IyMjMDAyLUZBUScsCiAgICAnRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudEZBUVNlYXJjaCMjIzAwMi1GQVEnLAogICAgJ0Zyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRGQVFKb3VybmFsIyMjMDAyLUZBUScsCik7Cgpmb3IgbXkgJFNldHRpbmdOYW1lIChAU2V0dGluZ3MpIHsKICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgIE5hbWUgICA9PiAkU2V0dGluZ05hbWUsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgICJMb2NrZWQgJFNldHRpbmdOYW1lIgogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdSZXNldCgKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkU2V0dGluZ05hbWUsCiAgICAgICAgRXhjbHVzaXZlTG9ja0dVSUQgPT4gJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgIlJlc2V0ICRTZXR0aW5nTmFtZSIsCiAgICApOwp9CgpteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ3VyYXRpb25EZXBsb3koCiAgICBDb21tZW50cyAgICAgID0+ICdVcGdyYWRlTG93ZXJUaGFuNTA5Mi50JywKICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgIEZvcmNlICAgICAgICAgPT4gMSwKICAgIERpcnR5U2V0dGluZ3MgPT4gXEBTZXR0aW5ncywKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICdSZXN0b3JlZCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24nCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKIyBjcmVhdGUgdGVzdCB1c2VyCm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgpOwpteSAkVXNlcklEICAgID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luICk7CgokU2VsZi0+VHJ1ZSgKICAgICRVc2VySUQsCiAgICAiVGVzdCB1c2VyICRVc2VySUQgY3JlYXRlZCIsCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgpteSAkR0lEID0gJEdyb3VwT2JqZWN0LT5Hcm91cEFkZCgKICAgIE5hbWUgICAgPT4gJ0NoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbi0nIC4gJFJhbmRvbUlELAogICAgQ29tbWVudCA9PiAnY29tbWVudCBkZXNjcmliaW5nIHRoZSBncm91cCcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJEdJRCwKICAgICJHcm91cEFkZCgpIiwKKTsKCm15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgpteSAkQ2F0ZWdvcnlJRCA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0NoZWNrQ2F0ZWdvcnlVc2VyUGVybWlzc2lvbi0nIC4gJFJhbmRvbUlELAogICAgQ29tbWVudCAgPT4gJ1NvbWUgY29tbWVudCcsCiAgICBQYXJlbnRJRCA9PiAwLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SUQsCiAgICAiQ2F0ZWdvcnlBZGQoKSIsCik7CgpteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgR3JvdXBJRHMgICA9PiBbJEdJRF0sCiAgICBVc2VySUQgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiU2V0Q2F0ZWdvcnlHcm91cCgpIiwKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICdNaXNzaW5nIENhdGVnb3J5SUQnLAogICAgICAgIFBlcm1pc3Npb24gPT4ge30sCiAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICdNaXNzaW5nIFVzZXJJRCcsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7fSwKICAgICAgICBDb25maWcgICAgID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAnTm8gcGVybWlzc2lvbnMnLAogICAgICAgIFBlcm1pc3Npb24gPT4ge30sCiAgICAgICAgQ29uZmlnICAgICA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgJycgICA9PiAnJywKICAgICAgICAgICAgJ3JvJyA9PiAnJywKICAgICAgICAgICAgJ3J3JyA9PiAnJywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICA9PiAiJ3JvJyBwZXJtaXNzaW9ucyIsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7CiAgICAgICAgICAgIHJvID0+IDEsCiAgICAgICAgfSwKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJlc3VsdCA9PiB7CiAgICAgICAgICAgICcnICAgPT4gJ3JvJywKICAgICAgICAgICAgJ3JvJyA9PiAncm8nLAogICAgICAgICAgICAncncnID0+ICcnLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICInbW92ZV9pbnRvJyBwZXJtaXNzaW9ucyIsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7CiAgICAgICAgICAgIG1vdmVfaW50byA9PiAxLAogICAgICAgIH0sCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXN1bHQgPT4gewogICAgICAgICAgICAnJyAgID0+ICcnLAogICAgICAgICAgICAncm8nID0+ICcnLAogICAgICAgICAgICAncncnID0+ICcnLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgID0+ICIncncnIHBlcm1pc3Npb25zIiwKICAgICAgICBQZXJtaXNzaW9uID0+IHsKICAgICAgICAgICAgcncgPT4gMSwKICAgICAgICB9LAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmVzdWx0ID0+IHsKICAgICAgICAgICAgJycgICA9PiAncm8nLAogICAgICAgICAgICAncm8nID0+ICdybycsCiAgICAgICAgICAgICdydycgPT4gJ3J3JywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgU2V0IG5ldyBwZXJtaXNzaW9ucwogICAgaWYgKCAkVGVzdC0+e1Blcm1pc3Npb259ICkgewogICAgICAgICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkdyb3VwVXNlckFkZCgKICAgICAgICAgICAgR0lEICAgICAgICA9PiAkR0lELAogICAgICAgICAgICBVSUQgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJFRlc3QtPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICRUeXBlICggJycsICdybycsICdydycgKSB7CgogICAgICAgIG15ICRQZXJtaXNzaW9uU3RyaW5nID0gJEZBUU9iamVjdC0+Q2hlY2tDYXRlZ29yeVVzZXJQZXJtaXNzaW9uKAogICAgICAgICAgICAleyAkVGVzdC0+e0NvbmZpZ30gfSwKICAgICAgICAgICAgVHlwZSA9PiAkVHlwZSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkUGVybWlzc2lvblN0cmluZywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKSBmYWlsdXJlIgogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFRFU1Q7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRQZXJtaXNzaW9uU3RyaW5nLAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0fS0+eyRUeXBlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDaGVja0NhdGVnb3J5VXNlclBlcm1pc3Npb24oKSBmb3IgdHlwZSAkVHlwZSIsCiAgICAgICAgKTsKICAgIH0KfQpjb250aW51ZSB7CgogICAgIyBSZW1vdmUgYWxsIHBlcm1pc3Npb25zCiAgICAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Hcm91cFVzZXJBZGQoCiAgICAgICAgR0lEICAgICAgICA9PiAkR0lELAogICAgICAgIFVJRCAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBQZXJtaXNzaW9uID0+IHt9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cn0KCiMgY2xlYW51cCBpcyBkb25lIGJ5IHJlc3RvcmUgZGF0YWJhc2UKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIFNvY2tldDsKdXNlIFlBTUw7CnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyOwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6TGFuZ3VhZ2VMaXN0Owp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljQ2F0ZWdvcnlMaXN0Owp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OwoKIyBnZXQgaGVscGVyIG9iamVjdApteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIHNldCB3ZWItc2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCiMgc2V0IFVzZXJJRCBvbiAxCm15ICRVc2VySUQgPSAxOwoKIyBnZXQgaGVscGVyIG9iamVjdApteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKIyBnZXQgcHVibGljIHN0YXRlcwpteSAlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgVXNlcklEID0+ICRVc2VySUQsCik7Cm15ICRQdWJsaWNTdGF0ZUlEOwpmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlU3RhdGVzICkgewogICAgaWYgKCAkU3RhdGVzeyRLZXl9ID1+IC9ecHVibGljLiovICkgewogICAgICAgICRQdWJsaWNTdGF0ZUlEID0gJEtleTsKICAgIH0KfQoKJFNlbGYtPklzTm90KAogICAgJFB1YmxpY1N0YXRlSUQsCiAgICB1bmRlZiwKICAgICJTZWFyY2ggZm9yIHB1YmxpYyBTdGF0ZUlEIiwKKTsKCiMgY2F0ZWdvcnkgb25lCm15ICRDYXRlZ29yeUlET25lID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ29ubmVjdG9yQ2F0ZWdvcnlPbmUnIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+IDAsCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SURPbmUsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIENhdGVnb3J5IiwKKTsKCiMgY2F0ZWdvcnkgdHdvCm15ICRDYXRlZ29yeUlEVHdvID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICBOYW1lICAgICA9PiAnQ29ubmVjdG9yQ2F0ZWdvcnlUd28nIC4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29tbWVudCAgPT4gJ0NoaWxkIENhdGVnb3J5IGZvciB0ZXN0aW5nJywKICAgIFBhcmVudElEID0+ICRDYXRlZ29yeUlET25lLAogICAgVmFsaWRJRCAgPT4gMSwKICAgIFVzZXJJRCAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeUlEVHdvLAogICAgIkNhdGVnb3J5QWRkKCkgLSBDaGlsZCBDYXRlZ29yeSIsCik7CgojIGNhdGVnb3J5IHRocmVlCm15ICRDYXRlZ29yeUlEVGhyZWUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgIE5hbWUgICAgID0+ICchIsKnJCUmLygpPT/DnCrDhMOWTDpMQCwuLScgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDb21tZW50ICA9PiAnQ2hpbGQgQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SURUd28sCiAgICBWYWxpZElEICA9PiAxLAogICAgVXNlcklEICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5SURUaHJlZSwKICAgICJDYXRlZ29yeUFkZCgpIC0gQ2hpbGQgQ2F0ZWdvcnkiLAopOwoKIyBjYXRlZ29yeSBmb3VyCm15ICRDYXRlZ29yeUlERm91ciA9ICRGQVFPYmplY3QtPkNhdGVnb3J5QWRkKAogICAgTmFtZSAgICAgPT4gJ0Nvbm5lY3RvckNhdGVnb3J5Rm91cicgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDb21tZW50ICA9PiAnQ2F0ZWdvcnkgZm9yIHRlc3RpbmcnLAogICAgUGFyZW50SUQgPT4gMCwKICAgIFZhbGlkSUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICAkQ2F0ZWdvcnlJREZvdXIsCiAgICAiQ2F0ZWdvcnlBZGQoKSAtIENoaWxkIENhdGVnb3J5IiwKKTsKCm15ICRJdGVtSURPbmUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUgRkFRICcgLiAkUmFuZG9tSUQgLiAnT25lJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlET25lLAogICAgU3RhdGVJRCAgICAgPT4gJFB1YmxpY1N0YXRlSUQsCiAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgIEFwcHJvdmVkICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRJdGVtSURPbmUsCiAgICAiRkFRQWRkKCkgLSBGQVEgT25lIiwKKTsKCm15ICRJdGVtSURUd28gPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUgRkFRICcgLiAkUmFuZG9tSUQgLiAnIFR3bycgLiAkV2Vic2VydmljZU5hbWUsCiAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJRFRocmVlLAogICAgU3RhdGVJRCAgICAgPT4gJFB1YmxpY1N0YXRlSUQsCiAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgS2V5d29yZHMgICAgPT4gJycsCiAgICBGaWVsZDEgICAgICA9PiAnUHJvYmxlbSBEZXNjcmlwdGlvbiAxLi4uJywKICAgIEZpZWxkMiAgICAgID0+ICdTb2x1dGlvbiBub3QgZm91bmQxLi4uJywKICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICBBcHByb3ZlZCAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkSXRlbUlEVHdvLAogICAgIkZBUUFkZCgpIC0gRkFRIFR3byIsCik7CgpteSAkSXRlbUlEVGhyZWUgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICBUaXRsZSAgICAgICA9PiAnVGl0bGUg5L2/55So5LiL5YiX6K+t6KiAIFRocmVlJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlERm91ciwKICAgIFN0YXRlSUQgICAgID0+ICRQdWJsaWNTdGF0ZUlELAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEtleXdvcmRzICAgID0+ICcnLAogICAgRmllbGQxICAgICAgPT4gJ0xvb2sgZm9yIG1lICcgLiAkUmFuZG9tSUQgLiAnIG9uIHRoZSBzZWFyY2gnLAogICAgRmllbGQyICAgICAgPT4gJ1NvbHV0aW9uIG5vdCBmb3VuZDEuLi4nLAogICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgQXBwcm92ZWQgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJEl0ZW1JRFRocmVlLAogICAgIkZBUUFkZCgpIC0gRkFRIFRocmVlIiwKKTsKCiMgZ2V0IGNvbW1vbiBvYmplY3RzCm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkTWFpbk9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiMgZmlsZSBjaGVja3MKZm9yIG15ICRGaWxlIChxdyhiaW4gdHh0KSkgewogICAgbXkgJExvY2F0aW9uID0gJENvbmZpZ09iamVjdC0+R2V0KCdIb21lJykKICAgICAgICAuICIvc2NyaXB0cy90ZXN0L3NhbXBsZS9HZW5lcmljSW50ZXJmYWNlL0ZBUS9HSS1GQVEtVGVzdC11dGY4LTEuJEZpbGUiOwoKICAgIG15ICRDb250ZW50UmVmID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgIExvY2F0aW9uID0+ICRMb2NhdGlvbiwKICAgICAgICBNb2RlICAgICA9PiAnYmlubW9kZScsCiAgICApOwoKICAgIG15ICRBdHRhY2htZW50ID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEFkZCgKICAgICAgICBJdGVtSUQgICAgICA9PiAkSXRlbUlEVGhyZWUsCiAgICAgICAgQ29udGVudCAgICAgPT4gJHskQ29udGVudFJlZn0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3Rlc3QvJyAuICRGaWxlLAogICAgICAgIEZpbGVuYW1lICAgID0+ICd0ZXN0LicgLiAkRmlsZSwKICAgICAgICBJbmxpbmUgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgIyAoMHwxLCBkZWZhdWx0IDApCiAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudCwKICAgICAgICAiQXR0YWNobWVudEFkZCgpIC0gRmlsZSAiIC4gJEZpbGUsCiAgICApOwp9CgpteSAkSXRlbUlERm91ciA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgIFRpdGxlICAgICAgID0+ICdUaXRsZSBGQVEgJyAuICRSYW5kb21JRCAuICcg0K/Qt9GL0LrQvtCy0YvQtSBGb3VyJyAuICRXZWJzZXJ2aWNlTmFtZSwKICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlERm91ciwKICAgIFN0YXRlSUQgICAgID0+ICRQdWJsaWNTdGF0ZUlELAogICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgIEtleXdvcmRzICAgID0+ICcnLAogICAgRmllbGQxICAgICAgPT4gJ1Byb2JsZW0gRGVzY3JpcHRpb24gMS4uLicsCiAgICBGaWVsZDIgICAgICA9PiAnU29sdXRpb24gbm90IGZvdW5kMS4uLicsCiAgICBVc2VySUQgICAgICA9PiAxLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICBBcHByb3ZlZCAgICA9PiAxLAopOwoKJFNlbGYtPlRydWUoCiAgICAkSXRlbUlERm91ciwKICAgICJGQVFBZGQoKSAtIEZBUSBGb3VyIiwKKTsKCiMgZ2V0IGxhbmd1YWdlcyBsaXN0Cm15ICVMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCm15IEBMYW5ndWFnZUxpc3Q7CmZvciBteSAkS2V5ICggc29ydCBrZXlzICVMYW5ndWFnZXMgKSB7CiAgICBteSAlTGFuZ3VhZ2UgPSAoCiAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgIE5hbWUgPT4gJExhbmd1YWdlc3skS2V5fSwKICAgICk7CiAgICBwdXNoIEBMYW5ndWFnZUxpc3QsIHslTGFuZ3VhZ2V9Owp9CgojIGdldCBGQVEKbXkgJUZBUU9uZSA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRE9uZSwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKZm9yZWFjaCBteSAkS2V5ICgga2V5cyAlRkFRT25lICkgewogICAgaWYgKCAhJEZBUU9uZXskS2V5fSApIHsKICAgICAgICAkRkFRT25leyRLZXl9ID0gJyc7CiAgICB9Cn0KCm15ICVGQVFUd28gPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRJdGVtSURUd28sCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CmZvcmVhY2ggbXkgJEtleSAoIGtleXMgJUZBUVR3byApIHsKICAgIGlmICggISRGQVFUd297JEtleX0gKSB7CiAgICAgICAgJEZBUVR3b3skS2V5fSA9ICcnOwogICAgfQp9CgpteSAlRkFRVGhyZWUgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICBJdGVtSUQgICAgID0+ICRJdGVtSURUaHJlZSwKICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKZm9yZWFjaCBteSAkS2V5ICgga2V5cyAlRkFRVGhyZWUgKSB7CiAgICBpZiAoICEkRkFRVGhyZWV7JEtleX0gKSB7CiAgICAgICAgJEZBUVRocmVleyRLZXl9ID0gJyc7CiAgICB9Cn0KCm15IEBJbmRleCA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRFRocmVlLAogICAgU2hvd0lubGluZSA9PiAxLCAgICAgICAgICAgICAgIyAgICggMHwxLCBkZWZhdWx0IDEpCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgpteSBAQXR0YWNobWVudHNUaHJlZTsKZm9yIG15ICRBdHRhY2htZW50IChASW5kZXgpIHsKICAgIG15ICVGaWxlID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRFRocmVlLAogICAgICAgIEZpbGVJRCA9PiAkQXR0YWNobWVudC0+e0ZpbGVJRH0sCiAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgJEZpbGV7Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkRmlsZXtDb250ZW50fSApOwogICAgJEZpbGV7SW5saW5lfSAgPSAkQXR0YWNobWVudC0+e0lubGluZX07CiAgICAkRmlsZXtGaWxlSUR9ICA9ICRBdHRhY2htZW50LT57RmlsZUlEfTsKCiAgICBwdXNoIEBBdHRhY2htZW50c1RocmVlLCB7JUZpbGV9Owp9CgpteSAlRkFRRm91ciA9ICRGQVFPYmplY3QtPkZBUUdldCgKICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JREZvdXIsCiAgICBJdGVtRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CmZvcmVhY2ggbXkgJEtleSAoIGtleXMgJUZBUUZvdXIgKSB7CiAgICBpZiAoICEkRkFRRm91cnskS2V5fSApIHsKICAgICAgICAkRkFRRm91cnskS2V5fSA9ICcnOwogICAgfQp9CgojIGdldCBhbGwgY2F0ZWdvcmllcyB3aXRoIHRoZWlyIGxvbmcgbmFtZXMKbXkgJENhdGVnb3J5VHJlZSA9ICRGQVFPYmplY3QtPkdldFB1YmxpY0NhdGVnb3JpZXNMb25nTmFtZXMoCiAgICBWYWxpZCAgPT4gMSwKICAgIFR5cGUgICA9PiAncncnLAogICAgVXNlcklEID0+ICRVc2VySUQsCik7Cm15IEBQdWJsaWNDYXRlZ29yeUxpc3Q7CmZvciBteSAkS2V5ICggc29ydCgga2V5cyAleyRDYXRlZ29yeVRyZWV9ICkgKSB7CiAgICBteSAlQ2F0ZWdvcnkgPSAoCiAgICAgICAgSUQgICA9PiAkS2V5LAogICAgICAgIE5hbWUgPT4gJENhdGVnb3J5VHJlZS0+eyRLZXl9LAogICAgKTsKICAgIHB1c2ggQFB1YmxpY0NhdGVnb3J5TGlzdCwgeyVDYXRlZ29yeX07Cn0KCiMgY3JlYXRlIHdlYi1zZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlSUQsCiAgICAiQWRkZWQgV2Vic2VydmljZSIsCik7CgojIGdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMKbXkgJEhvc3QgPSAkSGVscGVyT2JqZWN0LT5HZXRUZXN0SFRUUEhvc3RuYW1lKCk7CgojIHVzZSBoYXJkIGNvZGVkIGxvY2FsaG9zdCBJUCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYiBzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewoKICAgICMgICAgTmFtZSA9PiAnJywKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yICB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwMDAwMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3Rycy5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgTGFuZ3VhZ2VMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6TGFuZ3VhZ2VMaXN0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljQ2F0ZWdvcnlMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6UHVibGljQ2F0ZWdvcnlMaXN0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljRkFRU2VhcmNoID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6UHVibGljRkFRU2VhcmNoJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljRkFRR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0ZBUTo6UHVibGljRkFRR2V0JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290cnMub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmNvZGluZyAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgSW52b2tlciA9PiB7CiAgICAgICAgICAgIExhbmd1YWdlTGlzdCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUHVibGljQ2F0ZWdvcnlMaXN0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQdWJsaWNGQVFTZWFyY2ggPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFB1YmxpY0ZBUUdldCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgdXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZwpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlVXBkYXRlLAogICAgIlVwZGF0ZWQgV2Vic2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiwKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgMScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgICAgICAgICAgID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICAgICAgICAgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYW5ndWFnZSA9PiBcQExhbmd1YWdlTGlzdCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdMYW5ndWFnZUxpc3QnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgMicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgICAgICAgICAgID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICAgICAgICAgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIENhdGVnb3J5ID0+IFxAUHVibGljQ2F0ZWdvcnlMaXN0LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNDYXRlZ29yeUxpc3QnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCAzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgID0+ICdUaXRsZSBGQVEgJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgT3JkZXJCeSA9PiAnRkFRSUQnLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIElEID0+IFsKICAgICAgICAgICAgICAgICAgICAkSXRlbUlERm91ciwKICAgICAgICAgICAgICAgICAgICAkSXRlbUlEVHdvLAogICAgICAgICAgICAgICAgICAgICRJdGVtSURPbmUsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBXaGF0ICAgID0+ICdMb29rIGZvciBtZSAnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBPcmRlckJ5ID0+ICdGQVFJRCcsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgSUQgPT4gJEl0ZW1JRFRocmVlLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFTZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA1JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JREZvdXIsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgRkFRSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJUZBUUZvdXIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgRkFRSXRlbSA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRRm91cgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUUdldCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRJdGVtSURGb3VyLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGVzdCA2JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBJRCA9PiAkSXRlbUlERm91ciwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnUHVibGljRkFRR2V0Lk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUHVibGljRkFRR2V0OiBHb3Qgbm8gSXRlbUlEIScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1B1YmxpY0ZBUUdldC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ1B1YmxpY0ZBUUdldDogR290IG5vIEl0ZW1JRCEnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQoKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gJEl0ZW1JREZvdXIsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDcnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAnTm90SXRlbUlEJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnUHVibGljRkFRR2V0Lk5vdFZhbGlkRkFRSUQnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnUHVibGljRkFRR2V0OiBDb3VsZCBub3QgZ2V0IEZBUSBkYXRhIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUUdldDo6UnVuKCknCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQoKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdQdWJsaWNGQVFHZXQuTm90VmFsaWRGQVFJRCcsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdQdWJsaWNGQVFHZXQ6IENvdWxkIG5vdCBnZXQgRkFRIGRhdGEgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRR2V0OjpSdW4oKScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCgogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdQdWJsaWNGQVFHZXQnLAogICAgICAgIEl0ZW1JRCAgICA9PiAnTm90SXRlbUlEJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgOCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSURUaHJlZSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBGQVFJdGVtID0+IHsKICAgICAgICAgICAgICAgICAgICAlRkFRVGhyZWUsCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBcQEF0dGFjaG1lbnRzVGhyZWUsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgRkFRSXRlbSA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFxAQXR0YWNobWVudHNUaHJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUVRocmVlCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUUdldCcsCiAgICAgICAgSXRlbUlEICAgID0+ICRJdGVtSURUaHJlZSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgOScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gJzEnLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgT3JkZXJCeSA9PiAnTm90RXhpc3RpbmdGaWVsZCcsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaC5Ob3RGQVFEYXRhJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUVNlYXJjaDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g6OlJ1bigpJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuTG9jYWxEYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdQdWJsaWNGQVFTZWFyY2guTm90RkFRRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdQdWJsaWNGQVFTZWFyY2g6IENvdWxkIG5vdCBnZXQgRkFRIGRhdGEgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkZBUTo6UHVibGljRkFRU2VhcmNoOjpSdW4oKScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ1B1YmxpY0ZBUVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUZXN0IDEwJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAnMScsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBXaGF0ID0+ICdOb3RFeGlzdGluZ1ZhbHVlJywKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkUmV0dXJuUmVtb3RlRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnUHVibGljRkFRU2VhcmNoLk5vdEZBUURhdGEnLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnUHVibGljRkFRU2VhcmNoOiBDb3VsZCBub3QgZ2V0IEZBUSBkYXRhIGluIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OlB1YmxpY0ZBUVNlYXJjaDo6UnVuKCknCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMQogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ1B1YmxpY0ZBUVNlYXJjaC5Ob3RGQVFEYXRhJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1B1YmxpY0ZBUVNlYXJjaDogQ291bGQgbm90IGdldCBGQVEgZGF0YSBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjpQdWJsaWNGQVFTZWFyY2g6OlJ1bigpJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Rlc3QgMTEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+ICcxJywKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAiJEl0ZW1JRE9uZSwkSXRlbUlEVHdvLCRJdGVtSURUaHJlZSIsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZFJldHVyblJlbW90ZURhdGEgPT4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgRkFRSXRlbSA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAlRkFRT25lCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICVGQVFUd28KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUZBUVRocmVlLAogICAgICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFxAQXR0YWNobWVudHNUaHJlZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnUHVibGljRkFRR2V0JywKICAgICAgICBJdGVtSUQgICAgPT4gIiRJdGVtSURPbmUsJEl0ZW1JRFR3bywkSXRlbUlEVGhyZWUiLAogICAgfSwKCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbnRpYXRlIGNvcnJlY3RseScsCik7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgY3JlYXRlIGxvY2FsIG9iamVjdAogICAgbXkgJExvY2FsT2JqZWN0ID0gIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpGQVE6OiRUZXN0LT57T3BlcmF0aW9ufSItPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6RkFROjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2ViLXNlcnZpY2UKICAgIG15ICRMb2NhbFJlc3VsdCA9ICRMb2NhbE9iamVjdC0+UnVuKAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRUZXN0LT57UmVxdWVzdERhdGF9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgd29ya2Fyb3VuZCBiZWNhdXNlIHJlc3VsdHMgZnJvbSBkaXJlY3QgY2FsbCBhbmQKICAgICMgZnJvbSBTT0FQIGNhbGwgYXJlIGEgbGl0dGxlIGJpdCBkaWZmZXJlbnQKICAgIGlmICggJFRlc3QtPntPcGVyYXRpb259IGVxICdQdWJsaWNGQVFHZXQnICkgewoKICAgICAgICBpZiAoIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0ZBUUl0ZW19IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciBteSAkRkFRSXRlbSAoIEB7ICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEZBUUl0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGQVFJdGVtLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGQVFJdGVtLT57JEtleX0gPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQoKICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgIyByZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQKICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICBpZiAoICRUZXN0LT57RXhwZWN0ZWRSZXR1cm5Mb2NhbERhdGF9ICkgewogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmV0dXJuTG9jYWxEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXR1cm5SZW1vdGVEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQoKICAgICMgcmVtb3RlIGNhbGwgdXNpbmcgdGhlIHN5c3RlbSBhcyBSZXF1ZXN0ZXIgYW5kIFByb3ZpZGVyCgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2ViLXNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gJFRlc3QtPntSZXF1ZXN0RGF0YX0sCiAgICApOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBzdHJ1Y3R1cmUgaXMgdmFsaWQiLAogICAgKTsKCiAgICAjIHdvcmthcm91bmQgYmVjYXVzZSByZXN1bHRzIGZyb20gZGlyZWN0IGNhbGwgYW5kCiAgICAjIGZyb20gU09BUCBjYWxsIGFyZSBhIGxpdHRsZSBiaXQgZGlmZmVyZW50CiAgICBpZiAoICRUZXN0LT57T3BlcmF0aW9ufSBlcSAnUHVibGljRkFRR2V0JyAmJiAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSApIHsKCiAgICAgICAgaWYgKCByZWYgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gZXEgJ0hBU0gnICkgewogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCAhJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntGQVFJdGVtfS0+eyRLZXl9ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCByZWYgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgZm9yIG15ICRGQVFJdGVtICggQHsgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RkFRSXRlbX0gfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7JEZBUUl0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGQVFJdGVtLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRGQVFJdGVtLT57JEtleX0gPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciAtIFN1Y2Nlc3Mgc3RhdHVzIiwKICAgICk7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJldHVyblJlbW90ZURhdGF9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHN1Y2Nlc3NmdWwgcmVzdWx0IChuZWVkcyBjb25maWd1cmVkIGFuZCBydW5uaW5nIHdlYnNlcnZlcikiLAogICAgKTsKCn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwIHdlYi1zZXJ2aWNlCm15ICRXZWJzZXJ2aWNlRGVsZXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VEZWxldGUoCiAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlRGVsZXRlLAogICAgIkRlbGV0ZWQgV2Vicy1lcnZpY2UgJFdlYnNlcnZpY2VJRCIsCik7CgojIGNsZWFuIHVwIEZBUSBzdHVmZgpteSAkRkFRRGVsZXRlID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgSXRlbUlEID0+ICRJdGVtSURPbmUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlLAogICAgIkZBUURlbGV0ZSgpIC0gSXRlbUlEOiAkSXRlbUlET25lIiwKKTsKCiRGQVFEZWxldGUgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICBJdGVtSUQgPT4gJEl0ZW1JRFR3bywKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBJdGVtSUQ6ICRJdGVtSURUd28iLAopOwoKJEZBUURlbGV0ZSA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgIEl0ZW1JRCA9PiAkSXRlbUlEVGhyZWUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkRkFRRGVsZXRlLAogICAgIkZBUURlbGV0ZSgpIC0gSXRlbUlEOiAkSXRlbUlEVGhyZWUiLAopOwoKJEZBUURlbGV0ZSA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgIEl0ZW1JRCA9PiAkSXRlbUlERm91ciwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRGQVFEZWxldGUsCiAgICAiRkFRRGVsZXRlKCkgLSBJdGVtSUQ6ICRJdGVtSURGb3VyIiwKKTsKCm15ICRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJREZvdXIsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2F0ZWdvcnk6ICRDYXRlZ29yeUlERm91ciIsCik7CgokQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SURUaHJlZSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURUaHJlZSIsCik7CgokQ2F0ZWdvcnlEZWxldGUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SURUd28sCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRDYXRlZ29yeURlbGV0ZSwKICAgICJDYXRlZ29yeURlbGV0ZSgpIC0gQ2F0ZWdvcnk6ICRDYXRlZ29yeUlEVHdvIiwKKTsKCiRDYXRlZ29yeURlbGV0ZSA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRE9uZSwKICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJENhdGVnb3J5RGVsZXRlLAogICAgIkNhdGVnb3J5RGVsZXRlKCkgLSBDYXRlZ29yeTogJENhdGVnb3J5SURPbmUiLAopOwoKMTsK
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/CQAGAAAAAAAAAAAAAAABAAAANgAAAAAAAAAAEAAAAgAAAAEAAAD+////AAAAAAAAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9//////////7///8EAAAABQAAAAYAAAAHAAAACAAAAP7///8KAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAAP7///83AAAA/v///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAUA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v///wAAAAAAAAAAAQAAAP7////+////BAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAACAAAAAhAAAAIgAAACMAAAAkAAAA/v///yYAAAAnAAAAKAAAACkAAAD+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8BAP7/AwoAAP////8GCQIAAAAAAMAAAAAAAABGGAAAAE1pY3Jvc29mdCBXb3JkLURva3VtZW50AAoAAABNU1dvcmREb2MAEAAAAFdvcmQuRG9jdW1lbnQuOAD0ObJxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASABMACgABAFsADwACAAAAAAAAAFQAABDx/wIAVAAAAAcARABlAGYAYQB1AGwAdAAAAAgAAAAxJAAqJAErAEIqAE9KAwBRSgMAQ0oYAG1ICQRzSAkEUEoFAG5I/wBeSgYAX0j/AHRI/wAAAAAAAAAAAAAAAAAAAAAAAAAAQgBBQPL/oQBCAAAAGQBBAGIAcwBhAHQAegAtAFMAdABhAG4AZABhAHIAZABzAGMAaAByAGkAZgB0AGEAcgB0AAAAAAAAAAAAAAAAAC4AQhABAPIALgAAAAkAVABlAHgAdAAgAGIAbwBkAHkAAAAKAA8AE6QAABSkeAAAACAALxDxAAIBIAAAAAQATABpAHMAdAAAAAIAEAAEAF5KBwBAAP4fAQASAUAAAAAHAEMAYQBwAHQAaQBvAG4AAAANABEAE6R4ABSkeAAMJAEAEgBDShQANggBXkoHAGFKFABdCAEmAP4fAQAiASYAAAAFAEkAbgBkAGUAeAAAAAUAEgAMJAEABABeSgcAAAAAABQAAAAEAAAKAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADyBQAAWAIAAAAAAAAAAAAAwQMAABUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTAwAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQBAACvAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtQMAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgDZAAAATwBUAFIAUwAuAG8AcgBnAA0ADQBUAEUAUwBUAA0ADQAIAA0ADQANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAEgQAABQEAAAeBAAAIAQAACIEAAAkBAAAJgQAACgEAAD09PT07/T09AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQNqAAAAAFUIARZDSkAANQgBYUpAAFwIAU9KBABRSgQACAAEAAASBAAAFAQAAB4EAAAgBAAAJAQAACYEAAAoBAAA+gAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAA6wAAAAAAAAAAAAAAAOYAAAAAAAAAAAAAAADhAAAAAAAAAAAAAAAA3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAMkAWEkAQAEAAADJAFhJAEABAAAAyQBYSQBAAQAAAMkAWEkAQAEAAADJAFhJAEABAAAAyQBYSQBAAQAAAMkAWEkAQAHIgAfsNAvILDgPSGwbgQisG4EI5BuBCSQbgQzUAAAKDIADjAAAG4e8EVOAAD9D/d9AAAAADsYlCk4AQAQ/4lQTkcNChoKAAAADUlIRFIAAADIAAAAyAgCAAAAIjo5yQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9cDBQ4wM9mZdjoAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAIABJREFUeJzdnema5DauRKH+/P6PnLg/REScgFRlX4+XbueMqzMlEsQSWERR1NXd9V/5dFV1d1e3v1fVp6u7qs+f7qqurmnJn1X96ar6dFdVf2p1qa7PIV0z0Bw830C5qrrn1NApDTqExcbhoe9xLUt31XUaD/2aZtPnjHgG4c/D8X3qoorubx+1b3ZvSddVn0+NBo/UR8BPnTMt5VR3//gnDf+3f25Rq+o6Sqgqq7lwsGT40ulW69PYhK/T7fxbjbNDWwy02Kjuuiq7CEqDrvLRu8HnCmRgkJHl9JgjVw+DFFeYkyh9XYMNo0ok3bCpp9vZRNo8dNftRXJgKLz+Q8BKpVdZXxK7459p3lQp6BkHQEUaVZYbx04aMBxhRAMMtYOMz/BGRHRdI8lp6XEFEeABZxCBqicODzjK48ohrJBQVygZOK46ngPcV/d/CVgKHIKCz9yKGK0jXBQ0UjBe4GjULPoIUBpRdIELkL3S2gs3OISwgCMOM5V/IbeJmxfQ6Qm3aN2LleHtqipncHjWCZBBNqKiRP7vAKvqTfEKFKpmqpzZoGWlBRUcdTu0/BiqJWg6u8tYnVnGCP0oxEywSaAqR5+Ao3ClA6jVkoE5WNV96bslNMMx7GjJYLVDnaGv8UMPB2KQcZTz21c2+rU+Tf1Ka64V7nPZ2mFGiLnqFLJVU7+rC4ztQ4xxd1Lw9+xeVv2FSMTIGEAnt8SVTjnrdXzPzsIZgMBaCZF1d0W92OC/3TBdIgn9JyKWbZ5eWHW7e8SMVZeSxrmmOX2vGkU6PDBcTXaLNspo+PtZnv5ZhdmDfo9RweqMu1wFadkCfe5wZWkCDtP2EQcxduRXh66WK4pgU71IBf8FYFlpR+DLZ6hIeix0ZYPQfV2wF87Llr0a+IxZkckwitiLKtBDFEav8Qqark7xXkP7JEE3Ay9je9PWCUXmcLNTDAxrUW7WSYihioEYxLuvP/4LwLLAIa4D9zgbIbRcXzgYr9UfF+XF7vpjqLZ/2h43DtAXaAVZMsTgoZYpxRFTHoQzTHdiHS5xFTGtUFPDLTzxk1pziDIbwryi7Dn6ywMLoSEE0xGXulaKu9wnbrOGmdP/NQ4MprPdddFWOJWQ5HxnVU197UMDpktQKKFBZj1I+EyDskD0KgXdKzOXM5kTuwdyU4YoadJCvqjJ+upfPxUCSw9YqMU0ZJ9rGqeHq7pizysjik51h71R7co64GezBZSKbV1MEP4KYRTa3ZYvZagLqUWTukIx0NV9ZiWieoNe7yai45NXc4D6xa8Kuy8638ospWNZBtxNygiIrLhCeoSfoWgA0Tblo2bngaT7wKdM39IMqTRSVtQUq6vva8xVsTUoEJjAlEKT4DJcgWsEMabIgk4eLnT6/PIRayzRPZdxZZVlkHA4kUJ1jrM+LklrSqwKfYvcws2hM0yg1D1MTtneaftG9hQ/KYNGt4+sQAVXcgjEDZwJZ6hHu7rNcaB5+hZZndwqpNH9wkW7f+GIlRX1JcX4X9imbTxYpKvrmtvO55zNeZ91xJgGiAMeBTzd5z/Xub5ymozGx0DwfXFFHPcwCWxhRHKWrpJ+1QRCOJzDJHqIr+VK19Gk78USjbTLLx2xZjoYWb/sc5fnK1/rhfn6mRPNWXafTDOr+6JYVe3Z1f6wnB+zzY9ePnAcQ34f4UpegeE1oHn6DIX70KfKt8zVHBS6Z4bvHj5BaIQrkXZV1yc5OM7CQm1E/VWB1aPsT5g2Yn8g5Px3pbvf7a8DLiZElTQooeDcE400bsLaej59jm0UNfDdPWRPR83CN8S88BTAQJ8LfBxVSS62H1ClXxIia6qlG0w/Yp919WsC63bxPMISoQdjqjPqAx0dWzP2n8OjvKFStAeOxC2SEv7GYKQK/FWBIaKBYSH6tC7TZEeEK8NUhyRd1GD3vxckyKTM9sF7ydnaTutmh+3ryduvCayW30zgPcdZRr3YFau05lTVqa5mRQkp8VJoqQ6jGVZGaHRA8RPIGRnC82OmvltTWtMd4YorJgCZqp7qjXFIcM8p00j+9ypCKicrg/K9babdGQvB/RcEVlfjPl6lVtXABq1S2mJkCn13lS7onOzsu+0p0HDvjGs0rYxIzrt8Ny1OrKhWuMAtcxP1uxDRcgJT+FCEZmyrW1L6x1WQuU5ga0lqOimIqKceR+ZfD1iIJDDd0cHFmiAgZI+t+lyICvfJrpoFwe6sSDSBxCP5Rk3VbZzT56OjCjuON50sJQrb1hk/aCyxuOJetvoeTmh1s5aBVKw4S8IH9DP8qcrXthYim1GJ4uFXm26As7DmGd1+rBHpO3Kl2hcsWMo4p1U6uInwMgz0Pwopm9M9W7/sb7gDaoIGPaIXGI2OgJtqA+ckAu0GYk+hh7CWIQ5aOtHwerIKtdzHL5P65SJWQqSlg7vC7aryrTGaJ+xiSGW4ur9/SP5QV6drLgKYC2WYa6le0+tV9fl4UUODfUWCQtggYPsykZ5g6cHNrKFunK2Wwe1uBoUYyoj3vmTWlaEesCAobzq/FLC6sZABoev+t+tOhaUT89eV72TKTxdMccEc10UCIFI2AQ7qwQfRu0mdIKa5IvQesPSim7QjYjEU3jXVfcEBOG6UCJrtqfZug3+NwlSP/veBS1wQqQhWtedff60VpJ0mMLIsc1pwXdKoE1xxnrOq6ag6ZAi6wnDokjEQYx4Zl6MyqBjmL8VWTGqQXUG2zuIHSyxIPCLQLFYtweYo8VTslnnutMND5mT4E1B++2HGb9vil4lYEaU/5anqcam6RZ0C3GloQjrmr22Mysu9NngYNIrdVvSR8fH9og/TDo2/IxeKfLGc4HU04ahtDfhYJYtuANCOK56/WucBPs0HAxqUM54GyNlpqn6p1Q1UYfrNp42Vy3LTXrd7yeOgrhVfiLkJSC6EL+gOF0YyfEXo4tiIARZGXPkUo46iE3HFwhKDr8s0gwf9KZ8P4lp4KqTAWD84JpMMVyT7i0QsIUB17zgNr66kZtz+my5j+8+0gfsaq14j3+1JBGv7BQEGKwDEGNNdYeH5S0EgZ5ByQNPB8/dC/5HIUsrqt+NVY1WxeBAjqQ2oWroBZZyyFy3l9K9SvPt5zvtnFk/re6iNGhkUssZkqK+pSXq+eqCPeoiWxvVlWi/7ALd2iiJ8DdjJMxethNCxAlLvmXergEEXWnFA0linumqyCZjWTP0rdNsKUV+WeBV8fwFgtQUF4xJjHJy1CGLDkDi/sEpcX1Q6rSrMePTDvmHDU/ChkNKyu2BvxuuBni/RcQP4dMH1WVRIlwUVj/4nln22EXvXCXwogyuwrImJQxcHH4bEBm8I8OHsu//lTPFr1FiQtew2y/pquy+cd88X9+K85y6MfIy1k5GKoDGhgkACuvog29kN2I1/i/O13XWmUWjwoSisBsvtO4yGopMwscOxqborqifxP6k6w1Np3rXGfX6BiFXjaU1dw9oTb2jlikcVQKhVUQAXWnIHmMwj0WOKqNtIsNyZZ8oGIGmCU6weaRR074ADMy9HeQjlRiPgS4XUVVyiF1FMTQc9+JUyHoWFS1v4EeOnT4VMM/wFVfb67nRA7yQ023qpiTIXokrTVE5dCD5iQybhzWViSMxUKQZwaGEX3g/xU9gGEO1RbvNM1peaT/tJhTfTCU8m2fv7h3J6FMOpqjgHq6F+/lTIOgqTeEeJl+1yi3vuyDD0IHjPOZhG5cUTsgMxaE0Nyjwcc507xmNv4XilZrU5h3SqA1wRnm3CkcmnxIPlxXdicWA/zG8ibnJNga7BdCljrw01NkTpqrp+6ojVS6HPkJ0VVVdMESBiQLfxvEOcHrdbuc7Eq23HinGvU70yoqgjSRBSOiCIS24iIEeb6j8VJdai0JFjKMfqbqbpV1c8YVHV/eGTKUCUAGSFhh+W6rafuMYKb0e0UPmRnllVZ50ybL/nMFmutq2eq5/C9Q2MWgptnhubinLznuZLBu/ZdWYOXUF2BkQ1GYlYP03j0B/Huh90P1THl3w3gNPtw4Td6xIfVJaT6HJwG6xPhv2ppxuYSpRY0rWrLB8MmQ0AvNCFnHtd4SPayHGZjzDMfItKFsm2S89/El5RspxAIpjy4eOLlkXYklTPgRVULgnTwfk0j45CPDaGOE0xg3g0xnk7qwwe2fXzAqvfv7TFslCVWqqIRtoVM8459oSNEfInKnrhHpDdMV5A+QHvKU4+ihnhGhNHMEbYbQ1+PegPR1QF/zNVhatIvbFJSQfjpsfhlEaJ4wuqrqqfdh6rabv4gXSWYcZR4f752YrChmeimekMOWUazbiRVZUmBqYaqjlCIGOYxROCKNcWElwC3ekb0/O2t3ngrJfVRQ9ZcU/cmd/Ez0TNJlOp6vJdzjTH3exnjFhjgFU9ONCcyQEH8AwkFXqu2qda5YKOUYNtiH140G1JqlW5VZhABuw+ywOt/7StOzXSVqb0WxsujPzojhDQCZHtJFEqJDg2wqzb8pGBjp1iSW3vqqqfdLrBCfvYfBRxKVh0tjUuMspUSYNWzpxB4EGVg2QIFvzU8gVSEZAKaGgzxQURjkXDZCyXKHdvsBuBxOJPc6Ak4I3QxRLcKmjtJlo14SeQAr/tx1jhitTYjfufLmI9dMZTIYdbwPnWDqInPnVhJ0+R85dw8DYAbVfh6LMNuWKM4b2gF2nkGIuTSb0fXN6hCxxh6NHWFAAr8jERcmzoOuVFDE2cZob1uPfXTyrz54xYS+r7kBSEDCib3u27zkReyecjXHXhzMGHd33Z6hUbCCoxS2S9KkSViVxGliqhu/snAlXrP8GIyX2FOEskqePIawYLAQHTThorADfOtWRXcNqORBRe/dM9pSPIWNNb4aUm4aOj/wvRxxZyzL+nyFlEMxdFNnBNd4jBNqPsOXvxh4loEd+ucCCvWUAgmFMNemlgSgkbo6CuC7tJLFi1Ht+dSHmkbXhhKsNYu9U+VtGLL+5od0b7uVIh83S1l5S8mPc22yODVTwMg6+Ic1VpSeicPFSVl//2ZuMwIMgLATLVrWab6hFMtBfNYxcQi1NAA9juqrNNEsNOVdW8YeVI6v3QkjL3am/F9xkIOTY9qCV1DDunfRfy5wJW85+mmuuEozkRLmvnPvmy3Zf5wCHKcKPJOVPqWDK/IvKnNTp8Vdw7xliClannBOh3lV4xcg9zJftuBWnAv0ZEds5whQDvFTqotfykl5bfsP5rqMjPErI4659qHqvDjDx+azizTSFO2KhYP95Ve8Wp14c+0Vag7DMZog4cI4Tg7AAuDu1wdf+6xhFAJDosp5lQsQYIrLh7w95zxC7k/LZGbxAdxXVpRvAc6FR75yN3kuiniVi0DQO+zng6IE1BhcLzS3qjiQFZ6ddO3jkoAiQijKKhZ5LiMaGV+2hE2yPnMhCHduhKzMEXhn3oqFEVmecMJHWqK2tVAwep08+75GN4NluciOefpnjvzfzh8/NQn3w94Ifwjr9okTMxd5zHvGjXA2iDtIgeeNj8GINpJdPVQ6Sa0IuYR9IBPkSWQ9g/r/P2ulGHMXzNnXgRDrDPOO1jd0tEJULHoE+vHAegW9JKP0nEsts0parykrw504WVMSXp1Yk4IJ2O3aHq2ero9/zsIKVIOGbp6B0x5hDzVHvYJ7Y6ranT+h4ae6h23bW5vUtgFlBqMSEBem5MWCHzJdKgfG3ocFdBenGyrGPwn8VQ/2TFe0lQKXEgdw37CFfQQjiOv8rWqDlsG2Bk5lU5rV5jDE3+zcnYxUAnvJH1MBCs1Y03Na44hRgC66TF0L2waXZjJIPvzXs6DkBBoSu5wrxBgDwTbulKINL1M0QsI+Awlw/SjLnhfOE+4zxOjUYkD7ToFcT3OHyVSHmty6OIUfNSPgUNGrh4pKd3JEiZquNM27sWQtr/Q9jUnVP/+zYIXA4eK85S1li9bU1L2R8ZhIq3fn6GGuu4vS5E7HZhl6o8dTpXzd5hl4pi9WqTn5L3xq49VWnLmNklig1UoqjqqoY1jQzHlqI57X5OY5HJMWVumJZiZOhaqqMuyLohhrvgkpubE0m3fmYQBcAz0xVmwqBiqfnfjljHzEVlldXZHbrg/tXHTPcpdqaz3ue4O8NQVqSAs8Ilpx1cWMAJWPtUuvhgeMy5YYu0Mr5uhjCCISUi6PrBOsSqqqvx9ISidOBhuUQGV3jYA8a4w7G4h5JM51+PWJYQZuaTj0JBd0exRIHWRXtZZW1rIP64utq8rKtHH3b3GD5Rp06RycI9woPaEVoA0ciNMbrqvttY+TKO0IAga6wr2m20zhmP5VGYZ7cvXo5k4/2hghnl34xYXaUdL7tqPeZAAI0Lwmz0S9iG6qgqV2zb0MGFtVyormDrdqs5xVXtBnW4b0AcQBYIzGlXzV7tiwQ8z9KCqQgrAW4HFtOAqnFxPZlBIAxa5JHwhJeg2jgd/tVUyIlCOJXlAha2rPDo6JWNp1rgoE+wSh+c2CJcTg1XMa5aXdIqMQRAaDT/V/zeE0NEGrFHpr6DEHTDrPe4LYGUSVLz2w2iZD3cxkP47aQ+SqIut6Sn5b8GLPLT3Xjl1jhl82KHU9tyL8eUjA1DZXQylqMilIT0xDPsr7RiVr1qQqGjLIAjRg3UHFRGqhnVlsz0sXcLt2f1NdPlAUpkqPIzzuf/Kr8ysE4LlA5Sl37Oyb4+5Ieufr76RQV0k/43l83wHlNMguupVPjcM9ndNCKEnGP+BVwIOAwZlfhYlGfo1CddlIAp2sZxqPgu0/wbxngpViLTMbIGkilT51k7HEWu1qK1DD8KYYRI+fvdIDz8NRXc//93Ipb9eKOlKV0JDw238MFY9TtNrETLmd8LiLTx8GqufFxTPuyRFAPiGfZCEIlxiV5kGRgdKbSq5n6Nh5l/QlPqiHcFHtqxAW5waCYgDtPho/2IjyUXyZ0ATH3/SxFL0z6p18+Z75n5lSWfFgWU9Fxu0fyO1WdHL1dD7CcJFhL5bRoS8Ebkx7uPBGAQRkzDY1q4PVYQwVR7OF+hO697rYPOUQasN5kPnhIMBWOabVR3NH+uyT00XBUuqsrmX4hYrqgyFHRduufcVtrFO2XTK42n+G/bX8BgYY9uOWiUK57rcxecxXcD5bCK91CKoLHfWMk0ub1JCyM4EGbJVkUtBUwjamhoF/geAKjvuifdLjhbD66o2wyP1RjW3BOY1lVf/0rEOpO2n6rcgRNoWYqsQjP5aPmvLFlV2FZzK4O6shbYtz8cRbbJGHdj14CAiunxIU6ixf5+oJnYArnlEibulDSBZDbyKHOdbBBkd0NMMSPmOZOUYjlUEc3qpVCrf/4t9hsmCjMl8bDOCYq2HuhQdN/8yzm+dDD8zLxThfLDOk2PJGKfTj2lb2v9m3vjhatwnnuQfoQZ4jVwljDdspgV1HPWRFih62zu0PxRJbmmOV4/pn8tKZXTWsL1j0cs1QRV95MP1h5xQMdX89Zp28aGGLlj68Yu9lHkgREyPAxcpVPwMz0Mt/AKiHi3uh5vWEUMsQkLzyquiVMPsr9eVZ9jRhR/TGOjaUe7DDxVvEmaSjGrmb9HdjOn8cX6af6PRiy4rBE2gcGan2PRGD+ef222HWBCXd2FlS1PW5s/6VMIcsBHI40Pmz3ai/Eo5GBNTLW4tdK9nxn5FCdITTbVoJBpSol6uY4V3t7R3LrTIF2l1WyYFatSoalJNsvxD6fCTpallMuKqZFk/KMSPJW26aAb8fl2qR51w6xSGWcUDRQaj2xg8NIDPG4P6oQoHOoecF0qBPAh6RXQlgP20GExkDr1BgJy0/BarlLH6sJDmCKcUQSqXKwMzq3RY7l/ElitJQANdzYSiAB6e1ftR5yt33Si+yfudZjA6APGAybCEcOlK1rcL3vuTd2rPe24gJuhifuhUfolSlwslBm2MtbKwxFdHckAkzDdqiXjgLSqfIe7Epstb7d302MZFe+2/1yNFa4qJsMflZamLMF3dUxzuG/hMhOhg1YR9MRT+nS4NbS/jREM2Ib30/d7w+O9AJWoekmOT3+rjTX+rzq4vs2vjnN1LB26GBiTpI2iYhoTyC/nYd+q0pwWBCh3+ee2ioSuxb2tL1kPDnABZRAgUSQi/S8l3GHl6rnqqfT7hRXpFkdzHuk+77lEjXzPlHbaAzxE3rw0FtkekVVkAcFZDJih1NXLnJycB17Xw8XHAb690ZzWv7sqxfPDImp3czi7W/xDwIpo1RNnQ5GJvXqgraqw6lIu7vy/+wqmr6OUrR82MDEqrcYXR4VmozxkpN67DzgxB1NpWbooDG4fwgQEJzYaD1kYahbMo+CloA5o978zC6/npnXKKpuf8dscWkR3wmq5f6TG4pRCpVKaKYGr+9Bv2l+Nq+uL8oFmnVgdftkz3uDA8aAK9Z7NyWcGeTUYQfPx34EImbJAcPM8Ad20LXZlz/QO6XKQOg3peCO2FyBg+JiVraqTJWJ+xKJJmwI3LCgtSj1X/3PTDR1/O467ilLsmGqFPkPHDifNMe5/Gbd7gryGx11b7WbmIaxE+qV+KnTZWHYSBq1Zc7LD1SGy/godN5mZY5rECu14FILqBenDHFdw4wWNUOaLKrWk+4MWrMCMpjDPQdrfDiwjhkGkyZ6FKVQncHFxvB8Cg50625tMdXkdxKkVkGYxhxRKqgFogxf/D108Evf2SMIGkP5EkszyK4CD4CXb6bnBcYAE6FcuETa52h6CbDtEulI6j2KZriM1yc/XfyYVakTpulRmJPdhxowTnuSV7w55e6msmdv/tnsQ4BFvBjnpf7X+RHrFN5ODkDMcKF3nb2Nca+pZLfCO5CXr1wEGF1ID4SWPybwL8XixapYBTXIG7Rn1xKJgqJ9/L7BQyNz/OeRUFcHe8TfuRdg3IZj8qkdCqeJ2RK2TWOqhIWNu3BAT6wnHMNvQO4dvGPvlBT1r+bdoDAhGs4a9VYOXdRWgVMHtJxetn3OfCT9aSK2551AdcRbxUSXnUXp0M0q7ap6+7DNuFSe//vZ5LNgOO15SoZK1VYwAcHS7EIvn892CHuQ6+EiFPrSUFQ/Z9ptMjgEM8ByFXtCc46GjOw2KANvxQsYjTIkz6gEuwBd8JiFMUe0hhkp5N3moPClBS76U9bN4Dh9u/LdeFWo8pogjwrVOMLTckn3Kos+/VkfqkWaGmB0nSg1hD6nfiq2ihbvaE+s8baWelAAS4SxgYoAe6qmGLAQ+0LEVu4K0L3RCxPkJv/Ao1oo16nNNTt2MLJBUx/euv/WqsCvAItt0V/XH2qeUMIygE9+tgDkVTjyHzkK2xERMOcJkH0MscXAfvno2cNm2WRVG8kA+V99lfEkRa2calwIa0+x534++0xfGPu0/5kqS63R4lLxv6zY2/ba8hzdYkPtWfKr+vhoLkEIStzAX2W/MgqST2nAl9/cPz3HbAJ39EHaKnTFnpuvEhWPYg0vIoetu3lwbthQymWEFgWM5pRVIq0qgwPqh9OkcmuBvfzNcLEvunblCb+N9aQycaH1w2M+7nPfrKILb48x/a/F+D6VtiX2QDqMzF4WwnRFC4M3VLko9luxVdiTbJ2fwNPQ5irqbKtK3duQovyMzNs7rU68Mk8TF/J/aMfuIfyWcOi0GhsbMUsRcGB5+JChoRUwF7oPBUDJYHHS6uoLXUlXWbdff9PgXYkxRLlqnqlqTgIe1WHQ5fx0STOUZY8L9m9DE0DOcjV921NsN2vuzHmXR6nH5YbuD6YheBqTArT5iIU9JirSwdAnd6kzKbdHEQwd7Fi2oXKosCWY8hCD/qrluHTJE/kkkf1PEUkjn0G3BgS8nipX7pWyiQ/Ci34Hq0VHFTyu0CpffcOsyauc/MC5GuSCn4luO0oh7XfMYT9im0LWLITPoR+rEOIZOm0RVFRJWwYPQadwreL9mBsocYESOM8uXHTX5+hm3/OuB1QEZ8jbfQmBggvssKBsQT9MuiIkG7IQEKiebVp9pe6ALf67O/a7GFXz/MQLAUag5xPvWRgMjhWXoGmPAM+x0ohzS4igFXk+eSazzM56UN8Sr/FqeBTF4KaUY7UTAGI0lAOfc35QK/ZXhpKYuWT7Hiqrt3LmyiUGuTfmEKM/5zhZPYCHGApP0xKFvyFl5gKlvu6WZHTLGpA6W6ULO30CneEoHvAbLsqEDfM4/3frRRjFMVDeOP3z7oV3K36maTkMkV3UsVd0xgzhGuT9/dcQ6Zj6unAg76LB3hErTQaSfQ4cPkKi3KRMvtGRobAYXBtWwZpHgGfzjQSCDy+S5yd05FiWl7HQQuP3959MOk+aTwkAxcZFhIoYo4D7q6pNqW6AoLU2LZOlRdHC90vd8H+/iy2Aid15/ObAE85XtvH9BOVYpODx9d+Sng80pkodRw28ckPDOgV1YtGihU+2RxDit3R+HKIrfYENp8+NRBpZ8J/q1xvfOhpy5qCKnPHb7CcU//32ggZXx/VILR7g6T0jrMbBQWDxt0bACrYfs9FcCi6nElk2EQT34qwZVLpBFFvgZKbR93pr2YgY0T6TCw1YbT02D2zYFJmXV4LwUjZcqMDhsWDTygd+hvPKpFxn3ZPxlzJMQK2fe6UuH+qctmORa02K2Gn1gOU/Txe3f4yH+/GXACgaSGzpFh5H038QYeR/bWClXhBiJd/pOjyg80LviW0OhjHz8AXXL9hx7OkcPhAJB/VyKYr25aWHoJL6cTim2IykvkNtja2TJKbOE5QT7ZTXuIOUqRtm4sxPk1eevK97FLNKBk/+SHtOVvmVLlxqswYkDbdMGBelVvTOuoWnlSkF6Mp0Im5da0RSJ/bJeE7iFg6WGTtPmX006x0JSRuqZvFNgxwyDSaZIMku1w1Kx4dZY7VJWhVBXSPCpzgk9/cuVWX9NxApgpAJo62cZox5Q48v9VLpfhdhGTnVr48n7zGdxBc5UIjQGpsviOzGGTf3K1GoM42OuQVIvjQbN6QkJRBShhznAo2akw7rAAAAgAElEQVQ4E2+/CX0NlQDf3XTKOA81lkS4sgOlkuA1HlYXF39VKmTqr1QMUQduYbEuPQ226sFHlNZmA00DOwpJpY1NrmwIaGw+ufEp6M6vAesLVOjcbKE/M18F64xpsU2NqvsurBf1KwKg4lnDM3sY4zEAq83oQRCTSqqC73CMQ+UK975pXI/1JlUoTvbnLwDWrYWpj0qxdBiA2kcGLJSS2Q2Dl0zkFy+e0UZt4YLAKn8zbAPWJ2vDpS+fulGTLmG1+vDGfYn+oxEdj2zbxDre8gBphByAo6JhiYODNlVjo/RUlvyQ7EovzUPqwIUMw4JnQebLX1FjeYQ42HXfDcy0DS02nqxdV9dHEE5Hhu66cMVcfd0jYVNGlEHcJj955JHWgrqqwr1zecuwaXSxwjNYh6rdA4uqL5isEK48UAlZUq2hw+XEUhZDNZUPis9j4rsGvjoaqX5QLqmfYNvh6q60/teIRYVqnI5zgBTTTNcNfpjterK5nNN6iVKkuawAiTY0g4yW4Yqa9c/C4oV+vM0VoxHHwxm3Q1rZfOR+I5Sux78y7y3gZ9BmbWEeQWoAYFLMT8WjSk+dqf0d6sAk/6ox9568D/8lNdaWDv7nJputzVtxWo7dRyHuRCLPacRAgC2n1Zvh3aHWbU/BRbvDKUye16sse2xF9Hl3BCSy51tAjI4JJw8fkepOAjBudwje1GUkx3uU3Li1yVUoYZjyy1qoMTTAwbrHrvqfU6EtDoc3g+nKYD/AMRLOWeTHh8/drflmmJGPASP9G1zOn6YPJFvtH5Ko21nQDOvszdKM3kve6JQOFxbmCrPAKMBRuA2ZGttSR0ZruDoRnuCQ38mgzcPUbThDPv91vv9PwIrXsIGhyTnpoQCH/bBrPN8b0VjW6qt8T5m+gu+oa8QMJLTtrNRjyHVtDibdat8rqcXksyRaP9tdAGvb9/jPlfTMQ4h21DW8NKQ9/87yNWsh8vzc/huEC/39MKhZN3n7H8BPPs8Yf1mNlZXvq3nNCzPbslWVnrkLLTSFH4JtwYwzjKvvnqwapqnB8Qmmp6ioLFHwfv/0XBSnzShp4B4B1dtsbBGth96IFw74qpjqil2RX+lIFR18sS6xBY1u2FWcD+kje2zuPb3/PLCQC8wBZai81WbZggQ4ZRAehfZxI7vf6LpiUcCt5UdRPGdn0ugw4HdAnAtMbtatKt/tA5cJAePHLz6o3csMu4GvVdt5EKp85DvulR1a9EDxIFfnOeYDigLdWnXOreaKm5Scf5+Q0udPpsIAe5e0en5zKqstMPP/KPeTU+2yuCg3vj9YcIbxQRvrPvUJhcIrbxPivXuwR5jZRM2PpRhddPXl1fSN5yzQQmxGIIp1V8M7eHhVRcAhJG/67OYff0dFp4Ns2GYnSetrP9cK6PO/TTfQFspK/rO2KuRZnbrRh6dc7PxQO8IDMloH1ROuHu2HhfOyq+P3UnuyKB44QHdi90QzVh9tAeZNnF3cEAAu0Rw1LN7EgJb/GmPVhX2XY+a8kMmD6JASG0bnQnngrL2+VCMzq4ww3Lnhr5luCLQ0VeFbp1ZoJi8rxQKGAPrDvMLzteOQuUqsaPDCIEubTVmkNb+5mcXKnWpN++o6r4wfvw8PlxEnA1ofGT8jGMM7asBKtITPWABznyqJSyF/jenfRZQMyFFL+LpPX+T6ia0/W7xLLRg1jcB/cavVSjqqNqpSX5dKkOtVoYIp8JhWiVBPBqQyTXlnivJBjWXR0P0mFfukh3CDtkPis6ZYW0TgQQDFCHSAsCRbpHSp6KzeHQvbWQyATBzAbdjQtZGpXckI58C9Pn8yFUZyy+896YMKXrknmIAAQswHGCFEUqEyNxdEeizGEYZJ+QAdoas89e8unrVFfBPpY0BqgeOIDgmV0pA9KghH+Fxp90Rr2OB8riA7w0+T6+peC/ECDVq2cUjkhaRomWHnwfvvquL7TwBLxQA9bLQTT2R3LPDo6CUz+d7yBYWatrOkOk9xZtimIWOUfQGY5th1CWTi8FXFW0YetlqrERz1sEWRVGNMMKyLmMxKAThYLIqXwEYC0UQ0Dvo/zYvQcjVhDQcg4yYtPSLzck0e7Pmuv38iYoUxjeMuSim9WuNSxFJtTyx/pJKq0nK0kdzPtZkZqQY1R+SGhxu0HRBW7wlC09VxriOQQNXxAjcbFVwgsjYbz/gXiQIxK8rbMdBwTkg/R87rSRJqWSYZDVCDRwxumcl9Y3dFdf2PNZaza/io+QyBbfWcRV6ixYooiXXVPMeVC6vaYM2/xE3Byfuh3RnkCsaJvRkUA18gJbku41liA+WWdIHmHPBjopDqGVMdf/jfcgOIj+UxXbnZhCFCtSAEXF1cdwVwB9DjC/+vAPb/ARY1P5KdwToua6XXae3nKguRDZFGY+gpe7iWqxilHbaXeIj/H3En5umIcAmUJqPq67APEexEiLeOZ6niOcrk/oidJyZNddg8NbMWJofYOQiM4ITV9GBjVD24//j8SORrI27jdp/fK+sT8lDj25H/B7CcO47wpqTAROoyC7zpgYBwCeksR1V2QcwvlixHgYgv53w8PbciWAKPoYP2XKOCJUxzB5lzbFbELuWn80ExhEU8Ud15LtWuUUREu3XLQeld5n90YGsZRseHbUDzMJ/nnPs68v9KhRcslJvayEGghMLPMMGzwUqmDiQwWRghDu1/8VpSK3c479ETjZUEaMrOLZYXFOFsAaJOge0emCHz+aUKO6mhTWBzAWdwCigwMKd3UYVDdq4ougkmt7sTjuGu5QzPeVEd/MO3dGLANwyfELI0cZpoS+eGZ4SQAYCQG7YRhtF4/DiV1e2sWlWFq6IrtAbMwZJi7KIF/Y5MAq/wTQEk9mkOTQ2fBqErZpnLe0WE/o1w2KA9LtbRj38qKSghaCyCGrCes6MfEbnMyOixvvz8sYjVcjniwFI+Io6HHw8EFpU44bZORVbxFfS7qi6scOP1/94jX900Lgzsn9Ke9ruKHAUi+ELtY9eNXrNEHQ2LfbdLUKF0mIbPKCsEU6HVhiWWlRxqW43NnM21gEIfe8LoFVVq9seAJaU9mB8/OPc3YOxzNriITHLx93ViDPFg9zrI7nd6WUVkRu7VOGdiCP/pCufpewcvChUIHn4+0afA8v0NN7LMPjecSfpmDk6AFnbAvNo2q9g4ySIFmCrH0TX46NkyeOTvQxSlqD8CrMNSQubm8DMn4GeOz1F/HBG8qt25I5vOcLwBEng6oywDTi4oj3WIgz+MfChelW9aaQ7Z2vfAYQOYWkbv0m5H0oOGNo5ZkXospRsRPLttPy7yW4qr5kP39hNDJ1e1U4H2Sfpy4KZBmrOgUtyq1jk7Wn8oYqUvog6y9+pILNPrOrr+BLwkgqx7lI+3c8FfHUNkHwIN14WAGBk/Gny8W9UlfQ1zjeFQwYhOyyBQT1jeSZ5CvhQDgycI83giHGoM0J0UfGkav3lTqya4a2hRspNhHBA+ShEDp1PExZgnxafz+B9JhSwtYbTG6g5DOjMRmUZqC6zAYayEfhF4CMaj0lgWNHdvpNJwX3O+EWbFXcF2woUeLzuRfA8Psfvx2gmI7ammht6QRAHaNTODP4Yra4MLu15KXZbxcNBGecVgL2WGZPpmrkFffueq8GbR9JFmJJFTfkAKCS7O3If1RCECRCuAd1sjM/sgyrCBja1w5eu4K2nQYP4xafdg2tIBDX6kqsEqDgovfVB1ZFk5sGrZKRXkbObqIMKhWbhmb6SyBQbX82YoDweUQxXa1Q12ydHQdz5flVn9+PJtxLLpa6kltHUO2XFZ5eAO63DftM2VCgzRHtEvvuf8Hji41ef4H5Zhp/BR+3bxlWBHlk9V3c9yweFlJ1237LxBgMTmpw8/pLwOyVIt2w/yHgoJ133TWcobpqLHORRvFKVsu67i5ztg4dWbofguv+KHkuyEga+dgtk2Ck5sj9qnYxTAgno9gOJiWS5FismI3bcASLOnGHAFz4oAZGuweMeST/AvxFyNabAqGA8HpRIogCfEKvyCWyOdK5SRpj0MetheG5RexngNG1AlbjaDqXdU1e9FrMjr5i/BET43ADxmYpoEONOjrIhuPIAxtmWtYyywRDmznzZGD+c3kceKiCrvRWN7WTIxnCG5FggdIh+q2Bk8sKMLjtERU+fd5sIoBLBXctsjM59BvTLJsND+ouPapKjiv6JzLmsRap2j6fMlsOQ2nwqZR6FdjZloC7/uZY5oZ/zrUCzBYLALgSCJ3y3YFL9ZZd9n/Bq588pxXL1A/ekgGNfJOKOa7CFArSBQUgiLr+hOCe4zj5uYXRX35x7FfBe3vId+lpKHWMD08Nhqt2or8wKgL3xBrM7QdT3+1rcRC0+9kejhHHVAYCQRkHtX0t3LdYnMxqn2cHQa8mF3/lNzucxBZR0grE006ztffj7iNWoOeP/ndpiu/fCZe/IeK4SRaPvvadGL1MzFBfHl89QnZMH+7xGdKbuxL71LgPLnegQqok2N34HVqWx9h8UjC6jqhCQG1GF6K6/XQWsN9JdjdZce2OqBcJP8mLDr3oFmZtZwukMs/ieDiFKZPsDR0XxJhVG69nZ4iAUrNArKMTYEv/HRbgzLmLmr0NWc7fJ/QtpKOIQ28NT5fZ1dn/52oV+uhQU+DoDMjTmOWCwODVFWEpEyiN7CWR7wvhjAtNdO1Shbg48deI2zAcRxqTNKtf4K0NZIuZwa3lm0WJEZ1IMYQqXlaFJuthFAZ5Srrf2Qbl3ZLQdLU6X2oZhKbNXXqFLjF2DF1FJvT5XAC92Vi/VD19G9rMkU1SQzw9rfzlFnTAK9qrgYNbg7/1yZ3+9AYiehWKeXoDcMTYP9/PsgQgNBIzQzOLPsGgAkAg4V6KCiTAkpborgu0GsN4z/BnmWEp7whM4rD6+fryLWFZbnvz2qZPV5DKDUFFnEfgiaFNW6vPUjcssSNjGoL/IZB9hO6q/yNgfx8oudfwgInBpEE38b+Z6EzHwXok6rMf8SCVkvZv52rOmueZLtOsJBahCwucBMLfam6euKq28+VxZY/QRWB+/llSHds5FG3A1s9KNPRLhKeETutPLuA9eBbakNylWGTxiJaUvI7hwKxxwcyGfPo6ca0r0aD1fRW6Y9Vhb6S3fPbYDb+AvCiePeP6UWdftY4GtNg8lk4VEzlhxSwub29fBYh19b4P78bu5bHZ8RiwHf8q+3JVo145fBX1kv43DAwSVSFtxMCZcUcmAH44kF65Rh5Ip2yy/LnJ7R7CkNAT5nxYv1obMIH9zlLGRhSrcyT2cvpJa7pNQZnLEmnesNJ05h/kVnW9Mg908vl9hqeeDp/mgGgQHsua7h9RPAYkyG6ZFv6JfpT2atq/gIdl+uvrr5AhZobaRbp5ak4ZewbfPJkhMbgj12xG+g7SAAOK2qyy/AcCvI21Xd2gOmQWT8Yxpjo5gA02zPl59ApZ+7WgaQSKgcrECZMtRHZ0SmHo76MWu11jJQAc/pK/ZdN6GlCqheMu3X1J5Twr5srYXI6Hv/uTf5v2bueRn48pu7lNFAhJ7P8MTdDy3A/F1ppY8nbxcfafata8YAi9RxTPxTIoarsaNIXeRrBAqFga0Prjka+101xJLw14AWTAx9PfG2wqEcrwCmUMx8vl/rx1OOWBkGLoWuUI082lrfU+37Ebw4294p+ckLnX3EEGNZ1lxY4zZ6Ae7q3v3h0Iur1elOlEq30yBDF4cm1KovTIKIj8Vq0J/aINyFkcjrxiZdRkXVIl+zatJm0m5yuDgu0A8BBKMaaGE9jf+/Pp3fv8LZuipsBIlWbBz9Rt7b1d8RbHmm3CVdonHw4UE8iCW/UV1VfQxZGWMEQMUic+nZ18IxCWz50/vh8ere6Aodsxl6i1LjrJd90rzbB2fErOvn+f3e/ejILa2qvJj2Q0oFTwX5W9d/+GKwH1/08zeI4MPh/fx6OPaztpx0lEhkVYajkFC7sMsnTICP0/XRcpm+Bf45k3AZq/TKql1iOBx5qM3N4J21gbOxzYiWNzwo6qfu1WY6/zas7d2Vu8DXZDQNv7N8lddjbasZbeEVstGtoFq9n5/XFaSaa9BxRax8ZS0tClbSH8LsMZKOW4MdkoZYhaHePlh3W9mqQVdscPdOyvNkO7rrVNfn6t0pRrmCf3GiY12Pib7wss578V18VQJHwzZJbwoQXPzHqlnGCSPZJebXWrDwVcSS0+zrgtRG3RFLgHVQsZCXJ1Cgasd79rx/3WviKMjLZrxp1z5ubysgNkRQVEuIsmFKt35YgrB0I4RS+0lnw4jRfFISzXyqb7gwxXszRh9HFf+SfAEJyHWCbvoEuVrxlaRcsGgw7GHRb3mQcw1dv/+5m/2gnnuw22Og6ubsERDmllU1ZSZhlwKP8UyGMQD8CrGH1EchvzsgFiVRx6iwCOx0Q1LJmunjLeiyKF4eSUZApZbZLBH8J2upKEGk5xaObHDIlZcjHu20wIL7Gdc2hToIrn2PWfS/AtM6+Jyk+C1LFfkXyDa82exCgwOgF4RUaTd1xhh7oRTJ46Eq0dOrJV6rqxrsZbTbGn2wF1At2DL4nYZQDtxmGFCABH+wHxmxu1B+yLKhv+AzKaO7mss9GPg5rkU0R5LgiZ7XYmu1fK53KOTKH6kuR+5buCdWhmuy1o8nvKxemF24dMDiANZ7KhRjV+y7ivfVTDcLm6RGErCNcRmSr2VmKEZ0M+rY5PlqCengMS8UkDszFpdgxEfo7nYf6dbQyfeTm//kl/YDb+vv/fVKrLDq4vEl+CsXV9VvNLCrK+fpKD6Gt7yCM3LmF8KGh+8nW0OPQmKu01YclNumo2If4nUlNi3WOEMGSpkRh4iJK2xIhOqQoh+03HcZ9GNSh/audKAGvfSHpqIbDLz0/Vw+QlV14DxRL8aF5vqAgEijgepx/A+WWVX1483eckFE0Purd1mVlkcbtpMvSUcqLXRpWkieIOGzgT1d/AwerXoAQty4uSWCVOkHXeU39obQ5MfSYmixWtXjbcb9mrnX4JRaRH0EmYs+hP/sURUfYHdAlKdS6EC/Pt9PYv0uqtT3NzPE0jgJ8BZERQVq7Ey8qSo/w5PwQ3dYSSGqw6ZnlPHXmK21mR1lgUj7gSqOGjLzRYgkikIUwrWiuRGtGTVESuCvmmNltDAOrnIHKbWlWo24f0qJNgfUzUqreUpSJHpRHtUXuY+fb4p6XxVelXIxB44HwWyqcnr2SvBmw8IQnN86ArxkK/AUT8HHYwKPrm9koLWGvl1gPcg53yHvGhDC5G3+5ihC+znbh3A60bX4dlKyJAxsC72BnTwt0NrfOLCY9W/Y16e4fkEfTYF+haoaAKn961Uh4mRUPRdRIhbbP8+SkmVyxJ9Rw/Ynii5VA5HNd7iHXls9El+gfCM9052T984PYx0KUMN3xfkdT6nJoLGSZTAsMYdku1d3cW1XlXa1GGhcREyyDbgtdUw/BjeM+4w93+Cp3mqyzrP3kR9CvPQw4jOYykGkBtmFG8hsq5jXhS28pHqdWqx2dl+rn0vhqNldi2hm2aDZcyLG22B6FihHdgDBeAHdMTH8J9WCvl0fPB4zk8YXW422SybTUa3su8fivqqcqaezLX0q4eBQ6Pd1+uCbDydLX3v1gPW3eEvRdvRlV5QCSCJ3o3kT+xkujA6TdlKFv86Jbn6X4x3lGvc6mTv32V27GlPcVTLHQduYpVl2DxVxO2C7TAr/7RqOti+PvMNnnAPDHy9MOleHbKSB6EMwAc5FLmwxcOqESDKMQLyfQxgU2tcXBdZK+z9kQXIJsM+xUAwEfUSyM0nZ4rBOeIhsa91TuSAzarBpMxBO6GnD3VB/Okd3xzZJCEGn9IbZltYamVqQdfeaguCM64UD5tQIcwFVnWO1VL5U0RMyHwoIFQqOconUmnk+drkedwZJSp/XSPa71f2PDJPNN8tXFSfi2oq4scFloiG23R4tyigoLP4RFM8B35zHtnRkv+XQYJp+C78hAri10LsGI6mFo0Muy78zfgssokzdriJHppFi1sJraLPDDXzu6IrvMdzZnAINsTz4xM2qyp8g64RjvcWwH6EFedNwuZQ5VC+ZrBy30QjCQaT5MiOIOrxWf7u7Ywi78zEUQ3p1G6y9yfYgv4AH5vHIOci2otUe5RGuHuFSgmlcL8eDjAFcwhSeHB5lY3CHOqgaZrMgSf/Zr98Oxoi47uu3Zs/PLPSTl0j4Q9S3RZmWu2Zp3dr4GlQY812vyE5EXptGh43iiR2YwKP5xFBSMXFKIqtN0KLA6zJreoyBwNt94vLPKViAsId3nZ9XtJuBwg3Cx3wpbbYgLsDePbv6eaNvZwm/3ndU0IxG33y+Ksm/6vUE2Q+DXBq1djueAmjHc0nrfnb+NV68SoookHWmMW/vl2qL9rHTDrbfuAhTiFMM0ux+t45X4ibnRhdYVuOrmJEdEwhpIZscSc+SCJqVRKqrfO7tYtAsUbDwP7gXZFyTWI9bmvsjKqv9E23tWzqqHM0DvSTM2eOrIwEi0fkHt1GjcUFLGKJHuWesy41j5wWprOTWC0iNbkTb+DErLaRHUew4aUz04SoevQKYDBIiLyQLktMlMnxVFfe7UkNKH540bR4GkX7Ef1QOAfi0xR/4sONzwuL++6OzIbxTVpK9axSB3UfRvbM7ECfpSiVq17yelLI9lEdkiK0H4tUyzC0S7W+NUSwBIITvmUsDH8JFVUVFENpDHupNv6vsNNAREBesdmx2p34NbukIciFOiKzP95d733xe1zusidMfNTGlcAJ+FPt/VF18QGphcTsKLT501ySKjOtoMYYOfRvUA5AGeYcrL1wRZLbX0B6N2d2TIzVSam79pB/R9okJ7+8lhgZVcJZ4v2Gg05214abHKgLmYQ+oWa9F3Z/OknyV5+ui78o2q9nbVeEZVk8dBewfAecDa9qkT+WrDv8UxfaNfSSR6Dth3Y+jxIup8gVGdYx3Ogp/5FkITbQ0Dwim05avMnjxepl21BJ4WN+VqALcANehNAdnpNmdFWDdUIIvRzoMIW+zWYcrJn1Tjz+X8i30vE5G3J/fegGICxnKblXdVZclqKXBgNuhwwvc7uYUf5YK+0o4k29VBZNtHLjxqavM2k6nTHAP6bqS1arSlqEH2Sd+pNAZYzLqAC6p/nMqLkgtCjTcMVJovbMTu0tYMSaeuX6hAItnnfQKo+dnoYo/f6jBODdNHo5XEBfOPszfyEvnm+5EkQ1Me4AK2LvKO67OuHfT3CgW/9FHcqa6xNj5Hm/jrYWDUCprNl7AOUwQnwtTQDny7U0lLyRHFTkzfEhhI1W8/3FipxjvNFNTmAUUCs4KaYGMn9do93rD8cewk+PBCgI9CpJpORfq8/ZrFB4dO00iVNWi0pgsGxWfjtrLvAe5cL+S5qrKl4FarhnuQF3PbqVN2VLNM2rj+B26UCmUu1ewXaInUgWRqYpHR0mlxNZnUqPr7LuJR8nhSYtVUFtPXpzPc6ZqnVp3e14pLETy80PiyagRQo6gl7va3R48Of47vTkqL7/WWPYxr+6SUQdCnQzcf6egdepsspK/1tcIzDTxOQJhoZDAwgcHFkzVDoxzxKu6cLcsR8HDclX3ogiFTC+AgUZoCl4M2h+fc5tPtD1ns54NCLVXPOnnj5p4mSXEqg3uq7k9D1AlRe54Qrfux4UkTtH5+qEsWMuDbZ8/DIpMFfRbhWrJJh7za8xjb49Jz6IeiTPecfa9P0J8sAKX6pGbYlgNjb0a0qFoQ8gBT7NHAHxUiz+vs5ps+cTNK5Ke86uexxphxRCdT/nNSh9lneP090OZlnn6MZWoZucUDBHtr8OD2aWd5opaHXK+XH/PfldxA5hQ92xul2/u2tngN94wbHoYP4p6REw7qBl6Uj1y3/0k/jLpUnuVqQ2TUGt1X1fh2Po8ZweuL74/O67PAqIo/5gzSivFyV8aHXaeUkP6BJuYhOzQ9DkQJAs+LQTYeqk5dOlFI3/n9tc+Nayyph0eZsLFb9iGi0mCuBsID+FD981TVL2ZgEwxiikcIp73g+BEIdTlomL0+V5d1ZFk//3m8/0imdd7QfMk9CPL3Zw7o0TRY/ZJ+SRLeDPJ0ZYRCaLEuck57Y7zT8io6qqrsJuDsCKdc7YEjqySSNAhb4N6OsmVTwo6ZDm6jNgmJa6AT4vX5gmaHDFm+F2IgGek7vgRjQdy38xRJZQDMfy+Vs683h98ti8tm+Fpyn60OSLM1d/9j5aJdnVcweWVAsoNRhZ/3/NP/bnQQ2ZRmwhq5L27/H4lnOquuTJAdVUnOQXKzcYM3oOczsHUUkuNP0FszHUZXUcEJIQ3TDR6Q3WI+4fttaIL+KuqkwvfP6+z6q9H+veIvK6DqLkqZOKydpm13HEMM3rCdoqymR3hvqapDQVUKz0hX+xGkZf6BcxEpDE1b+YqXUJXKEuU4ajF+Zse73GUJeEiSIFieDRR8juIhJAIGLZE15B+k66lmu+od3dZEFFVKtWX18vD/uLIM13qeGPMV4T9oE5D/7o7BT/2qC6JBEzv/TNiI6sEtvRYgRzNd8K8rsjUa5YWVo5wVfenLhmv5r428wmNWrINAqYFVHv170LD4WX+OeHKlg+gVpc3BCgDCN89ygK1bbHUd75/zBo1CRkLxk5v2kj6avXLmqBaRCp/PrH1o/R2XUAHOGgcb6uAe+NLF62vANXRiKoiFk8StUGkk+9Bgrkpk5Llw+xBP7yFJKsK2+B8FXugENG/gpR6DKlBmn8uthYOwBQvOyIsWVf3qfAa6h0qf0PA8/M8+LwzvU49vz9J/eh6iqfvAtDkdaEE3kadwSOv+OnUF2PVOmwIa1qfc0sMC3RiuAQh3rCQyB7+1f784T0iYetkMjAp5Df+76FPJUfSN6l4I3WKf0YRdxMu1YNe3sURB+UJs3hO9v97xcdZ0Oc95oW2r0qxSzv6WfWIuk8AAA2SSURBVKAjM5Rz/pGbQrfyJziLyQE31AT8VcOWURtqO2VqPMVpexTnexQqhhiqK/l1C20yxtVqodYe5KrrUgy1d1C0wQUGFkNiqaviKdxAa6oiC7XcPfCohPGbsS+m7H/384xM36Q/9tLZrwbqu3h38XQ3xCOC7ZkD0bu4BYjUNt1ZsZ0GDYxZTYAt0qiRcY8FHCAV1/znd9ibYhKaqBr0BRROTdxHLpyupugyJo7McSlkgR8wioopNyoi+w+wePSevjhKN+zu5wwDcaPP9YhGT4i8hiW2/H4O7Afd6+5ncQyaK13KxuoHLLJgWYxz3S0UY1eskmeH3GxXLl18LEKUTq25KwnRwJpDnTeZNy7VPze/HOtbIaZsJVrEi90dFA2jNUuSiTgz4vBPVErtobZnmgtrfH0DkVlvEbwSl8vQnseSaOGKuFA/SoSTS5NMEUAL9MdKdlVapG8WoK/JMINsu7WCuGANkI1l3/xRxK+q2DOXrcJOl6RYUhvHlUerYq+EeyjAKhyiNCcrDK4YGQhXW3cj/2nkZ0lU+LlgofCzLiQXbhodvyJ7N/ix+vVkLtxeNd9YrrkEnr4Ah5FwlOa0pcmdpoVM8Xpw0BDJV17gW18xczGGAtTOd0znyjsko+UVDD1WRyvlUr07GABZbVM1PPjiHmj/KBekHPXtEGJ/XsjO5/s5rW8m7vWXUZCTZD9k/47G2k26y2yHyjoOTXdPOJXv2d005ehkD3Ccn34tR6InVH8IpU+PV4tzgHEI6pjwDR7IUtk5sFuefICMMdIQkM6RFBdsPzIFpKOsckkbE6OU/WdNmuuzAtKzTX87fXA9KDzbFIx7Vf02U91jVNQpt2fQ4aVuK+mtJjtjfCx4h7qnK09X1cymVdo/h49K2BqlE21EpQYcVjtKCMcGsaiMlvC2+Jt6V+ntCna8+HYdOKWzUroC5maIy2/Q/gQ3MdObZq4v8tpXt3pez3KS/fnh3ETnwR/Li+MGMHzZZu6gQr6smVFT3Qq6AJU5tuQZ6NynvNNrbhgpm9dQYUXSRoHS3tjGT2dUza5ul0R8YtEHuhhuk3kNOPEuioHuqvtlBHZGAOFGD6x+GPmQj1JD2G1i+ZHCao7PuvGyFf7HPots55HOgxe6zK7J42aEP+lZCy9/VUY2FlUiHgGMEdbsqS8CW72wvew3H65rLv1Dt08mJhV1a1IS0gA7nCtCUPn495tyhhV5lihH9rzfgTW3UcG9ICnlOV0eIqEKWcwl1/eXfl/NpK95rAWm1yPrkyoRsD5SxZwLAARJJScqlG5uJcJfehwNG+SO+ehWYfCxiu3kIWSABbYJUa/40l9MxwMrjgy+cujVXR6yxYwxzNj9z0WpD1N8LQp544/MxENjjuiKocX1E0+Lu+vtZ2fLJ5jqrcCqB2ox3SDt18kXrQRovUbJWVbU+ZEoVMEwkYHnqv22Y0jse3YjmANkB0m67Dbtx70LRgVBgwKjKyjUgJ9VNyAGsiBkHtoscWsAQusc8/yDgo7lumCRo8WP/RkMIKquQqceGLo/XxVY9dZ49aL3foVatflhSLQ10Wg3F3djFyojW9uQNBpJdWlf4RocBRFlqqE4lvRDOKR5WjVNQxwSD2pchE3kIJY/VdiwZtOBLAp1bWYXOM8hAlAuQk3QX9ItoBu0oygvH1bWNMdXUacf4Qdq+53Pk+aPkQM04AsVcgKSeORrVGls2cxYNGEb2nF5M/8OIrnx33SaWGApPXmacjVeeSdCJFhVuCtCEJq2/oiGBwfSzr+YYLEmO4WeGqifA7hH9WAS3E3x9DERssFd418/32NiXfS1eMXB10j2SpZzGb/Jx4yDu1csjDpKAXxoqodtHras8WHhctWnfbOUKdfGnci/VABYJu5sgAvdHVIGqgyfM9T8FI9d1bOhUrX+56GT/t3JGyM6fYsyYCePceu6/ZajLRNYP15A80hz30PqmzaCV3/dpt5qNXLym9ORIgHixEgQCIGHPoy1wCSydeH500rVh28/cdn3u6JtAKZL46C8/u10y7eqylvCNO1Aglk5hrd2jwVQmHl5ERYyAOhnOQvQ6py3bThVx8ylQUPA4nFH9fn9z+uUxPr+VR32CtxX/PV6SVNTDVWFh9BDiePQVa0dYzNeEBa7rFktUJvkEDWqbwT8Lt9hSZySfuMkcUCyMLiORCACM/HshhhJcx9RRykhiHznTvf9xjBVwa3Cx4si6nHgMFx+vsli12NyofPgs/vrcfVazX4ruU3HmXBiu8pEArmU566QcZT16GN6wLe79yMPCwczL3+cefQ65xlO3ixeZHihmgMWu+vsasVdDREOQWAyWvB7vnt5hWGyCcSZ8dftjQ8Y+rUyVfUWb14jEI+s2zsQO74Tdv0G1iemr6ofjbt7MW2uX7YUQ8UVWikrnRq4yVjNqGymVi0P2ZvFN8T3XkVd6Av+o+47UwYXHom+gj6v0KpWUCHiq5axrzklXzQqA4ugP8MQZRdOsb4QWufw3Fp/jRPfw4tJc6Htq0nUNX3Pn8/JVX5+GBr0RSSysu274glgxLIqTIJTz8JVrBBgYSR4xq8zXFf5jTQLsgcMHw1im9vdh0bzseaBXTBMiMOYD1n8NPZNnembIZqqOXd3IAaLuRZoD7+44Mg3IFS3LzDTkCuLeejH91dEvjarR/t+g1EnfO8jp8aSbEQxrbx1BQmpGMQANcMfWzbUXlMIh3HVDKnId1TCSBeA9HAJM9AeLx+v6rpO6JlEPO24gYA9j1XpHgusoTC9a/BTs366/BYq6uUc+nRGjQb3LbC/oaG+mJTikWff14+lfYDmGbcW8cIKUjphQW5Jcz1aBlYUXzYs8G93x2tRe+moz6RQw5VxkX+Oz9httMozUgairzhuaJflDEoec55jhR/qrFqahZwty6c1PJQpCzR6i2dbbg1N41UIZpme2Ppq5nOdfU1qz16vgF40f/i4bMMCyG4OxLhcHxAYIF40MvPPd2+NPXaEOscy3gQwq4wj2pYn7IpT9P75PjY6PxWu1EV/RYWhq4KYvmKUzq3LJalxdj4fEm51tnuYRFtq2+9RPNJvVthYXxq9QmNvd4QW2vqRQ7///LA4YGHpLmNBb1FjX9CROxy5ymitqvpgErnUfpFFIhEoAqaIMRoMW55KChWEoutPP1gnKJcc2C7l3Mx5SDnORh8drz0C3WW3ZXH5D2nn/1boAj5ljJ/PmarXz1fYSum/G+urz40/vpli+t925sFHUu/QZbMlqfGVYPmk4QaFx0R0oZk/Hnpj/wsihPn0zO+rorIQjB2OJm21ZAYXs/fZS4c8Ft8NziDL6MXFtx6+LBfj/P58FXX+CD5eQ9H3d3JW0tzzdlW/qYgZvSvkyDaWrXiuAyLWfamzv8SU/MwXONQMtUAWXceQDLStxAlsRGRtuX9YFaDjC+i2X12eozQ3UFfXTMScATF3JQ0ZsufOleUdmdoj6/3k6nY65j0cfdbkwpoNfwKus9crWFeb17NfofyOWLNUxpKzB4OHL3TlZchvV2ydmDFPZIGQxKpG6+EN0FGAQy2vP9cehqhGaNmjYOhg9WimSIqbZeKx5taTj87Gdrmq2UisKQs5SmeY+tP6mbaXSNOWChtLxs4GITviU78Fnm9S5HNcNlu9fnQcZLl5x3Nk3iyvAKFz0gfH5vdPzBEUymbNbHWlRrqKMb+bTyOiWVdxt1lZdLXlDyCyj+WjyW07LUWEJXfJN3q1oBFjErcSahQJ8Xt3nC66OXEY+Ty2qaWwf7CWGo733MGiWQ/UkuAa98r29xfvj1VvFoKb+OK5J9pkSzk0GFvayjTUzoNdxTcQodVQvAOJcWw44lhV8d6zQcGELpvPs4qQ2oOBYvhMmeYwcQVp/Ct/s3J0slMbM/Swcbme8gNtoc0VNjoxxPS3TE7VbqKPBk9UPZvtoHCnQiSFKWVdstjI3cdzPklU3zTA0Y8COvxx7MTOSqog2X6YIkPX5OVSbgK0tAF4RgKRjXALnIXpcU/dRcDMtkshYITFGZ7XqK4M1Xk15FYbe+cIXOIL0/Pos4pis84vf3zK4Ctqv3vh2Y5YCAM6J4SFHk7jMLgfSQrnLtJYE0MDAtyprKqOhS1mRhg5cGpbyn8zmiAAk14vVrOIE9tAwNV+P9KNF4oXztUkQsInCC3NileawAMBvV1fAEKnV0p6wm51eZ693np9dd3HZq941ea2Tdl69v+Xs+2wbXePqy/psV96Xr6m8aAztrCDAnxPo9LCFTAtwKjq/dkQWz1sH8+mMYUOWIG08Xr7WbwaU2yP7Bi6SYC3nM2gYMKMfxUe0L8e9oY6ToNl5u/j0+t8+vPOz2ul9ZyM5aDYxoiBRK+tAnmc1bMArEEjRNVAQYd6nH3ybfioX0O6it6BXCeTwHmM4iAh+o3GWfE8IsRQ86NEU994mAWjQE3imC8IaHIvFj8gFRTDj41CKuF18umJEkj/8nlFIdt/lWRJds2snuK9WVlZ3QEqxJWyE9P7oQZrkw8+nHhwPVe1S6drhnDMeTfxNVjUHWPyp+mhjDHcsNpZ+A2YFuqugtTH2RqJFVpq/5pi1FLBGMxtR+EGWt9iXhbiVlo++RxWfNr7Wb9/9XmmNs2B1RtWvrmf04+fXfV/JNMGk5e7rNYAAAAASUVORK5CYIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABSAG8AbwB0ACAARQBuAHQAcgB5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAFAP//////////AQAAAAYJAgAAAAAAwAAAAAAAAEYAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAACACgAAAAAAAAEAQwBvAG0AcABPAGIAagAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIAAgAAAAQAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoAAAAAAAAAAQBPAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAgD/////AwAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAFAAAAAAAAAAxAFQAYQBiAGwAZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAABKCAAAAAAAAAUAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAIABQAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAADgBAAAAAAAA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L0ZvbnQgNyAwIFINCiAgIC9YT2JqZWN0IDggMCBSDQogICAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQyAvSW1hZ2VJIC9JbWFnZUIgXQ0KPj4NCmVuZG9iag0KDQoxIDAgb2JqDQo8PCAvVHlwZSAvUGFnZQ0KICAgL1BhcmVudCA1IDAgUg0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXQ0KICAgL0dyb3VwIDw8IC9TIC9UcmFuc3BhcmVuY3kgL0NTIC9EZXZpY2VSR0IgL0kgdHJ1ZSA+Pg0KICAgL0NvbnRlbnRzIDIgMCBSDQo+Pg0KZW5kb2JqDQoNCjUgMCBvYmoNCjw8IC9UeXBlIC9QYWdlcw0KICAgL1Jlc291cmNlcyA5IDAgUg0KICAgL01lZGlhQm94IFsgMCAwIDU5NSA4NDIgXQ0KICAgL0tpZHMgWyAxIDAgUg0KICAgICAgICAgICBdDQogICAvQ291bnQgMQ0KPj4NCmVuZG9iag0KDQoxMCAwIG9iag0KPDwgL1R5cGUgL0NhdGFsb2cNCiAgIC9QYWdlcyA1IDAgUg0KPj4NCmVuZG9iag0KDQoxMSAwIG9iag0KPDwgL0NyZWF0b3IgPEZFRkYwMDU3MDA3MjAwNjkwMDc0MDA2NTAwNzI+DQovUHJvZHVjZXIgPEZFRkYwMDRGMDA3MDAwNjUwMDZFMDA0RjAwNjYwMDY2MDA2OTAwNjMwMDY1MDAyRTAwNkYwMDcyMDA2NzAwMjAwMDMyMDAyRTAwMzAwMDJEMDA3MDAwNzIwMDY1Pg0KL0NyZWF0aW9uRGF0ZSAoRDoyMDA3MDMwNTE1NTM1OSswMScwMCcpDQo+Pg0KZW5kb2JqDQoNCnhyZWYNCjAgMTINCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMzY5OCAwMDAwMCBuDQowMDAwMDAwMDIxIDAwMDAwIG4NCjAwMDAwMDAzMTAgMDAwMDAgbg0KMDAwMDAwMDMzNiAwMDAwMCBuDQowMDAwMDAzODgzIDAwMDAwIG4NCjAwMDAwMDMzODIgMDAwMDAgbg0KMDAwMDAwMzUwMiAwMDAwMCBuDQowMDAwMDAzNTQzIDAwMDAwIG4NCjAwMDAwMDM1ODQgMDAwMDAgbg0KMDAwMDAwNDAxOSAwMDAwMCBuDQowMDAwMDA0MDc5IDAwMDAwIG4NCnRyYWlsZXINCjw8IC9TaXplIDEyDQogICAvUm9vdCAxMCAwIFINCiAgIC9JbmZvIDExIDAgUg0KICAgL0lEIFsgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5Pg0KICAgICAgICAgPDYwMEE2NDFFNjM3QzAyN0U0NjEyMkI3ODM0NjczMzI5PiBdDQo+Pg0Kc3RhcnR4cmVmDQo0Mjk0DQolJUVPRg0K
VGVzdCBGQVExO01pc2M7ZW47ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5MQpUZXN0IEZBUTI7TWlzYztlbjtleHRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkxClRlc3QgRkFRMztNaXNjO2VuO2V4dGVybmFsO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTEKVGVzdCBGQVE0O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTEKVGVzdCBGQVE1O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTIKVGVzdCBGQVE2O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTIKVGVzdCBGQVE3O01pc2M7ZW47cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTIKVGVzdCBGQVE4O01pc2M7ZW47aW50ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5MgpUZXN0IEZBUTk7TWlzYztlbjtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkyClRlc3QgRkFRMTA7TWlzYztlbjtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkyClRlc3QgRkFRMTE7TWlzYztkZTtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkzClRlc3QgRkFRMTI7TWlzYztkZTtpbnRlcm5hbDtGMTtGMjtGMztGNDtGNTtGNjtrZXkzClRlc3QgRkFRMTM7TWlzYztkZTtwdWJsaWM7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5MwpUZXN0IEZBUTE0O01pc2M7ZGU7cHVibGljO0YxO0YyO0YzO0Y0O0Y1O0Y2O2tleTMKVGVzdCBGQVExNTtNaXNjO2RlO3B1YmxpYztGMTtGMjtGMztGNDtGNTtGNjtrZXkzClRlc3QgRkFRMTY7TWlzYztkZTtwdWJsaWM7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTE3O01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTE4O01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTE5O01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NApUZXN0IEZBUTIwO01pc2M7ZGU7ZXh0ZXJuYWw7RjE7RjI7RjM7RjQ7RjU7RjY7a2V5NAo=
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
fi91dGYtOC1maWxlLcOkw7bDvMOfLeOCq+OCueOCv+ODni50eHQKCkp1c3QgdGV4dCBmb3IgdGhlIGF0dGFjaG1lbnQKCuS9v+eUqOS4i+WIl+ivreiogAoK0K/Qt9GL0LrQvtCy0YvQtQoKISLCpyQlJi8oKT0/w5wqw4TDlkw6TEAsLi0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgRG8gbm90IGNoZWNrIFJpY2hUZXh0LgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGcm9udGVuZDo6UmljaFRleHQnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgTW9kaWZ5ICJGQVE6OkFnZW50OjpTdGF0ZVR5cGVzIiB0byBvbmx5IHNob3cgJ2ludGVybmFsJyBhbmQgJ3B1YmxpYycgRkFRIHN0YXRlIHR5cGVzIGluIGFnZW50IGludGVyZmFjZS4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpBZ2VudDo6U3RhdGVUeXBlcycsCiAgICAgICAgICAgIFZhbHVlID0+IFsgJ2ludGVybmFsJywgJ3B1YmxpYycgXSwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgR2V0IHNjcmlwdCBhbGlhcy4KICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRGQVFBZGQuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFBZGQiKTsKCiAgICAgICAgIyBDaGVjayBwYWdlLgogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhUaXRsZSBLZXl3b3JkcyBDYXRlZ29yeUlEIFN0YXRlSUQgVmFsaWRJRCBMYW5ndWFnZUlEIEZpbGVVcGxvYWQKICAgICAgICAgICAgRmllbGQxIEZpZWxkMiBGaWVsZDMgRmllbGQ2IEZBUVN1Ym1pdCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIFZlcmlmeSBvbmx5ICdpbnRlcm5hbCAoYWdlbnQpJyBhbmQgJ3B1YmxpYyAoYWxsKScgRkFRIHN0YXRlIHR5cGVzIGFyZSBhdmFpbGFibGUuCiAgICAgICAgIyBUaGVyZSBpcyBubyAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgRkFRIHN0YXRlIG9wdGlvbi4gU2VlIGJ1ZyMxNDUxNS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNTdGF0ZUlEIG9wdGlvbltWYWx1ZT0yXScpLmxlbmd0aDsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJGQVEgc3RhdGUgJ2ludGVybmFsIChhZ2VudCknIGlzIGF2YWlsYWJsZSBhcyBvcHRpb24uIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjU3RhdGVJRCBvcHRpb25bVmFsdWU9M10nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiRkFRIHN0YXRlICdwdWJsaWMgKGFsbCknIGlzIGF2YWlsYWJsZSBhcyBvcHRpb24uIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1N0YXRlSUQgb3B0aW9uW1ZhbHVlPTFdJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIkZBUSBzdGF0ZSAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgaXMgbm90IGF2YWlsYWJsZSBhcyBvcHRpb24uIgogICAgICAgICk7CgogICAgICAgICMgVGVzdCBwYXJhbXMuCiAgICAgICAgbXkgJEZBUVRpdGxlICAgID0gJ0ZBUSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkRkFRU3ltcHRvbSAgPSAnU2VsZW5pdW0gU3ltcHRvbSc7CiAgICAgICAgbXkgJEZBUVByb2JsZW0gID0gJ1NlbGVuaXVtIFByb2JsZW0nOwogICAgICAgIG15ICRGQVFTb2x1dGlvbiA9ICdTZWxlbml1bSBTb2x1dGlvbic7CiAgICAgICAgbXkgJEZBUUNvbW1lbnQgID0gJ1NlbGVuaXVtIENvbW1lbnQnOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAgICdjc3MnICktPnNlbmRfa2V5cygkRkFRVGl0bGUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0tleXdvcmRzIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bScpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjQ2F0ZWdvcnlJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNTdGF0ZUlEJykudmFsKCcyJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI1ZhbGlkSUQnKS52YWwoJzEnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjTGFuZ3VhZ2VJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRmllbGQxIiwgICAgJ2NzcycgKS0+c2VuZF9rZXlzKCRGQVFTeW1wdG9tKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNGaWVsZDIiLCAgICAnY3NzJyApLT5zZW5kX2tleXMoJEZBUVByb2JsZW0pOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZpZWxkMyIsICAgICdjc3MnICktPnNlbmRfa2V5cygkRkFRU29sdXRpb24pOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZpZWxkNiIsICAgICdjc3MnICktPnNlbmRfa2V5cygkRkFRQ29tbWVudCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRkFRU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0ZBUUJvZHkiKS5sZW5ndGgnICk7CgogICAgICAgICMgVmVyaWZ5IHRlc3QgRkFRIGlzIGNyZWF0ZWQuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRlc3QgKCAkRkFRU3ltcHRvbSwgJEZBUVByb2JsZW0sICRGQVFTb2x1dGlvbiwgJEZBUUNvbW1lbnQgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdCBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBHZXQgdGVzdCBjcmVhdGVkIEZBUSBJRC4KICAgICAgICBteSAkRkFRSXRlbSA9ICREQk9iamVjdC0+UXVvdGUoJEZBUVRpdGxlKTsKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBpZCBGUk9NIGZhcV9pdGVtIFdIRVJFIGZfc3ViamVjdCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRGQVFUaXRsZSBdCiAgICAgICAgKTsKICAgICAgICBteSAkSXRlbUlEOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkSXRlbUlEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEuCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyktPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJEl0ZW1JRCBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUUNhdGVnb3J5LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRQ2F0ZWdvcnkiKTsKCiAgICAgICAgIyBDaGVjayBBZ2VudEZBUUNhdGVnb3J5IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyBDbGljayBvbiAnQWRkIGNhdGVnb3J5Jy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFDYXRlZ29yeTtTdWJhY3Rpb249QWRkJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgcGFnZS4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoTmFtZSBQYXJlbnRJRCBQZXJtaXNzaW9uR3JvdXBzIFZhbGlkSUQgQ29tbWVudCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGNhdGVnb3J5LgogICAgICAgIG15ICRDYXRlZ29yeU5hbWUgPSAnQ2F0ZWdvcnkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkQ2F0ZWdvcnlOYW1lKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNQZXJtaXNzaW9uR3JvdXBzJykudmFsKFwkKCcjUGVybWlzc2lvbkdyb3VwcyBvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24gKCkgeyByZXR1cm4gXCQodGhpcykuaHRtbCgpID09ICd1c2Vycyc7IH0gKS52YWwoKSApLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNWYWxpZElEJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNDb21tZW50IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBDYXRlZ29yeScpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTdWJtaXQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgdGVzdCBjYXRlZ29yeSBpcyBjcmVhdGVkLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENhdGVnb3J5TmFtZSApID4gLTEsCiAgICAgICAgICAgICIkQ2F0ZWdvcnlOYW1lIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBHZXQgdGVzdCBjcmVhdGVkIGNhdGVnb3J5IElELgogICAgICAgIG15ICRDYXRlZ29yeSA9ICREQk9iamVjdC0+UXVvdGUoJENhdGVnb3J5TmFtZSk7CiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgaWQgRlJPTSBmYXFfY2F0ZWdvcnkgV0hFUkUgbmFtZSA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDYXRlZ29yeU5hbWUgXQogICAgICAgICk7CiAgICAgICAgbXkgJENhdGVnb3J5SUQ7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRDYXRlZ29yeUlEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICMgQ2xpY2sgb24gZGVsZXRlIGljb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVsZXRlQ2F0ZWdvcnlJRCRDYXRlZ29yeUlEIiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiAkKCIjRGlhbG9nQnV0dG9uMSIpLmxlbmd0aCcgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGlhbG9nQnV0dG9uMSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gIVwkKCcuRGlhbG9nLk1vZGFsJykubGVuZ3RoIiApOwoKICAgICAgICAjIFZlcmlmeSB0ZXN0IGNyZWF0ZWQgY2F0ZWdvcnkgaXMgZGVsZXRlZC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDYXRlZ29yeU5hbWUgKSA9PSAtMSwKICAgICAgICAgICAgIiRDYXRlZ29yeU5hbWUgaXMgbm90IGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgIkZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUVpvb20gc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kSXRlbUlEO05hdj0iKTsKCiAgICAgICAgIyBWZXJpZnkgaXRzIHJpZ2h0IHNjcmVlbi4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gJ0RlbGV0ZScuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRRGVsZXRlO0l0ZW1JRD0kSXRlbUlEJyApXSIpLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRGlhbG9nQnV0dG9uMSIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBWZXJpZnkgZGVsZXRlIG1lc3NhZ2UuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZBUSBhcnRpY2xlPycgKSA+IC0xLAogICAgICAgICAgICAiRGVsZXRlIG1lc3NhZ2UgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgRXhlY3V0ZSBkZWxldGUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGlhbG9nQnV0dG9uMSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gISQoIi5EaWFsb2cuTW9kYWwiKS5sZW5ndGgnICk7CgogICAgICAgICMgVmVyaWZ5IGRlbGV0ZSBhY3Rpb24uCiAgICAgICAgIyBUcnkgdG8gbmF2aWdhdGUgdG8gdGhlIEFnZXRuRkFRWm9vbSBvZiBkZWxldGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRDtOYXY9Iik7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiTm8gc3VjaCBJdGVtSUQgJEl0ZW1JRCEiICkgPiAtMSwKICAgICAgICAgICAgIkRlbGV0ZSBhY3Rpb24gLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgRG8gbm90IGNoZWNrIFJpY2hUZXh0LgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGcm9udGVuZDo6UmljaFRleHQnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgR2V0IHRlc3QgcGFyYW1zLgogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJVRlc3QgICAgID0gKAogICAgICAgICAgICBTdG9yZWQgPT4gewogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJ1NlbGVuaXVtIEtleXdvcmRzJywKICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTZWxlbml1bSBTeW1wdG9tJywKICAgICAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICdTZWxlbml1bSBQcm9ibGVtJywKICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICdTZWxlbml1bSBTb2x1dGlvbicsCiAgICAgICAgICAgICAgICBGaWVsZDYgICAgICA9PiAnU2VsZW5pdW0gQ29tbWVudCcsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEVkaXRlZCA9PiB7CiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUgLiAnIEVkaXQnLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAyLAogICAgICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJ1NlbGVuaXVtIEtleXdvcmRzIEVkaXQnLAogICAgICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJ1NlbGVuaXVtIFN5bXB0b20gRWRpdCcsCiAgICAgICAgICAgICAgICBGaWVsZDIgICAgICA9PiAnU2VsZW5pdW0gUHJvYmxlbSBFZGl0JywKICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICdTZWxlbml1bSBTb2x1dGlvbiBFZGl0JywKICAgICAgICAgICAgICAgIEZpZWxkNiAgICAgID0+ICdTZWxlbml1bSBDb21tZW50IEVkaXQnLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAyLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgRkFRLgogICAgICAgIG15IEBJdGVtSURzOwogICAgICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICV7ICRUZXN0e1N0b3JlZH0gfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEl0ZW1JRHMsICRJdGVtSUQ7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRDtOYXY9Iik7CgogICAgICAgICMgVmVyaWZ5IGl0cyByaWdodCBzY3JlZW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRRWRpdCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFFZGl0O0l0ZW1JRD0kSXRlbUlEIik7CgogICAgICAgICMgVmVyaWZ5IHN0b3JlZCB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRTdG9yZWQgKCBzb3J0IGtleXMgJXsgJFRlc3R7U3RvcmVkfSB9ICkgewogICAgICAgICAgICBpZiAoICRTdG9yZWQgbmUgJ0NvbnRlbnRUeXBlJyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyMnIC4gJFN0b3JlZCwgJ2NzcycgKS0+Z2V0X3ZhbHVlKCksCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0e1N0b3JlZH0tPnskU3RvcmVkfSIsCiAgICAgICAgICAgICAgICAgICAgIiMkU3RvcmVkIHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEVkaXQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAnY3NzJyApLT5zZW5kX2tleXMoJyBFZGl0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNTdGF0ZUlEJywKICAgICAgICAgICAgVmFsdWUgICA9PiAyLAogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNMYW5ndWFnZUlEJywKICAgICAgICAgICAgVmFsdWUgICA9PiAyLAogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjS2V5d29yZHMiLCAnY3NzJyApLT5zZW5kX2tleXMoJyBFZGl0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRmllbGQxIiwgICAnY3NzJyApLT5zZW5kX2tleXMoJyBFZGl0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRmllbGQyIiwgICAnY3NzJyApLT5zZW5kX2tleXMoJyBFZGl0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRmllbGQzIiwgICAnY3NzJyApLT5zZW5kX2tleXMoJyBFZGl0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRmllbGQ2IiwgICAnY3NzJyApLT5zZW5kX2tleXMoJyBFZGl0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNWYWxpZElEJywKICAgICAgICAgICAgVmFsdWUgICA9PiAyLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZBUVN1Ym1pdCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUUVkaXQgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9JEl0ZW1JRCIpOwoKICAgICAgICAjIFZlcmlmeSBlZGl0ZWQgdmFsdWVzLgogICAgICAgIGZvciBteSAkRWRpdGVkICggc29ydCBrZXlzICV7ICRUZXN0e0VkaXRlZH0gfSApIHsKICAgICAgICAgICAgaWYgKCAkRWRpdGVkIG5lICdDb250ZW50VHlwZScgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjJyAuICRFZGl0ZWQsICdjc3MnICktPmdldF92YWx1ZSgpLAogICAgICAgICAgICAgICAgICAgICIkVGVzdHtFZGl0ZWR9LT57JEVkaXRlZH0iLAogICAgICAgICAgICAgICAgICAgICIjJEVkaXRlZCBzdG9yZWQgdmFsdWUiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBFbmFibGUgUmljaFRleHQuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFBZGQiKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGpRdWVyeSBpcyBsb2FkZWQuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJzsiICk7CgogICAgICAgIG15ICRVcGxvYWRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgICAgICBteSAkRW5jb2RlT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyk7CiAgICAgICAgbXkgJE1haW5PYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICAgICAgIyBDcmVhdGUgRkFRIGl0ZW0gd2l0aCBpbmxpbmUgYXR0YWNobWVudC4KICAgICAgICBteSAkTG9jYXRpb24gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0hvbWUnKQogICAgICAgICAgICAuICIvc2NyaXB0cy90ZXN0L3NhbXBsZS9XZWJVcGxvYWRDYWNoZS9XZWJVcGxvYWRDYWNoZS1UZXN0MS5wbmciOwogICAgICAgIG15ICRDb250ZW50UmVmID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkTG9jYXRpb24sCiAgICAgICAgICAgIE1vZGUgICAgID0+ICdiaW5tb2RlJywKICAgICAgICApOwogICAgICAgIG15ICRDb250ZW50ID0gJHskQ29udGVudFJlZn07CiAgICAgICAgJEVuY29kZU9iamVjdC0+RW5jb2RlT3V0cHV0KCBcJENvbnRlbnQgKTsKCiAgICAgICAgbXkgJEZvcm1JRCAgICAgID0gJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCdpbnB1dFtuYW1lPUZvcm1JRF0nKS52YWwoKTsiKTsKICAgICAgICBteSAkRmlsZW5hbWUgICAgPSAnSW5saW5lJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJENvbnRlbnRJRCAgID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkRGlzcG9zaXRpb24gPSAnaW5saW5lJzsKCiAgICAgICAgIyBBZGQgcGljdHVyZSB0byB1cGxvYWQgY2FjaGUuCiAgICAgICAgbXkgJEFkZCA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJEZvcm1JRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gIiRGaWxlbmFtZS5wbmciLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnRJRCAgID0+ICRDb250ZW50SUQsCiAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICREaXNwb3NpdGlvbiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQWRkLAogICAgICAgICAgICAiSW5saW5lIHBpY3R1cmUgaXMgYWRkZWQgdG8gdXBsb2FkIGNhY2hlIHN1Y2Nlc3NmdWxseSIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEZpZWxkMUhUTUwgPQogICAgICAgICAgICAnPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+JyAuCiAgICAgICAgICAgICc8aW1nIGFsdD0iIiBzcmM9Ii8nIC4gJFNjcmlwdEFsaWFzIC4gJ2luZGV4LnBsP0FjdGlvbj1QaWN0dXJlVXBsb2FkO0Zvcm1JRD0nIC4gJEZvcm1JRCAuCiAgICAgICAgICAgICc7Q29udGVudElEPScgLiAkQ29udGVudElEIC4gJyIgLz48L2JvZHk+PC9odG1sPic7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdUZXN0IFRpdGxlJyk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNDYXRlZ29yeUlEJywKICAgICAgICAgICAgVmFsdWUgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNTdGF0ZUlEJywKICAgICAgICAgICAgVmFsdWUgICA9PiAyLAogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNTdGF0ZUlEJywKICAgICAgICAgICAgVmFsdWUgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBDS0VESVRPUiBpcyBsb2FkZWQgKHRoZXJlIGFyZSA0IGVkaXRvcnMgaW4gdGhlIHNjcmVlbikuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2JvZHkuY2tlX2VkaXRhYmxlJywgXCQoJy5ja2Vfd3lzaXd5Z19mcmFtZScpLmNvbnRlbnRzKCkpLmxlbmd0aCA9PT0gNDsiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiQ0tFRElUT1IuaW5zdGFuY2VzLkZpZWxkMS5zZXREYXRhKCckRmllbGQxSFRNTCcpOyIpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiBDS0VESVRPUi5pbnN0YW5jZXMuRmllbGQxLmdldERhdGEoKS5pbmRleE9mKCdGb3JtSUQ9JEZvcm1JRDtDb250ZW50SUQ9JENvbnRlbnRJRCcpID4gLTE7IgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+SW5wdXRGaWVsZFZhbHVlU2V0KAogICAgICAgICAgICBFbGVtZW50ID0+ICcjVmFsaWRJRCcsCiAgICAgICAgICAgIFZhbHVlICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIFN1Ym1pdCBhbmQgc3dpdGNoIGJhY2sgd2luZG93LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZBUVN1Ym1pdCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9XCJdJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgR2V0IEl0ZW1JRC4KICAgICAgICBteSBARkFRID0gc3BsaXQoICdJdGVtSUQ9JywgJFNlbGVuaXVtLT5nZXRfY3VycmVudF91cmwoKSApOwogICAgICAgIHB1c2ggQEl0ZW1JRHMsICRGQVFbMV07CgogICAgICAgICMgR2V0IGF0dGFjaG1lbnRzIGJlZm9yZSBFZGl0IHNjcmVlbi4KICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRGQVFPYmplY3QtPkF0dGFjaG1lbnRJbmRleCgKICAgICAgICAgICAgSXRlbUlEICAgICA9PiAkSXRlbUlEc1sxXSwKICAgICAgICAgICAgU2hvd0lubGluZSA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQEV4aXN0aW5nQXR0YWNobWVudHMsCiAgICAgICAgICAgIDEsCiAgICAgICAgICAgICJCZWZvcmUgRWRpdCBzY3JlZW4gLSB0aGVyZSBpcyBvbmUgSW5saW5lIGF0dGFjaG1lbnQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkRXhpc3RpbmdBdHRhY2htZW50c1swXS0+e0ZpbGVuYW1lfSwKICAgICAgICAgICAgIiRGaWxlbmFtZS5wbmciLAogICAgICAgICAgICAiQmVmb3JlIEVkaXQgc2NyZWVuIC0gSW5saW5lIGF0dGFjaG1lbnQgJEZpbGVuYW1lLnBuZyBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUUVkaXQgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRWRpdDtJdGVtSUQ9JEl0ZW1JRHNbMV0iKTsKCiAgICAgICAgIyAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNGQVFTdWJtaXQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRkFRU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFdhaXRpbmcganVzdCB0byBiZSBzdXJlIGF0dGFjaG1lbnQgaXMgc3RvcmVkLgogICAgICAgIHNsZWVwIDE7CgogICAgICAgICMgR2V0IGF0dGFjaG1lbnRzIGFmdGVyIEVkaXQgc2NyZWVuLgogICAgICAgIEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJEZBUU9iamVjdC0+QXR0YWNobWVudEluZGV4KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSURzWzFdLAogICAgICAgICAgICBTaG93SW5saW5lID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHNjYWxhciBARXhpc3RpbmdBdHRhY2htZW50cywKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIkFmdGVyIEVkaXQgc2NyZWVuIC0gdGhlcmUgaXMgb25lIElubGluZSBhdHRhY2htZW50IiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJEV4aXN0aW5nQXR0YWNobWVudHNbMF0tPntGaWxlbmFtZX0sCiAgICAgICAgICAgICIkRmlsZW5hbWUucG5nIiwKICAgICAgICAgICAgIkFmdGVyIEVkaXQgc2NyZWVuIC0gSW5saW5lIGF0dGFjaG1lbnQgJEZpbGVuYW1lLnBuZyBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBjcmVhdGVkIEZBUXMuCiAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJGQVEgaXRlbSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZGlzYWJsZSBzaG93IGludmFsaWQgRkFRIGl0ZW1zIFN5U0NvbmZpZwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkZyb250ZW5kOjpBZ2VudEZBUUV4cGxvcmVyIyMjU2hvd0ludmFsaWRGQVFJdGVtcycsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgRkFRIG9iamVjdAogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgIG15IEBGQVFzOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBmb3IgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICVGQVEgPSAoCiAgICAgICAgICAgICAgICBJdGVtSUQgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBARkFRcywgXCVGQVE7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBvbmUgRkFRIGFzIGludmFsaWQgc2VlIGJ1ZyBidWcjMTE0OTggKGh0dHA6Ly9idWdzLm90cnMub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQ5OClTaG93SW52YWxpZEZBUUl0ZW1zCiAgICAgICAgbXkgJEludmFsaWRGQVFUaXRsZSA9ICJJbnZhbGlkICRGQVFzWzBdLT57RkFRVGl0bGV9IjsKICAgICAgICBteSAkU3VjY2VzcyAgICAgICAgID0gJEZBUU9iamVjdC0+RkFRVXBkYXRlKAogICAgICAgICAgICBJdGVtSUQgICAgICA9PiAkRkFRc1swXS0+e0l0ZW1JRH0sCiAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRJbnZhbGlkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAyLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEZBUXNbMF0tPntGQVFUaXRsZX0gPSAkSW52YWxpZEZBUVRpdGxlOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRRXhwbG9yZXIgc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUV4cGxvcmVyIik7CgogICAgICAgICMgY2hlY2sgQWdlbnRGQVFFeHBsb3JlciBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyB0ZXN0IGRhdGEgZm9yIGV4cGxvcmVyIHNjcmVlbgogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU2NyZWVuRGF0YSA9PiAnRkFRIEV4cGxvcmVyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU2NyZWVuRGF0YSA9PiAnTGF0ZXN0IGNyZWF0ZWQgRkFRIGFydGljbGVzJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU2NyZWVuRGF0YSA9PiAnTGF0ZXN0IHVwZGF0ZWQgRkFRIGFydGljbGVzJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdC0+e1NjcmVlbkRhdGF9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e1NjcmVlbkRhdGF9IGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2xpY2sgb24gJ01pc2MnLCBnbyBvbiBzdWJjYXRlZ29yeSBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJ01pc2MnLCAnbGlua190ZXh0JyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgb3JkZXIgRkFRIGl0ZW0gcGVyIEZBUUlEIGJ5IERvd24KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9MTtTb3J0Qnk9RkFRSUQ7T3JkZXJCeT1Eb3duIik7CgogICAgICAgICMgdmVyaWZ5IEludmFsaWQgRkFRIGlzIG5vdCB2aXNpYmxlIG9uIGV4cGxvcmVyIHNjcmVlbgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUXNbMF0tPntGQVFUaXRsZX0gKSA9PSAtMSwKICAgICAgICAgICAgIiRGQVFzWzBdLT57RkFRVGl0bGV9IGlzIG5vdCBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBlbmFibGUgc2hvdyBpbnZhbGlkIEZBUSBpdGVtcyBTeVNDb25maWcKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6QWdlbnRGQVFFeHBsb3JlciMjI1Nob3dJbnZhbGlkRkFRSXRlbXMnLAogICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmVmcmVzaCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcuTWFzdGVyQWN0aW9uLkludmFsaWQgdGQgZGl2OmVxKDApJykudGV4dCgpLnRyaW0oKSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBhbmQgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVFzCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFzKSB7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIGlzIHRlc3QgRkFRIG9uIHNjcmVlbgogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRyI0l0ZW1JRF8iIC4gJEZBUS0+e0l0ZW1JRH0gLiAiXy5NYXN0ZXJBY3Rpb24gdGQgZGl2IiwgJ2NzcycgKS0+Z2V0X3RleHQoKSwKICAgICAgICAgICAgICAgICRGQVEtPntGQVFUaXRsZX0sCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRLT57SXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gSUQgJEZBUS0+e0l0ZW1JRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlci4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICMgR2V0IHRlc3QgdXNlciBJRC4KICAgICAgICBteSAkVGVzdFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgTG9naW4gYXMgdGVzdCB1c2VyLgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRGQVFab29tIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRDtOYXY9Iik7CgogICAgICAgICMgVmVyaWZ5IGl0cyByaWdodCBzY3JlZW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICdIaXN0b3J5JyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRGQVFIaXN0b3J5O0l0ZW1JRD0kSXRlbUlEJyApXSIpLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIi5XaWRnZXRTaW1wbGUiKS5sZW5ndGg7JwogICAgICAgICk7CgogICAgICAgICMgVmVyaWZ5IGhpc3RvcnkgbWVzc2FnZS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkVGVzdFVzZXJMb2dpbiAoJFRlc3RVc2VyTG9naW4gJFRlc3RVc2VyTG9naW4pIiApID4gLTEsCiAgICAgICAgICAgICJIaXN0b3J5IGVudHJ5IGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsb3NlICdIaXN0b3J5JyBwb3AtdXAgd2luZG93LgogICAgICAgICRTZWxlbml1bS0+Y2xvc2UoKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBjcmVhdGVkIEZBUS4KICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgZGVsZXRlZCAtICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXRlbSBpcyBjcmVhdGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUUpvdXJuYWwgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFKb3VybmFsIik7CgogICAgICAgICMgY2hlY2sgQWdlbnRGQVFKb3VybmFsIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGhlYWQgdHIgdGgiLCAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGJvZHkgdHIgdGQiLCAnY3NzJyApOwoKICAgICAgICAjIGNoZWNrIGZvciB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJEZBUVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY2xpY2sgb24gdGVzdCBjcmVhdGVkIEZBUQogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2RpdltcQHRpdGxlPSckRkFRVGl0bGUnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgdmVyaWZ5IHdlIGFyZSBpbiBBZ2VudEZBUVpvb20gc2NyZWVuCiAgICAgICAgbXkgJFVSTEFjdGlvbiA9ICRTZWxlbml1bS0+Z2V0X2N1cnJlbnRfdXJsKCk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBpbmRleCggJFVSTEFjdGlvbiwgIkFjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRJdGVtSUQiICkgPiAtMSwKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIkxpbmsgZnJvbSBKb3VybmFsIHRvIFpvb20gdmlldyAtIHN1Y2Nlc3MiLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIG5ldyB0ZXN0IHVzZXIgYW5kIGxvZ2luIHdpdGggc3RhdHMgcGVybWlzc2lvbgogICAgICAgICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdzdGF0cycsIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUpvdXJuYWwiKTsKCiAgICAgICAgIyBGQVEgaXRlbSBpcyBjcmVhdGVkIGluIE1pc2MgY2F0ZWdvcnksIHVzZXJzIHdpdGggc3RhdHMgcGVybWlzc2lvbiBkb24ndCBzZWUgaXQKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI0VtcHR5TWVzc2FnZVNtYWxsJykudGV4dCgpLnRyaW0oKSIpLAogICAgICAgICAgICAnTm8gRkFRIEpvdXJuYWwgZGF0YSBmb3VuZCcsCiAgICAgICAgICAgICJUaGVyZSBpcyBubyBwZXJtaXNzaW9uIHRvIHNlZSBGQVEgaXRlbXMiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRTGFuZ3VhZ2Ugc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFMYW5ndWFnZSIpOwoKICAgICAgICAjIENoZWNrIGFkZCBidXR0b24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUFkZCcgKV0iKTsKCiAgICAgICAgIyBDaGVjayBBZ2VudEZBUUxhbmd1YWdlIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyBDaGVjayBFbmdsaXNoIGxhbmd1YWdlIC0gJ2VuJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJ2VuJywgJ2xpbmtfdGV4dCcgKTsKCiAgICAgICAgIyBDaGVjayBHZXJtYW4gTGFuZ3VhZ2UgLSAnZGUnLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnZGUnLCAnbGlua190ZXh0JyApOwoKICAgICAgICAjIEFkZCB0ZXN0IGxhbmd1YWdlIC0gU3BhbmlzaCAoZXMpLgogICAgICAgIG15ICRGQVFMYW5ndWFnZSA9ICdlcyc7CgogICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgJ2VzIC0gTGFuZ3VhZ2UnIGhhcyBiZWVuIGFkZGVkIGJlZm9yZS4KICAgICAgICBteSAkRXhpc3RzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VEdXBsaWNhdGVDaGVjaygKICAgICAgICAgICAgTmFtZSAgID0+ICRGQVFMYW5ndWFnZSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUFkZCcgKV0iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICBpZiAoJEV4aXN0cykgewogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRGQVFMYW5ndWFnZSk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHR5cGU9J3N1Ym1pdCddIiktPmNsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIi5EaWFsb2cuTW9kYWwuQWxlcnQiKS5sZW5ndGggJiYgJCgiI05hbWUuRXJyb3IiKS5sZW5ndGgnICk7CgogICAgICAgICAgICAjIENsb3NlIGFsZXJ0IGRpYWxvZy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGlhbG9nQnV0dG9uMSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICEkKCIuRGlhbG9nLk1vZGFsLkFsZXJ0IikubGVuZ3RoJyApOwoKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjTmFtZScpLmhhc0NsYXNzKCdTZXJ2ZXJFcnJvcicpIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICcxJywKICAgICAgICAgICAgICAgICdUaGlzIGxhbmd1YWdlIGFscmVhZHkgZXhpc3RzIScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdvIGJhY2sgb24gTGFuZ3VhZ2Ugb3ZlcnZpZXcgc2NyZWVuLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUxhbmd1YWdlIik7CgogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkRkFRTGFuZ3VhZ2UpOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiAkKCIuRGF0YVRhYmxlIikubGVuZ3RoJyApOwoKICAgICAgICAjIEdldCBJRCBmb3IgdGVzdCBsYW5ndWFnZS4KICAgICAgICBteSAkTGFuZ3VhZ2VJRCA9ICRGQVFPYmplY3QtPkxhbmd1YWdlTG9va3VwKAogICAgICAgICAgICBOYW1lID0+ICRGQVFMYW5ndWFnZSwKICAgICAgICApOwoKICAgICAgICAjIFZlcmlmeSB0ZXN0IEZBUSBoYXMgYmVlbiBjcmVhdGVkLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUNoYW5nZTtMYW5ndWFnZUlEPSRMYW5ndWFnZUlEIiApID4gLTEsCiAgICAgICAgICAgICJUZXN0IGxhbmd1YWdlIGlzIGNyZWF0ZWQgLSAkRkFRTGFuZ3VhZ2UiLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgYWRkZWQgJ3Rlc3QnIGxhbmd1YWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiJEZBUUxhbmd1YWdlIiwgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI05hbWUnLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgJEZBUUxhbmd1YWdlLAogICAgICAgICAgICAiU3RvcmVkIGxhbmd1YWdlIG5hbWUgJEZBUUxhbmd1YWdlIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgR28gYmFjayBvbiBMYW5ndWFnZSBvdmVydmlldyBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdDYW5jZWwnLCAnbGlua190ZXh0JyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgSWYgdGVzdCBsYW5ndWFnZSB3YXMgY3JlYXRlZCBpbiB0aGUgdGVzdCwgZGVsZXRlIGl0LgogICAgICAgIGlmICggISRFeGlzdHMgKSB7CgogICAgICAgICAgICAjIERlbGV0ZSAndGVzdCcgbGFuZ3VhZ2UuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0RlbGV0ZUxhbmd1YWdlSUQkTGFuZ3VhZ2VJRCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIiNEaWFsb2dCdXR0b24xIikubGVuZ3RoJyApOwoKICAgICAgICAgICAgIyBWZXJpZnkgZGVsZXRlIG1lc3NhZ2UuCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgbGFuZ3VhZ2U/JyApID4gLTEsCiAgICAgICAgICAgICAgICAiRGVsZXRlIG1lc3NhZ2UgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEV4ZWN1dGUgZGVsZXRlLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEaWFsb2dCdXR0b24xIiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gISQoIi5EaWFsb2cuTW9kYWwiKS5sZW5ndGgnICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwoKICAgICAgICAgICAgIyBWZXJpZnkgdGVzdCBGQVEgaGFzIGJlZW4gZGVsZXRlZC4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFnZW50RkFRTGFuZ3VhZ2U7U3ViYWN0aW9uPUNoYW5nZTtMYW5ndWFnZUlEPSRMYW5ndWFnZUlEIiApID09IC0xLAogICAgICAgICAgICAgICAgIlRlc3QgbGFuZ3VhZ2UgaXMgZGVsZXRlZCAtICRGQVFMYW5ndWFnZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgU2V0IGxpbmsgb2JqZWN0IHZpZXcgbW9kZSB0byBzaW1wbGUuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0xpbmtPYmplY3Q6OlZpZXdNb2RlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ1NpbXBsZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgRkFROjpUaXRsZVNpemUuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6VGl0bGVTaXplJywKICAgICAgICAgICAgVmFsdWUgPT4gJzUwJywKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIuCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAjIEdldCB0ZXN0IHVzZXIgSUQuCiAgICAgICAgbXkgJFRlc3RVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBGQVEgaXRlbXMuCiAgICAgICAgbXkgQEl0ZW1JRHM7CiAgICAgICAgbXkgQEZBUU51bWJlcnM7CiAgICAgICAgZm9yIG15ICRGQVEgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAnU29tZSBUZXh0JywKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICdzb21lIGtleXdvcmRzJywKICAgICAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICdTeW1wdG9tLi4uJywKICAgICAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICdQcm9ibGVtLi4uJywKICAgICAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICdTb2x1dGlvbi4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDQgICAgICA9PiAnRmllbGQ0Li4uJywKICAgICAgICAgICAgICAgIEZpZWxkNSAgICAgID0+ICdGaWVsZDUuLi4nLAogICAgICAgICAgICAgICAgRmllbGQ2ICAgICAgPT4gJ0NvbW1lbnQuLi4nLAogICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBASXRlbUlEcywgJEl0ZW1JRDsKCiAgICAgICAgICAgIG15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEZBUU51bWJlciA9ICRGQVF7TnVtYmVyfTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICJDcmVhdGVkIFRpY2tldCBJRCAkSXRlbUlEIC0gRkFRIE51bWJlciAkRkFRTnVtYmVyIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEZBUU51bWJlcnMsICRGQVFOdW1iZXI7CiAgICAgICAgfQoKICAgICAgICAjIExvZ2luIGFzIHRlc3QgdXNlci4KICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIGxpbmsgb2JqZWN0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUZBUTtTb3VyY2VLZXk9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTdWJtaXRTZWFyY2giKS5sZW5ndGg7JyApOwoKICAgICAgICAjIFNlYXJjaCBmb3Igc2Vjb25kIGNyZWF0ZWQgdGVzdCBmYXEuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi4vLypbXEBpZD0nU0VBUkNIOjpOdW1iZXInXSIpLT5zZW5kX2tleXMoICRGQVFOdW1iZXJzWzFdICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjU3VibWl0U2VhcmNoJykuY2xpY2soKTsiKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNXaWRnZXRGQVEnKS5sZW5ndGggJiYgXCQoJ2lucHV0W3ZhbHVlPSRJdGVtSURzWzFdXVt0eXBlPWNoZWNrYm94XScpLmxlbmd0aDsiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNBZGRMaW5rcyIsCiAgICAgICAgKTsKCiAgICAgICAgIyBMaW5rIGNyZWF0ZWQgdGVzdCBGQVEgaXRlbXMuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEB2YWx1ZT0nJEl0ZW1JRHNbMV0nXVtcQHR5cGU9J2NoZWNrYm94J10iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnaW5wdXRbdmFsdWU9JEl0ZW1JRHNbMV1dW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQnKS5sZW5ndGg7IgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdQYXJlbnRDaGlsZDo6VGFyZ2V0JykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gJCgiI1R5cGVJZGVudGlmaWVyIikudmFsKCkgPT09ICJQYXJlbnRDaGlsZDo6VGFyZ2V0IjsnICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0FkZExpbmtzIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIHpvb20gdmlldyBvZiBjcmVhdGVkIHRlc3QgRkFRIGl0ZW0uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kSXRlbUlEc1swXSIpOwoKICAgICAgICAjIFZlcmlmeSB0aGF0IHBhcmVudCB0ZXN0IEZBUSBpcyBsaW5rZWQgd2l0aCBjaGlsZCB0ZXN0IEZBUS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdDaGlsZCcgKSA+IC0xLAogICAgICAgICAgICAiQ2hpbGQgLSBmb3VuZCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJGOiIgLiAkRkFRTnVtYmVyc1sxXSApID4gLTEsCiAgICAgICAgICAgICJUaWNrZXROdW1iZXIgJEZBUU51bWJlcnNbMV0gLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiBjaGlsZCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRHNbMV0nICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgdGhhdCBjaGlsZCB0ZXN0IEZBUSBpcyBsaW5rZWQgd2l0aCBwYXJlbnQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnUGFyZW50JyApID4gLTEsCiAgICAgICAgICAgICJQYXJlbnQgLSBmb3VuZCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJGOiIgLiAkRkFRTnVtYmVyc1swXSApID4gLTEsCiAgICAgICAgICAgICJGQVFOdW1iZXIgJEZBUU51bWJlcnNbMF0gLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBUZXN0IEZBUSB0aXRsZSBsZW5ndGggaW4gY29tcGxleCB2aWV3IGZvciBsaW5rZWQgRkFRcy4KICAgICAgICAjIFNldCBsaW5rIG9iamVjdCB2aWV3IG1vZGUgdG8gY29tcGxleC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnTGlua09iamVjdDo6Vmlld01vZGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQ29tcGxleCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBVcGRhdGUgdGVzdCBGQVEgdGl0bGUgdG8gbW9yZSB0aGVuIDUwIGNoYXJhY3RlcnMgKHRoZXJlIGlzIDY1KS4KICAgICAgICBteSAkTG9uZ0ZBUVRpdGxlID0gJ1RoaXMgaXMgbG9uZyB0ZXN0IG15aXRlbSB0aXRsZSB3aXRoIG1vcmUgdGhlbiA1MCBjaGFyYWN0ZXJzIGluIGl0JzsKCiAgICAgICAgIyBGQVE6OlRpdGxlU2l6ZSBpcyBzZXQgdG8gNTAgYXQgdGhlIGJlZ2lubmluZyBvZiB0ZXN0LgogICAgICAgIG15ICRTaG9ydFRpdGxlID0gc3Vic3RyKCAkTG9uZ0ZBUVRpdGxlLCAwLCA0NyApIC4gIi4uLiI7CgogICAgICAgIG15ICVGQVEgPSAkRkFRT2JqZWN0LT5GQVFHZXQoCiAgICAgICAgICAgIEl0ZW1JRCAgICAgPT4gJEl0ZW1JRHNbMV0sCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVGQVEsCiAgICAgICAgICAgIFRpdGxlICA9PiAkTG9uZ0ZBUVRpdGxlLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlVwZGF0ZWQgRkFRIHRpdGxlIC0gJEl0ZW1JRHNbMV0iCiAgICAgICAgKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEZBUVpvb20gc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgIyBDaGVjayBmb3IgdXBkYXRlZCBGQVEgdGl0bGUgaW4gbGlua2VkIEZBUSBpdGVtcyBjb21wbGV4IHZpZXcgdGFibGUuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkTG9uZ0ZBUVRpdGxlICkgPiAtMSwKICAgICAgICAgICAgIiRMb25nRkFRVGl0bGUgLSBmb3VuZCBpbiBBZ2VudEZBUVpvb20gY29tcGxleCB2aWV3IG1vZGUiLAogICAgICAgICk7CgogICAgICAgICMgQ29sbGFwc2UgYWxsIEZBUSBmaWVsZHMgdG8gc2hvdyBsaW5rIHRhYmxlIGluIHRoZSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjRkFRQm9keSAuRXhwYW5kZWQgYScpLmNsaWNrKCk7IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yICJkZWZhdWx0IiB2aXNpYmxlIGNvbHVtbnMgaW4gdGhlIExpbmtlZCBGQVEgd2lkZ2V0LgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMSknKS50ZXh0KCk7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnIEZBUSMgJywKICAgICAgICAgICAgJ0RlZmF1bHQgMXN0IGNvbHVtbiBuYW1lJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoMiknKS50ZXh0KCk7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnIFRpdGxlICcsCiAgICAgICAgICAgICdEZWZhdWx0IDJuZCBjb2x1bW4gbmFtZScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjV2lkZ2V0RkFRIC5EYXRhVGFibGUgdGhlYWQgdHIgdGg6bnRoLWNoaWxkKDMpJykudGV4dCgpOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJyBTdGF0ZSAnLAogICAgICAgICAgICAnRGVmYXVsdCAzdGggY29sdW1uIG5hbWUnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOm50aC1jaGlsZCg0KScpLnRleHQoKTsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICcgQ3JlYXRlZCAnLAogICAgICAgICAgICAnRGVmYXVsdCA0dGggY29sdW1uIG5hbWUnLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDpudGgtY2hpbGQoNSknKS50ZXh0KCk7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnIExpbmtlZCBhcyAnLAogICAgICAgICAgICAnRGVmYXVsdCA1dGggY29sdW1uIG5hbWUnLAogICAgICAgICk7CgogICAgICAgICMgU2hvdyBBY3Rpb25NZW51IC0gdXN1YWxseSB0aGlzIGlzIGRvbmUgd2hlbiB1c2VyIGhvdmVycywgaG93ZXZlciBpdCdzIG5vdCBwb3NzaWJsZSB0byBzaW11bGF0ZSB0aGlzIGJlaGF2aW9yLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1dpZGdldEZBUSAuQWN0aW9uTWVudScpLnNob3coKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiBjb2x1bW4gc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgTGlua2VkIEZBUSB3aWRnZXQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdhI2xpbmtvYmplY3QtRkFRLXRvZ2dsZScsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgV2FpdCBmb3IgdGhlIGNvbXBsZXRlIHdpZGdldCB0byBiZSBmdWxseSBzbGlkZWQgaW4gYWxsIHRoZSB3YXkgZG93biB0byB0aGUgc3VibWl0IGJ1dHRvbi4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNsaW5rb2JqZWN0LUZBUV9zdWJtaXQ6dmlzaWJsZSIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBUT0RPOiByZW1vdmUgbGltaXRhdGlvbiB0byBmaXJlZm94LgogICAgICAgIGlmICggJFNlbGVuaXVtLT57YnJvd3Nlcl9uYW1lfSBlcSAnZmlyZWZveCcgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICJUT0RPOiBEcmFnQW5kRHJvcCBpcyBjdXJyZW50bHkgZGlzYWJsZWQgaW4gRmlyZWZveCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBSZW1vdmUgQXBwcm92ZWQgZnJvbSBsZWZ0IHNpZGUsIGFuZCBwdXQgaXQgdG8gdGhlIHJpZ2h0IHNpZGUuCiAgICAgICAgICAgICRTZWxlbml1bS0+RHJhZ0FuZERyb3AoCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgPT4gJyNXaWRnZXRGQVEgI0F2YWlsYWJsZUZpZWxkLWxpbmtvYmplY3QtRkFRIGxpW2RhdGEtZmllbGRuYW1lPSJBcHByb3ZlZCJdJywKICAgICAgICAgICAgICAgIFRhcmdldCAgICAgICA9PiAnI0Fzc2lnbmVkRmllbGRzLWxpbmtvYmplY3QtRkFRJywKICAgICAgICAgICAgICAgIFRhcmdldE9mZnNldCA9PiB7CiAgICAgICAgICAgICAgICAgICAgWCA9PiAxODUsCiAgICAgICAgICAgICAgICAgICAgWSA9PiAxMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFJlbW92ZSBTdGF0ZSBmcm9tIHJpZ2h0IHNpZGUsIGFuZCBwdXQgaXQgdG8gdGhlIGxlZnQgc2lkZS4KICAgICAgICAgICAgJFNlbGVuaXVtLT5EcmFnQW5kRHJvcCgKICAgICAgICAgICAgICAgIEVsZW1lbnQgICAgICA9PiAnI1dpZGdldEZBUSAjQXNzaWduZWRGaWVsZHMtbGlua29iamVjdC1GQVEgbGlbZGF0YS1maWVsZG5hbWU9IlN0YXRlIl0nLAogICAgICAgICAgICAgICAgVGFyZ2V0ICAgICAgID0+ICcjQXZhaWxhYmxlRmllbGQtbGlua29iamVjdC1GQVEnLAogICAgICAgICAgICAgICAgVGFyZ2V0T2Zmc2V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBYID0+IDE4NSwKICAgICAgICAgICAgICAgICAgICBZID0+IDEwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgU2F2ZSBuZXcgY29sdW1ucy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjbGlua29iamVjdC1GQVFfc3VibWl0JywgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgICAgICMgV2FpdCBmb3IgQUpBWC4KICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNXaWRnZXRGQVEgLkRhdGFUYWJsZTp2aXNpYmxlIikubGVuZ3RoOycKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yICJ1cGRhdGVkIiB2aXNpYmxlIGNvbHVtbnMgaW4gdGhlIExpbmtlZCBGQVEgd2lkZ2V0LgogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNXaWRnZXRGQVEgLkRhdGFUYWJsZSB0aGVhZCB0ciB0aDplcSgwKScpLnRleHQoKS50cmltKCk7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICdGQVEjJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDFzdCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOmVxKDEpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ0FwcHJvdmVkJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDJuZCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOmVxKDIpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ1RpdGxlJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDNyZCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOmVxKDMpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgJ1VwZGF0ZWQgNHRoIGNvbHVtbiBuYW1lJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI1dpZGdldEZBUSAuRGF0YVRhYmxlIHRoZWFkIHRyIHRoOmVxKDQpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ1N0YXRlJywKICAgICAgICAgICAgICAgICdVcGRhdGVkIDV0aCBjb2x1bW4gbmFtZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE5hdmlnYXRlIHRvIGxpbmsgb2JqZWN0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUZBUTtTb3VyY2VLZXk9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImRpdltkYXRhLWlkPU1hbmFnZUxpbmtzXSIpLmxlbmd0aDsnCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3JqUXVlcnlFdmVudEJvdW5kKAogICAgICAgICAgICBDU1NTZWxlY3RvciA9PiAiYVtocmVmPScjTWFuYWdlTGlua3MnXSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiAnZ28gdG8gbGluayBkZWxldGUgc2NyZWVuJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCcjTWFuYWdlTGlua3MnICldIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc10uQWN0aXZlJykubGVuZ3RoICYmIFwkKCcjRkFRIC5EYXRhVGFibGUgdHIgc3Bhbjpjb250YWlucyhcIiRTaG9ydFRpdGxlXCIpJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBsb25nIEZBUSB0aXRsZSBpbiBMaW5rRGVsZXRlIHNjcmVlbi4KICAgICAgICAjIFRoaXMgb25lIGlzIGRpc3BsYXllZCBvbiBob3Zlci4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjRkFRIC5EYXRhVGFibGUgdHIgc3Bhblt0aXRsZT1cIiRMb25nRkFRVGl0bGVcIl0nKS5sZW5ndGg7IiksCiAgICAgICAgICAgICJcInRpdGxlPSRMb25nRkFRVGl0bGVcIiAtIGZvdW5kIGluIExpbmtEZWxldGUgc2NyZWVuIC0gd2hpY2ggaXMgZGlzcGxheWVkIG9uIGhvdmVyIiwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBzaG9ydCB0aWNrZXQgdGl0bGUgaW4gTGlua0RlbGV0ZSBzY3JlZW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI0ZBUSAuRGF0YVRhYmxlIHRyIHNwYW46Y29udGFpbnMoXCIkU2hvcnRUaXRsZVwiKScpLmxlbmd0aDsiKSwKICAgICAgICAgICAgIiRTaG9ydFRpdGxlIC0gZm91bmQgaW4gTGlua0RlbGV0ZSBzY3JlZW4iLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICIjU2VsZWN0QWxsTGlua3MwIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWxlY3RBbGxMaW5rczAiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIiNGQVEgLkRhdGFUYWJsZSBpbnB1dFt0eXBlPWNoZWNrYm94XTpjaGVja2VkIikubGVuZ3RoOycgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdGl0bGU9J0RlbGV0ZSBsaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IHRpY2tldHMuCiAgICAgICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJEZWxldGUgRkFRIEl0ZW0gLSAkSXRlbUlEIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCmlmICggJFNlbGVuaXVtLT57YnJvd3Nlcl9uYW1lfSBuZSAnZmlyZWZveCcgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAxLAogICAgICAgICdQREYgdGVzdCBjdXJyZW50bHkgc3VwcG9ydHMgRmlyZWZveCBvbmx5JwogICAgKTsKICAgIHJldHVybiAxOwp9CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgICMgdGVzdCBwYXJhbXMKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKICAgICAgICBteSAkRkFRQ29tbWVudCAgPSAnU2VsZW5pdW0gQ29tbWVudCc7CgogICAgICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJ3NvbWUga2V5d29yZHMnLAogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJEZBUVByb2JsZW0sCiAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgRmllbGQ2ICAgICAgPT4gJEZBUUNvbW1lbnQsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRGQVFQcmludCBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IEZBUQogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVByaW50O0l0ZW1JRD0kSXRlbUlEIik7CgogICAgICAgICMgd2FpdCB1bnRpbCBwcmludCBzY3JlZW4gaXMgbG9hZGVkCiAgICAgICAgQUNUSVZFU0xFRVA6CiAgICAgICAgZm9yIG15ICRTZWNvbmQgKCAxIC4uIDIwICkgewogICAgICAgICAgICBpZiAoIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRQ29tbWVudCApID4gLTEsICkgewogICAgICAgICAgICAgICAgbGFzdCBBQ1RJVkVTTEVFUDsKICAgICAgICAgICAgfQogICAgICAgICAgICBzbGVlcCAxOwogICAgICAgIH0KCiAgICAgICAgbXkgQFRlc3RzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRQ29tbWVudCwKICAgICAgICAgICAgfSwKCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdC0+e0ZBUURhdGF9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e0ZBUURhdGF9IGlzIGZvdW5kIG9uIHByaW50IHNjcmVlbiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKCiAgICB9CgopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJEZBUU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwogICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICAgICBteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGdyb3VwLgogICAgICAgIG15ICRHcm91cE5hbWUgPSAiZ3JvdXAtJFJhbmRvbUlEIjsKICAgICAgICBteSAkR3JvdXBJRCAgID0gJEdyb3VwT2JqZWN0LT5Hcm91cEFkZCgKICAgICAgICAgICAgTmFtZSAgICA9PiAkR3JvdXBOYW1lLAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkR3JvdXBJRCwKICAgICAgICAgICAgIkdyb3VwSUQgJEdyb3VwSUQgLSBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIE1vZGlmeSBBZ2VudEZBUUFkZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGNvbmZpZ3VyYXRpb24gdG8gYWxsb3cgb25seSB0ZXN0IGNyZWF0ZWQgZ3JvdXAgYXMgUlcuCiAgICAgICAgIyBUZXN0IGJ1ZyMxNDA2OCBDcmVhdGVCeSBzZWxlY3Rpb24gaG9ub3IgZ3JvdXAgY29uZmlndXJhdGlvbi4KICAgICAgICBteSAlQWdlbnRGQVFBZGRNb2R1bGVDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUFkZCcsCiAgICAgICAgICAgIERlZmF1bHQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAlQWdlbnRGQVFBZGRNb2R1bGVDb25maWdVcGRhdGUgPSAleyAkQWdlbnRGQVFBZGRNb2R1bGVDb25maWd7RWZmZWN0aXZlVmFsdWV9IH07CiAgICAgICAgJEFnZW50RkFRQWRkTW9kdWxlQ29uZmlnVXBkYXRle0dyb3VwfSA9IFskR3JvdXBOYW1lXTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUFkZCcsCiAgICAgICAgICAgIFZhbHVlID0+IFwlQWdlbnRGQVFBZGRNb2R1bGVDb25maWdVcGRhdGUsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0NhdGVnb3J5JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1NvbWUgY29tbWVudCcsCiAgICAgICAgICAgIFBhcmVudElEID0+IDAsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGNyZWF0ZWQgLSBJRCAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiBbJEdyb3VwSURdLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgRHluYW1pY0ZpZWxkLgogICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgbXkgJERGVGV4dE5hbWUgICAgICAgICA9ICdUZXh0JyAuICRSYW5kb21JRDsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRERlRleHROYW1lLAogICAgICAgICAgICBMYWJlbCAgICAgID0+ICRERlRleHROYW1lLAogICAgICAgICAgICBGaWVsZE9yZGVyID0+IDk5OTAsCiAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJ1RleHQnLAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdGQVEnLAogICAgICAgICAgICBDb25maWcgICAgID0+IHsKICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUmVvcmRlciA9PiAwLAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRJRCAkRHluYW1pY0ZpZWxkSUQgaXMgY3JlYXRlZC4iCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgdGVzdCBjcmVhdGVkIER5bmFtaWNGaWVsZAogICAgICAgIG15ICRUZXh0VHlwZUR5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkREZUZXh0TmFtZSwKICAgICAgICApOwogICAgICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAjIEVuYWJsZSB0ZXN0IGNyZWF0ZWQgRHluYW1pY0ZpZWxkIG9uIEFnZW50RkFRU2VhcmNoIG92ZXJ2aWV3IHNjcmVlbi4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6T3ZlcnZpZXdTbWFsbCMjI0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICRERlRleHROYW1lID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyLgogICAgICAgIG15ICRUZXN0VXNlciA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgIG15ICRUZXN0VXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRUZXN0VXNlciwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgd2hpY2ggaXMgaW4gZ3JvdXAgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGNvbmZpZ3VyYXRpb24gYXMgUlcgaW4gQWdlbnRGQVFBZGQuCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJywgJEdyb3VwTmFtZSBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICBteSAkVGVzdFVzZXJMb2dpbklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15IEBGQVFTZWFyY2g7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgRkFRcy4KICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkVGl0bGUgKHF3KCBGQVFTZWFyY2ggRkFRQ2hhbmdlU2VhcmNoICkpIHsKICAgICAgICAgICAgZm9yICggMSAuLiA1ICkgewogICAgICAgICAgICAgICAgbXkgJEZBUVRpdGxlID0gJFRpdGxlIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFRlc3RVc2VyTG9naW5JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAiRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAlRkFRID0gKAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcHVzaCBARkFRU2VhcmNoLCBcJUZBUTsKCiAgICAgICAgICAgICAgICAjIFNldCBEeW5hbWljRmllbGQgdmFsdWUuCiAgICAgICAgICAgICAgICBteSAkREZWYWx1ZSA9ICRDb3VudCAuICdERlZhbHVlJzsKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkVGV4dFR5cGVEeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRERlZhbHVlLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgICAgICJWYWx1ZSAnJERGVmFsdWUnIGlzIHNldCBzdWNjZXNzZnVsbHkgZm9yIEZBUUlEICRJdGVtSUQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIExvZ2luIHRlc3QgdXNlci4KICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRU2VhcmNoIGZvcm0uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFTZWFyY2giKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGZvcm0gaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcjU2VhcmNoUHJvZmlsZScpLmxlbmd0aCIgKTsKCiAgICAgICAgIyBDaGVjayB0aWNrZXQgc2VhcmNoIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KFNlYXJjaFByb2ZpbGUgU2VhcmNoUHJvZmlsZU5ldyBBdHRyaWJ1dGUgUmVzdWx0Rm9ybSBTZWFyY2hGb3JtU3VibWl0KQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgQWRkIHNlYXJjaCBmaWx0ZXIgYnkgdGl0bGUgYW5kIHJ1biBpdC4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnVGl0bGUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiVGl0bGUiLCAnbmFtZScgKS0+c2VuZF9rZXlzKCdGQVEqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQXR0cmlidXRlJykudmFsKCdDYXRlZ29yeUlEcycpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQ2F0ZWdvcnlJRHMnKS52YWwoJyRDYXRlZ29yeUlEJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgQ3JlYXRlZEJ5IGFuZCB2ZXJpZnkgYnVnIzE0MDY4LgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnQ3JlYXRlZFVzZXJJRHMnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI0NyZWF0ZWRVc2VySURzIG9wdGlvblt2YWx1ZT0kVGVzdFVzZXJMb2dpbklEXScpLmxlbmd0aDsiKSwKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIiRUZXN0VXNlckxvZ2luSUQgd2hpY2ggaXMgaW4gZ3JvdXAgJEdyb3VwTmFtZSBpcyBmb3VuZCBhcyBwb3NzaWJsZSBzZWxlY3Rpb24iCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI0NyZWF0ZWRVc2VySURzIG9wdGlvblt2YWx1ZT0kVGVzdFVzZXJJRF0nKS5sZW5ndGg7IiksCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICIkVGVzdFVzZXIgd2hpY2ggaXMgaW4gbm90IGdyb3VwICRHcm91cE5hbWUgaXMgbm90IGZvdW5kIGFzIHBvc3NpYmxlIHNlbGVjdGlvbiIKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWFyY2hGb3JtU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIEFnZW50RkFRU2VhcmNoIHJlc3VsdCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgQ2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVEqJy4KICAgICAgICAjIEFsbCBGQVFzIHdpbGwgYmUgaW4gYSBzZWFyY2ggcmVzdWx0LgogICAgICAgICRDb3VudCA9IDk7CiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVEgb24gc2NyZWVuLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBWZXJpZnkgc29ydGluZyBhbmQgb3JkZXJpbmcgb2YgRkFRcy4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKFwiJENvdW50XCIpIHRkID4gYVtocmVmKj1cIkl0ZW1JRD0kRkFRLT57SXRlbUlEfVwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgaW4gY29ycmVjdCBvcmRlciAtIFNvcnRCeSA9IEZBUUlELCBPcmRlckJ5ID0gRG93bi4iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRDb3VudC0tOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayB0byBzb3J0IGFuZCBvcmRlciBieSBEeW5hbWljRmllbGQgdmFsdWVzLgogICAgICAgICMgU2VlIGJ1ZyMxMjc4MCAoaHR0cHM6Ly9idWdzLm90cnMub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc4MCkuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnU29ydEJ5PUR5bmFtaWNGaWVsZF8kREZUZXh0TmFtZScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkRkFRIChARkFRU2VhcmNoKSB7CgogICAgICAgICAgICAjIFZlcmlmeSBzb3J0aW5nIGFuZCBvcmRlcmluZyBvZiBGQVFzLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgndGJvZHkgdHI6ZXEoXCIkQ291bnRcIikgdGQgPiBhW2hyZWYqPVwiSXRlbUlEPSRGQVEtPntJdGVtSUR9XCJdJykubGVuZ3RoOyIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBpbiBjb3JyZWN0IG9yZGVyIC0gU29ydEJ5ID0gRHluYW1pY0ZpZWxkLCBPcmRlckJ5ID0gVXAuIgogICAgICAgICAgICApOwogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ZBUVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgV2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnI1NlYXJjaFByb2ZpbGUnKS5sZW5ndGgiICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiVGl0bGUiLCAgICAgICAgICAgICAnbmFtZScgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIlRpdGxlIiwgICAgICAgICAgICAgJ25hbWUnICktPnNlbmRfa2V5cygnRkFRQ2hhbmdlU2VhcmNoKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVFDaGFuZ2VTZWFyY2gqJy4KICAgICAgICAjIERlbGV0ZSB0ZXN0IEZBUXMgYWZ0ZXIgY2hlY2tpbmcuCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgIGlmICggJEZBUS0+e1R5cGV9IGVxICdGQVFDaGFuZ2VTZWFyY2gnICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVFDaGFuZ2VTZWFyY2gqIG9uIHNjcmVlbi4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgbm8gdGVzdCBGQVFTZWFyY2gqIG9uIHNjcmVlbi4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgbm90IGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVEtPntJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSBJRCAkRkFRLT57SXRlbUlEfSIsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayAnQ2hhbmdlIHNlYXJjaCBvcHRpb25zJyBidXR0b24gYWdhaW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRkFRU2VhcmNoIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGZvcm0gaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcjU2VhcmNoUHJvZmlsZScpLmxlbmd0aCIgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJUaXRsZSIsICAgICAgICAgICAgICduYW1lJyApLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiVGl0bGUiLCAgICAgICAgICAgICAnbmFtZScgKS0+c2VuZF9rZXlzKCdGQVFDaGFuZ2VTZWFyY2gqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBubyBkYXRhIG1lc3NhZ2UuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRW1wdHlNZXNzYWdlU21hbGwiLCAnY3NzJyApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ05vIEZBUSBkYXRhIGZvdW5kLicgKSA+IC0xLAogICAgICAgICAgICAiTm8gRkFRIGRhdGEgZm91bmQuIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGNhdGVnb3J5LgogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgY2F0ZWdvcnkgaXMgZGVsZXRlZCAtIElEICRDYXRlZ29yeUlEIiwKICAgICAgICApOwoKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBEZWxldGUgZ3JvdXAtdXNlciByZWxhdGlvbi4KICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIGdyb3VwX3VzZXIgV0hFUkUgZ3JvdXBfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkR3JvdXBJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiR3JvdXAtdXNlciByZWxhdGlvbiBmb3IgZ3JvdXAgSUQgJEdyb3VwSUQgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBncm91cC4KICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIGdyb3VwcyBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRHcm91cElEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJHcm91cElEICRHcm91cElEIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIER5bmFtaWNGaWVsZC4KICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUgV0hFUkUgZmllbGRfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRHluYW1pY0ZpZWxkSUQgXSwKICAgICAgICApOwogICAgICAgICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICBJRCAgICAgPT4gJER5bmFtaWNGaWVsZElELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZElEICREeW5hbWljRmllbGRJRCBpcyBkZWxldGVkLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgIG15ICRGQVFUaXRsZSAgICA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUVN5bXB0b20gID0gJ1NlbGVuaXVtIFN5bXB0b20nOwogICAgICAgIG15ICRGQVFQcm9ibGVtICA9ICdTZWxlbml1bSBQcm9ibGVtJzsKICAgICAgICBteSAkRkFRU29sdXRpb24gPSAnU2VsZW5pdW0gU29sdXRpb24nOwogICAgICAgIG15ICRGQVFDb21tZW50ICA9ICdTZWxlbml1bSBDb21tZW50JzsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBGQVEuCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICBGaWVsZDIgICAgICA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICBGaWVsZDYgICAgICA9PiAkRkFRQ29tbWVudCwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXRlbSBpcyBjcmVhdGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRGQVFab29tIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRCIpOwoKICAgICAgICAjIENoZWNrIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KE1lbnUwMDAtQmFjayBNZW51MDEwLUVkaXQgTWVudTAyMC1IaXN0b3J5IE1lbnUwMzAtUHJpbnQgTWVudTA0MC1MaW5rIE1lbnUwNTAtRGVsZXRlIEZBUUJvZHkgRkFRVm90aW5nKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgIG15ICRMaW5rVGFibGVWaWV3TW9kZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAgICAgbXkgQEZBUVdpZGdldHMgPSAoJ0ZBUSBJbmZvcm1hdGlvbicpOwoKICAgICAgICAjIE9ubHkgY2hlY2sgdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCBmb3IgdGhlIHNpbXBsZSB2aWV3IG1vZGUgaGVyZS4KICAgICAgICBpZiAoICRMaW5rVGFibGVWaWV3TW9kZSBlcSAnU2ltcGxlJyApIHsKICAgICAgICAgICAgcHVzaCBARkFRV2lkZ2V0cywgJ0xpbmtlZCBPYmplY3RzJzsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkU291cmNlIChARkFRV2lkZ2V0cykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkU291cmNlICkgPiAtMSwKICAgICAgICAgICAgICAgICJGQVEgZGF0YSBpcyBmb3VuZCBvbiBzY3JlZW4tICRTb3VyY2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBWZXJpZnkgdGVzdCBGQVEgaXMgY3JlYXRlZC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWZyYW1lICA9PiAnSWZyYW1lRkFRRmllbGQxJywKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkMicsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDMnLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkNicsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFDb21tZW50LAogICAgICAgICAgICB9LAoKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICAgICAgICAgIyBTd2l0Y2ggdG8gRkFRIHN5bXB0b20gaWZyYW1lIGFuZCB2ZXJpZnkgaXRzIHZhbHVlcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5Td2l0Y2hUb0ZyYW1lKAogICAgICAgICAgICAgICAgRnJhbWVTZWxlY3RvciA9PiAiIyRUZXN0LT57SWZyYW1lfSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFdhaXQgdG8gc3dpdGNoIG9uIGlmcmFtZS4KICAgICAgICAgICAgc2xlZXAgMjsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57RkFRRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57RkFRRGF0YX0gaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b19mcmFtZSgpOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgT1RSU0J1c2luZXNzIHBhY2thZ2UgaXMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4gU2tpcCBpZiBpdCBpcyBub3QgYXZhaWxhYmxlLgogICAgICAgIG15ICRCdXNpbmVzc0luc3RhbGxlZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoCiAgICAgICAgICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RmlsdGVyRWxlbWVudFBvc3Q6OkZBUUFnZW50UmVsYXRlZEFydGljbGVzJywKICAgICAgICAgICAgU2lsZW50ID0+IDEKICAgICAgICApOwogICAgICAgIGlmICggISRCdXNpbmVzc0luc3RhbGxlZCApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgIk9UUlNCdXNpbmVzcyBpcyBub3QgaW5zdGFsbGVkLCBza2lwIHRoaXMgdGVzdC4iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgIH0KCiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGcm9udGVuZDo6UmljaFRleHQnLAogICAgICAgICAgICBWYWx1ZSA9PiAxLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6U2VydmljZScsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnVGlja2V0OjpUeXBlJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDAsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcyMjI1F1ZXVlc0VuYWJsZWQnLAogICAgICAgICk7CgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcyMjI1Bvc2l0aW9uJywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICBteSAlQ2F0ZWdvcnkgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgRkFRIGFydGljbGVzLgogICAgICAgIG15IEBGQVFBcnRpY2xlczsKICAgICAgICBmb3IgbXkgJEl0ZW0gKHF3KHN1YmplY3QgYm9keSkpIHsKICAgICAgICAgICAgbXkgJFRpdGxlICAgPSAndGl0bGUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgbXkgJEtleXdvcmQgPSAkSXRlbSAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRJdGVtSUQgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnU3ltcHRvbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDIgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDMgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAgICAgIkZBUSBhcnRpY2xlIGlzIGNyZWF0ZWQgLSAkSXRlbUlEIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICVGQVE7CiAgICAgICAgICAgICRGQVF7SUR9ICAgICAgPSAkSXRlbUlEOwogICAgICAgICAgICAkRkFRe0tleXdvcmR9ID0gJEtleXdvcmQ7CiAgICAgICAgICAgICRGQVF7VGl0bGV9ICAgPSAkVGl0bGUgLiAiICgkQ2F0ZWdvcnl7TmFtZX0pIjsKCiAgICAgICAgICAgIHB1c2ggQEZBUUFydGljbGVzLCBcJUZBUTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50VGlja2V0UGhvbmUiKTsKCiAgICAgICAgIyBDaGVjayBwYWdlLgogICAgICAgIGZvciBteSAkSUQgKHF3KEZyb21DdXN0b21lciBDdXN0b21lcklEIERlc3QgU3ViamVjdCBSaWNoVGV4dCBzdWJtaXRSaWNoVGV4dCkpIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICBteSAkU3ViamVjdFJhbmRvbSA9ICJTdWJqZWN0IiAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJFRleHRSYW5kb20gICAgPSAiVGV4dCIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoJFN1YmplY3RSYW5kb20pOwoKICAgICAgICAjIERlZmluZSBhIHNlbGVjdG9yIHRvIHNldCB0aGUgYm9keSwgKHVzZSBSVEUgcHJpb3IgZWxlbWVudCkKICAgICAgICAjIFRPRE86IENoZWNrIHdoeSBzZW5kaW5nIHRoZSBrZXlzIHRvIHRoZSBwcmV2aW91cyBlbGVtZW50IHdvcmtzLgogICAgICAgIG15ICRTZWxlY3RvciA9IGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnU3RhbmRhcmRUZW1wbGF0ZUlEX1NlYXJjaCcgKSA+IC0xCiAgICAgICAgICAgID8gJyNTdGFuZGFyZFRlbXBsYXRlSURfU2VhcmNoJwogICAgICAgICAgICA6ICcjU3ViamVjdCc7CgogICAgICAgICMgU2V0IGJvZHkgdGV4dCBhbmQgYWRkIGEgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIHRvIHRyaWdnZXIgdGhlIEFKQVggcmVxdWVzdCBmb3IgdGhlIHJlbGF0ZWQgZmFxIGFydGljbGUuCiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuc2V0RGF0YSgnJEZBUUFydGljbGVzWzFdLT57S2V5d29yZH0nKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiBDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuZ2V0RGF0YSgpJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoIiAiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkRkFRQXJ0aWNsZXNbMV0tPntLZXl3b3JkfSApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoIlxOe1UrRTAwNH0iKTsKCiAgICAgICAgIyBXYWl0IHRoYXQgdGhlIEFKQVggbG9hZGVyIGlzIG5vIGxvbmdlciB2aXNpYmxlLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAhJCgiI0FKQVhMb2FkZXJGQVFSZWxhdGVkQXJ0aWNsZXMiKS5pcygiOnZpc2libGUiKTsnCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNGQVFSZWxhdGVkQXJ0aWNsZXMgdGFibGUiKS5sZW5ndGg7JwogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGUgZm9yIHRoZSBpbnNlcnQgdGV4dCBpbiB0aGUgYm9keS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtcQHRpdGxlPSckRkFRQXJ0aWNsZXNbMV0tPntUaXRsZX0nXSIpLAogICAgICAgICAgICAiUmVsYXRlZCBGQVEgYXJ0aWNsZSBmb3IgYm9keSAnJEZBUUFydGljbGVzWzFdLT57S2V5d29yZH0nIGlzIGZvdW5kIC0gJEZBUUFydGljbGVzWzFdLT57VGl0bGV9IgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEZBUUFydGljbGVzWzFdLT57SUR9JyldIiksCiAgICAgICAgICAgICJMaW5rIGZvciByZWxhdGVkIEZBUSBhcnRpY2xlIGlzIGZvdW5kIC0gJEZBUUFydGljbGVzWzBdLT57VGl0bGV9IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgY29ycmVjdCBwb3NpdGlvbiBvZiB3aWRnZXQuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzTGFiZWwnKS5wcmV2KCdkaXYuQ2xlYXInKS5wcmV2KCdkaXYuRmllbGQnKS5maW5kKCcjU3ViamVjdCcpLmxlbmd0aDsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICdXaWRnZXQgaXMgY29ycmVjdGx5IHBvc2l0aW9uZWQgYmVsb3cgc3ViamVjdCBmaWVsZC4nLAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHRoZSBib2R5LCB0byBoYXZlIGEgdGV4dCB3aGljaCBzaG91bGQgbm90IHJldHVybiBzb21lIHJlbGF0ZWQgZmFxIGFydGljbGUuCiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCdDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuc2V0RGF0YSgpOycpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoJ05vdGhpbmcnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCIgIik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygiXE57VStFMDA0fSIpOwoKICAgICAgICAjIFdhaXQgZm9yIEFKQVggY2FsbCBhZnRlciBjdXN0b21lciB1c2VyIHNlbGVjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgISQoIiNBSkFYTG9hZGVyRkFRUmVsYXRlZEFydGljbGVzIikuaXMoIjp2aXNpYmxlIik7JwogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAhJCgiI0ZBUVJlbGF0ZWRBcnRpY2xlcyB0YWJsZSIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMgdGFibGUnKS5sZW5ndGg7IiksCiAgICAgICAgICAgICJGb3VuZCBubyB3aWRnZXQgZm9yIHJlbGF0ZWQgRkFRIGFydGljbGUiLAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlICsgY2hlY2sgd2lkZ2V0IHBvc2l0aW9uLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkZyb250ZW5kOjpBZ2VudEZBUVJlbGF0ZWRBcnRpY2xlcyMjI1Bvc2l0aW9uJywKICAgICAgICAgICAgVmFsdWUgPT4gMiwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwoKICAgICAgICAjIFNldCBzdWJqZWN0ICsgYm9keSB0ZXh0LgogICAgICAgIHNsZWVwIDE7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygkU3ViamVjdFJhbmRvbSk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0LnNldERhdGEoJyRGQVFBcnRpY2xlc1sxXS0+e0tleXdvcmR9Jyk7Iik7CgogICAgICAgICMgQWRkIGEgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIHRvIHRyaWdnZXIgdGhlIEFKQVggcmVxdWVzdC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCIgIik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygiXE57VStFMDA0fSIpOwoKICAgICAgICAjIFdhaXQgdGhhdCB0aGUgQUpBWCBsb2FkZXIgaXMgbm8gbG9uZ2VyIHZpc2libGUuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICEkKCIjQUpBWExvYWRlckZBUVJlbGF0ZWRBcnRpY2xlcyIpLmlzKCI6dmlzaWJsZSIpOycKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0ZBUVJlbGF0ZWRBcnRpY2xlcyB0YWJsZSIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpcyB0aGUgcmVsYXRlZCBGQVEgYXJ0aWNsZSBmb3IgdGhlIGluc2VydCB0ZXh0IGluIHRoZSBib2R5LgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW1xAdGl0bGU9JyRGQVFBcnRpY2xlc1sxXS0+e1RpdGxlfSddIiksCiAgICAgICAgICAgICJSZWxhdGVkIEZBUSBhcnRpY2xlIGZvciBib2R5ICckRkFRQXJ0aWNsZXNbMV0tPntLZXl3b3JkfScgaXMgZm91bmQgLSAkRkFRQXJ0aWNsZXNbMV0tPntUaXRsZX0iCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsICdBY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kRkFRQXJ0aWNsZXNbMV0tPntJRH0nKV0iKSwKICAgICAgICAgICAgIkxpbmsgZm9yIHJlbGF0ZWQgRkFRIGFydGljbGUgaXMgZm91bmQgLSAkRkFRQXJ0aWNsZXNbMF0tPntUaXRsZX0iCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjRkFRUmVsYXRlZEFydGljbGVzTGFiZWwnKS5wcmV2KCdkaXYuQ2xlYXInKS5wcmV2KCdkaXYnKS5maW5kKCcjUmljaFRleHQnKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAnV2lkZ2V0IGlzIGNvcnJlY3RseSBwb3NpdGlvbmVkIGJlbG93IHJpY2h0ZXh0IGZpZWxkLicsCiAgICAgICAgKTsKCiAgICAgICAgIyBUZXN0IGNhc2UgZm9yIGJ1ZyMxMjkwMCAoIGh0dHBzOi8vYnVncy5vdHJzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MDAgKS4KICAgICAgICAjIENyZWF0ZSBuZXcgY2F0ZWdvcnkgd2hpY2ggaXMgc3ViY2F0ZWdvcnkgb2YgZGVmYXVsdCAnTWlzYycgY2F0ZWdvcnkuCiAgICAgICAgbXkgJFJhbmRvbUlEICAgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICdTdWJDYXRlZ29yeScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTdWJDYXRlZ29yeScsCiAgICAgICAgICAgIFBhcmVudElEID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ3VzZXJzJywKICAgICAgICApOwogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHR3byBGQVEgYXJ0aWNsZXMgaW4gTWlzYyBhbmQgdGVzdCBjcmVhdGVkIHN1YmNhdGVnb3J5LgogICAgICAgIG15IEBBcnRpY2xlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAiTWlzY0FydGljbGUgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAiU3ViQ2F0ZWdvcnlBcnRpY2xlICRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRLZXl3b3JkID0gIktleXdvcmQkUmFuZG9tSUQiOwogICAgICAgIG15IEBSZWxhdGVkRkFRQXJ0aWNsZXM7CiAgICAgICAgZm9yIG15ICRUZXN0IChAQXJ0aWNsZXMpIHsKICAgICAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRUZXN0LT57VGl0bGV9LAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJFRlc3QtPntDYXRlZ29yeUlEfSwKICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICAgICAgS2V5d29yZHMgICAgPT4gJEtleXdvcmQsCiAgICAgICAgICAgICAgICBGaWVsZDEgICAgICA9PiAnU3ltcHRvbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDIgICAgICA9PiAnUHJvYmxlbS4uLicsCiAgICAgICAgICAgICAgICBGaWVsZDMgICAgICA9PiAnU29sdXRpb24uLi4nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICAgICAiRkFRIGFydGljbGUgaW4gY2F0ZWdvcnkgJFRlc3QtPntDYXRlZ29yeUlEfSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQFJlbGF0ZWRGQVFBcnRpY2xlcywgewogICAgICAgICAgICAgICAgSUQgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIFRpdGxlID0+ICRUZXN0LT57VGl0bGV9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZFJlZnJlc2goKTsKCiAgICAgICAgIyBUeXBlIGluIHN1YmplY3Qga2V5d29yZCB0byBzaG93IHR3byBGQVEgYXJ0aWNsZXMgaW4gd2lkZ2V0IGhpbnQuCiAgICAgICAgIyBPbmUgZnJvbSAnTWlzYycgY2F0ZWdvcnkgYW5kIHNlY29uZCBvbmUgZnJvbSBzdWJjYXRlZ29yeSBvZiAnTWlzYycuCiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRLZXl3b3JkKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCJcTntVK0UwMDR9Iik7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIikubGVuZ3RoJwogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICEkKCIjQUpBWExvYWRlckZBUVJlbGF0ZWRBcnRpY2xlcyIpLmlzKCI6dmlzaWJsZSIpJwogICAgICAgICk7CgogICAgICAgIGZvciBteSAkQ2hlY2sgKEBSZWxhdGVkRkFRQXJ0aWNsZXMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAdGl0bGUsICckQ2hlY2stPntUaXRsZX0nKV0iKSwKICAgICAgICAgICAgICAgICJSZWxhdGVkIEZBUSBhcnRpY2xlIGZvciBzdWJqZWN0IGtleXdvcmQgJFJhbmRvbUlEIGlzIGZvdW5kIC0gJENoZWNrLT57VGl0bGV9IgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCAnQWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JENoZWNrLT57SUR9JyldIiksCiAgICAgICAgICAgICAgICAiTGluayBmb3IgcmVsYXRlZCBGQVEgYXJ0aWNsZSBpcyBmb3VuZCAtICRDaGVjay0+e1RpdGxlfSIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzOwogICAgICAgIGZvciBteSAkRkFRICggQEZBUUFydGljbGVzLCBAUmVsYXRlZEZBUUFydGljbGVzICkgewogICAgICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRLT57SUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSAkRkFRLT57SUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBzdWJjYXRlZ29yeS4KICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgY2F0ZWdvcnkgSUQgJFN1YkNhdGVnb3J5SUQgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICAgICAgZm9yIG15ICRDYWNoZSAocXcoRkFRIEZBUUtleXdvcmRBcnRpY2xlTGlzdCkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkQ2FjaGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkZyb250ZW5kOjpDdXN0b21lckZBUUV4cGxvcmVyIyMjU2VhcmNoUGFnZVNob3duJywKICAgICAgICAgICAgVmFsdWUgPT4gJzQwJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFFeHBsb3JlciMjI1NlYXJjaExpbWl0JywKICAgICAgICAgICAgVmFsdWUgPT4gJzIwMCcsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgIyBDcmVhdGUgRkFRIGNhdGVnb3J5LgogICAgICAgIG15ICRDYXRlZ29yeU5hbWUgPSAiQ2F0ZWdvcnlBJFJhbmRvbUlEIjsKICAgICAgICBteSAkQ2F0ZWdvcnlJRCAgID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICRDYXRlZ29yeU5hbWUsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTb21lIGNvbW1lbnQnLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAiQ2F0ZWdvcnlJRCAkQ2F0ZWdvcnlJRCBpcyBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIFNldHVwIGdyb3VwIGZvciBjYXRlZ29yeS4KICAgICAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ3VzZXJzJywKICAgICAgICApOwogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgR2V0ICdleHRlcm5hbCAoY3VzdG9tZXIpJyBzdGF0ZSBJRC4KICAgICAgICBteSAlU3RhdGVzID0gJEZBUU9iamVjdC0+U3RhdGVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICVTdGF0ZXMgPSByZXZlcnNlICVTdGF0ZXM7CgogICAgICAgIG15ICRTdGF0ZUlEID0gJFN0YXRlc3snZXh0ZXJuYWwgKGN1c3RvbWVyKSd9OwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUXMuCiAgICAgICAgbXkgQEl0ZW1zOwogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICJGQVEkQ291bnQtJFJhbmRvbUlEIjsKICAgICAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAkU3RhdGVJRCwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICJGQVFJRCAkSXRlbUlEIGlzIGNyZWF0ZWQgJEZBUVRpdGxlIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEl0ZW1zLCB7CiAgICAgICAgICAgICAgICBJdGVtSUQgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgRkFRVGl0bGUgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgUGFnZSAgICAgPT4gKCAkQ291bnQgPCA0ICkgPyAxIDogMiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBDdXN0b21lckZBUUV4cGxvcmVyIHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBDaGVjayBDdXN0b21lckZBUUV4cGxvcmVyIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyBUZXN0IGRhdGEgZm9yIGV4cGxvcmVyIHNjcmVlbi4KICAgICAgICBteSBAVGVzdHMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0ZBUSBFeHBsb3JlcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCBjcmVhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNjcmVlbkRhdGEgPT4gJ0xhdGVzdCB1cGRhdGVkIEZBUSBhcnRpY2xlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRlc3QtPntTY3JlZW5EYXRhfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntTY3JlZW5EYXRhfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENsaWNrIG9uIHRlc3QgY3JlYXRlZCBjYXRlZ29yeSwgZ28gdG8gc3ViY2F0ZWdvcnkgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiJENhdGVnb3J5TmFtZSIsICdsaW5rX3RleHQnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBPcmRlciBGQVEgaXRlbSBwZXIgRkFRSUQgYnkgRG93bi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO1NvcnRCeT1UaXRsZTtPcmRlcj1VcCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIHRlc3QgY3JlYXRlZCBGQVFzLgogICAgICAgIG15ICRJbmRleCA9IDA7CiAgICAgICAgZm9yIG15ICRUZXN0IChASXRlbXMpIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdoMzpjb250YWlucyhcIkZBUSBBcnRpY2xlc1wiKScpLmNsb3Nlc3QoJy5XaWRnZXRTaW1wbGUnKS5maW5kKCd0Ym9keSB0cjplcSgkSW5kZXgpIHRkOmVxKDEpJykudGV4dCgpLnRyaW0oKTsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJFRlc3QtPntGQVFUaXRsZX0sCiAgICAgICAgICAgICAgICAiRkFRIEFydGljbGUgJyRUZXN0LT57RkFRVGl0bGV9JyBpcyBmb3VuZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEluZGV4Kys7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIEN1c3RvbWVyRkFRRXhwbG9yZXIgc2hvdyBwYWdpbmF0aW9uIGlmIGNvbmZpZ3VyZWQgU2VhcmNoTGltaXQgaXMgcmVhY2hlZCAoc2VlIGJ1ZyMxMzg4NSkuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hQYWdlU2hvd24nLAogICAgICAgICAgICBWYWx1ZSA9PiAnMycsCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0ZBUTo6RnJvbnRlbmQ6OkN1c3RvbWVyRkFRRXhwbG9yZXIjIyNTZWFyY2hMaW1pdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICc1JywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO1NvcnRCeT1UaXRsZTtPcmRlcj1VcCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGl0ZW1zIGluIHRoZSBmaXJzdCBwYWdlLgogICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgIG15ICRJc0ZvdW5kID0gKCAkSXRlbS0+e1BhZ2V9ID09IDEgKSA/ICdpcyBmb3VuZCcgOiAnaXMgbm90IGZvdW5kJzsKICAgICAgICAgICAgbXkgJExlbmd0aCAgPSAoICRJdGVtLT57UGFnZX0gPT0gMSApID8gMSAgICAgICAgICA6IDA7CgogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2gzOmNvbnRhaW5zKFwiRkFRIEFydGljbGVzXCIpJykuY2xvc2VzdCgnLldpZGdldFNpbXBsZScpLmZpbmQoJ3RkIGFbaHJlZio9XCJBY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kSXRlbS0+e0l0ZW1JRH1cIl0nKS5sZW5ndGg7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRMZW5ndGgsCiAgICAgICAgICAgICAgICAiUGFnZSAxIC0gRkFRIEFydGljbGUgJyRJdGVtLT57RkFRVGl0bGV9JyAkSXNGb3VuZCIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgR28gdG8gc2Vjb25kIHJlc3VsdCBwYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0N1c3RvbWVyRkFRRXhwbG9yZXJQYWdlMiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBpdGVtcyBpbiB0aGUgc2Vjb25kIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJdGVtIChASXRlbXMpIHsKICAgICAgICAgICAgbXkgJElzRm91bmQgPSAoICRJdGVtLT57UGFnZX0gPT0gMiApID8gJ2lzIGZvdW5kJyA6ICdpcyBub3QgZm91bmQnOwogICAgICAgICAgICBteSAkTGVuZ3RoICA9ICggJEl0ZW0tPntQYWdlfSA9PSAyICkgPyAxICAgICAgICAgIDogMDsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnaDM6Y29udGFpbnMoXCJGQVEgQXJ0aWNsZXNcIiknKS5jbG9zZXN0KCcuV2lkZ2V0U2ltcGxlJykuZmluZCgndGQgYVtocmVmKj1cIkFjdGlvbj1DdXN0b21lckZBUVpvb207SXRlbUlEPSRJdGVtLT57SXRlbUlEfVwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJExlbmd0aCwKICAgICAgICAgICAgICAgICJQYWdlIDIgLSBGQVEgQXJ0aWNsZSAnJEl0ZW0tPntGQVFUaXRsZX0nICRJc0ZvdW5kIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBGQVEgc3ViY2F0ZWdvcmllcyBhcmUgc2hvd24gb24gQ3VzdG9tZXJGQVFFeHBsb3Jlci4gU2VlIGJ1ZyMxNDA1My4KICAgICAgICAjIENyZWF0ZSBTdWJjYXRlZ29yeS4KICAgICAgICBteSAkU3ViQ2F0ZWdvcnlOYW1lID0gIlN1YiRDYXRlZ29yeU5hbWUiOwogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEICAgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgPT4gJFN1YkNhdGVnb3J5TmFtZSwKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1N1YmNhdGVnb3J5JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gJENhdGVnb3J5SUQsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgICJTdWJDYXRlZ29yeUlEICRTdWJDYXRlZ29yeUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgU2V0dXAgZ3JvdXAgZm9yIFN1YmNhdGVnb3J5LgogICAgICAgICRHcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICBHcm91cCA9PiAndXNlcnMnLAogICAgICAgICk7CiAgICAgICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkU3ViQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiBbJEdyb3VwSURdLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgU3ViY2F0ZWdvcnkgRkFRLgogICAgICAgIG15ICRTdWJGQVFUaXRsZSA9ICJTdWJGQVEtJFJhbmRvbUlEIjsKICAgICAgICBteSAkU3ViSXRlbUlEICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRTdWJGQVFUaXRsZSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+ICRTdGF0ZUlELAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Ykl0ZW1JRCwKICAgICAgICAgICAgIlN1YmNhdGVnb3J5IGl0ZW1JRCAkU3ViSXRlbUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBDaGVjayBpZiBTdWJjYXRlZ29yeSBpcyBzaG93bi4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoXCJhW2hyZWYqPSdBY3Rpb249Q3VzdG9tZXJGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRTdWJDYXRlZ29yeUlEJ11cIikubGVuZ3RoID09IDAiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJTdWJDYXRlZ29yeUlEICRTdWJDYXRlZ29yeUlEIGluIG5vdCBmb3VuZC4iCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIkQ2F0ZWdvcnlOYW1lIiwgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIGlmIFN1YmNhdGVnb3J5IGlzIHByZXNlbnQuCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInJldHVybiBcJChcImFbaHJlZio9J0FjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5SUQ9JFN1YkNhdGVnb3J5SUQnXVwiKS50ZXh0KCkudHJpbSgpIgogICAgICAgICAgICApLAogICAgICAgICAgICAiJFN1YkNhdGVnb3J5TmFtZSIsCiAgICAgICAgICAgICJTdWJjYXRlZ29yeSAkU3ViQ2F0ZWdvcnlOYW1lIGlzIGZvdW5kLiIKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBGQVEgY2F0ZWdvcnkuCiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUlEcyAoICRDYXRlZ29yeUlELCAkU3ViQ2F0ZWdvcnlJRCApCiAgICAgICAgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkNhdGVnb3J5RGVsZXRlKAogICAgICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRHMsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ2F0ZWdvcnlJRCAkQ2F0ZWdvcnlJRHMgaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSBGQVFzLgogICAgICAgIHB1c2ggQEl0ZW1zLAogICAgICAgICAgICB7CiAgICAgICAgICAgIEl0ZW1JRCA9PiAkU3ViSXRlbUlELAogICAgICAgICAgICB9OwogICAgICAgIGZvciBteSAkRkFRIChASXRlbXMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEZBUS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJGQVFJRCAkRkFRLT57SXRlbUlEfSBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgppZiAoICRTZWxlbml1bS0+e2Jyb3dzZXJfbmFtZX0gbmUgJ2ZpcmVmb3gnICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMSwKICAgICAgICAnUERGIHRlc3QgY3VycmVudGx5IHN1cHBvcnRzIEZpcmVmb3ggb25seScKICAgICk7CiAgICByZXR1cm4gMTsKfQoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdAogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAnc29tZSBrZXl3b3JkcycsCiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICBGaWVsZDIgICAgICA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBhbmQgbG9naW4gdGVzdCBjdXN0b21lcgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBDdXN0b21lckZBUVByaW50IHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRUHJpbnQ7SXRlbUlEPSRJdGVtSUQiKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIHByaW50IHNjcmVlbiBpcyBsb2FkZWQKICAgICAgICBBQ1RJVkVTTEVFUDoKICAgICAgICBmb3IgbXkgJFNlY29uZCAoIDEgLi4gMjAgKSB7CiAgICAgICAgICAgIGlmICggaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFTb2x1dGlvbiApID4gLTEsICkgewogICAgICAgICAgICAgICAgbGFzdCBBQ1RJVkVTTEVFUDsKICAgICAgICAgICAgfQogICAgICAgICAgICBzbGVlcCAxOwogICAgICAgIH0KCiAgICAgICAgIyB0ZXN0IHBhcmFtcwogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgdGVzdCBjcmVhdGVkIEZBUSBwcmludCB2YWx1ZXMKICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdC0+e0ZBUURhdGF9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e0ZBUURhdGF9IGlzIGZvdW5kIG9uIHByaW50IHNjcmVlbiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwoKICAgIH0KCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIERpc2FibGUgY2hlY2sgb2YgZW1haWwgYWRkcmVzc2VzLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdDdXN0b21lckdyb3VwU3VwcG9ydCcsCiAgICAgICAgICAgIFZhbHVlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBGQVEgY2F0ZWdvcnkuCiAgICAgICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0NhdGVnb3J5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgICAgICAgICBDb21tZW50ICA9PiAnU2VsZW5pdW0gQ2F0ZWdvcnknLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAwLAogICAgICAgICAgICBWYWxpZElEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDYXRlZ29yeUlELAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGNyZWF0ZWQgLSAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdGVzdCBncm91cC4KICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKICAgICAgICBteSAkR3JvdXBJRCAgICAgPSAkR3JvdXBPYmplY3QtPkdyb3VwQWRkKAogICAgICAgICAgICBOYW1lICAgID0+ICdncm91cCcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgICAgICAgICBDb21tZW50ID0+ICdDb21tZW50IGRlc2NyaWJpbmcgdGhlIGdyb3VwJywKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgdGVzdCBGQVEgY2F0ZWdvcnkgcGVybWlzc2lvbi4KICAgICAgICAkRkFRT2JqZWN0LT5TZXRDYXRlZ29yeUdyb3VwKAogICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICBHcm91cElEcyAgID0+IFskR3JvdXBJRF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUXMuCiAgICAgICAgbXkgQEZBUVNlYXJjaDsKICAgICAgICBmb3IgbXkgJFRpdGxlIChxdyggRkFRU2VhcmNoIEZBUUNoYW5nZVNlYXJjaCApKSB7CiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIDEgLi4gNSApIHsKCiAgICAgICAgICAgICAgICAjIEFkZCB0ZXN0IEZBUS4KICAgICAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICRUaXRsZSAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgICAgICBteSAkSXRlbUlEICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+ICRDYXRlZ29yeUlELAogICAgICAgICAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSAkSXRlbUlEIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJUZBUSA9ICgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEZBUVRpdGxlID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEZBUVNlYXJjaCwgXCVGQVE7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSBhbmQgbG9naW4gdGVzdCBjdXN0b21lci4KICAgICAgICBteSAkVGVzdEN1c3RvbWVyVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJGQVFTZWFyY2ggZm9ybS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWN1c3RvbWVyLnBsP0FjdGlvbj1DdXN0b21lckZBUVNlYXJjaCIpOwoKICAgICAgICAjIENoZWNrIHRpY2tldCBzZWFyY2ggcGFnZS4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoUHJvZmlsZSBOdW1iZXIgRnVsbFRleHQgVGl0bGUgS2V5d29yZCBMYW5ndWFnZUlEcyBDYXRlZ29yeUlEcyBOb1ZvdGVTZXQgVm90ZVBvaW50CiAgICAgICAgICAgIFZvdGVTZWFyY2hUeXBlIE5vUmF0ZVNldCBSYXRlUG9pbnQgUmF0ZVNlYXJjaFR5cGUgUmF0ZVNlYXJjaCBOb1RpbWVTZXQgRGF0ZSBEYXRlUmFuZ2UKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0IEl0ZW1DcmVhdGVUaW1lUG9pbnQgSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdCBJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGgKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdGFydERheSBJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhciBJdGVtQ3JlYXRlVGltZVN0b3BNb250aCBJdGVtQ3JlYXRlVGltZVN0b3BEYXkKICAgICAgICAgICAgSXRlbUNyZWF0ZVRpbWVTdG9wWWVhciBTYXZlUHJvZmlsZSBQcm9maWwgU3VibWl0IFJlc3VsdEZvcm0pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBTZWFyY2ggRkFRIGJ5IHRpdGxlIGFuZCBydW4gaXQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCdGQVEqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIEN1c3RvbWVyRkFRU2VhcmNoIHJlc3VsdCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgQ2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVEqJycKICAgICAgICAjIFRoZXJlIGFyZSBubyB0ZXN0IEZBUXMsIHVzZXIgZG9lc24ndCBoYXZlIHBlcm1pc3Npb24gZm9yIHRlc3QgY2F0ZWdvcnkuCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgbm90IHRlc3QgRkFRIG9uIHNjcmVlbgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCB1c2VyIHBlcm1pc3Npb24gZm9yIHRlc3QgZ3JvdXAuCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckFkZCgKICAgICAgICAgICAgR0lEICAgICAgICA9PiAkR3JvdXBJRCwKICAgICAgICAgICAgVUlEICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQZXJtaXNzaW9uID0+IHsKICAgICAgICAgICAgICAgIHJvICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgbW92ZV9pbnRvID0+IDAsCiAgICAgICAgICAgICAgICBjcmVhdGUgICAgPT4gMCwKICAgICAgICAgICAgICAgIG93bmVyICAgICA9PiAwLAogICAgICAgICAgICAgICAgcHJpb3JpdHkgID0+IDAsCiAgICAgICAgICAgICAgICBydyAgICAgICAgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiR3JvdXBNZW1iZXJBZGQoKSBpcyBkb25lLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayAnQ2hhbmdlIHNlYXJjaCBvcHRpb25zJyBidXR0b24gYWdhaW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1Mb2FkUHJvZmlsZScgKV0iKQogICAgICAgICAgICAtPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICdjc3MnICktPnNlbmRfa2V5cygnRkFRKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVEgb24gc2NyZWVuLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lckZBUVNlYXJjaDtTdWJhY3Rpb249TG9hZFByb2ZpbGUnICldIikKICAgICAgICAgICAgLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgJ2NzcycgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICdjc3MnICktPnNlbmRfa2V5cygnRkFRQ2hhbmdlU2VhcmNoKicpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0NhdGVnb3J5SURzJykudmFsKCckQ2F0ZWdvcnlJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIHRlc3QgRkFRcyBzZWFyY2hlZCBieSAnRkFRQ2hhbmdlU2VhcmNoKicuCiAgICAgICAgIyBEZWxldGUgdGVzdCBGQVFzIGFmdGVyIGNoZWNraW5nLgogICAgICAgIGZvciBteSAkRkFRIChARkFRU2VhcmNoKSB7CgogICAgICAgICAgICBpZiAoICRGQVEtPntUeXBlfSBlcSAnRkFRQ2hhbmdlU2VhcmNoJyApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRlc3QgRkFRQ2hhbmdlU2VhcmNoKiBvbiBzY3JlZW4uCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUS0+e0ZBUVRpdGxlfSApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgbm8gdGVzdCBGQVFTZWFyY2gqIG9uIHNjcmVlbi4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gaXMgbm90IGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVEtPntJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiRkFRIGlzIGRlbGV0ZWQgLSBJRCAkRkFRLT57SXRlbUlEfSIsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayAnQ2hhbmdlIHNlYXJjaCBvcHRpb25zJyBidXR0b24gYWdhaW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoO1N1YmFjdGlvbj1Mb2FkUHJvZmlsZScgKV0iKQogICAgICAgICAgICAtPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAnY3NzJyApLT5zZW5kX2tleXMoICRIZWxwZXItPkdldFJhbmRvbUlEKCkgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJtaXQiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgbm8gZGF0YSBtZXNzYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0VtcHR5TWVzc2FnZSIsICdjc3MnICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnTm8gRkFRIGRhdGEgZm91bmQuJyApID4gLTEsCiAgICAgICAgICAgICJObyBGQVEgZGF0YSBmb3VuZC4iLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEgY2F0ZWdvcnkuCiAgICAgICAgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRkFRIGNhdGVnb3J5IGlzIGRlbGV0ZWQgLSBJRCAkQ2F0ZWdvcnlJRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgRkFRLgogICAgICAgIG15ICRGQVFUaXRsZSAgICA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEZBUVN5bXB0b20gID0gJ1NlbGVuaXVtIFN5bXB0b20nOwogICAgICAgIG15ICRGQVFQcm9ibGVtICA9ICdTZWxlbml1bSBQcm9ibGVtJzsKICAgICAgICBteSAkRkFRU29sdXRpb24gPSAnU2VsZW5pdW0gU29sdXRpb24nOwoKICAgICAgICBteSAkSXRlbUlEID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDEsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICdTZWxlbml1bUtleXdvcmRzJywKICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIEZpZWxkMiAgICAgID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICBGaWVsZDMgICAgICA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIGFuZCBsb2dpbiB0ZXN0IGN1c3RvbWVyLgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBDdXN0b21lckZBUVpvb20gc2NyZWVuIG9mIGNyZWF0ZWQgdGVzdCBGQVEuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kSXRlbUlEIik7CgogICAgICAgICMgQ2hlY2sgcGFnZS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdGQVEgSW5mb3JtYXRpb24nICkgPiAtMSwKICAgICAgICAgICAgIkZBUSBkYXRhIGlzIGZvdW5kIG9uIHNjcmVlbiAtIEZBUSBJbmZvcm1hdGlvbiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBWZXJpZnkgdGVzdCBGQVEgaXMgY3JlYXRlZC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWZyYW1lICA9PiAnSWZyYW1lRkFRRmllbGQxJywKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkMicsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDMnLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayB0ZXN0IGNyZWF0ZWQgRkFRIHZhbHVlcy4KICAgICAgICBmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICAgICAgICAgIyBTd2l0Y2ggdG8gRkFRIHN5bXB0b20gaWZyYW1lIGFuZCB2ZXJpZnkgaXRzIHZhbHVlcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5Td2l0Y2hUb0ZyYW1lKAogICAgICAgICAgICAgICAgRnJhbWVTZWxlY3RvciA9PiAiIyRUZXN0LT57SWZyYW1lfSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFdhaXQgdG8gc3dpdGNoIG9uIGlmcmFtZS4KICAgICAgICAgICAgc2xlZXAgMjsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57RkFRRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57RkFRRGF0YX0gaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b19mcmFtZSgpOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnU2VsZW5pdW1LZXl3b3JkcycgKSA+IC0xLAogICAgICAgICAgICAiRkFRICdTZWxlbml1bUtleXdvcmRzJyB2YWx1ZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdleHRlcm5hbCAoY3VzdG9tZXIpJyApID4gLTEsCiAgICAgICAgICAgICJGQVEgc3RhdGUgdmFsdWUgaXMgZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnMCBvdXQgb2YgNScgKSA+IC0xLAogICAgICAgICAgICAiRkFRIGRlZmF1bHQgdm90ZSB2YWx1ZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBWb3RlIDUgc3RhcnMgZm9yIEZBUS4KICAgICAgICBteSAkVm90ZUVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNSYXRlQnV0dG9uMTAwIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfY2hpbGRfZWxlbWVudCggJFZvdGVFbGVtZW50LCAiLlJhdGVCdXR0b24iLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcuUmF0ZUJ1dHRvbi5SYXRlQ2hlY2tlZCcpLmxlbmd0aCA9PT0gNSIgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAaWQ9J1JhdGVTdWJtaXRCdXR0b24nXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayB2b3RlIG1lc3NhZ2UuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnVGhhbmtzIGZvciB5b3VyIHZvdGUhJyApID4gLTEsCiAgICAgICAgICAgICJGQVEgdm90ZSBtZXNzYWdlIGlzIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJzUgb3V0IG9mIDUnICkgPiAtMSwKICAgICAgICAgICAgIkZBUSB2b3RlIHZhbHVlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRLgogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMSwKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdUaWNrZXQ6OlNlcnZpY2UnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ1RpY2tldDo6VHlwZScsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAwLAogICAgICAgICAgICBLZXkgICA9PiAnRkFROjpGcm9udGVuZDo6Q3VzdG9tZXJGQVFSZWxhdGVkQXJ0aWNsZXMjIyNRdWV1ZXNFbmFibGVkJywKICAgICAgICApOwoKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICBteSAlQ2F0ZWdvcnkgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeUdldCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgICAgICMgQWRkIEZBUSBhcnRpY2xlcy4KICAgICAgICBteSBARkFRQXJ0aWNsZXM7CiAgICAgICAgZm9yIG15ICRJdGVtIChxdyhzdWJqZWN0IGJvZHkpKSB7CiAgICAgICAgICAgIG15ICRUaXRsZSAgID0gJ3RpdGxlJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRLZXl3b3JkID0gJEl0ZW0gLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICAgICBteSAkSXRlbUlEICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJ1N5bXB0b20uLi4nLAogICAgICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgICAgICJGQVEgYXJ0aWNsZSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlRkFROwogICAgICAgICAgICAkRkFRe0lEfSAgICAgID0gJEl0ZW1JRDsKICAgICAgICAgICAgJEZBUXtLZXl3b3JkfSA9ICRLZXl3b3JkOwogICAgICAgICAgICAkRkFRe1RpdGxlfSAgID0gJFRpdGxlIC4gIiAoJENhdGVnb3J5e05hbWV9KSI7CgogICAgICAgICAgICBwdXNoIEBGQVFBcnRpY2xlcywgXCVGQVE7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGN1c3RvbWVyIHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IGN1c3RvbWVyIHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31jdXN0b21lci5wbD9BY3Rpb249Q3VzdG9tZXJUaWNrZXRNZXNzYWdlIik7CgogICAgICAgICMgQ2hlY2sgQ3VzdG9tZXJUaWNrZXRNZXNzYWdlIG92ZXJ2aWV3IHNjcmVlbi4KICAgICAgICBmb3IgbXkgJElEIChxdyhEZXN0IFN1YmplY3QgUmljaFRleHQgUHJpb3JpdHlJRCBzdWJtaXRSaWNoVGV4dCkpIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIHVudGlsIFJlbGF0ZWRGQVFBcnRpY2xlcyBib3ggaXMgZGlzcGxheWVkCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNGQVFSZWxhdGVkQXJ0aWNsZXM6dmlzaWJsZSIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdUeXBlIGEgc3ViamVjdCBvciB0ZXh0IHRvIGdldCBhIGxpc3Qgb2YgaGVscGZ1bCByZXNvdXJjZXMuJyApID4gLTEsCiAgICAgICAgICAgICJGb3VuZCBpbml0aWFsIG1lc3NhZ2UgZm9yIHJlbGF0ZWQgRkFRIGFydGljbGUiLAogICAgICAgICk7CgogICAgICAgIG15ICRTdWJqZWN0UmFuZG9tID0gIlN1YmplY3QiIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkVGV4dFJhbmRvbSAgICA9ICJUZXh0IiAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygkU3ViamVjdFJhbmRvbSk7CgogICAgICAgICMgU2V0IGJvZHkgdGV4dCBhbmQgYWRkIGEgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIHRvIHRyaWdnZXIgdGhlIEFKQVggcmVxdWVzdCBmb3IgdGhlIHJlbGF0ZWQgZmFxIGFydGljbGUuCiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuc2V0RGF0YSgnJEZBUUFydGljbGVzWzFdLT57S2V5d29yZH0nKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiBDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuZ2V0RGF0YSgpJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoIiAiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCJcTntVK0UwMDR9Iik7CgogICAgICAgICMgV2FpdCB0aGF0IHRoZSBoaW50IGlzIG5vIGxvbmdlciB2aXNpYmxlLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAhJCgiI0ZBUVJlbGF0ZWRBcnRpY2xlcyAuSGludCIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAjIFdhaXQgZm9yIGFqYXggY2FsbCBhZnRlciBjdXN0b21lciB1c2VyIHNlbGVjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgISQoInNwYW4uQUpBWExvYWRlcjp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgdGhlIHJlbGF0ZWQgRkFRIGFydGljbGUgZm9yIHRoZSBpbnNlcnQgdGV4dCBpbiB0aGUgYm9keS4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtcQHRpdGxlPSckRkFRQXJ0aWNsZXNbMV0tPntUaXRsZX0nXSIpLAogICAgICAgICAgICAiUmVsYXRlZCBGQVEgYXJ0aWNsZSBmb3IgYm9keSAnJEZBUUFydGljbGVzWzFdLT57S2V5d29yZH0nIGlzIGZvdW5kIC0gJEZBUUFydGljbGVzWzFdLT57VGl0bGV9IgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCAnQWN0aW9uPUN1c3RvbWVyRkFRWm9vbTtJdGVtSUQ9JEZBUUFydGljbGVzWzFdLT57SUR9JyldIiksCiAgICAgICAgICAgICJMaW5rIGZvciByZWxhdGVkIEZBUSBhcnRpY2xlIGlzIGZvdW5kIC0gJEZBUUFydGljbGVzWzBdLT57VGl0bGV9IgogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHRoZSBib2R5LCB0byBoYXZlIGEgdGV4dCB3aGljaCBzaG91bGQgbm90IHJldHVybiBzb21lIHJlbGF0ZWQgZmFxIGFydGljbGUuCiAgICAgICAgc2xlZXAgMTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCdDS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuc2V0RGF0YSgpOycpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoJ05vdGhpbmcnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJqZWN0IiwgJ2NzcycgKS0+c2VuZF9rZXlzKCIgIik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3ViamVjdCIsICdjc3MnICktPnNlbmRfa2V5cygiXE57VStFMDA0fSIpOwoKICAgICAgICAjIFdhaXQgZm9yIEFKQVggY2FsbCBhZnRlciBjdXN0b21lciB1c2VyIHNlbGVjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgISQoInNwYW4uQUpBWExvYWRlcjp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNGQVFSZWxhdGVkQXJ0aWNsZXMgLkhpbnQiKS5sZW5ndGgnCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnRm91bmQgbm8gaGVscGZ1bCByZXNvdXJjZXMgZm9yIHRoZSBzdWJqZWN0IGFuZCB0ZXh0LicgKSA+IC0xLAogICAgICAgICAgICAiRm91bmQgbWVzc2FnZSBmb3Igbm8gcmVsYXRlZCBGQVEgYXJ0aWNsZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBUZXN0IGNhc2UgZm9yIGJ1ZyMxMjkwMCAoIGh0dHBzOi8vYnVncy5vdHJzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MDAgKS4KICAgICAgICAjIENyZWF0ZSBuZXcgY2F0ZWdvcnkgd2hpY2ggaXMgc3ViY2F0ZWdvcnkgb2YgZGVmYXVsdCAnTWlzYycgY2F0ZWdvcnkuCiAgICAgICAgbXkgJFJhbmRvbUlEICAgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdWJDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICdTdWJDYXRlZ29yeScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIENvbW1lbnQgID0+ICdTdWJDYXRlZ29yeScsCiAgICAgICAgICAgIFBhcmVudElEID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ3VzZXJzJywKICAgICAgICApOwogICAgICAgICRGQVFPYmplY3QtPlNldENhdGVnb3J5R3JvdXAoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgIEdyb3VwSURzICAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHR3byBGQVEgYXJ0aWNsZXMgaW4gTWlzYyBhbmQgdGVzdCBjcmVhdGVkIHN1YmNhdGVnb3J5LgogICAgICAgIG15IEBBcnRpY2xlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAiTWlzY0FydGljbGUgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAiU3ViQ2F0ZWdvcnlBcnRpY2xlICRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEID0+ICRTdWJDYXRlZ29yeUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRLZXl3b3JkID0gIktleXdvcmQgJFJhbmRvbUlEIjsKICAgICAgICBteSBAUmVsYXRlZEZBUUFydGljbGVzOwogICAgICAgIGZvciBteSAkVGVzdCAoQEFydGljbGVzKSB7CiAgICAgICAgICAgIG15ICRJdGVtSUQgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkVGVzdC0+e1RpdGxlfSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+ICRUZXN0LT57Q2F0ZWdvcnlJRH0sCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEtleXdvcmRzICAgID0+ICRLZXl3b3JkLAogICAgICAgICAgICAgICAgRmllbGQxICAgICAgPT4gJ1N5bXB0b20uLi4nLAogICAgICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJ1Byb2JsZW0uLi4nLAogICAgICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJ1NvbHV0aW9uLi4uJywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAgICAgIkZBUSBhcnRpY2xlIGluIGNhdGVnb3J5ICRUZXN0LT57Q2F0ZWdvcnlJRH0gaXMgY3JlYXRlZCAtICRJdGVtSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBSZWxhdGVkRkFRQXJ0aWNsZXMsIHsKICAgICAgICAgICAgICAgIElEICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGVzdC0+e1RpdGxlfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgVHlwZSBpbiBzdWJqZWN0IGtleXdvcmQgdG8gc2hvdyB0d28gRkFRIGFydGljbGVzIGluIHRoZSBzaWRlIHdpZGdldCBoaW50LgogICAgICAgICMgT25lIGZyb20gJ01pc2MnIGNhdGVnb3J5IGFuZCBzZWNvbmQgb25lIGZyb20gc3ViY2F0ZWdvcnkgb2YgJ01pc2MnLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoJEtleXdvcmQpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1YmplY3QiLCAnY3NzJyApLT5zZW5kX2tleXMoIlxOe1UrRTAwNH0iKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICEkKCJzcGFuLkFKQVhMb2FkZXI6dmlzaWJsZSIpLmxlbmd0aCcKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIi5GQVFNaW5pTGlzdCBhOnZpc2libGUiKS5sZW5ndGg7JwogICAgICAgICk7CgogICAgICAgIG15ICRDb3VudCA9IHNjYWxhciBAUmVsYXRlZEZBUUFydGljbGVzOwogICAgICAgIGZvciBteSAkQ2hlY2sgKEBSZWxhdGVkRkFRQXJ0aWNsZXMpIHsKICAgICAgICAgICAgJENvdW50LS07CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLkZBUU1pbmlMaXN0IGE6ZXEoJENvdW50KScpLnRleHQoKS50cmltKCk7IiksCiAgICAgICAgICAgICAgICAkQ2hlY2stPntUaXRsZX0sCiAgICAgICAgICAgICAgICAiUmVsYXRlZCBGQVEgYXJ0aWNsZSBmb3Igc3ViamVjdCBrZXl3b3JkICRSYW5kb21JRCBpcyBmb3VuZCAtICRDaGVjay0+e1RpdGxlfSIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsICdBY3Rpb249Q3VzdG9tZXJGQVFab29tO0l0ZW1JRD0kQ2hlY2stPntJRH0nKV0iKSwKICAgICAgICAgICAgICAgICJMaW5rIGZvciByZWxhdGVkIEZBUSBhcnRpY2xlIGlzIGZvdW5kIC0gJENoZWNrLT57VGl0bGV9IgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3M7CiAgICAgICAgZm9yIG15ICRGQVEgKCBARkFRQXJ0aWNsZXMsIEBSZWxhdGVkRkFRQXJ0aWNsZXMgKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRGQVEtPntJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtICRGQVEtPntJRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBEZWxldGUgdGVzdCBjcmVhdGVkIHN1YmNhdGVnb3J5LgogICAgICAgICRTdWNjZXNzID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlEZWxldGUoCiAgICAgICAgICAgIENhdGVnb3J5SUQgPT4gJFN1YkNhdGVnb3J5SUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBjYXRlZ29yeSBJRCAkU3ViQ2F0ZWdvcnlJRCBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJENhY2hlIChxdyhGQVEgRkFRS2V5d29yZEFydGljbGVMaXN0KSkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkNsZWFuVXAoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRDYWNoZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBteSBASXRlbUlEczsKICAgICAgICBmb3IgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAgICAgIkZBUSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlRkFRID0gKAogICAgICAgICAgICAgICAgSXRlbUlEICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIEZBUVRpdGxlID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEl0ZW1JRHMsIFwlRkFROwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIFB1YmxpY0ZBUUV4cGxvcmVyIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFFeHBsb3JlciIpOwoKICAgICAgICAjIGNoZWNrIFB1YmxpY0ZBUUV4cGxvcmVyIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGhlYWQgdHIgdGgiLCAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUgdGJvZHkgdHIgdGQiLCAnY3NzJyApOwoKICAgICAgICAjIHRlc3QgZGF0YSBmb3IgZXhwbG9yZXIgc2NyZWVuCiAgICAgICAgbXkgQFRlc3RzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTY3JlZW5EYXRhID0+ICdGQVEgRXhwbG9yZXInLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTY3JlZW5EYXRhID0+ICdMYXRlc3QgY3JlYXRlZCBGQVEgYXJ0aWNsZXMnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBTY3JlZW5EYXRhID0+ICdMYXRlc3QgdXBkYXRlZCBGQVEgYXJ0aWNsZXMnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57U2NyZWVuRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57U2NyZWVuRGF0YX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNsaWNrIG9uICdNaXNjJywgZ28gb24gc3ViY2F0ZWdvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICdNaXNjJywgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIG9yZGVyIEZBUSBpdGVtIHBlciBGQVFJRCBieSBEb3duCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPTE7U29ydEJ5PUZBUUlEO09yZGVyQnk9RG93biIKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGFuZCBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUXMKICAgICAgICBmb3IgbXkgJEZBUSAoQEl0ZW1JRHMpIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVEgb24gc2NyZWVuCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVEtPntGQVFUaXRsZX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRkFRLT57SXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gJEZBUS0+e0ZBUVRpdGxlfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgppZiAoICRTZWxlbml1bS0+e2Jyb3dzZXJfbmFtZX0gbmUgJ2ZpcmVmb3gnICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMSwKICAgICAgICAnUERGIHRlc3QgY3VycmVudGx5IHN1cHBvcnRzIEZpcmVmb3ggb25seScKICAgICk7CiAgICByZXR1cm4gMTsKfQoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdAogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBGaWVsZDEgICAgICA9PiAkRkFRU3ltcHRvbSwKICAgICAgICAgICAgRmllbGQyICAgICAgPT4gJEZBUVByb2JsZW0sCiAgICAgICAgICAgIEZpZWxkMyAgICAgID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgIkZBUSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIFB1YmxpY0ZBUVByaW50IHNjcmVlbiBvZiBjcmVhdGVkIHRlc3QgRkFRCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFQcmludDtJdGVtSUQ9JEl0ZW1JRCIpOwoKICAgICAgICAjIHdhaXQgdW50aWwgcHJpbnQgc2NyZWVuIGlzIGxvYWRlZAogICAgICAgIEFDVElWRVNMRUVQOgogICAgICAgIGZvciBteSAkU2Vjb25kICggMSAuLiAyMCApIHsKICAgICAgICAgICAgaWYgKCBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVNvbHV0aW9uICkgPiAtMSwgKSB7CiAgICAgICAgICAgICAgICBsYXN0IEFDVElWRVNMRUVQOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgfQoKICAgICAgICAjIHRlc3QgcGFyYW1zCiAgICAgICAgbXkgQFRlc3RzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFTb2x1dGlvbiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGZvciB0ZXN0IGNyZWF0ZWQgRkFRIHByaW50IHZhbHVlcwogICAgICAgIGZvciBteSAkVGVzdCAoQFRlc3RzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRUZXN0LT57RkFRRGF0YX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRUZXN0LT57RkFRRGF0YX0gLSBmb3VuZCBvbiBwcmludCBzY3JlZW4iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJGQVEgaXMgY3JlYXRlZCAtICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBQdWJsaWNGQVFSU1MgY3JlYXRlZCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPmdldCgiJHtTY3JpcHRBbGlhc31wdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVJTUztUeXBlPUNyZWF0ZWQiKTsKCiAgICAgICAgIyB2ZXJpZnkgRkFRUlNTIGNyZWF0ZWQgc2NyZWVuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnRkFRIEFydGljbGVzIChuZXcgY3JlYXRlZCknICkgPiAtMSwKICAgICAgICAgICAgIkZBUVJTUyBjcmVhdGVkIHRpdGxlIGZvdW5kIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVRpdGxlICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kSXRlbUlEIiApID4gLTEsCiAgICAgICAgICAgICJGQVEgbGluayAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIFB1YmxpY0ZBUVJTUyBjaGFuZ2VkIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+Z2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRUlNTO1R5cGU9Q2hhbmdlZCIpOwoKICAgICAgICAjIHZlcmlmeSBGQVFSU1MgY2hhbmdlZCBzY3JlZW4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdGQVEgQXJ0aWNsZXMgKHJlY2VudGx5IGNoYW5nZWQpJyApID4gLTEsCiAgICAgICAgICAgICJGQVFSU1MgY2hhbmdlZCB0aXRsZSBmb3VuZCAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVRpdGxlICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIkFjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kSXRlbUlEIiApID4gLTEsCiAgICAgICAgICAgICJGQVEgbGluayAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUXMKICAgICAgICBteSBARkFRU2VhcmNoOwogICAgICAgIGZvciBteSAkVGl0bGUgKHF3KCBGQVFTZWFyY2ggRkFRQ2hhbmdlU2VhcmNoICkpIHsKCiAgICAgICAgICAgICMgYWRkIHRlc3QgRkFRCiAgICAgICAgICAgIG15ICRGQVFUaXRsZSA9ICRUaXRsZSAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAgICAgIkZBUSBpcyBjcmVhdGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlRkFRID0gKAogICAgICAgICAgICAgICAgSXRlbUlEICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIEZBUVRpdGxlID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEZBUVNlYXJjaCwgXCVGQVE7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gUHVibGljRkFRU2VhcmNoIGZvcm0KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljRkFRU2VhcmNoIik7CgogICAgICAgICMgY2hlY2sgdGlja2V0IHNlYXJjaCBwYWdlCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KE51bWJlciBGdWxsVGV4dCBUaXRsZSBLZXl3b3JkIExhbmd1YWdlSURzIENhdGVnb3J5SURzIE5vVm90ZVNldCBWb3RlUG9pbnQKICAgICAgICAgICAgVm90ZVNlYXJjaFR5cGUgTm9SYXRlU2V0IFJhdGVQb2ludCBSYXRlU2VhcmNoVHlwZSBSYXRlU2VhcmNoIE5vVGltZVNldCBEYXRlIERhdGVSYW5nZQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQgSXRlbUNyZWF0ZVRpbWVQb2ludCBJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0IEl0ZW1DcmVhdGVUaW1lU3RhcnRNb250aAogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5IEl0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyIEl0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoIEl0ZW1DcmVhdGVUaW1lU3RvcERheQogICAgICAgICAgICBJdGVtQ3JlYXRlVGltZVN0b3BZZWFyIFN1Ym1pdCBSZXN1bHRGb3JtKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgc2VhcmNoIEZBUSBieSB0aXRsZSBhbmQgcnVuIGl0CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCdGQVEqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIFB1YmxpY0ZBUVNlYXJjaCByZXN1bHQgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgY2hlY2sgdGVzdCBGQVFzIHNlYXJjaGVkIGJ5ICdGQVEqJwogICAgICAgICMgYWxsIEZBUXMgd2lsbCBiZSBpbiBhIHNlYXJjaCByZXN1bHQKICAgICAgICBmb3IgbXkgJEZBUSAoQEZBUVNlYXJjaCkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGVyZSBpcyB0ZXN0IEZBUSBvbiBzY3JlZW4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUS0+e0ZBUVRpdGxlfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJEZBUS0+e0ZBUVRpdGxlfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgJ0NoYW5nZSBzZWFyY2ggb3B0aW9ucycgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwncHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFTZWFyY2gnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNUaXRsZSIsICAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICdjc3MnICktPnNlbmRfa2V5cygnRkFRQ2hhbmdlU2VhcmNoKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBjaGVjayB0ZXN0IEZBUXMgc2VhcmNoZWQgYnkgJ0ZBUUNoYW5nZVNlYXJjaConCiAgICAgICAgZm9yIG15ICRGQVEgKEBGQVFTZWFyY2gpIHsKCiAgICAgICAgICAgIGlmICggJEZBUS0+e1R5cGV9IGVxICdGQVFDaGFuZ2VTZWFyY2gnICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgdGVzdCBGQVFDaGFuZ2VTZWFyY2gqIG9uIHNjcmVlbgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVEtPntGQVFUaXRsZX0gKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkRkFRLT57RkFRVGl0bGV9IC0gZm91bmQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIGlzIG5vIHRlc3QgRkFRU2VhcmNoKiBvbiBzY3JlZW4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRLT57RkFRVGl0bGV9ICkgPT0gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRGQVEtPntGQVFUaXRsZX0gLSBub3QgZm91bmQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayAnQ2hhbmdlIHNlYXJjaCBvcHRpb25zJyBidXR0b24gYWdhaW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdwdWJsaWMucGw/QWN0aW9uPVB1YmxpY0ZBUVNlYXJjaCcgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICdjc3MnICktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgJ2NzcycgKS0+c2VuZF9rZXlzKCAkSGVscGVyLT5HZXRSYW5kb21JRCgpICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0IiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIG5vIGRhdGEgbWVzc2FnZQogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0VtcHR5TWVzc2FnZSIsICdjc3MnICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnTm8gRkFRIGRhdGEgZm91bmQuJyApID4gLTEsCiAgICAgICAgICAgICJObyBGQVEgZGF0YSBmb3VuZC4iLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVFzCiAgICAgICAgZm9yIG15ICREZWxldGUgKEBGQVFTZWFyY2gpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJERlbGV0ZS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJGQVEgaXMgZGVsZXRlZCAtICREZWxldGUtPntGQVFUaXRsZX0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgICMgdGVzdCBwYXJhbXMKICAgICAgICBteSAkRkFRVGl0bGUgICAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRGQVFTeW1wdG9tICA9ICdTZWxlbml1bSBTeW1wdG9tJzsKICAgICAgICBteSAkRkFRUHJvYmxlbSAgPSAnU2VsZW5pdW0gUHJvYmxlbSc7CiAgICAgICAgbXkgJEZBUVNvbHV0aW9uID0gJ1NlbGVuaXVtIFNvbHV0aW9uJzsKCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAzLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBLZXl3b3JkcyAgICA9PiAnU2VsZW5pdW1LZXl3b3JkcycsCiAgICAgICAgICAgIEZpZWxkMSAgICAgID0+ICRGQVFTeW1wdG9tLAogICAgICAgICAgICBGaWVsZDIgICAgICA9PiAkRkFRUHJvYmxlbSwKICAgICAgICAgICAgRmllbGQzICAgICAgPT4gJEZBUVNvbHV0aW9uLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiRkFRIGlzIGNyZWF0ZWQgLSAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gUHVibGljRkFRWm9vbSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNGQVFab29tO0l0ZW1JRD0kSXRlbUlEIik7CgogICAgICAgICMgY2hlY2sgcGFnZQogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ0ZBUSBJbmZvcm1hdGlvbicgKSA+IC0xLAogICAgICAgICAgICAiRkFRIGRhdGEgaXMgZm91bmQgb24gc2NyZWVuIC0gRkFRIEluZm9ybWF0aW9uIiwKICAgICAgICApOwoKICAgICAgICAjIHZlcmlmeSB0ZXN0IEZBUSBpcyBjcmVhdGVkCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgIG15IEBUZXN0cyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSWZyYW1lICA9PiAnSWZyYW1lRkFRRmllbGQxJywKICAgICAgICAgICAgICAgIEZBUURhdGEgPT4gJEZBUVN5bXB0b20sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElmcmFtZSAgPT4gJ0lmcmFtZUZBUUZpZWxkMicsCiAgICAgICAgICAgICAgICBGQVFEYXRhID0+ICRGQVFQcm9ibGVtLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJZnJhbWUgID0+ICdJZnJhbWVGQVFGaWVsZDMnLAogICAgICAgICAgICAgICAgRkFRRGF0YSA9PiAkRkFRU29sdXRpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayB0ZXN0IGNyZWF0ZWQgRkFRIHZhbHVlcwogICAgICAgIGZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgICAgICAgICAjIHN3aXRjaCB0byBGQVEgc3ltcHRvbSBpZnJhbWUgYW5kIHZlcmlmeSBpdHMgdmFsdWVzCiAgICAgICAgICAgICRTZWxlbml1bS0+U3dpdGNoVG9GcmFtZSgKICAgICAgICAgICAgICAgIEZyYW1lU2VsZWN0b3IgPT4gIiMkVGVzdC0+e0lmcmFtZX0iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBXYWl0IHRvIHN3aXRjaCBvbiBpZnJhbWUuCiAgICAgICAgICAgIHNsZWVwIDI7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGVzdC0+e0ZBUURhdGF9ICkgPiAtMSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e0ZBUURhdGF9IC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b19mcmFtZSgpOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnU2VsZW5pdW1LZXl3b3JkcycgKSA+IC0xLAogICAgICAgICAgICAiRkFRICdTZWxlbml1bUtleXdvcmRzJyB2YWx1ZSAtIGZvdW5kIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ3B1YmxpYyAoYWxsKScgKSA+IC0xLAogICAgICAgICAgICAiRkFRIHN0YXRlIHZhbHVlIC0gZm91bmQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnMCBvdXQgb2YgNScgKSA+IC0xLAogICAgICAgICAgICAiRkFRIGRlZmF1bHQgdm90ZSB2YWx1ZSAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkZBUSBpcyBkZWxldGVkIC0gJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQoKKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CgpteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBTZXQgRkFRIGRhc2hib2FyZCBTeXNDb25maWcgcGFyYW0uCiAgICAgICAgbXkgQEZBUURhc2hib2FyZCA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnRGFzaGJvYXJkQmFja2VuZCMjIzAzOTgtRkFRLUxhc3RDaGFuZ2UnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdEYXNoYm9hcmRCYWNrZW5kIyMjMDM5OS1GQVEtTGFzdENyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgRkFRIGRhc2hib2FyZCBtb2R1bGVzIG9uIGRlZmF1bHQgc2V0dGluZ3MuCiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgICAgICBmb3IgbXkgJERlZmF1bHRTeXNDb25maWcgKEBGQVFEYXNoYm9hcmQpIHsKCiAgICAgICAgICAgIG15ICVTZXR0aW5nID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0dldCgKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJERlZmF1bHRTeXNDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREZWZhdWx0U3lzQ29uZmlnLT57VmFsdWV9ID0gJFNldHRpbmd7RWZmZWN0aXZlVmFsdWV9OwoKICAgICAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkRGVmYXVsdFN5c0NvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJERlZmF1bHRTeXNDb25maWctPntWYWx1ZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IEZBUS4KICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwogICAgICAgIG15ICRGQVFUaXRsZSAgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgIFRpdGxlICAgICAgID0+ICRGQVFUaXRsZSwKICAgICAgICAgICAgQ2F0ZWdvcnlJRCAgPT4gMSwKICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgQXBwcm92ZWQgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgc2NyaXB0IGFsaWFzLgogICAgICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgICAgIG15ICRTY3JpcHRBbGlhcyAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgIGZvciBteSAkVGVzdCAoQEZBUURhc2hib2FyZCkgewoKICAgICAgICAgICAgIyBEaXNhYmxlIGFsbCBkYXNoYm9hcmQgcGx1Zy1pbnMuCiAgICAgICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Rhc2hib2FyZEJhY2tlbmQnKTsKICAgICAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgICAgIFZhbGlkID0+IDAsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnRGFzaGJvYXJkQmFja2VuZCcsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBcJSRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEVuYWJsZSBGQVEgZGFzaGJvYXJkLgogICAgICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgICAgIEtleSAgID0+ICRUZXN0LT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVGVzdC0+e1ZhbHVlfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgTmF2aWdhdGUgdG8gZGFzaGJvYXJkIHNjcmVlbi4KICAgICAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnREYXNoYm9hcmQiKTsKCiAgICAgICAgICAgICMgQ2hlY2sgdGl0bGUgZm9yIHRlc3QgY3JlYXRlZCBGQVEuCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRGQVFUaXRsZSApID4gLTEsCiAgICAgICAgICAgICAgICAiVGVzdCBGQVEgdGl0bGUgaXMgZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBDaGVjayBsaW5rIGZvciB0ZXN0IGNyZWF0ZWQgRkFRLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFab29tO0l0ZW1JRD0kSXRlbUlEIiApID4gLTEsCiAgICAgICAgICAgICAgICAiVGVzdCBGQVEgbGluayBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRLgogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRSm91cm5hbCBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUUpvdXJuYWwiKTsKCiAgICAgICAgIyBjaGVjayBmb3IgSm91cm5hbCBPdmVydmlldyBjb2x1bW5zCiAgICAgICAgZm9yIG15ICRDb2x1bW5zICggJ0ZBUSMnLCAnVGl0bGUnLCAnQ2F0ZWdvcnknLCAnQWN0aW9uJywgJ1RpbWUnICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29sdW1ucyApID4gLTEsCiAgICAgICAgICAgICAgICAiQ29sdW1uICRDb2x1bW5zIGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkRkFRVGl0bGUiICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBvZiBjcmVhdGVkIEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRCIpOwoKICAgICAgICAjIGNyZWF0ZSBtZW51IG1vZHVsZSB0ZXN0IHBhcmFtcwogICAgICAgIG15IEBNZW51TW9kdWxlID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gIkVkaXQiLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICJBZ2VudEZBUUVkaXQ7SXRlbUlEPSRJdGVtSUQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gIkhpc3RvcnkiLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICJBZ2VudEZBUUhpc3Rvcnk7SXRlbUlEPSRJdGVtSUQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gIlByaW50IiwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAiQWdlbnRGQVFQcmludDtJdGVtSUQ9JEl0ZW1JRCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAiTGluayIsCiAgICAgICAgICAgICAgICBBY3Rpb24gPT4gIkFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9RkFRIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICJEZWxldGUiLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICJBZ2VudEZBUURlbGV0ZTtJdGVtSUQ9JEl0ZW1JRCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBGQVEgbWVudSBtb2R1bGVzCiAgICAgICAgZm9yIG15ICRGQVFab29tTWVudU1vZHVsZSAoQE1lbnVNb2R1bGUpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249JEZBUVpvb21NZW51TW9kdWxlLT57QWN0aW9ufScgKV0iKSwKICAgICAgICAgICAgICAgICJGQVEgbWVudSAkRkFRWm9vbU1lbnVNb2R1bGUtPntOYW1lfSBpcyBmb3VuZCIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUSBjYXRlZ29yeQogICAgICAgIG15ICRDYXRlZ29yeUlEID0gJEZBUU9iamVjdC0+Q2F0ZWdvcnlBZGQoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICdDYXRlZ29yeSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKSwKICAgICAgICAgICAgQ29tbWVudCAgPT4gJ1NlbGVuaXVtIENhdGVnb3J5JywKICAgICAgICAgICAgUGFyZW50SUQgPT4gMiwKICAgICAgICAgICAgVmFsaWRJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENhdGVnb3J5SUQsCiAgICAgICAgICAgICJGQVEgY2F0ZWdvcnkgaXMgY3JlYXRlZCAtIElEICRDYXRlZ29yeUlEIiwKICAgICAgICApOwoKICAgICAgICAjIHNldCB0ZXN0IEZBUSBjYXRlZ29yeSBwZXJtaXNzaW9uCiAgICAgICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgIEdyb3VwID0+ICd1c2VycycsCiAgICAgICAgKTsKCiAgICAgICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgR3JvdXBJRHMgICA9PiBbJEdyb3VwSURdLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgTGFuZ3VhZ2VJRCAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEl0ZW1JRCwKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRGQVFFeHBsb3JlciBzY3JlZW4gZm9yIHRlc3QgRkFRIGNhdGVnb3J5CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRGQVFFeHBsb3JlcjtDYXRlZ29yeUlEPSRDYXRlZ29yeUlEO05hdj0iKTsKCiAgICAgICAgIyBjaGVjayBvdmVydmlldyBzY3JlZW4KICAgICAgICBmb3IgbXkgJENvbHVtbnMgKCAnRkFRIycsICdUaXRsZScsICdMYW5ndWFnZScsICdTdGF0ZScsICdWYWxpZGl0eScgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb2x1bW5zICkgPiAtMSwKICAgICAgICAgICAgICAgICJDb2x1bW4gJENvbHVtbnMgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3IgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRGQVFUaXRsZSIgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRIGNhdGVnb3J5CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeURlbGV0ZSgKICAgICAgICAgICAgQ2F0ZWdvcnlJRCA9PiAkQ2F0ZWdvcnlJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiQ2F0ZWdvcnkgaXMgZGVsZXRlZCAtIElEICRDYXRlZ29yeUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgYWN0aXZhdGUgcXVpY2stc2VhcmNoIHNob3cgZm9yIGFnZW50IGludGVyZmFjZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdycsCiAgICAgICAgICAgIFZhbHVlID0+IHsgJ2ludGVybmFsJyA9PiAnaW50ZXJuYWwgKGFnZW50KScgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAyLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBjcmVhdGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudEZBUUV4cGxvcmVyIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBjaGVjayBmb3IgJ0FkdmFuY2VkIFNlYXJjaCcgYnV0dG9uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiQWN0aW9uPUFnZW50RkFRU2VhcmNoO05hdj0iICkgPiAtMSwKICAgICAgICAgICAgIkFkdmFuY2VkIFNlYXJjaCBidXR0b24gaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgc2VhcmNoIHRlc3QgY3JlYXRlZCBGQVEgaW4gcXVpY2stc2VhcmNoCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nU2VhcmNoJ10iKS0+c2VuZF9rZXlzKCRGQVFUaXRsZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1NlYXJjaCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIGNoZWNrIGZvciBxdWljay1zZWFyY2ggcmVzdWx0CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJEZBUVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkRkFRVGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBGQVEKICAgICAgICBteSAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgYWN0aXZhdGUgcXVpY2stc2VhcmNoIHNob3cgZm9yIGFnZW50IGludGVyZmFjZQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdGQVE6OkV4cGxvcmVyOjpRdWlja1NlYXJjaDo6U2hvdycsCiAgICAgICAgICAgIFZhbHVlID0+IHsgJ2V4dGVybmFsJyA9PiAnZXh0ZXJuYWwgKGN1c3RvbWVyKScgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBGQVEKICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJdGVtSUQgICA9ICRGQVFPYmplY3QtPkZBUUFkZCgKICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJEZBUVRpdGxlLAogICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICBTdGF0ZUlEICAgICA9PiAxLAogICAgICAgICAgICBMYW5ndWFnZUlEICA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBBcHByb3ZlZCAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBjcmVhdGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgYW5kIGxvZ2luIHRlc3QgY3VzdG9tZXIKICAgICAgICBteSAkVGVzdEN1c3RvbWVyVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQ3VzdG9tZXJGQVFFeHBsb3JlciBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IEZBUQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9Y3VzdG9tZXIucGw/QWN0aW9uPUN1c3RvbWVyRkFRRXhwbG9yZXIiKTsKCiAgICAgICAgIyBjaGVjayBmb3IgJ0FkdmFuY2VkIFNlYXJjaCcgYnV0dG9uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiQWN0aW9uPUN1c3RvbWVyRkFRU2VhcmNoIiApID4gLTEsCiAgICAgICAgICAgICJBZHZhbmNlZCBTZWFyY2ggYnV0dG9uIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIHNlYXJjaCB0ZXN0IGNyZWF0ZWQgRkFRIGluIHF1aWNrLXNlYXJjaAogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NlYXJjaCddIiktPnNlbmRfa2V5cygkRkFRVGl0bGUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTZWFyY2gnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBjaGVjayBmb3IgcXVpY2stc2VhcmNoIHJlc3VsdAogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRGQVFUaXRsZSIgKSA+IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgRkFRCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRkFRT2JqZWN0LT5GQVFEZWxldGUoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgZGVsZXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoIFR5cGUgPT4gIkZBUSIgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZ2V0IEZBUSBvYmplY3QKICAgICAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IEZBUQogICAgICAgIG15ICRGQVFUaXRsZSA9ICdGQVEgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEl0ZW1JRCAgID0gJEZBUU9iamVjdC0+RkFRQWRkKAogICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgIENhdGVnb3J5SUQgID0+IDEsCiAgICAgICAgICAgIFN0YXRlSUQgICAgID0+IDMsCiAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgIEFwcHJvdmVkICAgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRJdGVtSUQsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGNyZWF0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gcHVibGljIHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsPyIpOwoKICAgICAgICAjIGNoZWNrIGZvciAnQWR2YW5jZWQgU2VhcmNoJyBidXR0b24KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJBY3Rpb249UHVibGljRkFRU2VhcmNoOyIgKSA+IC0xLAogICAgICAgICAgICAiQWR2YW5jZWQgU2VhcmNoIGJ1dHRvbiBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZWFyY2ggdGVzdCBjcmVhdGVkIEZBUSBpbiBxdWljay1zZWFyY2gKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQGlkPSdTZWFyY2gnXSIpLT5zZW5kX2tleXMoJEZBUVRpdGxlKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU2VhcmNoJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgY2hlY2sgZm9yIHF1aWNrLXNlYXJjaCByZXN1bHQKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkRkFRVGl0bGUiICkgPiAtMSwKICAgICAgICAgICAgIiRGQVFUaXRsZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIEZBUQogICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+RkFRRGVsZXRlKAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJUZXN0IEZBUSBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkSXRlbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCBUeXBlID0+ICJGQVEiICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgICAgICMgQ3JlYXRlIHR3byB0ZXN0IEZBUS4KICAgICAgICBteSBASXRlbUlEczsKICAgICAgICBteSBARkFRVGl0bGVzOwogICAgICAgIGZvciBteSAkRkFRICggMSAuLiAyICkgewogICAgICAgICAgICBteSAkRkFRVGl0bGUgPSAnRkFRICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICAgICBteSAkSXRlbUlEICAgPSAkRkFRT2JqZWN0LT5GQVFBZGQoCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICA9PiAkRkFRVGl0bGUsCiAgICAgICAgICAgICAgICBDYXRlZ29yeUlEICA9PiAxLAogICAgICAgICAgICAgICAgU3RhdGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgID0+IDEsCiAgICAgICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkSXRlbUlELAogICAgICAgICAgICAgICAgIlRlc3QgRkFRIGl0ZW0gaXMgY3JlYXRlZCAtIElEICRJdGVtSUQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBASXRlbUlEcywgICAkSXRlbUlEOwogICAgICAgICAgICBwdXNoIEBGQVFUaXRsZXMsICRGQVFUaXRsZTsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIGxpbmsgb2JqZWN0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUZBUTtTb3VyY2VLZXk9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCJpbnB1dFtuYW1lPVwnU0VBUkNIOjpUaXRsZVwnXSIpLmxlbmd0aCAmJiAkKCJidXR0b25bdHlwZT1zdWJtaXRdIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIExpbmsgdHdvIHRlc3QgY3JlYXRlZCBGQVFzLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nU0VBUkNIOjpUaXRsZSddIiktPnNlbmRfa2V5cyggJEZBUVRpdGxlc1sxXSApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTZWFyY2gnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNMaW5rVGFyZ2V0S2V5cyIsCiAgICAgICAgICAgIEV2ZW50ICAgICAgID0+ICdjbGljaycsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3JqUXVlcnlFdmVudEJvdW5kKAogICAgICAgICAgICBDU1NTZWxlY3RvciA9PiAiI0xpbmtUYXJnZXRLZXlzIiwKICAgICAgICAgICAgRXZlbnQgICAgICAgPT4gJ2NoYW5nZScsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua1RhcmdldEtleXMiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIiNMaW5rVGFyZ2V0S2V5czpjaGVja2VkIikubGVuZ3RoOycgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNBZGRMaW5rcyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjQWRkTGlua3MiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRGQVFab29tIG9mIGNyZWF0ZWQgRkFRLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50RkFRWm9vbTtJdGVtSUQ9JEl0ZW1JRHNbMF0iKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRkFRVGl0bGVzWzFdICkgPiAtMSwKICAgICAgICAgICAgIlRlc3QgdGlja2V0IHRpdGxlICRGQVFUaXRsZXNbMV0gaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gbGluayBvYmplY3Qgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9RkFRO1NvdXJjZUtleT0kSXRlbUlEc1swXSIpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiZGl2W2RhdGEtaWQ9TWFuYWdlTGlua3NdIikubGVuZ3RoOycKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICJhW2hyZWY9JyNNYW5hZ2VMaW5rcyddIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBsaW5rIHJlbGF0aW9uLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJyNNYW5hZ2VMaW5rcycgKV0iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiAkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc10uQWN0aXZlIikubGVuZ3RoOycgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yalF1ZXJ5RXZlbnRCb3VuZCgKICAgICAgICAgICAgQ1NTU2VsZWN0b3IgPT4gIiNTZWxlY3RBbGxMaW5rczAiLAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlbGVjdEFsbExpbmtzMCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gJCgiI0ZBUSAuRGF0YVRhYmxlIGlucHV0W3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQiKS5sZW5ndGg7JyApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0aXRsZT0nRGVsZXRlIGxpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50RkFRWm9vbSBvZiBjcmVhdGVkIEZBUS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEZBUVpvb207SXRlbUlEPSRJdGVtSURzWzBdIik7CgogICAgICAgICMgVmVyaWZ5IHRoYXQgbGluayBoYXMgYmVlbiByZW1vdmVkLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEZBUVRpdGxlc1sxXSApID09IC0xLAogICAgICAgICAgICAiJEZBUVRpdGxlc1sxXSBpcyBub3QgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBGQVFzLgogICAgICAgIG15ICRTdWNjZXNzOwogICAgICAgIGZvciBteSAkSXRlbUlEIChASXRlbUlEcykgewogICAgICAgICAgICAkU3VjY2VzcyA9ICRGQVFPYmplY3QtPkZBUURlbGV0ZSgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiVGVzdCBGQVEgaXRlbSBpcyBkZWxldGVkIC0gSUQgJEl0ZW1JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCggVHlwZSA9PiAiRkFRIiApOwogICAgfQopOwoKMTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZwogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBDb25maXJtYXRpb25EaWFsb2cuCiAqLwpGQVEuQWdlbnQuQ29uZmlybWF0aW9uRGlhbG9nID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgRGlhbG9nRGF0YQogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICAqIEB2YXJpYWJsZQogICAgICogQHByaXZhdGUKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIHZhcmlhYmxlIHN0b3JlcyB0aGUgcGFyYW1ldGVycyB0aGF0IGFyZSBwYXNzZWQgZnJvbSB0aGUgRFRMIGFuZCBjb250YWluIGFsbCB0aGUgZGF0YSB0aGF0IHRoZSBkaWFsb2cgbmVlZHMuCiAgICAgKi8KICAgIHZhciBEaWFsb2dEYXRhID0gW107CgogICAgLyoqCiAgICAgKiBAbmFtZSBTaG93V2FpdGluZ0RpYWxvZwogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQb3NpdGlvblRvcCBwb3NpdGlvbiBvZiB0aGUgZGlhbG9nLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNob3dzIHdhaXRpbmcgZGlhbG9nIHVudGlsIHNlYXJjaCBzY3JlZW4gaXMgcmVhZHkuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFNob3dXYWl0aW5nRGlhbG9nKFBvc2l0aW9uVG9wKXsKICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygnPGRpdiBjbGFzcz0iU3BhY2luZyBDZW50ZXIiPjxzcGFuIGNsYXNzPSJBSkFYTG9hZGVyIiB0aXRsZT0iJyArIENvcmUuQ29uZmlnLkdldCgnTG9hZGluZ01zZycpICsgJyI+PC9zcGFuPjwvZGl2PicsICcnLCBQb3NpdGlvblRvcCwgJ0NlbnRlcicsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgU2hvd0NvbmZpcm1hdGlvbkRpYWxvZwogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5Db25maXJtYXRpb25EaWFsb2cKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge0Jvb2xlYW59IGZhbHNlCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzaG93cyBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgd2l0aCAyIGJ1dHRvbnM6IFllcyBhbmQgTm8uCiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dDb25maXJtYXRpb25EaWFsb2cgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgIHZhciBMb2NhbERpYWxvZ0RhdGEsCiAgICAgICAgICAgIFBvc2l0aW9uVG9wLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBCdXR0b25zOwoKICAgICAgICAvLyBnZXQgZ2xvYmFsIHNhdmVkIERpYWxvZ0RhdGEgZm9yIHRoaXMgZnVuY3Rpb24KICAgICAgICBMb2NhbERpYWxvZ0RhdGEgPSBEaWFsb2dEYXRhWyQodGhpcykuYXR0cignaWQnKV07CgogICAgICAgIC8vIGRlZmluZSB0aGUgcG9zaXRpb24gb2YgdGhlIGRpYWxvZwogICAgICAgIFBvc2l0aW9uVG9wID0gJCh3aW5kb3cpLnNjcm9sbFRvcCgpICsgKCQod2luZG93KS5oZWlnaHQoKSAqIDAuMyk7CgogICAgICAgIC8vIHNob3cgd2FpdGluZyBkaWFsb2cKICAgICAgICBTaG93V2FpdGluZ0RpYWxvZyhQb3NpdGlvblRvcCk7CgogICAgICAgIC8vIGFqYXggY2FsbCB0byB0aGUgbW9kdWxlIHRoYXQgZGVsZXRlcyB0aGUgdGVtcGxhdGUKICAgICAgICBEYXRhID0gTG9jYWxEaWFsb2dEYXRhLkRpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZzsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwgRGF0YSwgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CgogICAgICAgICAgICAvLyAnQ29uZmlybWF0aW9uJyBvcGVucyBhIGRpYWxvZyB3aXRoIDIgYnV0dG9uczogWWVzIGFuZCBObwogICAgICAgICAgICBpZiAoUmVzcG9uc2UuRGlhbG9nVHlwZSA9PT0gJ0NvbmZpcm1hdGlvbicpIHsKCiAgICAgICAgICAgICAgICAvLyBkZWZpbmUgeWVzIGFuZCBubyBidXR0b25zCiAgICAgICAgICAgICAgICBCdXR0b25zID0gW3sKICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ1llcycpLAogICAgICAgICAgICAgICAgICAgIENsYXNzOiAiUHJpbWFyeSIsCgogICAgICAgICAgICAgICAgICAgIC8vIGRlZmluZSB0aGUgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgJ1llcycgYnV0dG9uIGlzIHByZXNzZWQKICAgICAgICAgICAgICAgICAgICBGdW5jdGlvbjogZnVuY3Rpb24oKXsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGUgWWVzIGFuZCBObyBidXR0b25zIHRvIHByZXZlbnQgbXVsdGlwbGUgc3VibWl0cwogICAgICAgICAgICAgICAgICAgICAgICAkKCdkaXYuRGlhbG9nOnZpc2libGUgZGl2LkNvbnRlbnRGb290ZXIgYnV0dG9uJykuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZGlyZWN0IHRvIHRoZSBtb2R1bGUgdGhhdCBkb2VzIHRoZSBjb25maXJtZWQgYWN0aW9uIGFmdGVyIHByZXNzaW5nIHRoZSBZZXMgYnV0dG9uCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyBMb2NhbERpYWxvZ0RhdGEuQ29uZmlybWVkQWN0aW9uUXVlcnlTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgewogICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnTm8nKSwKICAgICAgICAgICAgICAgICAgICBUeXBlOiAiQ2xvc2UiCiAgICAgICAgICAgICAgICB9XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gJ01lc3NhZ2UnIG9wZW5zIGEgZGlhbG9nIHdpdGggMSBidXR0b246IE9rCiAgICAgICAgICAgIGVsc2UgaWYgKFJlc3BvbnNlLkRpYWxvZ1R5cGUgPT09ICdNZXNzYWdlJykgewoKICAgICAgICAgICAgICAgIC8vIGRlZmluZSBPayBidXR0b24KICAgICAgICAgICAgICAgIEJ1dHRvbnMgPSBbewogICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnT2snKSwKICAgICAgICAgICAgICAgICAgICBDbGFzczogIlByaW1hcnkiLAogICAgICAgICAgICAgICAgICAgIFR5cGU6ICJDbG9zZSIKICAgICAgICAgICAgICAgIH1dOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBzaG93IHRoZSBjb25maXJtYXRpb24gZGlhbG9nIHRvIGNvbmZpcm0gdGhlIGFjdGlvbgogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZyhSZXNwb25zZS5IVE1MLCBMb2NhbERpYWxvZ0RhdGEuRGlhbG9nVGl0bGUsIFBvc2l0aW9uVG9wLCAiQ2VudGVyIiwgdHJ1ZSwgQnV0dG9ucyk7CiAgICAgICAgfSwgJ2pzb24nKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdAogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5Jbml0CiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBEYXRhIC0gVGhlIGRhdGEgdGhhdCBzaG91bGQgYmUgYmluZGVkCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBiaW5kcyBhIGNsaWNrIGV2ZW50IHRvIHRoZSBkZWZpbmVkIGVsZW1lbnQKICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgSUQsCiAgICAgICAgRkFRRGF0YSA9IENvcmUuQ29uZmlnLkdldCgnRkFRRGF0YScpOwoKICAgICAgICAvLyBCaW5kaW5nIGEgY2xpY2sgZXZlbnQgdG8gdGhlIGRlZmluZWQgZWxlbWVudC4KICAgICAgICBpZiAodHlwZW9mIEZBUURhdGEgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgIGZvciAoSUQgaW4gRkFRRGF0YSkgewogICAgICAgICAgICAgICAgRGlhbG9nRGF0YVtGQVFEYXRhW0lEXS5FbGVtZW50SURdID0gRkFRRGF0YVtJRF07CiAgICAgICAgICAgICAgICAkKEZBUURhdGFbSURdLkVsZW1lbnRTZWxlY3Rvcikub24oJ2NsaWNrJywgVGFyZ2V0TlMuU2hvd0NvbmZpcm1hdGlvbkRpYWxvZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkFnZW50LkNvbmZpcm1hdGlvbkRpYWxvZyB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LkZBUQogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBGQVEuCiAqLwpGQVEuQWdlbnQuRkFRID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdAogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5GQVEKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZSB0aGUgRkFRIG1vZHVsZS4KICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBGQVFTZWFyY2hQcm9maWxlID0gQ29yZS5Db25maWcuR2V0KCdGQVFTZWFyY2hQcm9maWxlJyk7CgogICAgICAgIC8vIFByZXZlbnQgdG9vIGZhc3Qgc3VibWl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgaW50byBubyBjaGFuZ2VzIHNlbnQgdG8gc2VydmVyLAogICAgICAgIC8vIGR1ZSB0byBSVEUgdG8gdGV4dGFyZWEgZGF0YSB0cmFuc2ZlcgogICAgICAgICQoJyNGQVFTdWJtaXQnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICQoJyNGQVFTdWJtaXQnKS5jbG9zZXN0KCdmb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAgIH0sIDI1MCk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNBZ2VudEZBUVNlYXJjaCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZygnQWdlbnRGQVFTZWFyY2gnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICBpZiAoRkFRU2VhcmNoUHJvZmlsZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgJCgnI0ZBUVNlYXJjaCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIENvcmUuQWdlbnQuU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coQ29yZS5Db25maWcuR2V0KCdBY3Rpb24nKSwgRkFRU2VhcmNoUHJvZmlsZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgJCgnI1Nob3dDb250ZXh0U2V0dGluZ3NEaWFsb2cnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coJCgnI0NvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lcicpLCBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU2V0dGluZ3MiKSwgJzIwJScsICdDZW50ZXInLCB0cnVlLAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWw6IENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTdWJtaXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ1N1Ym1pdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnUHJpbWFyeScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIGlmIChDb3JlLkNvbmZpZy5HZXQoJ0FnZW50RkFRU2VhcmNoJykgPT09IDEpIHsKICAgICAgICAgICAgQ29yZS5BZ2VudC5TZWFyY2guT3BlblNlYXJjaERpYWxvZyhDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpLCBGQVFTZWFyY2hQcm9maWxlKTsKICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oRkFRLkFnZW50LkZBUSB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LlRpY2tldFpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Wm9vbS4KICovCkZBUS5BZ2VudC5GQVFab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgSWZyYW1lQXV0b0hlaWdodAogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5GQVFab29tCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkSWZyYW1lIC0gVGhlIGlmcmFtZSB3aGljaCBzaG91bGQgYmUgYXV0by1oZWlnaHRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNldCBpZnJhbWUgaGVpZ2h0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gcmVhbCBjb250ZW50IGhlaWdodCBhbmQgZGVmYXVsdCBjb25maWcgc2V0dGluZy4KICAgICAqLwogICAgVGFyZ2V0TlMuSWZyYW1lQXV0b0hlaWdodCA9IGZ1bmN0aW9uICgkSWZyYW1lKSB7CiAgICAgICAgdmFyIE5ld0hlaWdodDsKCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRJZnJhbWUpKSB7CiAgICAgICAgICAgIC8vIHNsaWdodGx5IGNoYW5nZSB0aGUgd2lkdGggb2YgdGhlIGlmcmFtZSB0byBub3QgYmUgZXhhY3RseSAxMDAlIHdpZHRoIGFueW1vcmUKICAgICAgICAgICAgLy8gdGhpcyBwcmV2ZW50cyBhIGRvdWJsZSBob3Jpem9udGFsIHNjcm9sbGJhciAoZnJvbSBpZnJhbWUgYW5kIHN1cnJvdW5kaW5nIGRpdikKICAgICAgICAgICAgJElmcmFtZS53aWR0aCgkSWZyYW1lLndpZHRoKCkgLSAyKTsKCiAgICAgICAgICAgIE5ld0hlaWdodCA9ICRJZnJhbWUuY29udGVudHMoKS5maW5kKCdib2R5JykuaGVpZ2h0KCk7CgogICAgICAgICAgICAvLyBpZiB0aGUgaUZyYW1lcyBoZWlnaHQgaXMgMCwgd2UgY29sbGFwc2UgdGhlIHdpZGdldAogICAgICAgICAgICBpZiAoTmV3SGVpZ2h0ID09PSAwKSB7CiAgICAgICAgICAgICAgICAkSWZyYW1lLmNsb3Nlc3QoJy5XaWRnZXRTaW1wbGUnKS5yZW1vdmVDbGFzcygnRXhwYW5kZWQnKS5hZGRDbGFzcygnQ29sbGFwc2VkJyk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0RGVmYXVsdCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA+IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnKSkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnRkFROjpGcm9udGVuZDo6QWdlbnRIVE1MRmllbGRIZWlnaHRNYXgnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIGRlbHRhIGZvciBzY3JvbGxiYXIKICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA+IDApIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IHBhcnNlSW50KE5ld0hlaWdodCwgMTApICsgMjU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJElmcmFtZS5oZWlnaHQoTmV3SGVpZ2h0ICsgJ3B4Jyk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuRkFRWm9vbQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplIHRoZSBGQVFab29tIG1vZHVsZS4KICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uKCkgewoKICAgICAgICAvLyBpbml0IGJyb3dzZXIgbGluayBtZXNzYWdlIGNsb3NlIGJ1dHRvbgogICAgICAgIGlmICgkKCcuRkFRTWVzc2FnZUJyb3dzZXInKS5sZW5ndGgpIHsKICAgICAgICAgICAgJCgnLkZBUU1lc3NhZ2VCcm93c2VyIGEuQ2xvc2UnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAkKCcuRkFRTWVzc2FnZUJyb3dzZXInKS5mYWRlT3V0KCJzbG93Iik7CiAgICAgICAgICAgICAgICBDb3JlLkFnZW50LlByZWZlcmVuY2VzVXBkYXRlKCdVc2VyQWdlbnREb05vdFNob3dCcm93c2VyTGlua01lc3NhZ2UnLCAxKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAgICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwICgkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ0FjdGlvbicpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5SYXRlQnV0dG9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgUmF0ZU51bWJlciA9IHBhcnNlSW50KCQodGhpcykuY2xvc2VzdCgnbGknKS5hdHRyKCdpZCcpLnJlcGxhY2UoL1JhdGVCdXR0b24vLCAnJyksIDEwKTsKICAgICAgICAgICAgJCgnI1JhdGVWYWx1ZScpLnZhbChSYXRlTnVtYmVyKTsKICAgICAgICAgICAgJCgnI1JhdGVTdWJtaXRCdXR0b24nKS5mYWRlSW4oMjUwKTsKICAgICAgICAgICAgJCgnI0ZBUVZvdGluZycpLmZpbmQoJy5SYXRlQnV0dG9uJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBJdGVtUmF0ZU51bWJlciA9IHBhcnNlSW50KCQodGhpcykuY2xvc2VzdCgnbGknKS5hdHRyKCdpZCcpLnJlcGxhY2UoL1JhdGVCdXR0b24vLCAnJyksIDEwKTsKICAgICAgICAgICAgICAgIGlmIChJdGVtUmF0ZU51bWJlciA8PSBSYXRlTnVtYmVyKSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnUmF0ZUNoZWNrZWQnKTsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdSYXRlVW5DaGVja2VkJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnUmF0ZUNoZWNrZWQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIENyZWF0ZSBldmVudHMgZm9yIEFnZW50RkFRWm9vbVNtYWxsIHNjcmVlbi4KICAgICAgICBpZiAocGFyc2VJbnQoQ29yZS5Db25maWcuR2V0KCdBZ2VudEZBUVpvb21TbWFsbCcpLCAxMCkgPT09IDEpIHsKCiAgICAgICAgICAgICQoJyNDYW5jZWwnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJyNJbnNlcnRUZXh0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIEluc2VydFRleHQgPSAxLAogICAgICAgICAgICAgICAgICAgIEluc2VydExpbmsgPSAwOwoKICAgICAgICAgICAgICAgIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlLlNldFRleHQoSW5zZXJ0VGV4dCwgSW5zZXJ0TGluayk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI0luc2VydExpbmsnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgSW5zZXJ0VGV4dCA9IDAsCiAgICAgICAgICAgICAgICAgICAgSW5zZXJ0TGluayA9IDE7CgogICAgICAgICAgICAgICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0VGV4dChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjSW5zZXJ0VGV4dEFuZExpbmsnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgSW5zZXJ0VGV4dCA9IDEsCiAgICAgICAgICAgICAgICAgICAgSW5zZXJ0TGluayA9IDE7CgogICAgICAgICAgICAgICAgRkFRLkFnZW50LlRpY2tldENvbXBvc2UuU2V0VGV4dChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjSW5zZXJ0RnVsbCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBJbnNlcnRUZXh0ID0gMSwKICAgICAgICAgICAgICAgICAgICBJbnNlcnRMaW5rID0gMDsKCiAgICAgICAgICAgICAgICBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5TZXRGdWxsRkFRKEluc2VydFRleHQsIEluc2VydExpbmspOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJyNJbnNlcnRGdWxsQW5kTGluaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBJbnNlcnRUZXh0ID0gMSwKICAgICAgICAgICAgICAgICAgICBJbnNlcnRMaW5rID0gMTsKCiAgICAgICAgICAgICAgICBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZS5TZXRGdWxsRkFRKEluc2VydFRleHQsIEluc2VydExpbmspOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIEluaXRpYWxpemUgYWxsb2NhdGlvbiBsaXN0IGZvciBsaW5rIG9iamVjdCB0YWJsZS4KICAgICAgICBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5TZXRBbGxvY2F0aW9uTGlzdCgpOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KEZBUS5BZ2VudC5GQVFab29tIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LlJlbGF0ZWRBcnRpY2xlcwogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciBGQVEuCiAqLwpGQVEuQWdlbnQuUmVsYXRlZEFydGljbGVzID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdAogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5SZWxhdGVkQXJ0aWNsZXMKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZSB0aGUgRkFRIG1vZHVsZSAoZnVuY3Rpb25hbGl0eSBmb3IgcmVsYXRlZCBhcnRpY2xlcykuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgV2lkZ2V0UG9zaXRpb24gPSBDb3JlLkNvbmZpZy5HZXQoJ0FnZW50RkFRUmVsYXRlZEFydGljbGVzUG9zaXRpb24nKSwKICAgICAgICAgICAgUXVldWVzRW5hYmxlZCAgPSBDb3JlLkNvbmZpZy5HZXQoJ0FnZW50RkFRUmVsYXRlZEFydGljbGVzUXVldWVzJyksCiAgICAgICAgICAgIExhc3REYXRhLAogICAgICAgICAgICBMYXN0UmVzcG9uc2UsCiAgICAgICAgICAgIFNsaWRlRHVyYXRpb24gID0gNDAwLAogICAgICAgICAgICBIZWxwVGV4dCAgICAgICA9IENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdUaGlzIG1pZ2h0IGJlIGhlbHBmdWwnKSwKICAgICAgICAgICAgJFdpZGdldCAgICAgICAgPSAkKCc8bGFiZWwgaWQ9IkZBUVJlbGF0ZWRBcnRpY2xlc0xhYmVsIiBmb3I9IkZBUVJlbGF0ZWRBcnRpY2xlcyI+JyArIEhlbHBUZXh0ICsgJzo8L2xhYmVsPjxkaXYgaWQ9IkZBUVJlbGF0ZWRBcnRpY2xlcyIgY2xhc3M9IkZpZWxkIiBzdHlsZT0ibWluLWhlaWdodDogMHB4OyI+PC9kaXY+PGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PicpLAogICAgICAgICAgICAkQUpBWExvYWRlciAgICA9ICQoJzxzcGFuIGlkPSJBSkFYTG9hZGVyRkFRUmVsYXRlZEFydGljbGVzIiBjbGFzcz0iQUpBWExvYWRlciI+PC9zcGFuPicpOwoKICAgICAgICAvLyBXaWRnZXQgcG9zaXRpb24gYmVsb3cgc3ViamVjdC4KICAgICAgICBpZiAoV2lkZ2V0UG9zaXRpb24gPT0gMSkgewoKICAgICAgICAgICAgJCgnI1N1YmplY3QnKQogICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAubmV4dCgpCiAgICAgICAgICAgICAgICAuYWZ0ZXIoJFdpZGdldCk7CiAgICAgICAgfQogICAgICAgIC8vIFdpZGdldCBwb3NpdGlvbiBiZWxvdyB0ZXh0LgogICAgICAgIGVsc2UgaWYgKFdpZGdldFBvc2l0aW9uID09IDIpIHsKCiAgICAgICAgICAgICQoJyNSaWNoVGV4dCcpCiAgICAgICAgICAgICAgICAucGFyZW50KCkKICAgICAgICAgICAgICAgIC5uZXh0KCkKICAgICAgICAgICAgICAgIC5hZnRlcigkV2lkZ2V0KTsKICAgICAgICB9CgogICAgICAgIC8vIEhpZGUgdGhlIHdpZGdldCBieSBkZWZhdWx0LgogICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXNMYWJlbCcpLmhpZGUoKTsKICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuaGlkZSgpOwoKICAgICAgICAvLyBDcmVhdGUgYW5kIGhpZGUgQUpBWExvYWRlci4KICAgICAgICAkKCcjU3ViamVjdCcpLmFmdGVyKCRBSkFYTG9hZGVyKTsKICAgICAgICAkQUpBWExvYWRlci5oaWRlKCk7CgogICAgICAgIENvcmUuQXBwLlN1YnNjcmliZSgnRXZlbnQuVUkuUmljaFRleHRFZGl0b3IuSW5zdGFuY2VSZWFkeScsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgJCgnI0Rlc3QnKS5vbignY2hhbmdlLlJlbGF0ZWRGQVFBcnRpY2xlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIFNlbGVjdGVkUXVldWUgPSAkKHRoaXMpLnZhbCgpLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkUXVldWVOYW1lID0gU2VsZWN0ZWRRdWV1ZS5yZXBsYWNlKC9cZCpcfFx8LT8vLCAnJyk7CgogICAgICAgICAgICAgICAgaWYgKCghUXVldWVzRW5hYmxlZC5sZW5ndGggfHwgIVNlbGVjdGVkUXVldWVOYW1lIHx8ICQuaW5BcnJheShTZWxlY3RlZFF1ZXVlTmFtZSwgUXVldWVzRW5hYmxlZCkgPiAtMSkpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCQoJyNTdWJqZWN0JykudmFsKCkgfHwgQ0tFRElUT1IuaW5zdGFuY2VzWydSaWNoVGV4dCddLmdldERhdGEoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjU3ViamVjdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFTZWxlY3RlZFF1ZXVlTmFtZSB8fCAoUXVldWVzRW5hYmxlZC5sZW5ndGggJiYgJC5pbkFycmF5KFNlbGVjdGVkUXVldWVOYW1lLCBRdWV1ZXNFbmFibGVkKSA9PSAtMSkpIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5odG1sKCkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhpZGUgbGFiZWwgKyBmaWVsZC4KICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlc0xhYmVsJykuaGlkZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLnNsaWRlVXAoU2xpZGVEdXJhdGlvbiwgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbXB0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygncGFkZGluZy10b3AnLCAnMHB4JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3NzKCdwYWRkaW5nLWJvdHRvbScsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoJyNTdWJqZWN0Jykub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHZhciBTZWxlY3RlZFF1ZXVlID0gJCgnI0Rlc3QnKS52YWwoKSwKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFF1ZXVlTmFtZSwKICAgICAgICAgICAgICAgICAgICBEYXRhOwoKICAgICAgICAgICAgICAgIGlmIChTZWxlY3RlZFF1ZXVlKSB7CiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRRdWV1ZU5hbWUgPSBTZWxlY3RlZFF1ZXVlLnJlcGxhY2UoL1xkKlx8XHwtPy8sICcnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIVF1ZXVlc0VuYWJsZWQubGVuZ3RoIHx8ICFTZWxlY3RlZFF1ZXVlTmFtZSB8fCAkLmluQXJyYXkoU2VsZWN0ZWRRdWV1ZU5hbWUsIFF1ZXVlc0VuYWJsZWQpID4gLTEpIHsKCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uOiAnQWdlbnRGQVFSZWxhdGVkQXJ0aWNsZXMnLAogICAgICAgICAgICAgICAgICAgICAgICBTdWJqZWN0OiAkKCcjU3ViamVjdCcpLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICBCb2R5OiBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10uZ2V0RGF0YSgpCiAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCFMYXN0RGF0YSB8fCBMYXN0RGF0YS5TdWJqZWN0ICE9IERhdGEuU3ViamVjdCB8fCBMYXN0RGF0YS5Cb2R5ICE9IERhdGEuQm9keSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJEFKQVhMb2FkZXIuc2hvdygpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoJyNTdWJqZWN0JykuZGF0YSgnUmVsYXRlZEZBUUFydGljbGVzWEhSJykpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjU3ViamVjdCcpLmRhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicpLmFib3J0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjU3ViamVjdCcpLnJlbW92ZURhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkKCcjU3ViamVjdCcpLmRhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicsIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLCBEYXRhLCBmdW5jdGlvbiAoUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgQW1vdW50T2xkRWxlbWVudHMgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFtb3VudE5ld0VsZW1lbnRzID0gMDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjU3ViamVjdCcpLnJlbW92ZURhdGEoJ1JlbGF0ZWRGQVFBcnRpY2xlc1hIUicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSBsYXN0IGRhdGEgdG8gZXhlY3V0ZSB0aGUgYWpheCByZXF1ZXN0IG9ubHkgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFzdERhdGEgPSBEYXRhOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKCcjRkFRUmVsYXRlZEFydGljbGVzJykubGVuZ3RoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChSZXNwb25zZSAmJiBSZXNwb25zZS5TdWNjZXNzKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNoYW5nZSB0aGUgY29udGVudCwgaWYgd2UgZ290IG5ldyBjb250ZW50LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUxhc3RSZXNwb25zZSB8fCBMYXN0UmVzcG9uc2UgIT0gUmVzcG9uc2UuQWdlbnRSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIHByZXZpb3VzIGZvdW5kIEZBUSBhcnRpY2xlcywgZG8gbm90IHN0YXJ0IHdpdGggcGFnZSBmbGlja2VyaW5nLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW5zdGVhZCB3ZSBhcmUgZ29pbmcgdG8gcmVwbGFjZSBvbmx5IHRoZSB0YWJsZSB2ZXJ5IHNtb290aGx5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKS5odG1sKCkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW1vdW50T2xkRWxlbWVudHMgPSAkKCcjRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIHRyJykubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFtb3VudE5ld0VsZW1lbnRzID0gJChSZXNwb25zZS5BZ2VudFJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcpLmZpbmQoJ3RyJykubGVuZ3RoOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IHVzZSBzbGlkZSBlZmZlY3QsIGlmIGl0IGlzIHJlYWxseSBuZWVkZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFtb3VudE9sZEVsZW1lbnRzICE9IEFtb3VudE5ld0VsZW1lbnRzKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykuc2xpZGVVcChTbGlkZUR1cmF0aW9uLCBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVtcHR5KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaHRtbChSZXNwb25zZS5BZ2VudFJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygncGFkZGluZy10b3AnLCAnM3B4JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3NzKCdwYWRkaW5nLWJvdHRvbScsICczcHgnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGlkZURvd24oU2xpZGVEdXJhdGlvbik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlc0xhYmVsJykuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCcjRkFRUmVsYXRlZEFydGljbGVzJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbXB0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaHRtbChSZXNwb25zZS5BZ2VudFJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3NzKCdwYWRkaW5nLXRvcCcsICczcHgnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygncGFkZGluZy1ib3R0b20nLCAnM3B4Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaHRtbChSZXNwb25zZS5BZ2VudFJlbGF0ZWRGQVFBcnRpY2xlc0hUTUxTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ3BhZGRpbmctdG9wJywgJzNweCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jc3MoJ3BhZGRpbmctYm90dG9tJywgJzNweCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGlkZURvd24oU2xpZGVEdXJhdGlvbiwgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXNMYWJlbCcpLnNob3coKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbWVtYmVyIGxhc3QgaHRtbCBzdHJpbmcgZnJvbSByZXNwb25zZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFzdFJlc3BvbnNlID0gUmVzcG9uc2UuQWdlbnRSZWxhdGVkRkFRQXJ0aWNsZXNIVE1MU3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhpZGUgbGFiZWwgKyBmaWVsZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlc0xhYmVsJykuaGlkZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0ZBUVJlbGF0ZWRBcnRpY2xlcycpLnNsaWRlVXAoU2xpZGVEdXJhdGlvbiwgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNGQVFSZWxhdGVkQXJ0aWNsZXMnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5lbXB0eSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNzcygncGFkZGluZy10b3AnLCAnMHB4JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY3NzKCdwYWRkaW5nLWJvdHRvbScsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZW1lbWJlciBsYXN0IGh0bWwgc3RyaW5nIChlbXB0eSkuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhc3RSZXNwb25zZSA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBsb2FkaW5nIGNsYXNzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBSkFYTG9hZGVyLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjU3ViamVjdCcpLm9uKCdwYXN0ZSBrZXlkb3duJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgICAgICB2YXIgVmFsdWUgPSAkKCcjU3ViamVjdCcpLnZhbCgpOwoKICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgb25seSB0aGUgY2hhbmdlIGV2ZW50IGZvciB0aGUgc3ViamVjdCwgaWYgc3BhY2Ugb3IgZW50ZXIgd2FzIHByZXNzZWQKICAgICAgICAgICAgICAgIGlmICgoRXZlbnQudHlwZSA9PT0gJ2tleWRvd24nICYmIChFdmVudC53aGljaCA9PSAzMiB8fCBFdmVudC53aGljaCA9PSAxMykgJiYgKFZhbHVlLmxlbmd0aCA+IDEwIHx8IENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5nZXREYXRhKCkpKSB8fCBFdmVudC50eXBlICE9PSAna2V5ZG93bicpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjU3ViamVjdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIFRoZSAiY2hhbmdlIiBldmVudCBpcyBmaXJlZCB3aGVuZXZlciBhIGNoYW5nZSBpcyBtYWRlIGluIHRoZSBlZGl0b3IuCiAgICAgICAgICAgIENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5vbigna2V5JywgZnVuY3Rpb24gKEV2ZW50KSB7CgogICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBvbmx5IHRoZSBjaGFuZ2UgZXZlbnQgZm9yIHRoZSBzdWJqZWN0LCBpZiBzcGFjZSBvciBlbnRlciB3YXMgcHJlc3NlZAogICAgICAgICAgICAgICAgaWYgKEV2ZW50LmRhdGEua2V5Q29kZSA9PSAzMiB8fCBFdmVudC5kYXRhLmtleUNvZGUgPT0gMTMpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjU3ViamVjdCcpLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8vIFRoZSAicGFzdGUiIGV2ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgcGFzdGUgaXMgbWFkZSBpbiB0aGUgZWRpdG9yLgogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10ub24oJ3Bhc3RlJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgb25seSB0aGUgY2hhbmdlIGV2ZW50IGZvciB0aGUgc3ViamVjdAogICAgICAgICAgICAgICAgJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBUaGUgImJsdXIiIGV2ZW50IGlzIGZpcmVkIHdoZW5ldmVyIGEgYmx1ciBpcyBtYWRlIGluIHRoZSBlZGl0b3IuCiAgICAgICAgICAgIENLRURJVE9SLmluc3RhbmNlc1snUmljaFRleHQnXS5vbignYmx1cicsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIG9ubHkgdGhlIGNoYW5nZSBldmVudCBmb3IgdGhlIHN1YmplY3QKICAgICAgICAgICAgICAgICQoJyNTdWJqZWN0JykudHJpZ2dlcignY2hhbmdlJyk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gVHJpZ2dlciB0aGUgJ1JlbGF0ZWRGQVFBcnRpY2xlJyBjaGFuZ2UgZXZlbnQgdG8gaGlkZS9zaG93IHRoZSByZWxhdGVkIGZhcSBhcnRpY2xlIHdpZGdldCBmb3IgdGhlIGNhc2UKICAgICAgICAgICAgLy8gIHRoYXQgdGhlIHF1ZXVlIGlzIGFscmVhZHkgc2VsZWN0ZWQgYXQgdGhlIHBhZ2UgbG9hZCBvciBzaG93IHRoZSB3aWRnZXQgYWx3YXlzIGlmIHRoZSBxdWV1ZSBzZWxlY3Rpb24gaXMgZGlzYWJsZWQuCiAgICAgICAgICAgIGlmICghJCgnI0Rlc3QnKS5sZW5ndGgpIHsKCiAgICAgICAgICAgICAgICBpZiAoJCgnI1N1YmplY3QnKS52YWwoKSB8fCBDS0VESVRPUi5pbnN0YW5jZXNbJ1JpY2hUZXh0J10uZ2V0RGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI1N1YmplY3QnKS50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICQoJyNEZXN0JykudHJpZ2dlcignY2hhbmdlLlJlbGF0ZWRGQVFBcnRpY2xlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShGQVEuQWdlbnQuUmVsYXRlZEFydGljbGVzIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkFnZW50ID0gRkFRLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkFnZW50LlRpY2tldENvbXBvc2UKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Q29tcG9zZS4KICovCkZBUS5BZ2VudC5UaWNrZXRDb21wb3NlID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdEZBUVRpY2tldENvbXBvc2UKICAgICAqIEBtZW1iZXJvZiBGQVEuQWdlbnQuVGlja2V0Q29tcG9zZQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQgVGhlIGVkaXRvcgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXRpYWxpemUgdGhlIG5lZWRlZCBzdHVmZiBmb3IgdGhlIEZBUSBmdW5jdGlvbmFsaXR5IG9mIHRoZSB0aWNrZXQgc2NyZWVucy4KICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdEZBUVRpY2tldENvbXBvc2UgPSBmdW5jdGlvbiAoJEVsZW1lbnQpIHsKCiAgICAgICAgLy8gU2VlIGJ1ZyM5MTE2OgogICAgICAgIC8vIEluIENocm9tZSBzb21ldGltZXMgdGhlIGNsaWNrIGV2ZW50IGlzIHRyaWdnZXJlZCBiZWZvcmUgdGhlIGZvY3VzIGV2ZW50CiAgICAgICAgLy8gd2UgcHJldmVudCB0aGF0IGJ5IGNoZWNraW5nIEVkaXRvckdvdEZvY3VzIGZpcnN0CiAgICAgICAgdmFyIEluc3RhbmNlTmFtZSA9ICRFbGVtZW50LmF0dHIoJ2lkJyksCiAgICAgICAgICAgIEVkaXRvckdvdEZvY3VzID0gZmFsc2U7CgogICAgICAgIGZ1bmN0aW9uIEdldEN1cnNvclBvc2l0aW9uKCkgewogICAgICAgICAgICB2YXIgRWxlbWVudCA9ICRFbGVtZW50WzBdLAogICAgICAgICAgICAgICAgUmFuZ2UsCiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UsCiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUsCiAgICAgICAgICAgICAgICBTdGFydFJhbmdlID0gMCwKICAgICAgICAgICAgICAgIEVuZFJhbmdlID0gMDsKICAgICAgICAgICAgLy8gRmlyZWZveAogICAgICAgICAgICBpZiAoRWxlbWVudC5zZWxlY3Rpb25TdGFydCkgewogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7CiAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IEVsZW1lbnQuc2VsZWN0aW9uRW5kOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIElFCiAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewogICAgICAgICAgICAgICAgUmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTsKICAgICAgICAgICAgICAgIFRleHRSYW5nZSA9IEVsZW1lbnQuY3JlYXRlVGV4dFJhbmdlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUgPSBUZXh0UmFuZ2UuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2UubW92ZVRvQm9va21hcmsoUmFuZ2UuZ2V0Qm9va21hcmsoKSk7CiAgICAgICAgICAgICAgICBUZXh0UmFuZ2VEdXBsaWNhdGUuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCBUZXh0UmFuZ2UpOwogICAgICAgICAgICAgICAgU3RhcnRSYW5nZSA9IEVuZFJhbmdlID0gVGV4dFJhbmdlRHVwbGljYXRlLnRleHQubGVuZ3RoOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTYXZlIGN1cnNvciBwb3NpdGlvbiBmb3IgbGF0ZXIgdXNhZ2UKICAgICAgICAgICAgJEVsZW1lbnQuZGF0YSgnQ3Vyc29yJywgewogICAgICAgICAgICAgICAgU3RhcnRSYW5nZTogU3RhcnRSYW5nZSwKICAgICAgICAgICAgICAgIEVuZFJhbmdlOiBFbmRSYW5nZQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIFJlZ2lzdGVyIFJURSBldmVudHMgZm9yIHNhdmluZyB0aGUgY3Vyc29yIHBvc2l0aW9uCiAgICAgICAgaWYgKHR5cGVvZiBDS0VESVRPUiAhPT0gJ3VuZGVmaW5lZCcgJiYgQ0tFRElUT1IgJiYgQ0tFRElUT1IuaW5zdGFuY2VzLlJpY2hUZXh0KSB7CiAgICAgICAgICAgIC8vIEdldCBsYXN0IGN1cnNvciBwb3NpdGlvbiBhbmQgc2F2ZSBpdCAob24gZm9jdXMgd2UgY29tZSBiYWNrIHRvIHRoaXMgcG9zaXRpb24pCiAgICAgICAgICAgIENLRURJVE9SLmluc3RhbmNlc1tJbnN0YW5jZU5hbWVdLm9uKCdjb250ZW50RG9tJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5kb2N1bWVudC5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEVkaXRvckdvdEZvY3VzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyMnICsgSW5zdGFuY2VOYW1lKS5kYXRhKCdSVEVDdXJzb3InLCBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5kb2N1bWVudC5vbigna2V5dXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKEVkaXRvckdvdEZvY3VzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyMnICsgSW5zdGFuY2VOYW1lKS5kYXRhKCdSVEVDdXJzb3InLCBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gbmVlZGVkIGZvciBjbGllbnQtc2lkZSB2YWxpZGF0aW9uIGFuZCBpbnNlcnRpbmcgZGF0YSBpbnRvIFJURQogICAgICAgICAgICBDS0VESVRPUi5pbnN0YW5jZXNbSW5zdGFuY2VOYW1lXS5vbignZm9jdXMnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAvLyBpZiBhIHNhdmVkIGN1cnNvciBwb3NpdGlvbiBleGlzdHMsIHNldCB0aGlzIHBvc2l0aW9uIG5vdwogICAgICAgICAgICAgICAgdmFyIFJURUN1cnNvclJhbmdlID0gJCgnIycgKyBJbnN0YW5jZU5hbWUpLmRhdGEoJ1JURUN1cnNvcicpLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbjsKCiAgICAgICAgICAgICAgICBFZGl0b3JHb3RGb2N1cyA9IHRydWU7CgogICAgICAgICAgICAgICAgaWYgKFJURUN1cnNvclJhbmdlKSB7CiAgICAgICAgICAgICAgICAgICAgU2VsZWN0aW9uID0gbmV3IENLRURJVE9SLmRvbS5zZWxlY3Rpb24oQ0tFRElUT1IuaW5zdGFuY2VzW0luc3RhbmNlTmFtZV0uZG9jdW1lbnQpOwogICAgICAgICAgICAgICAgICAgIFNlbGVjdGlvbi5zZWxlY3RSYW5nZXMoUlRFQ3Vyc29yUmFuZ2UpOwogICAgICAgICAgICAgICAgICAgIC8vIGRlbGV0ZSBzYXZlZCBjdXJzb3IgcG9zaXRpb24gKHRvIG5vdCBrZWVwIG9sZCBzdHVmZikKICAgICAgICAgICAgICAgICAgICAkKCcjJyArIEluc3RhbmNlTmFtZSkuZGF0YSgnUlRFQ3Vyc29yJywgdW5kZWZpbmVkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIC8vIFJlZ2lzdGVyIGV2ZW50cyBmb3Igc2F2aW5nIHRoZSBjdXJzb3IgcG9zaXRpb24gb2YgdGV4dGFyZWEKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEVsZW1lbnQudW5iaW5kKCdjbGljay5GQVFDb21wb3NpbmcnKS5iaW5kKCdjbGljay5GQVFDb21wb3NpbmcnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBHZXRDdXJzb3JQb3NpdGlvbigpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJEVsZW1lbnQudW5iaW5kKCdrZXl1cC5GQVFDb21wb3NpbmcnKS5iaW5kKCdrZXl1cC5GQVFDb21wb3NpbmcnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBHZXRDdXJzb3JQb3NpdGlvbigpOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgU2V0RGF0YQogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7U3RyaW5nfSBGQVFUaXRsZSBvZiBhIEZBUSBhcnRpY2xlIHRvIGJlIHJldHVybmVkIGludG8gdGlja2V0IFN1YmplY3QKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBGQVFDb250ZW50IG9mIGEgRkFRIGFydGljbGUgYW5kL29yIExpbmsgdG8gdGhlIHB1YmxpYyBpbnRlcmZhY2UgaW4gcGxhaW4gdGV4dAogICAgICogQHBhcmFtIHtTdHJpbmd9IEZBUUhUTUxDb250ZW50IG9mIGEgRkFRIGFydGljbGUgYW5kL29yIExpbmsgdG8gdGhlIHB1YmxpYyBpbnRlcmZhY2UgaW4gSFRNTAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIERvIG5vdGhpbmcgYW5kIHNob3cgYW4gZXJyb3IgbWVzc2FnZS4KICAgICAqLwogICAgZnVuY3Rpb24gU2V0RGF0YSAoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KSB7CgogICAgICAgIHZhciAkUGFyZW50U3ViamVjdCA9ICQoJyNTdWJqZWN0JywgcGFyZW50LmRvY3VtZW50KSwKICAgICAgICAgICAgJFBhcmVudEJvZHkgPSAkKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLAogICAgICAgICAgICBQYXJlbnRCb2R5ID0gJFBhcmVudEJvZHlbMF0sCiAgICAgICAgICAgIFBhcmVudEJvZHlWYWx1ZSA9ICRQYXJlbnRCb2R5LnZhbCgpLAogICAgICAgICAgICBSYW5nZSwKICAgICAgICAgICAgU3RhcnRSYW5nZSA9IDAsCiAgICAgICAgICAgIEVuZFJhbmdlID0gMCwKICAgICAgICAgICAgTmV3UG9zaXRpb24gPSAwOwoKICAgICAgICBpZiAoJCgnI1N1YmplY3QnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCAmJiAkKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmxlbmd0aCkgewoKICAgICAgICAgICAgaWYgKENvcmUuQ29uZmlnLkdldCgnVGlja2V0Q29tcG9zZS5VcGRhdGVBcnRpY2xlU3ViamVjdCcpID09PSAnMScgJiYgJCgnI1VwZGF0ZUFydGljbGVTdWJqZWN0T3B0aW9uJykucHJvcCgnY2hlY2tlZCcpKSB7CiAgICAgICAgICAgICAgICAvLyBjb3B5IHN1YmplY3QKICAgICAgICAgICAgICAgIGlmICgkUGFyZW50U3ViamVjdC52YWwoKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAkUGFyZW50U3ViamVjdC52YWwoRkFRVGl0bGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmVudFN1YmplY3QudmFsKCRQYXJlbnRTdWJqZWN0LnZhbCgpICsgJyAtICcgKyBGQVFUaXRsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBGQVEgdGV4dCBhbmQvb3IgbGluayB0byBXWVNJV1lHIGVkaXRvciBpbiBwYXJlbnQgd2luZG93CiAgICAgICAgICAgIGlmIChwYXJlbnQuQ0tFRElUT1IgJiYgcGFyZW50LkNLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dCkgewogICAgICAgICAgICAgICAgcGFyZW50LkNLRURJVE9SLmluc3RhbmNlcy5SaWNoVGV4dC5mb2N1cygpOwogICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIC8vIEluIHNvbWUgY2lyY3Vtc3RhbmNlcywgdGhpcyBjb21tYW5kIHRocm93cyBhbiBlcnJvciAoYWx0aG91Z2ggaW5zZXJ0aW5nIHRoZSBIVE1MIHdvcmtzKQogICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkgYWxzbyB3b3Jrcywgd2UganVzdCB3cmFwIGl0IGluIGEgdHJ5LWNhdGNoLXN0YXRlbWVudAogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5DS0VESVRPUi5pbnN0YW5jZXMuUmljaFRleHQuaW5zZXJ0SHRtbChGQVFIVE1MQ29udGVudCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNhdGNoIChFcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAkLm5vb3AoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICAgICAgICAgIH0sIDUwKTsKICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGluc2VydCBib2R5IGFuZC9vciBsaW5rIHRvIHRleHRhcmVhIChpZiBwb3NzaWJsZSB0byBjdXJzb3IgcG9zaXRpb24gb3RoZXJ3aXNlIHRvIHRoZSB0b3ApCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gR2V0IHByZXZpb3VzbHkgc2F2ZWQgY3Vyc29yIHBvc2l0aW9uIG9mIHRleHRhcmVhCiAgICAgICAgICAgICAgICBpZiAocGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykpIHsKICAgICAgICAgICAgICAgICAgICBTdGFydFJhbmdlID0gcGFyZW50LiQoJyNSaWNoVGV4dCcsIHBhcmVudC5kb2N1bWVudCkuZGF0YSgnQ3Vyc29yJykuU3RhcnRSYW5nZTsKICAgICAgICAgICAgICAgICAgICBFbmRSYW5nZSA9IHBhcmVudC4kKCcjUmljaFRleHQnLCBwYXJlbnQuZG9jdW1lbnQpLmRhdGEoJ0N1cnNvcicpLkVuZFJhbmdlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIEFkZCBuZXcgdGV4dCB0byB0ZXh0YXJlYQogICAgICAgICAgICAgICAgJFBhcmVudEJvZHkudmFsKFBhcmVudEJvZHlWYWx1ZS5zdWJzdHIoMCwgU3RhcnRSYW5nZSkgKyBGQVFDb250ZW50ICsgUGFyZW50Qm9keVZhbHVlLnN1YnN0cihFbmRSYW5nZSwgUGFyZW50Qm9keVZhbHVlLmxlbmd0aCkpOwogICAgICAgICAgICAgICAgTmV3UG9zaXRpb24gPSBTdGFydFJhbmdlICsgRkFRQ29udGVudC5sZW5ndGg7CgogICAgICAgICAgICAgICAgLy8gSnVtcCB0byBuZXcgY3Vyc29yIHBvc2l0aW9uIChhZnRlciBpbnNlcnRlZCB0ZXh0KQogICAgICAgICAgICAgICAgaWYgKFBhcmVudEJvZHkuc2VsZWN0aW9uU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICBQYXJlbnRCb2R5LnNlbGVjdGlvblN0YXJ0ID0gTmV3UG9zaXRpb247CiAgICAgICAgICAgICAgICAgICAgUGFyZW50Qm9keS5zZWxlY3Rpb25FbmQgPSBOZXdQb3NpdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewogICAgICAgICAgICAgICAgICAgIFJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBOZXdQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgICAgUmFuZ2Uuc2VsZWN0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuRGlhbG9nLkNsb3NlRGlhbG9nKCQoJy5EaWFsb2cnLCBwYXJlbnQuZG9jdW1lbnQpKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgYWxlcnQoJyRKU1RleHR7IlRoaXMgd2luZG93IG11c3QgYmUgY2FsbGVkIGZyb20gY29tcG9zZSB3aW5kb3cifScpOwogICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycsIHBhcmVudC5kb2N1bWVudCkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgU2V0VGV4dAogICAgICogQG1lbWJlcm9mIEZBUS5BZ2VudC5UaWNrZXRDb21wb3NlCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gSW5zZXJ0VGV4dCB0byBhZGQgRkFRIGl0ZW0gdGV4dCBvciBub3QKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gSW5zZXJ0TGluayB0byBhZGQgRkFRIGl0ZW0gbGluayBvciBub3QKICAgICAqLwogICAgVGFyZ2V0TlMuU2V0VGV4dCA9IGZ1bmN0aW9uIChJbnNlcnRUZXh0LCBJbnNlcnRMaW5rKSB7CiAgICAgICAgdmFyIEZBUVRpdGxlID0gJCgnI0ZBUVRpdGxlJykudmFsKCksCiAgICAgICAgRkFRQ29udGVudCA9ICcnLAogICAgICAgIEZBUUhUTUxDb250ZW50ID0gJycsCiAgICAgICAgRkFRTGluazsKCiAgICAgICAgaWYgKEluc2VydFRleHQgPT09IDEpIHsKICAgICAgICAgICAgRkFRQ29udGVudCA9ICQoJyNGQVFCb2R5JykudmFsKCk7CiAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gRkFRQ29udGVudDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIEZBUUNvbnRlbnQgPSAnJzsKICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBGQVFDb250ZW50OwogICAgICAgIH0KCiAgICAgICAgaWYgKEluc2VydExpbmsgPT09IDEpIHsKICAgICAgICAgICAgRkFRTGluayA9ICQoJyNGQVFQdWJsaWNMaW5rJykudmFsKCk7CiAgICAgICAgICAgIEZBUUNvbnRlbnQgPSBGQVFDb250ZW50ICsgJ1xuJyArIEZBUUxpbms7CiAgICAgICAgICAgIEZBUUhUTUxDb250ZW50ID0gRkFRSFRNTENvbnRlbnQgKyAnPGJyLz4nICsgJzxhIGhyZWY9IicgKyBGQVFMaW5rICsgJyI+JyArIEZBUVRpdGxlICsgJzwvYT4nOwogICAgICAgIH0KCiAgICAgICAgU2V0RGF0YShGQVFUaXRsZSwgRkFRQ29udGVudCwgRkFRSFRNTENvbnRlbnQpOwogICAgfTsKCgogICAgLyoqCiAgICAgKiBAbmFtZSBTZXRGdWxsRkFRCiAgICAgKiBAbWVtYmVyb2YgRkFRLkFnZW50LlRpY2tldENvbXBvc2UKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtCb29sZWFufSBJbnNlcnRUZXh0IHRvIGFkZCBGQVEgaXRlbSB0ZXh0IG9yIG5vdAogICAgICogQHBhcmFtIHtCb29sZWFufSBJbnNlcnRMaW5rIHRvIGFkZCBGQVEgaXRlbSBsaW5rIG9yIG5vdAogICAgICovCiAgICBUYXJnZXROUy5TZXRGdWxsRkFRID0gZnVuY3Rpb24gKEluc2VydFRleHQsIEluc2VydExpbmspIHsKCiAgICAgICAgLy8gZ2V0IHRoZSBGQVEgcmljaHRleHQgYW5kIHRyaWdnZXIgYXR0YWNobWVudCBwcm9jZXNzaW5nCiAgICAgICAgcGFyZW50LkNvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIHBhcmVudC5Db3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FnZW50RkFRUmljaFRleHQnLAogICAgICAgICAgICAgICAgSXRlbUlEOiAkKCdpbnB1dFtuYW1lPUZBUUlEXScpLnZhbCgpLAogICAgICAgICAgICAgICAgRm9ybUlEOiBwYXJlbnQuJCgnaW5wdXRbbmFtZT1Gb3JtSURdJykudmFsKCkKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICB2YXIgRkFRVGl0bGUgPSBSZXNwb25zZS5GQVFUaXRsZSwKICAgICAgICAgICAgICAgICAgICBGQVFDb250ZW50ID0gJycsCiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSAnJywKICAgICAgICAgICAgICAgICAgICBGQVFMaW5rLAogICAgICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRMaXN0OwoKICAgICAgICAgICAgICAgIGlmIChJbnNlcnRUZXh0ID09PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgRkFRQ29udGVudCA9IFJlc3BvbnNlLkZBUUNvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBSZXNwb25zZS5GQVFIVE1MQ29udGVudDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoSW5zZXJ0TGluayA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgIEZBUUxpbmsgPSAkKCcjRkFRUHVibGljTGluaycpLnZhbCgpOwogICAgICAgICAgICAgICAgICAgIEZBUUNvbnRlbnQgPSBGQVFDb250ZW50ICsgJ1xuJyArIEZBUUxpbms7CiAgICAgICAgICAgICAgICAgICAgRkFRSFRNTENvbnRlbnQgPSBGQVFIVE1MQ29udGVudCArICc8YnIvPjxici8+JyArICc8YSBocmVmPSInICsgRkFRTGluayArICciPicgKyBGQVFUaXRsZSArICc8L2E+JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyBHZXQgcGFyZW50IHdpbmRvdyBhdHRhY2htZW50IGxpc3QuCiAgICAgICAgICAgICAgICBBdHRhY2htZW50TGlzdCA9IHBhcmVudC4kKCcuQXR0YWNobWVudExpc3QnKTsKCiAgICAgICAgICAgICAgICAvLyBBZGQgYXR0YWNobWVudCB1bmxlc3MgaXQgaXMgYSBkdXBsaWNhdGUuCiAgICAgICAgICAgICAgICAkKFJlc3BvbnNlLlRpY2tldEF0dGFjaG1lbnRzKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBBdHRhY2htZW50SXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgPSB0aGlzLkZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50RXhpc3QgPSBwYXJlbnQuJCgnLkF0dGFjaG1lbnRMaXN0IHRib2R5IHRyIHRkLkZpbGVuYW1lJykuZmlsdGVyKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLnRleHQoKSA9PT0gRmlsZW5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIGlmICghQXR0YWNobWVudEV4aXN0Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50SXRlbSA9IHBhcmVudC5Db3JlLlRlbXBsYXRlLlJlbmRlcignQWpheERuRFVwbG9hZC9BdHRhY2htZW50SXRlbScsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxlbmFtZScgOiBGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGaWxldHlwZScgOiB0aGlzLkNvbnRlbnRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGVzaXplJyA6IHRoaXMuRmlsZXNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRmlsZUlEJyAgIDogdGhpcy5GaWxlSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuJChBdHRhY2htZW50SXRlbSkucHJlcGVuZFRvKEF0dGFjaG1lbnRMaXN0LmZpbmQoJ3Rib2R5JykpLmZhZGVJbigpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIFNldERhdGEoRkFRVGl0bGUsIEZBUUNvbnRlbnQsIEZBUUhUTUxDb250ZW50KTsKCiAgICAgICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5Jbml0QWpheERuRFVwbG9hZCgpOwogICAgICAgICAgICB9LAogICAgICAgICAgICAnanNvbicKICAgICAgICApOwogICAgfTsKICAgIHJldHVybiBUYXJnZXROUzsKfShGQVEuQWdlbnQuVGlja2V0Q29tcG9zZSB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIEZBUSA9IEZBUSB8fCB7fTsKRkFRLkN1c3RvbWVyID0gRkFRLkN1c3RvbWVyIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgRkFRLkN1c3RvbWVyLlRpY2tldFpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgVGlja2V0Wm9vbS4KICovCkZBUS5DdXN0b21lci5GQVFab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQG5hbWUgSWZyYW1lQXV0b0hlaWdodAogICAgICogQG1lbWJlcm9mIEZBUS5DdXN0b21lci5GQVFab29tCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkSWZyYW1lIC0gVGhlIGlmcmFtZSB3aGljaCBzaG91bGQgYmUgYXV0by1oZWlnaHRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNldCBpZnJhbWUgaGVpZ2h0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gcmVhbCBjb250ZW50IGhlaWdodCBhbmQgZGVmYXVsdCBjb25maWcgc2V0dGluZy4KICAgICAqLwogICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewogICAgICAgIHZhciBOZXdIZWlnaHQ7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICAvLyBzbGlnaHRseSBjaGFuZ2UgdGhlIHdpZHRoIG9mIHRoZSBpZnJhbWUgdG8gbm90IGJlIGV4YWN0bHkgMTAwJSB3aWR0aCBhbnltb3JlCiAgICAgICAgICAgIC8vIHRoaXMgcHJldmVudHMgYSBkb3VibGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIgKGZyb20gaWZyYW1lIGFuZCBzdXJyb3VuZGluZyBkaXYpCiAgICAgICAgICAgICRJZnJhbWUud2lkdGgoJElmcmFtZS53aWR0aCgpIC0gMik7CgogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuZmluZCgnYm9keScpLmhlaWdodCgpOwoKICAgICAgICAgICAgLy8gaWYgdGhlIGlGcmFtZXMgaGVpZ2h0IGlzIDAsIHdlIGNvbGxhcHNlIHRoZSB3aWRnZXQKICAgICAgICAgICAgaWYgKE5ld0hlaWdodCA9PT0gMCkgewogICAgICAgICAgICAgICAgJElmcmFtZS5jbG9zZXN0KCcuV2lkZ2V0U2ltcGxlJykucmVtb3ZlQ2xhc3MoJ0V4cGFuZGVkJykuYWRkQ2xhc3MoJ0NvbGxhcHNlZCcpOwogICAgICAgICAgICB9IGVsc2UgaWYgKCFOZXdIZWlnaHQgfHwgaXNOYU4oTmV3SGVpZ2h0KSkgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gQ29yZS5Db25maWcuR2V0KCdGQVE6OkZyb250ZW5kOjpBZ2VudEhUTUxGaWVsZEhlaWdodERlZmF1bHQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4JykpIHsKICAgICAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBDb3JlLkNvbmZpZy5HZXQoJ0ZBUTo6RnJvbnRlbmQ6OkFnZW50SFRNTEZpZWxkSGVpZ2h0TWF4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBkZWx0YSBmb3Igc2Nyb2xsYmFyCiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiAwKSB7CiAgICAgICAgICAgICAgICBOZXdIZWlnaHQgPSBwYXJzZUludChOZXdIZWlnaHQsIDEwKSArIDI1OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBtZW1iZXJvZiBGQVEuQ3VzdG9tZXIuRkFRWm9vbQogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRNZXNzYWdlIC0gYW4gRkFRIGZpZWxkLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHRoZSBjbGFzcyBvZiBhIEZBUSBmaWVsZDoKICAgICAqICAgICAgdXNlciBjYWxscyB0aGlzIGZ1bmN0aW9uIGJ5IGNsaWNraW5nIG9uIHRoZSBmaWVsZCBoZWFkLCBmaWVsZCBnZXRzIGhpZGRlbiBieSByZW1vdmluZwogICAgICogICAgICB0aGUgY2xhc3MgJ1Zpc2libGUnLiBJZiB0aGUgZmllbGQgaGVhZCBpcyBjbGlja2VkIHdoaWxlIGl0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNsYXNzCiAgICAgKiAgICAgICdWaXNpYmxlJywgdGhlIGZpZWxkIGdldHMgdGhlIGNsYXNzICdWaXNpYmxlJyBhZ2FpbiBhbmQgaXQgd2lsbCBiZSBzaG93bi4KICAgICAqLwogICAgZnVuY3Rpb24gVG9nZ2xlTWVzc2FnZSgkTWVzc2FnZSl7CiAgICAgICAgaWYgKCRNZXNzYWdlLmhhc0NsYXNzKCdWaXNpYmxlJykpIHsKICAgICAgICAgICAgJE1lc3NhZ2UucmVtb3ZlQ2xhc3MoJ1Zpc2libGUnKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRNZXNzYWdlLmFkZENsYXNzKCdWaXNpYmxlJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAbWVtYmVyb2YgRkFRLkN1c3RvbWVyLkZBUVpvb20KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGJpbmRzIGZ1bmN0aW9ucyB0byB0aGUgJ01lc3NhZ2VIZWFkZXInCiAgICAgKiAgICAgIHRvIHRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgTWVzc2FnZUJvZHkgYW5kIHRoZSByZXBseSBmb3JtLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24oKXsKICAgICAgICB2YXIgJE1lc3NhZ2VzID0gJCgnI01lc3NhZ2VzID4gbGknKSwKICAgICAgICAgICAgJE1lc3NhZ2VIZWFkZXJzID0gJCgnLk1lc3NhZ2VIZWFkZXInLCAkTWVzc2FnZXMpOwoKICAgICAgICAkTWVzc2FnZUhlYWRlcnMuY2xpY2soZnVuY3Rpb24oRXZlbnQpewogICAgICAgICAgICBUb2dnbGVNZXNzYWdlKCQodGhpcykucGFyZW50KCkpOwogICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBpbml0IGJyb3dzZXIgbGluayBtZXNzYWdlIGNsb3NlIGJ1dHRvbgogICAgICAgIGlmICgkKCcuRkFRTWVzc2FnZUJyb3dzZXInKS5sZW5ndGgpIHsKICAgICAgICAgICAgJCgnLkZBUU1lc3NhZ2VCcm93c2VyIGEuQ2xvc2UnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICB2YXIgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb246ICdDdXN0b21lckZBUVpvb20nLAogICAgICAgICAgICAgICAgICAgIFN1YmFjdGlvbjogJ0Jyb3dzZXJMaW5rTWVzc2FnZScKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgJCgnLkZBUU1lc3NhZ2VCcm93c2VyJykuZmFkZU91dCgic2xvdyIpOwoKICAgICAgICAgICAgICAgIC8vIGNhbGwgc2VydmVyLCB0byBzYXZlIHRoYXQgdGhlIGJ1dHRvbiB3YXMgY2xvc2VkIGFuZCBkbyBub3Qgc2hvdyBpdCBhZ2FpbiBvbiByZWxvYWQKICAgICAgICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgICAgICAgICAgQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSwKICAgICAgICAgICAgICAgICAgICBEYXRhLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHt9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICAkKCdhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKCQodGhpcykuYXR0cignaHJlZicpLCAnVGlja2V0QWN0aW9uJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLlJhdGVCdXR0b24nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSYXRlTnVtYmVyID0gcGFyc2VJbnQoJCh0aGlzKS5jbG9zZXN0KCdkaXYnKS5hdHRyKCdpZCcpLnJlcGxhY2UoL1JhdGVCdXR0b24vLCAnJyksIDEwKTsKICAgICAgICAgICAgJCgnI1JhdGVWYWx1ZScpLnZhbChSYXRlTnVtYmVyKTsKICAgICAgICAgICAgJCgnI1JhdGVTdWJtaXRCdXR0b24nKS5mYWRlSW4oMjUwKTsKICAgICAgICAgICAgJCgnI0ZBUVZvdGluZycpLmZpbmQoJy5SYXRlQnV0dG9uJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBJdGVtUmF0ZU51bWJlciA9IHBhcnNlSW50KCQodGhpcykuY2xvc2VzdCgnZGl2JykuYXR0cignaWQnKS5yZXBsYWNlKC9SYXRlQnV0dG9uLywgJycpLCAxMCk7CiAgICAgICAgICAgICAgICBpZiAoSXRlbVJhdGVOdW1iZXIgPD0gUmF0ZU51bWJlcikgewogICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnUmF0ZVVuQ2hlY2tlZCcpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ1JhdGVDaGVja2VkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyBNYWtlIHdob2xlIEZBUSBJdGVtIHJvdyBjbGlja2FibGUsIGJ1dCBub3QgdGhlIGhlYWRlcnMsIGNhbid0IHVzZSBDb3JlLkN1c3RvbWVyLkNsaWNrYWJsZVJvdygpCiAgICAgICAgLy8gc2luY2UgaXQgdXNlcyAidGFibGUgdHIiIGFzIHNlbGVjdG9yLCBzZWUgYnVnIzkzMjkuCiAgICAgICAgJCgidGJvZHkgdHIiKS5jbGljayhmdW5jdGlvbigpewogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICQoImEiLCB0aGlzKS5hdHRyKCJocmVmIik7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShGQVEuQ3VzdG9tZXIuRkFRWm9vbSB8fCB7fSkpOwo=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIERlZmF1bHQgU2V0dGluZ3MKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBzdWJzZWN0aW9uIEFydGljbGVMaXN0IEV4cGFuZGluZwogKi8KCi5GQVEgLk92ZXJ2aWV3Q29udHJvbCBkaXYgewogICAgcGFkZGluZzogMHB4Owp9CgouRkFRICNPdmVydmlld0JvZHkgewogICAgbWFyZ2luOiAwIDAgOHB4IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBMYXJnZSBTaWRlYmFyQ29sdW1uCiAqLwoKLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyTGFzdCA+IC5TaWRlYmFyQ29sdW1uLkxhcmdlIHsKICAgIHdpZHRoOiAzNTBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTWVkaXVtIHsKICAgIHdpZHRoOiAyOTBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgovKioKICogQHN1YnNlY3Rpb24gRkFRTWluaUxpc3QKICovCgp1bC5GQVFNaW5pTGlzdCBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxMHB4Owp9CgppZnJhbWUuVGV4dE9wdGlvbi5GQVEgewogICAgd2lkdGg6IDkwMHB4OwogICAgbWluLWhlaWdodDogNjAwcHg7Cn0KCmlmcmFtZS5GQVFGaWVsZCB7CiAgICB3aWR0aDogMTAwJTsKICAgIGZyYW1lYm9yZGVyOiAwOwp9CgpmaWVsZHNldC5UYWJsZVNtYWxsID4gZGl2LkZpZWxkIHsKICAgIG1hcmdpbi1sZWZ0OiAyNCUgIWltcG9ydGFudDsKfQoKZmllbGRzZXQuVGFibGVTbWFsbCA+IGxhYmVsIHsKICAgIHdpZHRoOiAyNCUgIWltcG9ydGFudDsKfQoKZmllbGRzZXQuVGFibGVTbWFsbCA+IGRpdi5GQVFEaXZpZGVyIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQ0NDQ0NDOwogICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCi5UYWJsZVNtYWxsIHRib2R5IHRyLkludmFsaWQgewogICAgY29sb3I6ICNDQ0M7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgdGFibGUgewogICAgY2xlYXI6IG5vbmU7CiAgICB3aWR0aDogMTAwJTsKICAgIG1heC13aWR0aDogNjIycHg7CiAgICBsaW5lLWhlaWdodDogMTNweDsKfQoKI0ZBUVJlbGF0ZWRBcnRpY2xlcyB0YWJsZSAuRkFRVm90ZXMgewogICAgcGFkZGluZzogMCAzcHg7CiAgICB3aWR0aDogNzBweDsKfQoKI0ZBUVJlbGF0ZWRBcnRpY2xlcyB0YWJsZSAuRkFRVm90ZXMgaSB7CiAgICBtYXJnaW4tcmlnaHQ6IDBweDsKfQoKI0ZBUVJlbGF0ZWRBcnRpY2xlcyB0YWJsZSAuRkFRQ2F0ZWdvcmllIHsKICAgIHdpZHRoOiAyNSU7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgojRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIC5GQVFUaXRsZSB7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICBvdmVyZmxvdzogaGlkZGVuOwp9CgojRkFRUmVsYXRlZEFydGljbGVzIHRhYmxlIC5GQVFEYXRlIHsKICAgIHdpZHRoOiA2NXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKfQo=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEZBUURldGFpbHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKCi8qKgogKiBAc3Vic2VjdGlvbiAgQXJ0aWNsZSB0YWJsZSBib2R5CiAqLwoKLkFydGljbGVGQVFDb250ZW50IHsKICAgIHBhZGRpbmc6IDExcHggMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KCi5BcnRpY2xlRkFRQ29udGVudCAuRkFRVm90ZUZvcm0gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouQXJ0aWNsZUZBUUNvbnRlbnQgcC5DZW50ZXIgewogICAgcGFkZGluZy1ib3R0b206IDEwcHg7CiAgICBtYXJnaW46IDBweCA1MHB4OwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7Cn0KCi5BcnRpY2xlRkFRQ29udGVudCAuRkFRVm90ZUZvcm0gLkNhbGxGb3JBY3Rpb24gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IDEwcHggYXV0byAwcHggYXV0bzsKfQoKLkFydGljbGVGQVFDb250ZW50IC5GQVFWb3RlRm9ybSAuQ2FsbEZvckFjdGlvbi5IaWRkZW4gewogICAgZGlzcGxheTogbm9uZTsKfQoKLkZBUVN0YXRlTmFtZSB7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogMTBweDsKICAgIHRvcDogN3B4OwogICAgZm9udC1zaXplOiA4MCU7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7Cn0KCmZpZWxkc2V0IC5GQVFTdGF0ZU5hbWUgewogICAgcG9zaXRpb246IHN0YXRpYzsKfQoKLlJhdGVCdXR0b25zIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLlJhdGVCdXR0b25zID4gbGkgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKLlJhdGVCdXR0b25zID4gbGk6Zmlyc3QtY2hpbGQsCi5SYXRlQnV0dG9ucyA+IGxpOmxhc3QtY2hpbGQgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi5WaXNpYmxlLVNjcmVlblMgLlJhdGVCdXR0b25zID4gbGkgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiAxNXB4Owp9CgouVmlzaWJsZS1TY3JlZW5TIC5SYXRlQnV0dG9ucyA+IGxpIHNwYW4gewogICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7Cn0KCi5SYXRlQnV0dG9uIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAzMHB4OwogICAgd2lkdGg6IDI1cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmbG9hdDogbGVmdDsKICAgIGNvbG9yOiAjMDAwMDAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouUmF0ZUJ1dHRvbiBpIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgd2lkdGg6IDEwMCU7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBjb2xvcjogIzk5OTsKfQoKLlJhdGVCdXR0b24gaS5mYS1zdGFyIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5SYXRlQnV0dG9uLlJhdGVDaGVja2VkIGkuZmEtc3RhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGNvbG9yOiAjRTk3RDM0Owp9CgouUmF0ZUJ1dHRvbi5SYXRlQ2hlY2tlZCBpLmZhLXN0YXItbyB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouUmF0ZUJ1dHRvbjpob3ZlciBpLmZhLXN0YXItbyB7CiAgICBjb2xvcjogIzAwMDsKfQoKLlJhdGVTdGFyIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAxNnB4OwogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDFweDsKICAgIGZvbnQtc2l6ZTogMTBweDsKfQoKLlJhdGVTdGFyVGV4dCB7CiAgICB0ZXh0LWluZGVudDo1cHg7Cn0KCi5SYXRlTGFiZWxCZWZvcmUsCi5SYXRlTGFiZWxBZnRlciB7CiAgICBjb2xvcjogIzMzMzsKICAgIHBhZGRpbmctdG9wOiA1cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLlJhdGVMYWJlbEJlZm9yZSB7CiAgICBmbG9hdDogbGVmdDsKICAgIHBhZGRpbmctcmlnaHQ6IDZweDsKfQoKLlJhdGVMYWJlbEFmdGVyIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1sZWZ0OiA1cHg7Cn0KCi5ab29tU21hbGxCdXR0b257CiAgICBtYXJnaW4tbGVmdDogMTJweDsKfQoKLkZBUU1lc3NhZ2VCcm93c2VyIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5GQVFNZXNzYWdlQnJvd3NlciBwIHsKICAgICBwYWRkaW5nOiA1cHggMjBweDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRThFOEU4OwogICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5GQVFNZXNzYWdlQnJvd3NlciBhLkNsb3NlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2lkdGg6IDEycHg7CiAgICBoZWlnaHQ6IDEycHg7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICByaWdodDogNHB4OwogICAgdG9wOiA2cHg7CiAgICBjb2xvcjogIzVENUQ1RDsKfQoKLkZBUU1lc3NhZ2VCcm93c2VyIGEuQ2xvc2U6aG92ZXIgewogICAgY29sb3I6ICMwMDA7Cn0KfQo=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmJJREFUeNqkU0toE1EUPZkk84n5GMnHfrRBKRS0xCK21SKE1IUVV7oWgxa7KW6kkK2LghhdiBuDRURxIa6lOwlCjSgBJbhKhSjakibSTP7J/HzvTTMYcNcHZ97Mvfec9+7hjs0wDOxnOegjdmMDbrcHPt9BiKIU4ThuiYQXCMb36goE67qupzuddlGWq2g06sg8mzMF+osUJDh0U7Epd+Ds5AEMB830VlmNZvPNaCbXXiQ1KyT0fOAGfbLk7KST18f4yBAPszWN5Y6GbRg77MHsSSGwuvYjLes6+iJMQFGUiK62UsnEcX40yNFvXLj1aaDXh3cmcGrCh2RihL99L58iNRkSLnI0Wa83luanfYHRkJ2RVVXFtctDDOenvKjVavj4dYflaE38jC9AOZTLBNrtzsL8bIgVaJrGcDXux8UZHkFvl+ZRKu2gUChgc/M7Zk6IjGO1oOvceGTYRfYeO12Wa2i12vj8rYEnb7YxPRnCzStHiPMNUGvCfjvjWAIOhwsw6E26hFynhsJud+L+iypsNgmry8fQbDZJHc/8MMjFGacvIIreQuFnK3rI1SNEnsA0LvvqHNsrlV04naJl6K+yybE8kCT/+vucQocIPC9YuLT8m+HfmCCIyOZNjiUgCJ50JmerlGUqILHTKETRx9D/ptj+I+BD3lmhHEuA9FvsqeLKg5dqr7QrsEKHQ8Tbx2EG+k5jW4T86DV6tJZyBiaRTla5auDu004qdpoPzEWdGDGYY6RnDhtfFGRySqXVMQZG2UZHNr5YYubtrQjBf38mAnptdrKm9fBuLWwK7Gf9FWAAFbMKX7AnppcAAAAASUVORK5CYII=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIERlZmF1bHQgU2V0dGluZ3MKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBzdWJzZWN0aW9uICBMYXlvdXRGaXhlZFNpZGViYXIKICovCgojRm9vdGVyIHsKICAgIGNsZWFyOiBib3RoOwogICAgcGFkZGluZy10b3A6IDIwcHg7Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIgewogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5MYXlvdXRGaXhlZFNpZGViYXIgPiAuQ29udGVudENvbHVtbiB7CiAgICAvKioKICAgICAqIEBub3RlICAgIGZvcmNlIG93biBCbG9jayBGb3JtYXR0aW5nIENvbnRleHQgZm9yIG5lc3RlZCBmbG9hdHMKICAgICAqLwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLkxheW91dEZpeGVkU2lkZWJhciA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKfQoKLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyTGFzdCA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIHdpZHRoOiAyNzBweDsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbi1sZWZ0OiAxNnB4OwogICAgbWFyZ2luLXJpZ2h0OiAwOwp9CgouUlRMIC5MYXlvdXRGaXhlZFNpZGViYXIuU2lkZWJhckxhc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJGaXJzdCA+IC5TaWRlYmFyQ29sdW1uIHsKICAgIHdpZHRoOiAyNzBweDsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWxlZnQ6IDA7CiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7Cn0KCi5SVEwgLkxheW91dEZpeGVkU2lkZWJhci5TaWRlYmFyRmlyc3QgPiAuU2lkZWJhckNvbHVtbiB7CiAgICBmbG9hdDogcmlnaHQ7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIG1hcmdpbi1yaWdodDogMDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIExhcmdlIFNpZGViYXJDb2x1bW4KICovCgouTGF5b3V0Rml4ZWRTaWRlYmFyLlNpZGViYXJMYXN0ID4gLlNpZGViYXJDb2x1bW4uTGFyZ2UgewogICAgd2lkdGg6IDMwMHB4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgQ3VzdG9tZXIgV2lkZ2V0U2ltcGxlCiAqLwoKLldpZGdldFNpbXBsZSB7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjRTlFOUU5OwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGRkY7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERDsKICAgIHBhZGRpbmc6IDA7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogYXV0bzsKICAgIHotaW5kZXg6IDEwOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKLldpZGdldFNpbXBsZSAuSGVhZGVyIHsKICAgIHBhZGRpbmc6IDVweCA4cHggM3B4OwogICAgY29sb3I6ICMyMjI7CiAgICBiYWNrZ3JvdW5kOiAjZWVlZWVlOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNENkQ2RDY7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouV2lkZ2V0U2ltcGxlIC5IZWFkZXIgaDMgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBmbG9hdDogbGVmdDsKfQoKLlJUTCAuV2lkZ2V0U2ltcGxlIC5IZWFkZXIgaDMgewogICAgZmxvYXQ6IHJpZ2h0Owp9CgouV2lkZ2V0U2ltcGxlIC5IZWFkZXIgaDMgc3BhbiB7CiAgICBmb250LXdlaWdodDogbm9ybWFsOwp9CgouV2lkZ2V0U2ltcGxlIC5Db250ZW50IHsKICAgIGhlaWdodDogYXV0bzsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwYWRkaW5nOiAxM3B4IDhweDsKICAgIGJhY2tncm91bmQ6ICNGRkY7CiAgICBib3JkZXI6IDAgbm9uZTsKfQoKLldpZGdldFNpbXBsZSAuUGFnaW5hdGlvbiB7CiAgICBmb250LXNpemU6IDExcHg7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiBGQVFIZWFkZXIKICovCgouRkFRSGVhZGVyIGgyIHsKICAgIG1hcmdpbjogM3B4IDAgMDsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGxpbmUtaGVpZ2h0OiAxMjAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZmxvYXQ6IGxlZnQ7Cn0KLlJUTCAuRkFRSGVhZGVyIGgyIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIE92ZXJ2aWV3CiAqLwoKLk92ZXJ2aWV3IHRoZWFkIHsKICAgIGJhY2tncm91bmQ6ICNjY2NjY2M7CiAgICBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7Cn0KCi5PdmVydmlldyB0aGVhZCB0aCB7CiAgICBjb2xvcjogIzRCNEI0QjsKICAgIGZvbnQtc2l6ZTogMTFweDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGRkY7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0JCQjsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNDQ0M7CiAgICB2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uIEZBUU1pbmlMaXN0CiAqLwoKdWwuRkFRTWluaUxpc3Qgc3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTBweDsKfQoKaWZyYW1lLkZBUUZpZWxkIHsKICAgIHdpZHRoOiAxMDAlOwogICAgYm9yZGVyOiAwcHg7CiAgICBtYXJnaW46IDdweDsKfQoKfQo=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEZBUURldGFpbHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLkFydGljbGVGQVFDb250ZW50IHsKICAgIHBhZGRpbmc6IDExcHggMTJweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjM7Cn0KCi5SYXRlQnV0dG9uIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgaGVpZ2h0OiAzMHB4OwogICAgd2lkdGg6IDI1cHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBmbG9hdDogbGVmdDsKICAgIGNvbG9yOiAjMDAwMDAwOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouUlRMIC5SYXRlQnV0dG9uIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLlJhdGVCdXR0b24gaSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIHdpZHRoOiAxMDAlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgY29sb3I6ICM5OTk7Cn0KCi5SYXRlQnV0dG9uIGkuZmEtc3RhciB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouUmF0ZUJ1dHRvbi5SYXRlQ2hlY2tlZCBpLmZhLXN0YXIgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBjb2xvcjogI0U5N0QzNDsKfQoKLlJhdGVCdXR0b24uUmF0ZUNoZWNrZWQgaS5mYS1zdGFyLW8gewogICAgZGlzcGxheTogbm9uZTsKfQoKLlJhdGVCdXR0b246aG92ZXIgaS5mYS1zdGFyLW8gewogICAgY29sb3I6ICMwMDA7Cn0KCi5SYXRlU3RhciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGhlaWdodDogMTZweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1sZWZ0OiAxcHg7CiAgICBmb250LXNpemU6IDEwcHg7Cn0KCi5SVEwgLlJhdGVTdGFyIHsKICAgIGZsb2F0OiByaWdodDsKfQoKLlJhdGVTdGFyVGV4dCB7CiAgICBtYXJnaW4tbGVmdDogNnB4Owp9CgouUlRMIC5SYXRlU3RhclRleHQgewogICAgbWFyZ2luLWxlZnQ6IDBweDsKICAgIG1hcmdpbi1yaWdodDogNnB4Owp9CgouUmF0ZUxhYmVsQmVmb3JlIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgcGFkZGluZy1yaWdodDogMTVweDsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgY29sb3I6IEdyYXk7Cn0KCi5SVEwgLlJhdGVMYWJlbEJlZm9yZSB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5SYXRlTGFiZWxBZnRlciB7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbi1sZWZ0OiA1cHg7CiAgICBtYXJnaW4tcmlnaHQ6IDI1cHg7CiAgICBjb2xvcjogR3JheTsKfQoKLlJUTCAuUmF0ZUxhYmVsQWZ0ZXIgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBtYXJnaW4tcmlnaHQ6IDVweDsKICAgIG1hcmdpbi1sZWZ0OiA2NXB4Owp9CgouUmF0aW5nTGFiZWwgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7Cn0KCi5SVEwgLlJhdGluZ0xhYmVsIHsKICAgIGZsb2F0OiByaWdodDsKICAgIHBhZGRpbmctbGVmdDogMnB4Cn0KCi5TcGFjaW5nVG9wIHsKICAgIG1hcmdpbi10b3A6IDEzcHg7Cn0KCi5TcGFjaW5nVG9wTGFyZ2UgewogICAgbWFyZ2luLXRvcDogMjZweDsKfQoKLlJUTCAuVm90aW5nQ29udGFpbmVyIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlZvdGluZ1F1ZXN0aW9uIHsKICAgIG1hcmdpbi1sZWZ0OiAxMHB4OwogICAgbWFyZ2luLXJpZ2h0OjEwcHg7CiAgICBjb2xvcjogIzAwMDAwMDsKfQoKLlZvdGluZ0JveCB7CiAgICBtaW4td2lkdGg6IDIwcGM7CiAgICBtYXJnaW46IDAgMzBweCAyMXB4OwogICAgY29sb3I6ICM2QTZBNkE7CiAgICBiYWNrZ3JvdW5kOiAjRjlGOUY5OwogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjRDZENkQ2OwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0Q2RDZENjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRDZENkQ2Owp9CgouVm90aW5nQm94ID4gI01lc3NlbmdlciB7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0VFRTsKfQoKLlJTU0ljb24gewogICAgZmxvYXQ6IHJpZ2h0OwogICAgaGVpZ2h0OiAxNnB4OwogICAgd2lkdGg6IDI4cHg7Cn0KCi5Eb3dubG9hZEF0dGFjaG1lbnQgYSwKLktleXdvcmQgYSB7CiAgICBjb2xvcjogI0ZGOTkyMjsKfQoKLkRvd25sb2FkQXR0YWNobWVudCBhOmhvdmVyLAouS2V5d29yZCBhOmhvdmVyIHsKICAgIGNvbG9yOiAjRkY3NzIyOwp9CgouVm90aW5nQWN0aW9uUm93IHsKICAgIGhlaWdodDogMjNweDsKfQoKLkZBUU1lc3NhZ2VCcm93c2VyIHsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBib3JkZXItcmFkaXVzOiAycHg7Cn0KCi5GQVFNZXNzYWdlQnJvd3NlciBwIHsKICAgICBtYXJnaW4tYm90dG9tOiAwOwogICAgIHBhZGRpbmc6IDVweDsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUVFOwogICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLkZBUU1lc3NhZ2VCcm93c2VyIGEuQ2xvc2UgewogICAgZGlzcGxheTogYmxvY2s7CiAgICB3aWR0aDogMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiA0cHg7CiAgICB0b3A6IDZweDsKICAgIGNvbG9yOiAjNUQ1RDVEOwp9CgouRkFRTWVzc2FnZUJyb3dzZXIgYS5DbG9zZTpob3ZlciB7CiAgICBjb2xvcjogIzAwMDsKfQp9Cg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgojRkFRUmVsYXRlZEFydGljbGVzLkhpZGRlbiB7CiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IDRweDsKICAgIHdpZHRoOiAzMDBweDsKICAgIHBhZGRpbmc6IDA7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgLldpZGdldFNpbXBsZSB7CiAgICBwYWRkaW5nLXRvcDogMHB4OwogICAgYm9yZGVyLXRvcDogbm9uZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgLldpZGdldFNpbXBsZSAuSGVhZGVyIGgzIHsKICAgIGhlaWdodDogMTZweDsKfQoKI0ZBUVJlbGF0ZWRBcnRpY2xlcyAuV2lkZ2V0U2ltcGxlIC5Db250ZW50IHsKICAgIHBhZGRpbmc6IDA7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgLldpZGdldFNpbXBsZSAuSGludCB7CiAgICBwYWRkaW5nOiA4cHg7CiAgICBjb2xvcjogIzY2NjY2NjsKfQoKI0ZBUVJlbGF0ZWRBcnRpY2xlcyB1bC5GQVFNaW5pTGlzdCBsaSB7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0RERERERDsKICAgIHBhZGRpbmc6IDVweCA4cHg7Cn0KCiNGQVFSZWxhdGVkQXJ0aWNsZXMgdWwuRkFRTWluaUxpc3QgbGk6bGFzdC1jaGlsZCB7CiAgICBtYXJnaW4tYm90dG9tOiAwcHg7CiAgICBib3JkZXItYm90dG9tOiAwcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNXB4Owp9CgojRkFRUmVsYXRlZEFydGljbGVzIHVsLkZBUU1pbmlMaXN0IHNwYW4gewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIFdpZGdldHMKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKCi8qKgogKiBAc3Vic2VjdGlvbiAgV2lkZ2V0Qm94CiAqLwoKLkNhbGxGb3JBY3Rpb24gewogICAgcGFkZGluZzogMHB4OwogICAgYmFja2dyb3VuZDogI2VlZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2JiYjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCBlYXNlLWluIDAuMnM7Cn0KCi8qKgogKiBAY3NzLWZvciAgICAgRmlyZWZveAogKiBAbm90ZSAgICAgICAgYnVnOiBidXR0b24gY29udGFpbmluZyBhbiBlbGVtZW50IGhhcyBhbiBoaWRkZW4gcGFkZGluZwogKi8KCi5DYWxsRm9yQWN0aW9uOjotbW96LWZvY3VzLWlubmVyIHsKICAgIGJvcmRlcjogMDsKICAgIHBhZGRpbmc6IDA7Cn0KCi5DYWxsRm9yQWN0aW9uOmhvdmVyIHsKICAgIGNvbG9yOiAjMDAwOwogICAgYm9yZGVyLWNvbG9yOiAjNjk2OTY5Owp9CgouQ2FsbEZvckFjdGlvbiBzcGFuIHsKICAgIGhlaWdodDogMTJweDsKICAgIHBhZGRpbmc6IDNweCA3cHggNnB4OwogICAgbGluZS1oZWlnaHQ6IDE0cHg7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY29sb3I6ICMzMzM7CiAgICBmb250LXNpemU6IDExcHg7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjRkZGOwogICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZGRjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLkNhbGxGb3JBY3Rpb24gc3BhbiBpIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGxlZnQ6IDBweDsKICAgIHRvcDogMXB4OwogICAgZm9udC1zaXplOiAxM3B4OwogICAgd2lkdGg6IDE1cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5DYWxsRm9yQWN0aW9uOmFjdGl2ZSwKLkNhbGxGb3JBY3Rpb246aG92ZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTVlNTsKICAgIGJvcmRlci1jb2xvcjogIzk5OTsKfQoKLlNlYXJjaEJveCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5TZWFyY2hCb3ggaW5wdXRbdHlwZT0ndGV4dCddIHsKICAgIGhlaWdodDogMTVweDsKICAgIG1hcmdpbjogMHB4OwogICAgcGFkZGluZzogNHB4IDVweDsKICAgIGZvbnQ6IG5vcm1hbCAxMnB4LzE1cHggIkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsKICAgIGJvcmRlci1jb2xvcjogIzk5OTsKICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgIHZlcnRpY2FsLWFsaWduOiBib3R0b207CiAgICB3aWR0aDogMTNwYzsKfQoKLkludmlzaWJsZVRleHQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiAwOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgd2lkdGg6IDA7Cn0KCi5SVEwgLlNlYXJjaEJveCBpbnB1dFt0eXBlPSd0ZXh0J117CiAgICBib3JkZXItbGVmdDogbm9uZTsKICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICM5OTk7CiAgICB3aWR0aDogMTNwYzsKfQoKLlNlYXJjaEJveCBpbnB1dDpmb2N1cyB7CiAgICBib3JkZXItY29sb3I6ICM2NjY7CiAgICBib3JkZXItcmlnaHQ6IG5vbmU7Cn0KLlJUTCAuU2VhcmNoQm94IGlucHV0OmZvY3VzIHsKICAgIGJvcmRlci1jb2xvcjogIzY2NjsKICAgIGJvcmRlci1sZWZ0OiBub25lOwp9CgouU2VhcmNoQm94IGJ1dHRvbiB7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgMCAwIC00cHg7CiAgICBwYWRkaW5nOiAzcHggM3B4IDRweDsKICAgIGNvbG9yOiAjMzMzOwogICAgZm9udDogYm9sZCAxMHB4LzEzcHggIkhlbHZldGljYSBOZXVlIixIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsKICAgIGJhY2tncm91bmQ6ICNFRUU7CiAgICBib3JkZXI6IDFweCBzb2xpZCAjODg4OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZGRjsKICAgIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsKfQoKLlJUTCAuU2VhcmNoQm94IGJ1dHRvbiB7CiAgICBoZWlnaHQ6IDI1cHg7CiAgICBtYXJnaW46IDAgLTRweCAwIDA7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGOwogICAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwogICAgYm9yZGVyOiAxcHggc29saWQgIzg4ODsKfQoKLlNlYXJjaEJveCBidXR0b246aG92ZXIsCi5TZWFyY2hCb3ggYnV0dG9uOmhvdmVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNlNWU1ZTU7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCn0K
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHBhY2thZ2UgICAgIEZBUSAtIFNraW4gIkRlZmF1bHQiCiAqIEBzZWN0aW9uICAgICBGQVFab29tCiAqLwoKLyoqCiAqIEBzZWN0aW9uICAgICBIZWFkZXIKICovCgouRkFRSGVhZGVyIHsKICAgIHdpZHRoOiA4MCU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouRkFRSGVhZGVyIGgyIHsKICAgIG1hcmdpbjogM3B4IDAgMDsKICAgIGZvbnQtc2l6ZTogMjRweDsKICAgIGxpbmUtaGVpZ2h0OiAxMjAlOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZmxvYXQ6IGxlZnQ7Cn0KLlJUTCAuRkFRSGVhZGVyIGgyIHsKICAgIHBhZGRpbmc6IDAgMzZweCAwIDA7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5GQVFIZWFkZXIgLkZBUUhvb2sgewogICAgY29sb3I6ICM2NjY7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCi5NZXNzYWdlQm9keSB7CiAgICBwYWRkaW5nOiAwcHggMTVweDsKfQoKI0ZBUU9wdGlvbnMgewogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwcHg7CiAgICB0b3A6IDEwcHg7Cn0KCiNGQVFPcHRpb25zIGxpIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbWFyZ2luLWxlZnQ6IDVweDsKfQoKI0ZBUU9wdGlvbnMgLlByaW50IHsKICAgIGNvbG9yOiAjNzc3OwogICAgZm9udC1zaXplOiAxNXB4Owp9CiNGQVFPcHRpb25zIC5QcmludDpob3ZlciB7CiAgICBjb2xvcjogI2Y5MjsKfQojRkFRT3B0aW9ucyAuUHJpbnQgc3BhbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4Owp9CgpsaS5LZXl3b3Jkc0NvbnRhaW5lciB7CiAgICBtYXJnaW4tdG9wOiA1cHg7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7Cn0KCmRpdi5BdHRhY2htZW50cyB7CiAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgouQXR0YWNobWVudHMgLkxhYmVsIHsKICAgIGJhY2tncm91bmQ6IG5vLXJlcGVhdCBzY3JvbGwgcmlnaHQgY2VudGVyIHRyYW5zcGFyZW50OwogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4OwogICAgY29sb3I6ICNBQUFBQUE7CiAgICBmbG9hdDogbGVmdDsKICAgIG1hcmdpbjogMCAzcHg7CiAgICB3aWR0aDogMTBweDsKfQoKLlJUTCAuQXR0YWNobWVudHMgLkxhYmVsIHsKICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQ7CiAgICB0ZXh0LWluZGVudDogLTk5OTlweDsKICAgIHRleHQtYWxpZ246cmlnaHQ7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5BdHRhY2htZW50cyBkaXYgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgouQXR0YWNobWVudHMgLkRvd25sb2FkQXR0YWNobWVudCB7CiAgICBtYXJnaW4tbGVmdDogMnB4Owp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpGQVE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTGlzdDo6VXRpbCBxdygpOwp1c2UgS2VybmVsOjpPdXRwdXQ6OlRlbXBsYXRlOjpQcm92aWRlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpGQVEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcsCik7Cgo9aGVhZDEgTkFNRQoKdmFyOjpwYWNrYWdlc2V0dXA6OkZBUSAtIGNvZGUgdG8gZXhlY3V0ZSBkdXJpbmcgcGFja2FnZSBpbnN0YWxsYXRpb24KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENvZGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCd2YXI6OnBhY2thZ2VzZXR1cDo6RkFRJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEZvcmNlIGEgcmVsb2FkIG9mIFpaWkF1dG8ucG0gYW5kIFpaWkFBdXRvLnBtIHRvIGdldCB0aGUgZnJlc2ggY29uZmlndXJhdGlvbiB2YWx1ZXMuCiAgICBmb3IgbXkgJE1vZHVsZSAoIHNvcnQga2V5cyAlSU5DICkgewogICAgICAgIGlmICggJE1vZHVsZSA9fiBtL1paWkFBP3V0b1wucG0kLyApIHsKICAgICAgICAgICAgZGVsZXRlICRJTkN7JE1vZHVsZX07CiAgICAgICAgfQogICAgfQoKICAgICMgQ3JlYXRlIGNvbW1vbiBvYmplY3RzIHdpdGggZnJlc2ggZGVmYXVsdCBjb25maWcuCiAgICAkS2VybmVsOjpPTS0+T2JqZWN0c0Rpc2NhcmQoKTsKCiAgICAjIERlZmluZSBVc2VySUQgcGFyYW1ldGVyIGZvciB0aGUgY29uc3RydWN0b3Igb2YgdGhlIHN0YXRzIG9iamVjdC4KICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgRGVmaW5lIGZpbGUgcHJlZml4LgogICAgJFNlbGYtPntGaWxlUHJlZml4fSA9ICdGQVEnOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGluc2VydCB0aGUgRkFRIHN0YXRlcwogICAgJFNlbGYtPl9JbnNlcnRGQVFTdGF0ZXMoKTsKCiAgICAjIEFkZCBkZWZhdWx0IGdyb3VwcyB0byB0aGUgY2F0ZWdvcnkgJ01pc2MnLgogICAgJFNlbGYtPl9DYXRlZ29yeUdyb3VwU2V0KAogICAgICAgIENhdGVnb3J5ID0+ICdNaXNjJywKICAgICAgICBHcm91cHMgICA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICk7CgogICAgIyBjcmVhdGUgYWRkaXRpb25hbCBGQVEgbGFuZ3VhZ2VzCiAgICAkU2VsZi0+X0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcygpOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaW5zZXJ0IHRoZSBGQVEgc3RhdGVzCiAgICAkU2VsZi0+X0luc2VydEZBUVN0YXRlcygpOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICAjIGNyZWF0ZSBhZGRpdGlvbmFsIEZBUSBsYW5ndWFnZXMKICAgICRTZWxmLT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZSgpCgpydW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntGaWxlUHJlZml4fSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICMgY3JlYXRlIGFkZGl0aW9uYWwgRkFRIGxhbmd1YWdlcwogICAgJFNlbGYtPl9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMoKTsKCiAgICAjIGRlbGV0ZSB0aGUgRkFRIGNhY2hlICh0byBhdm9pZCBvbGQgZGF0YSBmcm9tIHByZXZpb3VzIEZBUSBtb2R1bGVzKQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnRkFRJywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZVNwZWNpYWwoKQoKcnVuIHNwZWNpYWwgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlU3BlY2lhbCgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlU3BlY2lhbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY29udmVydCBcbiB0byA8YnI+IGZvciBleGlzdGluZyBhcnRpY2xlcwogICAgJFNlbGYtPl9Db252ZXJ0TmV3bGluZXMoKTsKCiAgICAjIHN0YXJ0IG5vcm1hbCBjb2RlIHVwZ3JhZGUKICAgICRTZWxmLT5Db2RlVXBncmFkZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF8xKCkKClRoaXMgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBpZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSB2ZXJzaW9uIGlzIHNtYWxsZXIgdGhhbiA0LjAuMS4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfMSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfMSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIE1pZ3JhdGUgdGhlIERUTCBDb250ZW50IGluIHRoZSBTeXNDb25maWcuCiAgICAkU2VsZi0+X01pZ3JhdGVEVExJblN5c0NvbmZpZygpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNC4wLjkxLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGFuZ2UgY29uZmlndXJhdGlvbnMgdG8gbWF0Y2ggdGhlIG5ldyBtb2R1bGUgbG9jYXRpb24uCiAgICAkU2VsZi0+X01pZ3JhdGVDb25maWdzKCk7CgogICAgIyBTZXQgY29udGVudCB0eXBlLgogICAgJFNlbGYtPl9TZXRDb250ZW50VHlwZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzVfMF85MigpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNS4wLjkyLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzVfMF85MigpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl81XzBfOTIgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBSZWNvdmVyIHRoZSBvbGQgcGVybWlzc2lvbnMKICAgICRTZWxmLT5fTWlncmF0ZVBlcm1pc3Npb25zKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJlbW92ZSBEeW5hbWljIEZpZWxkcyBhbmQgaXRzIHZhbHVlcwogICAgJFNlbGYtPl9EeW5hbWljRmllbGRzRGVsZXRlKCk7CgogICAgIyBEZWFjdGl2YXRlIHRoZSBncm91cCAnZmFxJy4KICAgICRTZWxmLT5fR3JvdXBEZWFjdGl2YXRlKAogICAgICAgIE5hbWUgPT4gJ2ZhcScsCiAgICApOwoKICAgICMgRGVhY3RpdmF0ZSB0aGUgZ3JvdXAgJ2ZhcV9hZG1pbicuCiAgICAkU2VsZi0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICdmYXFfYWRtaW4nLAogICAgKTsKCiAgICAjIERlYWN0aXZhdGUgdGhlIGdyb3VwICdmYXFfYXBwcm92YWwnLgogICAgJFNlbGYtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAnZmFxX2FwcHJvdmFsJywKICAgICk7CgogICAgIyB1bmluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c1VuaW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICAjIGRlbGV0ZSBhbGwgbGlua3Mgd2l0aCBGQVEgYXJ0aWNsZXMKICAgICRTZWxmLT5fTGlua0RlbGV0ZSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0luc2VydEZBUVN0YXRlcygpCgppbnNlcnRzIG5lZWRlZCBGQVEgc3RhdGVzIGludG8gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9JbnNlcnRGQVFTdGF0ZXMoKTsKCj1jdXQKCnN1YiBfSW5zZXJ0RkFRU3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUgZmFxX3N0YXRlX3R5cGVzID0+IGZhcV9zdGF0ZXMKICAgIG15ICVTdGF0ZSA9ICgKICAgICAgICAnaW50ZXJuYWwnID0+ICdpbnRlcm5hbCAoYWdlbnQpJywKICAgICAgICAnZXh0ZXJuYWwnID0+ICdleHRlcm5hbCAoY3VzdG9tZXIpJywKICAgICAgICAncHVibGljJyAgID0+ICdwdWJsaWMgKGFsbCknLAogICAgKTsKCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlU3RhdGUgKSB7CgogICAgICAgICMgZ2V0IHRoZSBzdGF0ZSB0eXBlCiAgICAgICAgbXkgJFN0YXRlVHlwZVJlZiA9ICRGQVFPYmplY3QtPlN0YXRlVHlwZUdldCgKICAgICAgICAgICAgTmFtZSAgID0+ICRUeXBlLAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGUgc3RhdGUKICAgICAgICAkRkFRT2JqZWN0LT5TdGF0ZUFkZCgKICAgICAgICAgICAgTmFtZSAgID0+ICRTdGF0ZXskVHlwZX0sCiAgICAgICAgICAgIFR5cGVJRCA9PiAkU3RhdGVUeXBlUmVmLT57U3RhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfQ29udmVydE5ld2xpbmVzKCkKCmNvdmVydHMgYWxsIFxuIGludG8gPGJyPiBmb3IgRmllbGRzIDEtNiBpbiBhbGwgZXhpc3RpbmcgRkFRIGFydGljbGVzCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQ29udmVydE5ld2xpbmVzKCk7Cgo9Y3V0CgpzdWIgX0NvbnZlcnROZXdsaW5lcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgb25seSBjb252ZXJ0IFxuIHRvIDxicj4gaWYgSFRNTCB2aWV3IGlzIGVuYWJsZWQKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGQVE6Okl0ZW06OkhUTUwnKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBGQVEgSURzCiAgICBteSBASXRlbUlEczsKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gIlNFTEVDVCBpZCBGUk9NIGZhcV9pdGVtIiwKICAgICk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoKCBASXRlbUlEcywgJFJvd1swXSApOwogICAgfQoKICAgICMgZ2V0IEZBUSBvYmplY3QKICAgIG15ICRGQVFPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RkFRJyk7CgogICAgSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoQEl0ZW1JRHMpIHsKCiAgICAgICAgIyBnZXQgRkFRIGRhdGEKICAgICAgICBteSAlRkFRID0gJEZBUU9iamVjdC0+RkFRR2V0KAogICAgICAgICAgICBJdGVtSUQgICAgID0+ICRJdGVtSUQsCiAgICAgICAgICAgIEl0ZW1GaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IEZBUSBhcnRpY2xlIGZpZWxkcyAxLTYKICAgICAgICBteSAkRm91bmROZXdsaW5lOwogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAocXcgKEZpZWxkMSBGaWVsZDIgRmllbGQzIEZpZWxkNCBGaWVsZDUgRmllbGQ2KSkgewogICAgICAgICAgICBuZXh0IEtFWSBpZiAhJEZBUXskS2V5fTsKCiAgICAgICAgICAgICMgcmVwbGFjZSBcbiB3aXRoIDxicj4KICAgICAgICAgICAgJEZBUXskS2V5fSA9fiBzL1xuLzxiclwvPlxuL2c7CgogICAgICAgICAgICAkRm91bmROZXdsaW5lID0gMTsKICAgICAgICB9CiAgICAgICAgbmV4dCBJRCBpZiAhJEZvdW5kTmV3bGluZTsKCiAgICAgICAgIyB1cGRhdGUgRkFRIGRhdGEKICAgICAgICAkRkFRT2JqZWN0LT5GQVFVcGRhdGUoCiAgICAgICAgICAgICVGQVEsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfR3JvdXBBZGQoKQoKYWRkIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdUaGUgZ3JvdXAgZGVzY3JpcHRpb24uJywKICAgICk7Cgo9Y3V0CgpzdWIgX0dyb3VwQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgRGVzY3JpcHRpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICAjIGdldCBncm91cCBvYmplY3QKICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICMgZ2V0IGxpc3Qgb2YgYWxsIGdyb3VwcwogICAgbXkgJUdyb3VwTGlzdCA9ICRHcm91cE9iamVjdC0+R3JvdXBMaXN0KCk7CgogICAgIyByZXZlcnNlIHRoZSBncm91cCBsaXN0IGZvciBlYXNpZXIgbG9va3VwCiAgICBteSAlR3JvdXBMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJUdyb3VwTGlzdDsKCiAgICAjIGNoZWNrIGlmIGdyb3VwIGFscmVhZHkgZXhpc3RzCiAgICBteSAkR3JvdXBJRCA9ICRHcm91cExpc3RSZXZlcnNleyAkUGFyYW17TmFtZX0gfTsKCiAgICAjIHJlYWN0aXZhdGUgdGhlIGdyb3VwCiAgICBpZiAoJEdyb3VwSUQpIHsKCiAgICAgICAgIyBnZXQgY3VycmVudCBncm91cCBkYXRhCiAgICAgICAgbXkgJUdyb3VwRGF0YSA9ICRHcm91cE9iamVjdC0+R3JvdXBHZXQoCiAgICAgICAgICAgIElEICAgICA9PiAkR3JvdXBJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZWFjdGl2YXRlIGdyb3VwCiAgICAgICAgJEdyb3VwT2JqZWN0LT5Hcm91cFVwZGF0ZSgKICAgICAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFkZCB0aGUgZ3JvdXAKICAgIGVsc2UgewogICAgICAgIHJldHVybiBpZiAhJEdyb3VwT2JqZWN0LT5Hcm91cEFkZCgKICAgICAgICAgICAgTmFtZSAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIENvbW1lbnQgPT4gJFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgbG9va3VwIHRoZSBuZXcgZ3JvdXAgaWQKICAgIG15ICROZXdHcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCAgPT4gJFBhcmFte05hbWV9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGFkZCB1c2VyIHJvb3QgdG8gdGhlIGdyb3VwCiAgICAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyQWRkKAogICAgICAgIEdJRCAgICAgICAgPT4gJE5ld0dyb3VwSUQsCiAgICAgICAgVUlEICAgICAgICA9PiAxLAogICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICBybyAgICAgICAgPT4gMSwKICAgICAgICAgICAgbW92ZV9pbnRvID0+IDEsCiAgICAgICAgICAgIGNyZWF0ZSAgICA9PiAxLAogICAgICAgICAgICBvd25lciAgICAgPT4gMSwKICAgICAgICAgICAgcHJpb3JpdHkgID0+IDEsCiAgICAgICAgICAgIHJ3ICAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0dyb3VwRGVhY3RpdmF0ZSgpCgpkZWFjdGl2YXRlIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgKTsKCj1jdXQKCnN1YiBfR3JvdXBEZWFjdGl2YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTmFtZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBncm91cCBvYmplY3QKICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICMgbG9va3VwIGdyb3VwIGlkCiAgICBteSAkR3JvdXBJRCA9ICRHcm91cE9iamVjdC0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgPT4gJFBhcmFte05hbWV9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRHcm91cElEOwoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGN1cnJlbnQgZ3JvdXAgZGF0YQogICAgbXkgJUdyb3VwRGF0YSA9ICRHcm91cE9iamVjdC0+R3JvdXBHZXQoCiAgICAgICAgSUQgICAgID0+ICRHcm91cElELAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGRlYWN0aXZhdGUgZ3JvdXAKICAgICRHcm91cE9iamVjdC0+R3JvdXBVcGRhdGUoCiAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle2ludmFsaWR9LAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfTGlua0RlbGV0ZSgpCgpkZWxldGUgYWxsIGV4aXN0aW5nIGxpbmtzIHRvIEZBUSBhcnRpY2xlcwoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0xpbmtEZWxldGUoKTsKCj1jdXQKCnN1YiBfTGlua0RlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgYWxsIEZBUSBhcnRpY2xlIGlkcwogICAgbXkgQEl0ZW1JRHMgPSAoKTsKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCBGUk9NIGZhcV9pdGVtJwogICAgKTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQEl0ZW1JRHMsICRSb3dbMF07CiAgICB9CiAgICByZXR1cm4gaWYgIUBJdGVtSURzOwoKICAgICMgZGVsZXRlIHRoZSBGQVEgYXJ0aWNsZSBsaW5rcwogICAgZm9yIG15ICRJdGVtSUQgKEBJdGVtSURzKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICAgICAgT2JqZWN0ID0+ICdGQVEnLAogICAgICAgICAgICBLZXkgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9DcmVhdGVBZGl0aW9uYWxGQVFMYW5ndWFnZXMoKQoKY3JlYXRlcyBhZGRpdGlvbmFsIEZBUSBsYW5ndWFnZXMgZm9yIHN5c3RlbSBkZWZhdWx0IGxhbmd1YWdlIGFuZCB1c2VyIGxhbmd1YWdlCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQ3JlYXRlQWRpdGlvbmFsRkFRTGFuZ3VhZ2VzKCk7Cgo9Y3V0CgpzdWIgX0NyZWF0ZUFkaXRpb25hbEZBUUxhbmd1YWdlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHN5c3RlbSBkZWZhdWx0IGxhbmd1YWdlCiAgICBteSAkTGFuZ3VhZ2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0RlZmF1bHRMYW5ndWFnZScpOwogICAgaWYgKCRMYW5ndWFnZSkgewoKICAgICAgICAjIGdldCBGQVEgb2JqZWN0CiAgICAgICAgbXkgJEZBUU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKTsKCiAgICAgICAgIyBnZXQgY3VycmVudCBGQVEgbGFuZ3VhZ2VzCiAgICAgICAgbXkgJUN1cnJlbnRMYW5ndWFnZXMgPSAkRkFRT2JqZWN0LT5MYW5ndWFnZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdXNlIHJldmVyc2UgaGFzaCBmb3IgZWFzeSBsb29rdXAKICAgICAgICBteSAlUmV2ZXJzZUxhbmd1YWdlcyA9IHJldmVyc2UgJUN1cnJlbnRMYW5ndWFnZXM7CgogICAgICAgICMgY2hlY2sgaWYgbGFuZ3VhZ2UgaXMgYWxyZWFkeSBkZWZpbmVkCiAgICAgICAgaWYgKCAhJFJldmVyc2VMYW5ndWFnZXN7JExhbmd1YWdlfSApIHsKCiAgICAgICAgICAgICMgYWRkIGxhbmd1YWdlCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEZBUU9iamVjdC0+TGFuZ3VhZ2VBZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJExhbmd1YWdlLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0NhdGVnb3J5R3JvdXBTZXQoKQoKQWRkcyB0aGUgZ2l2ZW4gZ3JvdXAgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGNhdGVnb3J5LgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NhdGVnb3J5R3JvdXBTZXQoCiAgICAgICAgQ2F0ZWdvcnkgPT4gJ01pc2MnLAogICAgICAgIEdyb3VwcyAgID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgKTsKCj1jdXQKCnN1YiBfQ2F0ZWdvcnlHcm91cFNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDYXRlZ29yeSBHcm91cHMpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCByZWYgJFBhcmFte0dyb3Vwc30gbmUgJ0FSUkFZJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkdyb3VwcyBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBGQVEgb2JqZWN0CiAgICBteSAkRkFRT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkZBUScpOwoKICAgICMgZ2V0IGFsbCBjYXRlZ29yaWVzIGFuZCB0aGVpciBpZHMKICAgIG15ICRDYXRlZ29yeVRyZWUgPSAkRkFRT2JqZWN0LT5DYXRlZ29yeVRyZWVMaXN0KAogICAgICAgIFZhbGlkICA9PiAxLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGNyZWF0ZSBsb29rdXAgaGFzaCBmb3IgdGhlIGNhdGVnb3J5IGlkCiAgICBteSAlRkFRMklEID0gcmV2ZXJzZSAleyRDYXRlZ29yeVRyZWV9OwoKICAgICMgbG9va3VwIHRoZSBjYXRlZ29yeSBpZAogICAgbXkgJENhdGVnb3J5SUQgPSAkRkFRMklEeyAkUGFyYW17Q2F0ZWdvcnl9IH07CgogICAgIyBsb29rdXAgdGhlIGdyb3VwIGlkcwogICAgbXkgQEdyb3VwSURzOwogICAgZm9yIG15ICRHcm91cCAoIEB7ICRQYXJhbXtHcm91cHN9IH0gKSB7CiAgICAgICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgIEdyb3VwID0+ICRHcm91cCwKICAgICAgICApOwogICAgICAgIHB1c2ggQEdyb3VwSURzLCAkR3JvdXBJRDsKICAgIH0KCiAgICAjIHNldCBjYXRlZ29yeSBncm91cAogICAgJEZBUU9iamVjdC0+U2V0Q2F0ZWdvcnlHcm91cCgKICAgICAgICBDYXRlZ29yeUlEID0+ICRDYXRlZ29yeUlELAogICAgICAgIEdyb3VwSURzICAgPT4gXEBHcm91cElEcywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0R5bmFtaWNGaWVsZHNEZWxldGUoKQoKZGVsZXRlIGFsbCBleGlzdGluZyBkeW5hbWljIGZpZWxkcyBmb3IgRkFRCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyk7CgogICAgIyBnZXQgdGhlIGxpc3Qgb2YgRkFRIGR5bmFtaWMgZmllbGRzICh2YWxpZCBhbmQgaW52YWxpZCBvbmVzKQogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICBPYmplY3RUeXBlID0+IFsnRkFRJ10sCiAgICApOwoKICAgICMgZGVsZXRlIHRoZSBkeW5hbWljIGZpZWxkcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgIyBkZWxldGUgYWxsIGZpZWxkIHZhbHVlcwogICAgICAgIG15ICRWYWx1ZXNEZWxldGVTdWNjZXNzID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5BbGxWYWx1ZXNEZWxldGUoCiAgICAgICAgICAgIEZpZWxkSUQgPT4gJER5bmFtaWNGaWVsZC0+e0lEfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdmFsdWVzIGNvdWxkIGJlIGRlbGV0ZWQKICAgICAgICBpZiAoJFZhbHVlc0RlbGV0ZVN1Y2Nlc3MpIHsKCiAgICAgICAgICAgICMgZGVsZXRlIGZpZWxkCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAgICAgSUQgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGVsZXRlIGR5bmFtaWMgZmllbGQgJyREeW5hbWljRmllbGQtPntOYW1lfSchIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdmFsdWVzIGNvdWxkIG5vdCBiZSBkZWxldGVkCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGVsZXRlIHZhbHVlcyBmb3IgZHluYW1pYyBmaWVsZCAnJER5bmFtaWNGaWVsZC0+e05hbWV9JyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9NaWdyYXRlRFRMSW5TeXNDb25maWcgewoKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRQcm92aWRlck9iamVjdCAgPSBLZXJuZWw6Ok91dHB1dDo6VGVtcGxhdGU6OlByb3ZpZGVyLT5uZXcoKTsKCiAgICAjIEdldCBzZXR0aW5nJ3MgY29udGVudC4KICAgIG15ICRTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlJyk7CiAgICByZXR1cm4gaWYgISRTZXR0aW5nOwoKICAgIG15IEBOZXdTZXR0aW5nczsKCiAgICBNRU5VTU9EVUxFOgogICAgZm9yIG15ICRNZW51TW9kdWxlICggc29ydCBrZXlzICV7JFNldHRpbmd9ICkgewoKICAgICAgICBTRVRUSU5HSVRFTToKICAgICAgICBmb3IgbXkgJFNldHRpbmdJdGVtICggc29ydCBrZXlzICV7ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9IH0gKSB7CgogICAgICAgICAgICBteSAkU2V0dGluZ0NvbnRlbnQgPSAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+eyRTZXR0aW5nSXRlbX07CgogICAgICAgICAgICAjIERvIG5vdGhpbmcgbm8gdmFsdWUgZm9yIG1pZ3JhdGluZy4KICAgICAgICAgICAgbmV4dCBTRVRUSU5HSVRFTSBpZiAhJFNldHRpbmdDb250ZW50OwoKICAgICAgICAgICAgbXkgJFRUQ29udGVudDsKICAgICAgICAgICAgZXZhbCB7CiAgICAgICAgICAgICAgICAkVFRDb250ZW50ID0gJFByb3ZpZGVyT2JqZWN0LT5NaWdyYXRlRFRMdG9UVCggQ29udGVudCA9PiAkU2V0dGluZ0NvbnRlbnQgKTsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCRAKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkTWVudU1vZHVsZS0+JFNldHRpbmdJdGVtIDogJEAhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+eyRTZXR0aW5nSXRlbX0gPSAkVFRDb250ZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBOZXdTZXR0aW5ncywgewogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAiRkFROjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIyRNZW51TW9kdWxlIiwKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJFNldHRpbmctPnskTWVudU1vZHVsZX0sCiAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ0RlcGxveSBGQVEgbWVudSBtb2R1bGUuJywKICAgICAgICBTZXR0aW5ncyA9PiBcQE5ld1NldHRpbmdzLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9NaWdyYXRlQ29uZmlncyB7CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgTWlncmF0ZSBGQVEgbWVudSBtb2R1bGVzLgogICAgIyBHZXQgc2V0dGluZyBjb250ZW50IGZvciBGQVEgbWVudSBtb2R1bGVzLgogICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZBUTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKCiAgICBteSBATmV3U2V0dGluZ3M7CiAgICBNRU5VTU9EVUxFOgogICAgZm9yIG15ICRNZW51TW9kdWxlICggc29ydCBrZXlzICV7JFNldHRpbmd9ICkgewoKICAgICAgICAjIFVwZGF0ZSBtb2R1bGUgbG9jYXRpb24uCiAgICAgICAgbXkgJE1vZHVsZSA9ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9LT57J01vZHVsZSd9OwogICAgICAgIGlmICggJE1vZHVsZSAhfiBte0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFNZW51KFx3Kyl9ICkgewogICAgICAgICAgICBuZXh0IE1FTlVNT0RVTEU7CiAgICAgICAgfQoKICAgICAgICAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+e01vZHVsZX0gPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZBUU1lbnU6OkdlbmVyaWMiOwoKICAgICAgICAjIEJ1aWxkIG5ldyBzZXR0aW5nLgogICAgICAgIHB1c2ggQE5ld1NldHRpbmdzLCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdGQVE6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjJyAuICRNZW51TW9kdWxlLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkU2V0dGluZy0+eyRNZW51TW9kdWxlfSwKICAgICAgICB9OwogICAgfQoKICAgICMgTWlncmF0ZSBGQVEgY29uZmlnIGl0ZW1zLgogICAgbXkgQENvbmZpZ3MgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzMtRkFRU2VhcmNoJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGE6OkFnZW50RkFRU2VhcmNoJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnQ3VzdG9tZXJGcm9udGVuZDo6SGVhZGVyTWV0YU1vZHVsZScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzMtRkFRU2VhcmNoJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkhlYWRlck1ldGE6OkN1c3RvbWVyRkFRU2VhcmNoJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUHVibGljRnJvbnRlbmQ6OkhlYWRlck1ldGFNb2R1bGUnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICczLUZBUVNlYXJjaCcsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpIZWFkZXJNZXRhOjpQdWJsaWNGQVFTZWFyY2gnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJ0ZBUScsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGaWx0ZXJFbGVtZW50UG9zdDo6RkFRJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRkFROjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdTbWFsbCcsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFPdmVydmlldzo6U21hbGwnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGQVE6OkZyb250ZW5kOjpKb3VybmFsT3ZlcnZpZXcnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdTbWFsbCcsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpGQVFKb3VybmFsT3ZlcnZpZXc6OlNtYWxsJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUHJlZmVyZW5jZXNHcm91cHMnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdGQVFPdmVydmlld1NtYWxsUGFnZVNob3duJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnUHJlZmVyZW5jZXNHcm91cHMnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICdGQVFKb3VybmFsT3ZlcnZpZXdTbWFsbFBhZ2VTaG93bicsCiAgICAgICAgICAgIE1vZHVsZSAgICAgPT4gJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6R2VuZXJpYycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0Rhc2hib2FyZEJhY2tlbmQnLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICcwMzk4LUZBUS1MYXN0Q2hhbmdlJywKICAgICAgICAgICAgTW9kdWxlICAgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6RkFRJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRGFzaGJvYXJkQmFja2VuZCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzAzOTktRkFRLUxhc3RDcmVhdGUnLAogICAgICAgICAgICBNb2R1bGUgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpGQVEnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdGcm9udGVuZDo6VG9vbEJhck1vZHVsZScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJzkwLUZBUTo6QWdlbnRGQVFBZGQnLAogICAgICAgICAgICBNb2R1bGUgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6VG9vbEJhcjo6TGluaycsCiAgICAgICAgfSwKICAgICk7CgogICAgQ09ORklHSVRFTToKICAgIGZvciBteSAkQ29uZmlnIChAQ29uZmlncykgewoKICAgICAgICAjIEdldCBzZXR0aW5nIGNvbnRlbnQgZm9yIGhlYWRlciBtZXRhIEZBUSBzZWFyY2guCiAgICAgICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICRDb25maWctPntOYW1lfSApOwogICAgICAgIG5leHQgQ09ORklHSVRFTSBpZiAhJFNldHRpbmc7CgogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZy0+e0NvbmZpZ0l0ZW19OwogICAgICAgIG5leHQgQ09ORklHSVRFTSBpZiAhJFNldHRpbmctPnskQ29uZmlnSXRlbX0tPnsnTW9kdWxlJ307CgogICAgICAgICMgU2V0IG1vZHVsZS4KICAgICAgICAkU2V0dGluZy0+eyRDb25maWdJdGVtfS0+eydNb2R1bGUnfSA9ICRDb25maWctPntNb2R1bGV9OwoKICAgICAgICAjIEJ1aWxkIG5ldyBzZXR0aW5nLgogICAgICAgIHB1c2ggQE5ld1NldHRpbmdzLCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRDb25maWctPntOYW1lfSAuICcjIyMnIC4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRTZXR0aW5nLT57JENvbmZpZ0l0ZW19LAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIDEgaWYgIUBOZXdTZXR0aW5nczsKCiAgICAjIFdyaXRlIG5ldyBzZXR0aW5nLgogICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBDb21tZW50cyA9PiAnRkFRIC0gcGFja2FnZSBzZXR1cCBmdW5jdGlvbjogX01pZ3JhdGVDb25maWdzJywKICAgICAgICBTZXR0aW5ncyA9PiBcQE5ld1NldHRpbmdzLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKc3ViIF9TZXRDb250ZW50VHlwZSB7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpGQVEnKS0+RkFRQ29udGVudFR5cGVTZXQoKTsKfQoKc3ViIF9HZXRPVFJTNUNvbmZpZ0JhY2t1cCB7CiAgICBteSAkQ29uZmlnID0ge307CgogICAgbXkgJEZpbGVDbGFzcyA9ICdLZXJuZWw6OkNvbmZpZzo6QmFja3Vwczo6WlpaQXV0b09UUlM1JzsKICAgIGRlbGV0ZSAkSU5DeyRGaWxlQ2xhc3N9OwoKICAgIGlmICgKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKAogICAgICAgICAgICAkRmlsZUNsYXNzLAogICAgICAgICAgICBTaWxlbnQgPT4gMSwKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgICRGaWxlQ2xhc3MtPkxvYWQoJENvbmZpZyk7CiAgICB9CgogICAgcmV0dXJuICRDb25maWc7Cn0KCnN1YiBfTWlncmF0ZVBlcm1pc3Npb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE9sZENvbmZpZyA9ICRTZWxmLT5fR2V0T1RSUzVDb25maWdCYWNrdXAoKTsKICAgIG15ICROZXdDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRHZXRDb25maWcgPSBzdWIgewogICAgICAgIG15ICRTb3VyY2UgICAgICA9IHNoaWZ0OwogICAgICAgIG15ICRTZXR0aW5nTmFtZSA9IHNoaWZ0OwoKICAgICAgICBteSAkQ29uZmlnID0gJFNvdXJjZTsKICAgICAgICBteSBAS2V5cyAgID0gc3BsaXQgJyMjIycsICRTZXR0aW5nTmFtZTsKICAgICAgICB3aGlsZSAoIG15ICRLZXkgPSBzaGlmdCBAS2V5cyApIHsKICAgICAgICAgICAgJENvbmZpZyA9ICRDb25maWctPnskS2V5fTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkQ29uZmlnOwogICAgfTsKCiAgICBteSBATmV3U2V0dGluZ3MgICAgICAgPSAoKTsKICAgIG15IEBTZXR0aW5nc1RvTWlncmF0ZSA9ICgKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFFeHBsb3JlcicsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwICAgPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgIEdyb3VwUm8gPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgIE5hdkJhciAgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRkFRJywKICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2sgICA9PiAnSXRlbUFyZWEnLAogICAgICAgICAgICAgICAgICAgICAgICBHcm91cFJvID0+IFsnZmFxJ10KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRXhwbG9yZXInLAogICAgICAgICAgICAgICAgICAgICAgICBCbG9jayAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBHcm91cFJvID0+IFsnZmFxJ10KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFMYW5ndWFnZScsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwICA9PiBbJ2ZhcV9hZG1pbiddLAogICAgICAgICAgICAgICAgTmF2QmFyID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICdMYW5ndWFnZSBNYW5hZ2VtZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2sgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwID0+IFsnZmFxX2FkbWluJ10sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICA9PiAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRRWRpdCcsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwID0+IFsnZmFxJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICA9PiAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRQWRkJywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgID0+IFsnZmFxJ10sCiAgICAgICAgICAgICAgICBOYXZCYXIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJ05ldycsCiAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBHcm91cCA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUUNhdGVnb3J5JywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgID0+IFsnZmFxX2FkbWluJ10sCiAgICAgICAgICAgICAgICBOYXZCYXIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJ0NhdGVnb3J5IE1hbmFnZW1lbnQnLAogICAgICAgICAgICAgICAgICAgICAgICBCbG9jayA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgPT4gWydmYXFfYWRtaW4nXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFTZWFyY2gnLAogICAgICAgICAgICBEZWZhdWx0cyA9PiB7CiAgICAgICAgICAgICAgICBHcm91cCAgID0+IFsnZmFxJ10sCiAgICAgICAgICAgICAgICBHcm91cFJvID0+IFsnZmFxJ10sCiAgICAgICAgICAgICAgICBOYXZCYXIgID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ1NlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEJsb2NrICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwUm8gPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFTZWFyY2hTbWFsbCcsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwICAgPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgIEdyb3VwUm8gPT4gWydmYXEnXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFab29tJywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgICA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVJpY2hUZXh0JywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgICA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0Zyb250ZW5kOjpNb2R1bGUjIyNBZ2VudEZBUVByaW50JywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgPT4gWydmYXEnXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFKb3VybmFsJywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgICA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgTmF2QmFyICA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdKb3VybmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2sgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBSbyA9PiBbJ2ZhcSddLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICA9PiAnRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50RkFRSGlzdG9yeScsCiAgICAgICAgICAgIERlZmF1bHRzID0+IHsKICAgICAgICAgICAgICAgIEdyb3VwICAgPT4gWydmYXEnXSwKICAgICAgICAgICAgICAgIEdyb3VwUm8gPT4gWydmYXEnXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRGQVFEZWxldGUnLAogICAgICAgICAgICBEZWZhdWx0cyA9PiB7CiAgICAgICAgICAgICAgICBHcm91cCA9PiBbJ2ZhcSddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMzk4LUZBUS1MYXN0Q2hhbmdlJywKICAgICAgICAgICAgRGVmYXVsdHMgPT4gewogICAgICAgICAgICAgICAgR3JvdXAgPT4gJ2ZhcScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICA9PiAnRGFzaGJvYXJkQmFja2VuZCMjIzAzOTktRkFRLUxhc3RDcmVhdGUnLAogICAgICAgICAgICBEZWZhdWx0cyA9PiB7CiAgICAgICAgICAgICAgICBHcm91cCA9PiAnZmFxJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdGQVE6OkFwcHJvdmFsR3JvdXAnLAogICAgICAgICAgICBEZWZhdWx0cyA9PiAnZmFxX2FwcHJvdmFsJywKICAgICAgICB9LAogICAgKTsKCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIFNFVFRJTkc6CiAgICBmb3IgbXkgJFNldHRpbmcgKEBTZXR0aW5nc1RvTWlncmF0ZSkgewogICAgICAgIG15ICRTZXR0aW5nT2xkQ29uZmlnID0gJEdldENvbmZpZy0+KCAkT2xkQ29uZmlnLCAkU2V0dGluZy0+e05hbWV9LCApOwogICAgICAgIG15ICRTZXR0aW5nRGVmYXVsdHMgID0gJFNldHRpbmctPntEZWZhdWx0c307CgogICAgICAgIGlmICggJFNldHRpbmctPntOYW1lfSBlcSAnRkFROjpBcHByb3ZhbEdyb3VwJyApIHsKCiAgICAgICAgICAgIG15ICRFZmZlY3RpdmVWYWx1ZSA9ICRTZXR0aW5nT2xkQ29uZmlnIC8vICRTZXR0aW5nRGVmYXVsdHM7CgogICAgICAgICAgICBwdXNoIEBOZXdTZXR0aW5ncywgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFNldHRpbmctPntOYW1lfSwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRFZmZlY3RpdmVWYWx1ZSwKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBuZXh0IFNFVFRJTkc7CiAgICAgICAgfQoKICAgICAgICBteSBAR3JvdXBHcm91cFJvID0gcXcoIEdyb3VwIEdyb3VwUm8gKTsKCiAgICAgICAgewogICAgICAgICAgICBteSAkTmV3U2V0dGluZyA9ICRHZXRDb25maWctPiggJE5ld0NvbmZpZywgJFNldHRpbmctPntOYW1lfSApOwoKICAgICAgICAgICAgIyBDaGVjayBmb3IgR3JvdXBHcm91cFJvLgogICAgICAgICAgICBmb3IgbXkgJEtleSAoQEdyb3VwR3JvdXBSbykgewogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRTZXR0aW5nT2xkQ29uZmlnLT57JEtleX0gfHwgZGVmaW5lZCAkU2V0dGluZ0RlZmF1bHRzLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5ld1NldHRpbmctPnskS2V5fSA9ICRTZXR0aW5nT2xkQ29uZmlnLT57JEtleX0gLy8gJFNldHRpbmdEZWZhdWx0cy0+eyRLZXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBOZXdTZXR0aW5ncywgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFNldHRpbmctPntOYW1lfSwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICROZXdTZXR0aW5nLAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgZm9yIE5hdkJhciA9PiBOYXZpZ2F0aW9uLgogICAgICAgIGlmICggJFNldHRpbmdPbGRDb25maWctPntOYXZCYXJ9IHx8ICRTZXR0aW5nRGVmYXVsdHMtPntOYXZCYXJ9ICkgewogICAgICAgICAgICBteSAoIHVuZGVmLCAkRnJvbnRlbmQgKSA9IHNwbGl0ICcjIyMnLCAkU2V0dGluZy0+e05hbWV9OwogICAgICAgICAgICBteSAkTmV3U2V0dGluZyA9ICRHZXRDb25maWctPiggJE5ld0NvbmZpZywgIkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjJHsgRnJvbnRlbmQgfSIgKTsKCiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCBzb3J0IGtleXMgJXskTmV3U2V0dGluZ30gKSB7CiAgICAgICAgICAgICAgICBteSAkTmV3SXRlbXMgPSAkTmV3U2V0dGluZy0+eyRJbmRleH07CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5ld0l0ZW0gKCBAeyROZXdJdGVtc30gKSB7CgogICAgICAgICAgICAgICAgICAgIFNPVVJDRToKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFNvdXJjZSAoICggJFNldHRpbmdPbGRDb25maWctPntOYXZCYXJ9LCAkU2V0dGluZ0RlZmF1bHRzLT57TmF2QmFyfSApICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkT2xkSXRlbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBMaXN0OjpVdGlsOjpmaXJzdCB7ICRfLT57TmFtZX0gZXEgJE5ld0l0ZW0tPntOYW1lfSAmJiAkXy0+e0Jsb2NrfSBlcSAkTmV3SXRlbS0+e0Jsb2NrfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIEB7JFNvdXJjZX07CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgU09VUkNFIGlmICEkT2xkSXRlbTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChAR3JvdXBHcm91cFJvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJE9sZEl0ZW0tPnskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3SXRlbS0+eyRLZXl9ID0gJE9sZEl0ZW0tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFNPVVJDRTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcHVzaCBATmV3U2V0dGluZ3MsIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAiRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyMkeyBGcm9udGVuZCB9IyMjJHsgSW5kZXggfSIsCiAgICAgICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJE5ld1NldHRpbmctPnskSW5kZXh9LAogICAgICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgRGVwbG95IHRoZSBuZXcgc2V0dGluZ3MuCiAgICBteSAkU2V0dGluZ3NEZXBsb3llZCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ0ZBUSAtIHBhY2thZ2Ugc2V0dXAgZnVuY3Rpb246IF9NaWdyYXRlUGVybWlzc2lvbnMnLAogICAgICAgIFNldHRpbmdzID0+IFxATmV3U2V0dGluZ3MsCiAgICApOwogICAgaWYgKCAhJFNldHRpbmdzRGVwbG95ZWQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSBkZXBsb3lpbmcgdGhlIG1pZ3JhdGVkIHBlcm1pc3Npb25zISIsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KCjxvdHJzX3N0YXRzPgo8Q2FjaGU+MDwvQ2FjaGU+CjxEZXNjcmlwdGlvbj5TaG93cyBhbiBvdmVydmlldyBvZiBGQVEgYXJ0aWNsZXMgaW4gYSBkZWZpbmVkIHRpbWUgcGVyaW9kIHNvcnRlZCBieSBhY2Nlc3MgbnVtYmVycy48L0Rlc2NyaXB0aW9uPgo8Rm9ybWF0PkNTVjwvRm9ybWF0Pgo8Rm9ybWF0PlByaW50PC9Gb3JtYXQ+CjxHcmFwaFNpemU+PC9HcmFwaFNpemU+CjxPYmplY3Q+PC9PYmplY3Q+CjxPYmplY3RNb2R1bGU+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpTdGF0aWM6OkZBUUFjY2VzczwvT2JqZWN0TW9kdWxlPgo8UGVybWlzc2lvbj5zdGF0czwvUGVybWlzc2lvbj4KPFN0YXRUeXBlPnN0YXRpYzwvU3RhdFR5cGU+CjxTdW1Db2w+MDwvU3VtQ29sPgo8U3VtUm93PjA8L1N1bVJvdz4KPFRpdGxlPkZBUSBhY2Nlc3Mgb3ZlcnZpZXc8L1RpdGxlPgo8VmFsaWQ+MTwvVmFsaWQ+Cjwvb3Ryc19zdGF0cz4K
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMjAwMTI0MTYxOTE4WikKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2ZZ1BUWRaA73uvc6Chu2kyNDlJlNCA5JwkSBYV6G4yLTQ5mJDBERhBRCQpgogCDjg6BBlFRRQDoqCAeRoZBJRxcBRRUVnAH7NVu7VbW7W1f7bPj/e+OufWO+e+ulXvq3oAyJDi2QnJsD4ACbwUvq+zHTMoOISJvQ9wgAxIgAow4ezkRFtvbw+wHCtrwT/E+1EArdzv6fzz+r8MEieBxwEAoi9zLIebzF7mncsczUngrOSnVzg9JTEFANh7men85QGXmbPCEd84Y4WjvnHR6ho/X/tlPgoAjhS1yoRTKxyxytSuFWZH8xMAkO5bXq/CTuQvP196pZfitxlWQ3RlP8woLo/LD0/hcpj/4db+ffxdL3Ty8sv/rzf4H/dZOTvf6K3l6pmAGBV/5baWAcB6DQBS8ldO5TAAlN0AdPT8lYs4DkBnCQCSz9ip/LRvOdTq7IAAKIAOpIA8UAYaQAcYAlNgAWyAI3ADXsAPBIPNgA2iQQLgg3SQA3aBfFAISsBBUAVqQQNoAq3gDOgE58FlcA3cAnfBCHgMBGASvAJz4D1YhCAIC5EhGiQFKUCqkDZkCLEgK8gR8oB8oWAoDIqCeFAqlAPthgqhUqgKqoOaoJ+gc9Bl6AY0BD2ExqEZ6E/oE4zAJJgOy8FqsB7Mgm1hd9gP3gRHwUlwFpwH74Mr4Hr4FNwBX4ZvwSOwAH4FzyMAISIMRBHRQViIPeKFhCCRCB/ZjhQg5Ug90op0I/3IPUSAzCIfURgUDcVE6aAsUC4ofxQblYTajipCVaFOojpQfah7qHHUHOormoyWRWujzdGu6CB0FDodnY8uRzei29FX0SPoSfR7DAbDwKhjTDEumGBMLCYbU4Q5jGnDXMIMYSYw81gsVgqrjbXEemHDsSnYfGwl9hT2InYYO4n9gCPiFHCGOCdc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IG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDIwLTAxLTI0VDE2OjE5OjE4WjwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwvcGRmOlByb2R1Y2VyPgo8cGRmOlBERlZlcnNpb24+MS40PC9wZGY6UERGVmVyc2lvbj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRvclRvb2w+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwveG1wOkNyZWF0b3JUb29sPgo8eG1wOk1ldGFkYXRhRGF0ZT4yMDIwLTAxLTI0VDE2OjE5OjE4WjwveG1wOk1ldGFkYXRhRGF0ZT4KPHhtcDpDcmVhdGVEYXRlPjIwMjAtMDEtMjRUMTY6MTk6MThaPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+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YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDkuOCAyNTguNDA5IDQ2Ni40MiAyNjguMzk5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxIDAgb2JqCjw8IC9VUkkgKGh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy9pbmRleC5wbD9BY3Rpb249QWRtaW5GQVFFeHBsb3JlcjtDYXRlZ29yeT1NaXNjKQovUyAvVVJJID4+CmVuZG9iagozMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA5Ni41NiAyMzYuODYxIDQ1OC4yNiAyNDYuODUxIF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzIDAgb2JqCjw8IC9VUkkgKGh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy9pbmRleC5wbD9BY3Rpb249QWRtaW5GQVFFeHBsb3JlcjtDYXRlZ29yeT1NeSUyMENhdGVnb3J5KQovUyAvVVJJID4+CmVuZG9iagozNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDE5My43NjUgNDk4Ljg0IDIwMy43NTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzUgMCBvYmoKPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdHJzL2luZGV4LnBsP0FjdGlvbj1DdXN0b21lckZBUUV4cGxvcmVyO0NhdGVnb3J5PUdyYW5QYXJlbnQ6OlBhcmVudDo6U29uKQovUyAvVVJJID4+CmVuZG9iagozNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDE3Mi4yMTcgMTgxLjQ3IDE4Mi4yMDcgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBl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Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQ29udGVudHMgNjAgMCBSCj4+CmVuZG9iago2MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY3OS42MjkgMTE3LjE5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMxLjMyIDY3OS42MjkgNTQwLjAgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY2Ny42MjkgMTUzLjg1OCA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjY3LjYyOSA1MzkuOTk4IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKNzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjU1LjYyOSAxODMuNzM5IDY2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2NTUuNjI5IDU0MC4yMDggNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDY0NS44MTkgbnVsbF0KPj4KZW5kb2JqCjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0My42MjkgMjAwLjk1MSA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjQzLjYyOSA1MzkuOTk4IDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA1OTAuODM4IG51bGxdCj4+CmVuZG9iago3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MzEuNjI5IDE3OS4yMTMgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NSAwIFIKL0ggL0kKCj4+CmVuZG9iago3NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYzMS42MjkgNTM5Ljk5OCA2NDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgNTM1Ljg1NyBudWxsXQo+PgplbmRvYmoKNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjE5LjYyOSAyMDUuNTQ0IDYyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzggMCBSCi9IIC9JCgo+PgplbmRvYmoKODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2MTkuNjI5IDUzOS45OTggNjI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3OCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDQ4MC44NzYgbnVsbF0KPj4KZW5kb2JqCjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYwNy42MjkgMjc3LjYzNyA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjA3LjYyOSA1MzkuOTk4IDYxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODEgMCBSCi9IIC9JCgo+PgplbmRvYmoKODQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCA0MDEuODk1IG51bGxdCj4+CmVuZG9iago4NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1OTUuNjI5IDM0NS4wNTUgNjA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNTExIDU5NS42MjkgNTQwLjg3MSA2MDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMzQ2LjkxNCBudWxsXQo+PgplbmRvYmoKODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTgzLjYyOSAxOTIuODE1IDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODcgMCBSCi9IIC9JCgo+PgplbmRvYmoKODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1ODMuNjI5IDUzOS45OTggNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDI5MS45MzMgbnVsbF0KPj4KZW5kb2JqCjkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU3MS42MjkgMjUyLjk2OCA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTcxLjYyOSA1MzkuOTk4IDU4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjggMCBSIC9YWVogNzIuMCAyMzYuOTUyIG51bGxdCj4+CmVuZG9iago5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NTkuNjI5IDE5My43NjcgNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MyAwIFIKL0ggL0kKCj4+CmVuZG9iago5NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU1OS42MjkgNTM5Ljk5OCA1NjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMTgxLjk3MSBudWxsXQo+PgplbmRvYmoKOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTQ3LjYyOSAyODcuODIgNTU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NiAwIFIKL0ggL0kKCj4+CmVuZG9iago5OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzQuNTY4IDU0Ny42MjkgNTQwLjkyOCA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzI4IDAgUiAvWFlaIDcyLjAgMTI2Ljk5IG51bGxdCj4+CmVuZG9iagoxMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTM1LjYyOSA0MTkuNiA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDUzNS42MjkgNTQwLjM0OCA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTIzLjYyOSAzMTYuODk2IDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDUyMy42MjkgNTM5Ljk5OCA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDQgMCBSIC9YWVogNzIuMCA2NzIuMDUyIG51bGxdCj4+CmVuZG9iagoxMDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTExLjYyOSAyMTMuNTkgNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTExLjYyOSA1MzkuOTk4IDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDYzMC4zNzUgbnVsbF0KPj4KZW5kb2JqCjEwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0OTkuNjI5IDI5NC43ODIgNTA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDk5LjYyOSA1MzkuOTk4IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDU3Ni42OTggbnVsbF0KPj4KZW5kb2JqCjExMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0ODcuNjI5IDIyNS4wMDEgNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44MDggNDg3LjYyOSA1NDAuMTY4IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTExIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDUyMy4wMjEgbnVsbF0KPj4KZW5kb2JqCjExNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NzUuNjI5IDMyNC4xNDQgNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDc1LjYyOSA1MzkuOTk4IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NCAwIFIgL1hZWiA3Mi4wIDEyNS42NjQgbnVsbF0KPj4KZW5kb2JqCjExOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NjMuNjI5IDM5MC4wMiA0NzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NjMuNjI5IDUzOS45OTggNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ1MS42MjkgMjQyLjQzNSA0NjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0NTEuNjI5IDUzOS45OTggNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjEyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDQzOS42MjkgMjA0Ljk3NiA0NDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0MzkuNjI5IDUzOS45OTggNDQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjEyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MjcuNjI5IDE3My40MDggNDM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDI3LjYyOSA1MzkuOTk4IDQzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NyAwIFIgL1hZWiA3Mi4wIDYyNi40IG51bGxdCj4+CmVuZG9iagoxMzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDE1LjYyOSAxNjQuOTEzIDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODA3IDQxNS42MjkgNTQwLjE2NyA0MjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDcgMCBSIC9YWVogNzIuMCA1NTguMCBudWxsXQo+PgplbmRvYmoKMTMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQwMy42MjkgMjA5LjU1MiA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA0MDMuNjI5IDUzOS45OTggNDEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ3IDAgUiAvWFlaIDcyLjAgNDg5LjYgbnVsbF0KPj4KZW5kb2JqCjEzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzOTEuNjI5IDIyMS43OTQgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzkxLjYyOSA1MzkuOTk4IDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAzNzkuNjI5IDE0OS4zOSAzODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEzOCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzNzkuNjI5IDUzOS45OTggMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUzIDAgUiAvWFlaIDcyLjAgNjQ0LjggbnVsbF0KPj4KZW5kb2JqCjE0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNjcuNjI5IDE5OS4wMDYgMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzY3LjYyOSA1MzkuOTk4IDM3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MyAwIFIgL1hZWiA3Mi4wIDU2OC40IG51bGxdCj4+CmVuZG9iagoxNDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzU1LjYyOSAxOTQuNjQxIDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM1NS42MjkgNTM5Ljk5OCAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgMzQzLjYyOSAxNjEuNzg0IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDM0My42MjkgNTM5Ljk5OCAzNTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKMTUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDMzMS42MjkgMTU3LjUxMSAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzMzEuNjI5IDUzOS45OTggMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNjQ2LjExOSBudWxsXQo+PgplbmRvYmoKMTU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMxOS42MjkgNDM5LjQwNSAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzMTkuNjI5IDUzOS45OTggMzI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNTgzLjY2MiBudWxsXQo+PgplbmRvYmoKMTU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwNy42MjkgNDIzLjQzNCAzMTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0NyAzMDcuNjI5IDU0MC4yMDcgMzE3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNTIxLjIwNSBudWxsXQo+PgplbmRvYmoKMTYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI5NS42MjkgNDA1LjU5OCAzMDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAyOTUuNjI5IDUzOS45OTggMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgNDU4Ljc0OCBudWxsXQo+PgplbmRvYmoKMTYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI4My42MjkgNDU3LjU4OSAyOTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAyODMuNjI5IDUzOS45OTcgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU2IDAgUiAvWFlaIDcyLjAgMzk2LjI5MSBudWxsXQo+PgplbmRvYmoKMTY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI3MS42MjkgNDE2Ljg5IDI4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDI3MS42MjkgNTM5Ljk5OCAyODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCAzMzMuODM0IG51bGxdCj4+CmVuZG9iagoxNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjU5LjYyOSA0MTEuMzkzIDI2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDI1OS42MjkgNTM5Ljk5OCAyNjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCAyNzEuMzc3IG51bGxdCj4+CmVuZG9iagoxNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjQ3LjYyOSA1MDguNzA1IDI1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTA1IDI0Ny42MjkgNTQwLjI2NSAyNTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTYgMCBSIC9YWVogNzIuMCAyMDguOTIgbnVsbF0KPj4KZW5kb2JqCjE3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMzUuNjI5IDUwMS4yNTQgMjQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MTggMjM1LjYyOSA1MzkuOTc4IDI0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NiAwIFIgL1hZWiA3Mi4wIDE0Ni40NjMgbnVsbF0KPj4KZW5kb2JqCjE3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyMjMuNjI5IDM4Ny43MDUgMjMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggMjIzLjYyOSA1NDAuMzQ4IDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDY5Ni4wIG51bGxdCj4+CmVuZG9iagoxODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjExLjYyOSAzODkuMDI5IDIyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDIxMS42MjkgNTQwLjM0OCAyMjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA1OTkuMDQgbnVsbF0KPj4KZW5kb2JqCjE4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxOTkuNjI5IDMzOS41NDYgMjA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMTk5LjYyOSA1MzkuOTk4IDIwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDUzOC4wOCBudWxsXQo+PgplbmRvYmoKMTg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE4Ny42MjkgMjc3Ljc4NyAxOTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAxODcuNjI5IDUzOS45OTggMTk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU5IDAgUiAvWFlaIDcyLjAgNDc3LjEyIG51bGxdCj4+CmVuZG9iagoxOTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTc1LjYyOSAyNjEuNzA0IDE4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDE3NS42MjkgNTM5Ljk5OCAxODUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCA0MTYuMTYgbnVsbF0KPj4KZW5kb2JqCjE5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNjMuNjI5IDI2NC4xMDQgMTczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMTYzLjYyOSA1MzkuOTk4IDE3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDM1NS4yIG51bGxdCj4+CmVuZG9iagoxOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTUxLjYyOSAyNzUuNzA1IDE2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDE1MS42MjkgNTM5Ljk5OCAxNjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCAyOTQuMjQgbnVsbF0KPj4KZW5kb2JqCjE5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMzkuNjI5IDI4NC45MDggMTQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggMTM5LjYyOSA1NDAuMzQ4IDE0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1OSAwIFIgL1hZWiA3Mi4wIDIzMy4yOCBudWxsXQo+PgplbmRvYmoKMjAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEyNy42MjkgMzIzLjkwNCAxMzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjk4OCAxMjcuNjI5IDU0MC4zNDggMTM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU5IDAgUiAvWFlaIDcyLjAgMTcyLjMyIG51bGxdCj4+CmVuZG9iagoyMDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTE1LjYyOSAyOTUuMjA1IDEyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuOTg4IDExNS42MjkgNTQwLjM0OCAxMjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTkgMCBSIC9YWVogNzIuMCAxMTEuMzYgbnVsbF0KPj4KZW5kb2JqCjIwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDMuNjI5IDI5OC4zOTEgMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggMTAzLjYyOSA1NDAuMzQ4IDExMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIxMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iagoyMTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTEuNjI5IDI4NC4wNjIgMTAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggOTEuNjI5IDU0MC4zNDggMTAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMTAgMCBS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IDM2My44OTQgNzE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMzUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjM3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNzA5LjAwNSA1MzkuOTk4IDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIzOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDUxNy4yMDMgbnVsbF0KPj4KZW5kb2JqCjIzOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2OTcuMDA1IDI5Ni40OTggNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMzggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjk3LjAwNSA1MzkuOTk4IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs2MiAwIFIgL1hZWiA3Mi4wIDQ1My42MDQgbnVsbF0KPj4KZW5kb2JqCjI0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2ODUuMDA1IDI3OS40MSA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2ODUuMDA1IDUzOS45OTggNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMzkwLjAwNSBudWxsXQo+PgplbmRvYmoKMjQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY3My4wMDUgMzQ3LjA3NSA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NzMuMDA1IDUzOS45OTggNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQ3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMzI2LjQwNiBudWxsXQo+PgplbmRvYmoKMjQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY2MS4wMDUgMzI3LjY3NiA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NjEuMDA1IDUzOS45OTggNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMjYyLjgwNyBudWxsXQo+PgplbmRvYmoKMjUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY0OS4wMDUgMjU2LjY1NiA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NDkuMDA1IDUzOS45OTggNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjUzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMTk5LjIwOCBudWxsXQo+PgplbmRvYmoKMjU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYzNy4wMDUgMzc1LjQ1NiA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2MzcuMDA1IDU0MC4yMDggNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzYyIDAgUiAvWFlaIDcyLjAgMTM1LjYwOSBudWxsXQo+PgplbmRvYmoKMjU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYyNS4wMDUgNDE2LjUwMyA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0NyA2MjUuMDA1IDU0MC4yMDcgNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjEzLjAwNSAzMjUuNTk2IDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDYxMy4wMDUgNTQwLjIwOCA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgNjY0LjQ0NCBudWxsXQo+PgplbmRvYmoKMjYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYwMS4wMDUgMzI2Ljg2MSA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA2MDEuMDA1IDU0MC4yMDggNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDYwMy4wMjEgbnVsbF0KPj4KZW5kb2JqCjI2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1ODkuMDA1IDQxOS45NzggNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNTg5LjAwNSA1NDAuMjA4IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCA1NDEuNTk4IG51bGxdCj4+CmVuZG9iagoyNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTc3LjAwNSAzMjAuNTg3IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDU3Ny4wMDUgNTQwLjIwOCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgNDgwLjE3NSBudWxsXQo+PgplbmRvYmoKMjcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU2NS4wMDUgMzIxLjg1MiA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA1NjUuMDA1IDU0MC4yMDggNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDQxOC43NTIgbnVsbF0KPj4KZW5kb2JqCjI3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NTMuMDA1IDQxNC45NjkgNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNTUzLjAwNSA1NDAuMjA4IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjIgMCBSIC9YWVogNzIuMCAzNTcuMzI5IG51bGxdCj4+CmVuZG9iagoyNzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTQxLjAwNSAyODkuOTE2IDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ4IDU0MS4wMDUgNTQwLjIwOCA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjIyIDAgUiAvWFlaIDcyLjAgMjk1LjkwNiBudWxsXQo+PgplbmRvYmoKMjgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUyOS4wMDUgMzMwLjM2NiA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA1MjkuMDA1IDU0MC4yMDggNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDIzNC40ODMgbnVsbF0KPj4KZW5kb2JqCjI4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MTcuMDA1IDI5Ni4yNCA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA1MTcuMDA1IDU0MC4yMDggNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDE3My4wNiBudWxsXQo+PgplbmRvYmoKMjg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUwNS4wMDUgMjk3LjUwNCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjg0OCA1MDUuMDA1IDU0MC4yMDggNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyMiAwIFIgL1hZWiA3Mi4wIDExMS42MzcgbnVsbF0KPj4KZW5kb2JqCjI5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0OTMuMDA1IDM5MC42MjIgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjkxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNDkzLjAwNSA1NDAuMjA4IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKMjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ4MS4wMDUgMjMxLjk1NCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0ODEuMDA1IDUzOS45OTggNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNSAwIFIgL1hZWiA3Mi4wIDY0NS4zMzUgbnVsbF0KPj4KZW5kb2JqCjI5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NjkuMDA1IDM5Ny43MjUgNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDY5LjAwNSA1MzkuOTk4IDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCA1ODIuNjcgbnVsbF0KPj4KZW5kb2JqCjI5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDQwNS4zNDMgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDU3LjAwNSA1MzkuOTk4IDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCA1MDguMDA1IG51bGxdCj4+CmVuZG9iagozMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDQ1LjAwNSA0MDEuMzcgNDU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDQ1LjAwNSA1MzkuOTk4IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCA0MzMuMzQgbnVsbF0KPj4KZW5kb2JqCjMwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MzMuMDA1IDM5Ny43MTUgNDQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzA2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDMzLjAwNSA1MzkuOTk4IDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCAzNzAuNjc1IG51bGxdCj4+CmVuZG9iagozMDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDIxLjAwNSA0MDUuMzMzIDQzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQyMS4wMDUgNTM5Ljk5OCA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgMjk2LjAxIG51bGxdCj4+CmVuZG9iagozMTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDA5LjAwNSA0MDEuMzYgNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDA5LjAwNSA1MzkuOTk4IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjUgMCBSIC9YWVogNzIuMCAyMjEuMzQ1IG51bGxdCj4+CmVuZG9iagozMTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzk3LjAwNSA0MjQuNTkzIDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjU4IDM5Ny4wMDUgNTQwLjM3OCA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxMyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI1IDAgUiAvWFlaIDcyLjAgMTQ2LjY4IG51bGxdCj4+CmVuZG9iagozMTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzg1LjAwNSA0MTIuMTA1IDM5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMxOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDM4NS4wMDUgNTQwLjIwOCAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMxNiAwIFIKL0ggL0kKCj4+CmVuZG9iagozMTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjMyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNzMuMDA1IDQyMy4zNjggMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzIxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMzczLjAwNSA1NDAuMjA4IDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCA2NTMuMTAyIG51bGxdCj4+CmVuZG9iagozMjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzYxLjAwNSA0NjAuMjYxIDM3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg3IDM2MS4wMDUgNTQwLjIwNyAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagozMjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgNTkyLjUzNCBudWxsXQo+PgplbmRvYmoKMzI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM0OS4wMDUgNDI4LjY5NSAzNTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMyNSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4OCAzNDkuMDA1IDU0MC4yMDggMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzI4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDUzMS45NjYgbnVsbF0KPj4KZW5kb2JqCjMyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMzcuMDA1IDM5NC45ODcgMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMzMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMzM3LjAwNSA1NDAuMjA4IDM0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCA0NTkuMzk4IG51bGxdCj4+CmVuZG9iagozMzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzI1LjAwNSA0MDUuNDE0IDMzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjE4IDMyNS4wMDUgNTQwLjMzOCAzMzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzMSAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgMzk4LjgzIG51bGxdCj4+CmVuZG9iagozMzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzEzLjAwNSA0MTYuMjk3IDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMzNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDQ4IDMxMy4wMDUgNTQwLjE2OCAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzNCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI4IDAgUiAvWFlaIDcyLjAgMzI2LjI2MiBudWxsXQo+PgplbmRvYmoKMzM4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwMS4wMDUgMzg3LjkxNyAzMTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMzNyAwIFIKL0ggL0kKCj4+CmVuZG9iagozMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ0OCAzMDEuMDA1IDU0MC4xNjggMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDI1My42OTQgbnVsbF0KPj4KZW5kb2JqCjM0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyODkuMDA1IDQwMS4zNSAyOTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0MCAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyODkuMDA1IDUzOS45OTggMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyOCAwIFIgL1hZWiA3Mi4wIDE5My4xMjYgbnVsbF0KPj4KZW5kb2JqCjM0NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNzcuMDA1IDQ5NC4yNTcgMjg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzYgMjc3LjAwNSA1MzkuOTk2IDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMjggMCBSIC9YWVogNzIuMCAxMzIuNTU4IG51bGxdCj4+CmVuZG9iagozNDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjY1LjAwNSA0NzMuNTY0IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDI2NS4wMDUgNTM5Ljk5NyAyNzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM0NiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNDkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjM1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNTMuMDA1IDQ5MC4xODQgMjYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMjUzLjAwNSA1MzkuOTk3IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCA2NjQuNDQ0IG51bGxdCj4+CmVuZG9iagozNTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjQxLjAwNSA0NDguOTk5IDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI0MS4wMDUgNTM5Ljk5OCAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1MiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNjAzLjAyMSBudWxsXQo+PgplbmRvYmoKMzU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIyOS4wMDUgNDk3LjggMjM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIxNy4wMDUgMTU1Ljk4IDIyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM1OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjggMjE3LjAwNSA1NDAuMCAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1NSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgNTQxLjU5OCBudWxsXQo+PgplbmRvYmoKMzYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIwNS4wMDUgNDczLjM0IDIxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxOTMuMDA1IDE3NC43NyAyMDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM1OSAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI4IDE5My4wMDUgNTQwLjAgMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzYzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDQ4MC4xNzUgbnVsbF0KPj4KZW5kb2JqCjM2NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxODEuMDA1IDQ5Mi43NyAxOTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2MyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTY5LjAwNSAxNTUuOTggMTc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yOCAxNjkuMDA1IDU0MC4wIDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzYzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCA0MTguNzUyIG51bGxdCj4+CmVuZG9iagozNjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTU3LjAwNSA1MTEuNDk1IDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjk0IDE1Ny4wMDUgNTQwLjAxNCAxNjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM2NyAwIFIKL0ggL0kKCj4+CmVuZG9iagozNzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgMzU3LjMyOSBudWxsXQo+PgplbmRvYmoKMzcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE0NS4wMDUgNDU0Ljg0MyAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM3MCAwIFIKL0ggL0kKCj4+CmVuZG9iagozNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyAxNDUuMDA1IDUzOS45OTcgMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMSAwIFIgL1hZWiA3Mi4wIDI5NS45MDYgbnVsbF0KPj4KZW5kb2JqCjM3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMzMuMDA1IDQ3Ny4yMDkgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMTMzLjAwNSA1MzkuOTk3IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjM3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCAyMzQuNDgzIG51bGxdCj4+CmVuZG9iagozNzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTIxLjAwNSA0NzEuNCAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM3NiAwIFIKL0ggL0kKCj4+CmVuZG9iagozNzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTA5LjAwNSAxNzYuMTIgMTE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzNzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzc5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yOCAxMDkuMDA1IDU0MC4wIDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjM4MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzEgMCBSIC9YWVogNzIuMCAxNzMuMDYgbnVsbF0KPj4KZW5kb2JqCjM4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA5Ny4wMDUgNDUxLjQxOSAxMDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagozODIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA5Ny4wMDUgNTM5Ljk5OCAxMDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDM4MCAwIFIKL0ggL0kKCj4+CmVuZG9iagozODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjMxIDAgUiAvWFlaIDcyLjAgMTExLjYzNyBudWxsXQo+PgplbmRvYmoKMzg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDg1LjAwNSA0OTIuMjA3IDk0Ljk5NSBdCi9D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QyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDA4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDcwOS4wMDUgNTM5Ljk5NyA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQwOCAwIFIKL0ggL0kKCj4+CmVuZG9iago0MTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgNTgzLjU4NCBudWxsXQo+PgplbmRvYmoKNDEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY5Ny4wMDUgNDUyLjA4NiA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQxMSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2OTcuMDA1IDUzOS45OTggNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDE0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDUyMS4zNzYgbnVsbF0KPj4KZW5kb2JqCjQxNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2ODUuMDA1IDQ5MS41MzggNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgNjg1LjAwNSA1MzkuOTk3IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDE0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQxNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCA0NTkuMTY4IG51bGxdCj4+CmVuZG9iago0MTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjczLjAwNSA0MTIuNjQyIDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDE3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQxOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY3My4wMDUgNTM5Ljk5OCA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQxNyAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgMzk2Ljk2IG51bGxdCj4+CmVuZG9iago0MjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjYxLjAwNSA0MTcuMTQ0IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDIwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDQ4IDY2MS4wMDUgNTQwLjE2OCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyMCAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgMzIyLjc1MiBudWxsXQo+PgplbmRvYmoKNDI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY0OS4wMDUgNDY2LjkwMiA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyMyAwIFIKL0ggL0kKCj4+CmVuZG9iago0MjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA2NDkuMDA1IDUzOS45OTcgNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDI2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzNCAwIFIgL1hZWiA3Mi4wIDI2MC41NDQgbnVsbF0KPj4KZW5kb2JqCjQyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MzcuMDA1IDQwNC42NTYgNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MjYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjM3LjAwNSA1MzkuOTk4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDI2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQyOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzQgMCBSIC9YWVogNzIuMCAxODYuMzM2IG51bGxdCj4+CmVuZG9iago0MzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjI1LjAwNSA0MTUuOTE4IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYyNS4wMDUgNTM5Ljk5OCA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQyOSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM0IDAgUiAvWFlaIDcyLjAgMTEyLjEyOCBudWxsXQo+PgplbmRvYmoKNDMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYxMy4wMDUgNDIxLjI0NiA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzMiAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MTMuMDA1IDUzOS45OTggNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0MzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDM1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5NSAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago0MzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjAxLjAwNSAzODcuNTM4IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQzNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYwMS4wMDUgNTM5Ljk5OCA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzNSAwIFIKL0ggL0kKCj4+CmVuZG9iago0MzggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNjM1LjA0IG51bGxdCj4+CmVuZG9iago0MzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTg5LjAwNSA0MDcuMTQ1IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDM4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU4OS4wMDUgNTM5Ljk5OCA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQzOCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNTc0LjA4IG51bGxdCj4+CmVuZG9iago0NDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTc3LjAwNSAzODcuMTk5IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU3Ny4wMDUgNTM5Ljk5OCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0MSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNTEzLjEyIG51bGxdCj4+CmVuZG9iago0NDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTY1LjAwNSAzNzEuNDA2IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQ0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU2NS4wMDUgNTM5Ljk5OCA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0NCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgNDUyLjE2IG51bGxdCj4+CmVuZG9iago0NDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTUzLjAwNSA0NDMuNDc0IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDQ3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ0OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjU4IDU1My4wMDUgNTQwLjM3OCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ0NyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk1IDAgUiAvWFlaIDcyLjAgMzc5LjIgbnVsbF0KPj4KZW5kb2JqCjQ1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NDEuMDA1IDQzMC45ODYgNTUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDUyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggNTQxLjAwNSA1NDAuMjA4IDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDUwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAzMDYuMjQgbnVsbF0KPj4KZW5kb2JqCjQ1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MjkuMDA1IDQ2My41NTcgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODcgNTI5LjAwNSA1NDAuMjA3IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDUzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAyNDUuMjggbnVsbF0KPj4KZW5kb2JqCjQ1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MTcuMDA1IDQ0Ny41NzYgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggNTE3LjAwNSA1NDAuMjA4IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ1OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAxODQuMzIgbnVsbF0KPj4KZW5kb2JqCjQ2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MDUuMDA1IDQxMy44NjggNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDYxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggNTA1LjAwNSA1NDAuMjA4IDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTUgMCBSIC9YWVogNzIuMCAxMTEuMzYgbnVsbF0KPj4KZW5kb2JqCjQ2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0OTMuMDA1IDQ0NC4xNzkgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDkzLjAwNSA1MzkuOTk4IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTggMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKNDY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ4MS4wMDUgNDIwLjIzIDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ2NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ4MS4wMDUgNTM5Ljk5OCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2NSAwIFIKL0ggL0kKCj4+CmVuZG9iago0NjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk4IDAgUiAvWFlaIDcyLjAgNjQ1Ljc5MiBudWxsXQo+PgplbmRvYmoKNDY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ2OS4wMDUgNDk2LjAxMSA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ2OCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NiA0NjkuMDA1IDUzOS45OTYgNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNDcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDU4My41ODQgbnVsbF0KPj4KZW5kb2JqCjQ3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NTcuMDA1IDQ4My40NDQgNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDU3LjAwNSA1MzkuOTk4IDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ3NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTggMCBSIC9YWVogNzIuMCA1MjEuMzc2IG51bGxdCj4+CmVuZG9iago0NzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDQ1LjAwNSA0NTYuODg0IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ3NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDQ0NS4wMDUgNTM5Ljk5NyA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk4IDAgUiAvWFlaIDcyLjAgNDU5LjE2OCBudWxsXQo+PgplbmRvYmoKNDc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQzMy4wMDUgNDg1LjYxMyA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago0NzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA0MzMuMDA1IDUzOS45OTcgNDQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0NzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDM4NC45NiBudWxsXQo+PgplbmRvYmoKNDgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQyMS4wMDUgNDMxLjUyMSA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4MCAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA0MjEuMDA1IDUzOS45OTcgNDMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDMyMi43NTIgbnVsbF0KPj4KZW5kb2JqCjQ4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MDkuMDA1IDQzNi4wMjQgNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggNDA5LjAwNSA1NDAuMTY4IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszOTggMCBSIC9YWVogNzIuMCAyNDguNTQ0IG51bGxdCj4+CmVuZG9iago0ODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzk3LjAwNSA0ODUuNzg0IDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ4OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM5Ny4wMDUgNTM5Ljk5OCA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago0ODkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzk4IDAgUiAvWFlaIDcyLjAgMTg2LjMzNiBudWxsXQo+PgplbmRvYmoKNDkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM4NS4wMDUgNDIzLjUzNiAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzODUuMDA1IDUzOS45OTggMzk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0ODkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzM5OCAwIFIgL1hZWiA3Mi4wIDExMi4xMjggbnVsbF0KPj4KZW5kb2JqCjQ5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNzMuMDA1IDQ2Mi40NDEgMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDk0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzcgMzczLjAwNSA1MzkuOTk3IDM4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjQ5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCA2OTYuMCBudWxsXQo+PgplbmRvYmoKNDk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM2MS4wMDUgNDQ2LjQ1OCAzNzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago0OTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyAzNjEuMDA1IDUzOS45OTcgMzcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNDk4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDYzNS4wNCBudWxsXQo+PgplbmRvYmoKNDk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM0OS4wMDUgNDEyLjc1MiAzNTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDQ5OCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzNDkuMDA1IDUzOS45OTggMzU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA0OTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTAxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDU2Mi4wOCBudWxsXQo+PgplbmRvYmoKNTAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMzNy4wMDUgNDMyLjM1OSAzNDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwMSAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzMzcuMDA1IDUzOS45OTggMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDUwMS4xMiBudWxsXQo+PgplbmRvYmoKNTA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMyNS4wMDUgNDEyLjQxMyAzMzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwNCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzMjUuMDA1IDUzOS45OTggMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTA3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwMSAwIFIgL1hZWiA3Mi4wIDQyOC4xNiBudWxsXQo+PgplbmRvYmoKNTA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMxMy4wMDUgMzk2LjYyIDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDMxMy4wMDUgNTM5Ljk5OCAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUwNyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAxIDAgUiAvWFlaIDcyLjAgMzU1LjIgbnVsbF0KPj4KZW5kb2JqCjUxMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMDEuMDA1IDM3OC4yMjggMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggMzAxLjAwNSA1NDAuMTY4IDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAyOTQuMjQgbnVsbF0KPj4KZW5kb2JqCjUxNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyODkuMDA1IDM3OC43MjUgMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjg5LjAwNSA1MzkuOTk4IDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAyMzMuMjggbnVsbF0KPj4KZW5kb2JqCjUxNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNzcuMDA1IDM3NC41MjMgMjg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjc3LjAwNSA1MzkuOTk4IDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUxOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAxNzIuMzIgbnVsbF0KPj4KZW5kb2JqCjUyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNjUuMDA1IDM4OS4yMzEgMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTIxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjY1LjAwNSA1MzkuOTk4IDI3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDEgMCBSIC9YWVogNzIuMCAxMTEuMzYgbnVsbF0KPj4KZW5kb2JqCjUyMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNTMuMDA1IDM3OC4xNTcgMjYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjUzLjAwNSA1MzkuOTk4IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjUyNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKNTI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI0MS4wMDUgMzc1LjYzOCAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago1MjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyNDEuMDA1IDUzOS45OTggMjUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTI4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDYzNS4wNCBudWxsXQo+PgplbmRvYmoKNTI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIyOS4wMDUgMzg3Ljk2NiAyMzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUyOCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMjkuMDA1IDUzOS45OTggMjM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTMxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDU3NC4wOCBudWxsXQo+PgplbmRvYmoKNTMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIxNy4wMDUgMzQzLjY2MyAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzMSAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMTcuMDA1IDUzOS45OTggMjI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTM0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDUxMy4xMiBudWxsXQo+PgplbmRvYmoKNTM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIwNS4wMDUgNDEwLjUwMSAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzNCAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMDUuMDA1IDUzOS45OTggMjE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDQ1Mi4xNiBudWxsXQo+PgplbmRvYmoKNTM4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE5My4wMDUgNDMwLjkwNyAyMDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDUzNyAwIFIKL0ggL0kKCj4+CmVuZG9iago1MzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjY1OCAxOTMuMDA1IDU0MC4zNzggMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNCAwIFIgL1hZWiA3Mi4wIDM3OS4yIG51bGxdCj4+CmVuZG9iago1NDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTgxLjAwNSA0MTguNDE5IDE5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDE4MS4wMDUgNTQwLjIwOCAxOTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU0MCAwIFIKL0ggL0kKCj4+CmVuZG9iago1NDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA0IDAgUiAvWFlaIDcyLjAgMzA2LjI0IG51bGxdCj4+CmVuZG9iago1NDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTY5LjAwNSA0NTAuOTkgMTc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQ1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODcgMTY5LjAwNSA1NDAuMjA3IDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCAyNDUuMjggbnVsbF0KPj4KZW5kb2JqCjU0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNTcuMDA1IDQzNS4wMDkgMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTQ4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMTU3LjAwNSA1NDAuMjA4IDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU0OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCAxODQuMzIgbnVsbF0KPj4KZW5kb2JqCjU1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxNDUuMDA1IDQwMS4zMDEgMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggMTQ1LjAwNSA1NDAuMjA4IDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDQgMCBSIC9YWVogNzIuMCAxMTEuMzYgbnVsbF0KPj4KZW5kb2JqCjU1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMzMuMDA1IDQzMS42MTIgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTMzLjAwNSA1MzkuOTk4IDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjU1NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCA3MDguMCBudWxsXQo+PgplbmRvYmoKNTU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEyMS4wMDUgNDA3LjY2MyAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU1NSAwIFIKL0ggL0kKCj4+CmVuZG9iago1NTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxMjEuMDA1IDUzOS45OTggMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTU4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDY0NS43OTIgbnVsbF0KPj4KZW5kb2JqCjU1OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDkuMDA1IDQxOC45NTUgMTE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNTYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTA5LjAwNSA1MzkuOTk4IDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU2MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCA1ODMuNTg0IG51bGxdCj4+CmVuZG9iago1NjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTcuMDA1IDQyMy40NTcgMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggOTcuMDA1IDU0MC4xNjggMTA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDUwOS4zNzYgbnVsbF0KPj4KZW5kb2JqCjU2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA4NS4wMDUgNDczLjIxNyA5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBb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z4ef1iWIbn3+n/b248knvOH4dPbtPz59//On3/8k19TZt5///Wa2jMdUSnnC3uTpt8iRS0wzv6buZny//Zo81FfFmH7VXwr+9/8AxmbXaQplbmRzdHJlYW0KZW5kb2JqCjU3MSAwIG9iagoxMjk4MgplbmRvYmoKNTcyIDAgb2JqClsKNDA5IDAgUgo0MTAgMCBSCjQxMiAwIFIKNDEzIDAgUgo0MTUgMCBSCjQxNiAwIFIKNDE4IDAgUgo0MTkgMCBSCjQyMSAwIFIKNDIyIDAgUgo0MjQgMCBSCjQyNSAwIFIKNDI3IDAgUgo0MjggMCBSCjQzMCAwIFIKNDMxIDAgUgo0MzMgMCBSCjQzNCAwIFIKNDM2IDAgUgo0MzcgMCBSCjQzOSAwIFIKNDQwIDAgUgo0NDIgMCBSCjQ0MyAwIFIKNDQ1IDAgUgo0NDYgMCBSCjQ0OCAwIFIKNDQ5IDAgUgo0NTEgMCBSCjQ1MiAwIFIKNDU0IDAgUgo0NTUgMCBSCjQ1NyAwIFIKNDU4IDAgUgo0NjAgMCBSCjQ2MSAwIFIKNDYzIDAgUgo0NjQgMCBSCjQ2NiAwIFIKNDY3IDAgUgo0NjkgMCBSCjQ3MCAwIFIKNDcyIDAgUgo0NzMgMCBSCjQ3NSAwIFIKNDc2IDAgUgo0NzggMCBSCjQ3OSAwIFIKNDgxIDAgUgo0ODIgMCBSCjQ4NCAwIFIKNDg1IDAgUgo0ODcgMCBSCjQ4OCAwIFIKNDkwIDAgUgo0OTEgMCBSCjQ5MyAwIFIKNDk0IDAgUgo0OTYgMCBSCjQ5NyAwIFIKNDk5IDAgUgo1MDAgMCBSCjUwMiAwIFIKNTAzIDAgUgo1MDUgMCBSCjUwNiAwIFIKNTA4IDAgUgo1MDkgMCBSCjUxMSAwIFIKNTEyIDAgUgo1MTQgMCBSCjUxNSAwIFIKNTE3IDAgUgo1MTggMCBSCjUyMCAwIFIKNTIxIDAgUgo1MjMgMCBSCjUyNCAwIFIKNTI2IDAgUgo1MjcgMCBSCjUyOSAwIFIKNTMwIDAgUgo1MzIgMCBSCjUzMyAwIFIKNTM1IDAgUgo1MzYgMCBSCjUzOCAwIFIKNTM5IDAgUgo1NDEgMCBSCjU0MiAwIFIKNTQ0IDAgUgo1NDUgMCBSCjU0NyAwIFIKNTQ4IDAgUgo1NTAgMCBSCjU1MSAwIFIKNTUzIDAgUgo1NTQgMCBSCjU1NiAwIFIKNTU3IDAgUgo1NTkgMCBSCjU2MCAwIFIKNTYyIDAgUgo1NjMgMCBSCjU2NSAwIFIKNTY2IDAgUgo1NjggMCBSCjU2OSAwIFIKXQplbmRvYmoKNTczIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0Fubm90cyA1NzIgMCBSCiAgL0NvbnRlbnRzIDU3MCAwIFIKPj4KZW5kb2JqCjU3NCAwIG9iago8PCAvTGVuZ3RoIDU3NSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic3VlLj9s2EL7rV/APhOHwPUBgwF7bQXsraqCHIKcGbQ7ZFHvq38/MkJRkrWRl00UqGIZNcviY18fh0HzqQBn6vOEioVV/PnZPlQYqWeXiNQlCVM7oHKIxQF1lpmkFEbjg3zdG26C+yIxx3bSykEyrfFZ/dF87o953Hz4S9RPRg/q3K8u1ib93v02EMZuTbyyhA7tBCZ+65AtPGzVgQESVrbJJ2yLS218erTr+I8rIcMtYeFTBG658qRVeT7r6CpUsw1PngykcuJJBRdsW9m3hK5wlgZ5Rf3eHS/f2DEGBUZe/BnhmlXXAYIyxSV0e1Yd3xrgjNZnEpuQeX0pzLCXkQuMG13mcdDzsFIKiFcDuFCSpuTquzud1baXJPL9TVuYIx1B7ZGS/RqgUGGTikZDoe6Y67j6qy6+sX5zqZxT5AiNL2+sn+uxL6WDU3jMf4gpeBDrR91zElS+z4iGschroItpDobOoEItYsO/FmjG7Rx1SRsxhkGtfFz5Uu8fSntrdnYstbKr2v7Ih98qIBW+0fjhOPFKtOJIxWYKxFwTcJzaQtnJkmwS/BI7iyVcFhyx7ExwATkPiKX6z4AAXNB1tFOTuNXJA8BqiJbYU5BfgUXz5qvCwZhUeKeqUIlk+bxceiNoh/WaL9wkPC0mnyCIEXDxazOtHD7sGD2KuXYq80nbxYaPViAYxObhTfGTQLvAJ78Ji+LCvn3oc1/DhjNOYaHiEzcLDUdoWKD3C6O4093Dea7oj0BGfF8NH8eUPw8NXBb2tHrsNi5goJSXOAdx2cUEpG2QCRnD9mQy0A6wtjHnWqs85KvtBCdk9afBygwH3W1saPNzFauZV33pDt6qQiSPd/Ze2fvpPvoXDjq6LMsPXERwIsKjSRjmmHYYVANdQ4B1Q6ingCdtAQaM73KlURueBN/MVeZ5jxQenU06I3vXnoMu9SGlgAzDaxbmaFKrCs8xq/2lHF7mmoG3qu+JGaBGDaTjgq60k9Vjpg6lyXa0idAVpfEcLiUyJi1cYt/8JSLNNYWZOykQnnlq5A3vKYy1LuZFL8A9jLVAy6HKiRdDdikuLiJri4myenXWC1PNkbDsTfRkrpsojVN9ET+A7XAiYwS+nKIfvQo/rj0Vmz6ESfEXDQ4X5qdR7BIUylj3IbY5N3DdGlKhyqPOqSm28aeV+DWcUiikhNpgg/k8JMYcd79ssOWzG4ed8+1AaO3KsVjYacySMYe89domo40a5zUxk68+2FpOg1tM0FrUTUATLo2h2qoZq2c7MqpbwQsnvKD46M5ixmqnNvXFiF6nmjSPSpypLi7i3Uc9X0+AxGz/7n6AofPou1HNmJaYNA64Fn4chQsq2PNR6XsNqtKCRrvbJ/OSQOAOwSClqyMFYwF4Y3tUSeFKBwdgN/cE3Fi4+d5XMbYHvVNvRXB3F42T+FjQE6LnC6DTiVdU5Xab/iUdvdSTTXz0fGIVZ5/yMKm8AM48Hlu4nXv4anSOZSfMlLwqTZaZPH6X7hdJC0AbjtGlG1Ze9efTTWbobrwuUSnL+Rbc42kA06fqdgTcFHRtzbrIeNGf4m3YKf74BhX6IuwplbmRzdHJlYW0KZW5kb2JqCjU3NSAwIG9iagoxMTg1CmVuZG9iago1NzYgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQ29udGVudHMgNTc0IDAgUgo+PgplbmRvYmoKNTc3IDAgb2JqCjw8IC9MZW5ndGggNTc4IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzdWktvIzcMvvtX6A9ES1FvYBEgjp2ivRUN0MNiTy3aHjYtcurfLymJI3k8M3G22yQNjLHeIkV9fEgzjzujgH5XnMSM6peH3WOrMyqisuG0yvigLOjkA4ChpjoSJKEKTvj/CjR69aWMGPMgaa0Cyfyhft79uQP13e7TZ6r9leq9+ntXp5OBP+1+nDEDb46/kUNr8A1y+LiLrtLEoE32OWeVUGHUWFn68P0DqsNfZTGlOzIWHpR3wJkvLcPzlaYpQynz8LhzHioFziSjAsrETiY+wVks0AP1+25/v/twZ4IyoO5/G+GZtM8eADCq+wf16SPlHInwpqYIQ5keOFwrY5yibnCk546qbXsSlVn6lBqe8ZYeP7Rzf55i31LuBzxd4uksDcXcqjNTvP6s7n9grv2c68RbnRMTTJ1tnjNSuud5KQ21DIdaZr54KfYOasXtNcuHV+KuFQnyY+/DYwrvvPS7OqaMs8RvlNUzuybWyZhtyJXlgU9vtU3c7lH4ZJkVfkyjYypdll3JS33sfECrQx4bal3pR4/ltWLngvOlkJo8XC0X4cpcxzbe1/UVutD7FlrY+xeaSysexwmvrq0ltj6+S2YZgtHoYELOIa5ikJm8AIOFr4Y7Q3uFofRKFXEFEa5JJde8aZBztj8sZWjSKkgOTQJpaBME37byvvbdhm12usqL2P9K2GJscJlAy2xOACVQ5wplFKga29ttuCbdKbUCF5Km9TJP2fhGoQhUFNqcbuSwJmOCdiTPTAopizKHholU8VLwdjfg6Qwzwiy2/SmjTJM9tL2IDQima82EWOm/IoBJA+I58i8RyjaCjXU6WJo++lUIW/MKEJa2AlMa77DPVcTg2h5vwtb4qIn/nGNI7we3MWuHzAN4WZQVPIYBo5OtJYJJF2d1ah97/TQm9MU2XNtl8cxnLaOGum61z6lMixs0qWJ6gaORTpyVV3VmxseZ7vT2y3TodIxLlbafFMFMmv80dy6trHTB5iztH/hptsafCwtyOkD3xuJd8RxM2ZyBqWy574ZOzJY45bnjFccqoJvaGnRwdPyb5ggh6xAgZ+/SalQHL2mOJN7gdkHrbdsrX9XV8jL3XdJPB4FoUYMvW+7fjVlC77RzNCagvdSdzsM1caKCwHmIWepGQK842rOw8FWdLEbUIVmilHHVyeIronrN6TICoMWJLKYi8lDbyuNa2zbas9cUX1CUFb/6zPPm0G5N1C6knF2PiFls5UCT6uGGqbGxFy04c3tPIFIOXAUjB3EcdQsLMJqJH8PJEfUGu+2dgtY1p9T4nkRw2+13d24wBAiNxsYBa2ttzJvIQcYUGhf5CWu9juByCuthK0v9zWlUuTewKCRQrhSOrXv4VkpnfdKQY84mv58Tm02gXabwIFqzrnTX6or6BQnU1rVv6LgVSU6deEV03K8LmMdgp3SP8/kXVXnogLf/hvXlQPR5q3s+z+t2aOg0xvG98ptbppHvfoY5A1DGcwC9igVzBnTEkFOOfjUmiP8fC/Z1VspZqw0dz7M3+G6slPNe+4ISl/+r0GDTFEmcUG3KZYSWLMiGTr52JLKtW9Hq6Cg2w414++YFdYuBhs29j28RiribXk1UfIPhsVsy2+YsG3fzpFLloI0jrUqY341SeZO0t44Nt3vq0kvQN50aZ6fMzZhbrPmhW3N5uSEKPGmJCGt8QZG6MOVFxvhSZizL+H591tpXvIrwId7Kyik5wQWnUG+DjpF8X4C8qhX752nFzQyvVOdaeRuj3mdtQnE14WUxuoStZLT3fHORFrEFcnMhe2cGi+Sh33UdW9r2qXjTEZPjTcYckwu4m14XCLYvvMl4CkMj3kbsjhi3QnMbUznrmC3NEhcxVW41jpdhaj85IQfdIkpQtommgKhN8jm6lw4jFtAUnNM+UlyXB/fvuvZLnDndee0b4UPfaQwDykTBEPoNLLTdErSNL5S27rhsM7R3A6IHg3u8n7+IDw51IJmffLMAKied0llt+fBg4YsFxKCLIuBSFcyKz/mMYTbN/HuL2vxMbo2nk3OYF2HIPu9Di2k4c9c/aTjDsSEM04GdDDTpCA06/biB4wobF7cJHdkvG972pvDvH1qILVoKZW5kc3RyZWFtCmVuZG9iago1NzggMCBvYmoKMTU4MAplbmRvYmoKNTc5IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDU3NyAwIFIKPj4KZW5kb2JqCjU4MCAwIG9iago8PCAvTGVuZ3RoIDU4MSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic7ZpLj9s2EIDv+hX8A5nMg08gMLBe7xbtregCPQQ5tUh7yLbYU/9+Z0jKkr22UjdBI9TGQiuK5AxnOB/H1ONlIIf698ZOqbD75Xl46XXkEjuJh1UUohOEHCIiaVOTxPGkFXay/28QOLhPVWJexvHcqnAs/O5+Hv4Y0H03vP+gtb9qfXB/DU3dKPjT8OORMbg6++YWCvEKLXwZkm9jcgQqoZTiMjtOwM2kt98/s9v9WZ2p3dlYeHbBoxU+9YLpq037gp7NhpfBB2wjWCGTizwq9qPiA85SRQ/db8P2aXj7SNERuqePczwzhBIQkZN7enbv32nJ6xTetbPw7FoP3G1cFKe96F6vtAWLHtaSW5k0ACzt8NTrt63eyibnudfftbZ67XsfC2Bo7V6mQ0wXNwuIvJmAD3o8au3DbBgzS8WJzOjNB/f0gzkejh3PRosk1iBR2Xtu9iQ9myIbLrZr3LVryn1WHrFV3G9sis0Uv3Eai3dTH5MxQ+rsPTYZO4i73jDrV5qhM+sCAwUbouTROpst027azHVKTUu1ZNfarHygPfQopcmi2ofbtUWp6qEWa5rJjlNZZff+2URXaeq9Dzyv0cMj22Jv812qj7+v202zWZom1hinWpJJZsGWsg/0CcITgtpTStLleQZxm9J/ifg/QHcfrDzT9Rrj2i32YxHdQpAsv6TI3xrdse0cnJI3zjc3Q5Ou1nRk52jOrTyxIIgEQhJ1OuwXxAU+VOhlYQFNUF1i5wm867LimeZ0YsFTj9LM0io/Ri33ukWwSQi8x1I8x3NkC62A7Or+dhqqivQMI3G/6heZpyDAlNVZ8tcDffJQSlSnkW/Ud+oLQ46aCLKns1sWXAH1KJ32rmJP/yLnTB6iJ3WPv/m+5D/jnCWC+VwypRvnjXMOHjib+nA+u/MKOOdxJ3jfSVnmO0XAWGfrevI4lwTZc9FwxhvfjW+hAAnt/suf5Zt2K+HbyOTS1Yz3RvVuVrt7/vz2RSSBzyoRw/WkdQkFWB0uxHTDvmOfEpBwKSGe3b5IWgH29eGNDkljlws37FIyFI0FYbqeRK/zDzHrXUqQW6LvxHvJEII9Dk3nNzJ3ayA+Tu7Voa3rtqlcZl0lQcQj+Xw92d1nBiLbtYdbdh9ZLwVKUm6knM/u2xWwzqmxXYdI3c3tJLrMe2CCFJL9NlxPbg9eIIgvSaYnUNfOu25iQNNeSSmcfLheN/APa+C9v3rC+6nbZxjPAvbaoHDMV8N4RA8laHvKt5zeGY/MkDloYPhkTjfGv+Ad6ddjXMabUlMxf9weu4r+gAbHd6R9KNvhL6+F6D1EFP3VkP95vn94On6HHj1D1Ek5+NwAnd7d5Pyqtn4zcOJjA+Zor2p0rFNVeHR5yRcIR2qOP5VozRdaSwGwxONLnBUv+0ZiL27WTV8jvAKNgLJlXO1NpELG5/RdQr0R3Z4ME3sCu+NadVDs72+UiCYxCmVuZHN0cmVhbQplbmRvYmoKNTgxIDAgb2JqCjExMDAKZW5kb2JqCjU4MiAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyA1ODAgMCBSCj4+CmVuZG9iago1ODMgMCBvYmoKPDwgL0xlbmd0aCA1ODQgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nO2azY4bNwyA7/MUeoEooihKIlAYsL1OkN6KGughyKlFk0O2xZ7y+iH1Y48nYwPOGshg1zDkof4oSvpGFiU/DWCcfN7oI7E3fz8OTy0NTPIG42kSUDTobKboHEhWren6QxL0od9vnPVkvpYaY9n1Z01yXfhi/hr+G5x5P3z8JKn/SDqZb0NV1yv+OfwxMcYtzr6xhQh+gRY+DSnUNn20wMTMJnvjk/XVpLcfHr15+L90phT3ysKjoeBU+NoE1VeyDoI81YanIZCrLaiQwUTfFYeu+ISzVNBz5vOw2Q9v3wEZcGb/7xHPbLIlJuecT2b/aD7+JuJ2pRVVCisjLYgEWUoESXmQQFWGdyKDyFjzS3wnz1TLaN5RQ6kVayJA06QaU5VLem9FI7HGXY9LGe9HmlPV160p+qBmjS0t9WNrJ7c0Xn0y+991ROJ0RJyR2eNYLOsjUnq7bs+H2tMSX2s7KxOxjNG2tcYS1q01kSHWMdIQfC2jaaWHVMsFPIbDGOaRLmkFIJSBlGwnBqA2t60dgtJxKYJ13nQcN7UmrA99nZn9wJZSZs507Oy6De6mDWYfvMkkYZv+a3DBFsD/OHk9rxg9gxPmlQnhapTaVI/6nLy8naFgcke+Is+ypkXpE1I4xzzCApj3u1Zk05ru7F+EHAAtJJ2u8GogByQrOw/5Dbov7J1yoGAh6qzIr/YZzNWQxWJe0lNLpxYuo5+iTSkKBfn1oM9skeU7e76j3/Y0kGyKqor47ArvF4B+CK25NoyX8RbTLaaoJV8P3z56y+yYE8Kd78Z3Bouk+1iks7v2h5/lG5VfwQm13LaNVttfu1H9n+C9FIs1jKvDrgUt42erXn410KHlJAMX4WW+GWOtZaXoEK1Hre9m3yAUF4/E6+GIRxdgqqa9JSeqGquHzuOz3piLRGMIlollz5rPr9hpgUSX2d8cmy5VQjULb055TOLAinYCvGM+xVzcOsjCOWFcKubBZUuUHSD7s5ivl4g5VMI8t/1OQ7wgv70x5gFBPFjVBnTHfIJ5ILQpJ+aAebGY66ETJRlQPn/Cslkg5iG6w3asmMLu4H7eFnEO4ql6PWh6oUeRz0CcxH3DnGSyGZeKOOmJExFnCLNb8LJZ2S0Qcd9VcSveNjC96k0xl9868VgdJ4gv1GN9DubZWc5RfEamxWKup0sUOLswez+kmB/ii8L8zKHiTfGOHixH5uTui/iU7igeHWWSnSOnX0/3bj+9LI7B2yiTenKv7gxnm/MPqeVyfOZW3YtrXc7w/FySm0SvuWqfqJn+J6BmX2ktkHUcp1E3Eq/7M8Chulp34dpddvO6YWUpDSCVTi/gQReF+WnyAax6c4ueFP18B7IS8sUKZW5kc3RyZWFtCmVuZG9iago1ODQgMCBvYmoKMTAyMwplbmRvYmoKNTg1IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDU4MyAwIFIKPj4KZW5kb2JqCjU4NiAwIG9iago8PCAvTGVuZ3RoIDU4NyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic7VpLbxw3DL7vr5g/EEWk3kBgwOu1i/ZW1EAPQU4t2h7iFj7171eUSEnz2nidNEicwBiPHhRFUR8f0s7jASad/17RKyScfns4PHIbTAEn4+dN4PxktIrOaw25q47U8soN9KL/r7RCN70vI8aylndt0lL4a/r18PdBTz8c3r7Lrb/ndjf9e6jsZOAvh58XwugvTr5RQgP4BUr4eAi2zoleQXIppSnihEFhFen1jw84nf4piynkSFh4mJzVVHjPBeJXulohv0mGx4N1us5AhQiTR2FshfEMZ6FAT09/Ho73h9d34CfQ0/0fIzyjcslprTFM9w/T2ze5ZLMKr+vbhFy+43p+9Olq8mbKVHCTa5lCp/xQT6xlyBuApj4mP/qY30SX6SHUeqEfxlvTH33LdHHgnWcFsDQtdessEN4yyZFFyWsA4HaeBlx9RvZwy88drXmTNVxfvZvufyJ9uaW+IoHMGsh7m1UvCruucyLNSWw9y3CqdYisTJqTGm6uaGdoSns1ZT5vOg2NobWUTbirY+gBZL6u00kfqYjGlzWJ+jKdiVeTrUtzdXSRBngWuy+lcKX+siLLdZmdVJWqmgbdOFToCQO66WbFBSo0Zpyg9re1G9ZT084l8otc23APWmX1pBQ87uHdwLPxTm2+9mMaytxfxL6poBQexBeB2yIvacA+xjovcH1mK5eCN6EqzA2azwneImvgrXO93SALfqp6lHKfo0gQOmeaM1VIrOEHYFS0ZPTYNtfIQD9gkH0FNZBkiJ15x5tmnLXeXLck6IkXCDKKxWPlVPEA89aEUjJ1XEH5YAl46hLIMstSgcHDcxb3y7gnJRUa2rA7XsndhzAPBlSwPiWrd0FPi/w6QL833+48C14bRrMVc8wN13GBs6xPa1b6LLMeh5kZzkWDEu5cXzFJc95WwTvlosmRxr9IY41BWcKAy1mWGOveFNANeD5BN1NaVilLxsIqIH8gKiuqQl6awELzXKc1Lwy8iUO7BC8aa/xVzgdk6cQRM7iMay7kpFvYLObL8kkg1zDKMnM+Eh7PGjZqpwxiSlG73WiG37BhF0X7gcR2kYjFGSNHCCvdfnojR5NU4WK8f4FGnkVXOdfKXRi/G/kzjTxEFVP+83E3elNO8v8Y+aVGCToboalojLwh17zJMtSy0m9YHKM/LqvNY1Qw+byN9iVGyuyFlAsLT1TytatMkL1UGbdrOUuiuNFhiwfi7blbdJYRmwY7sm4WNTbOzHRkuciDazY+EEgCTMm3EK64lP2cseWUeJXsr+YfzpBNDs+WMhKSUvoBYJzb6XbOnp1nl4opxwWzdAlLJckT+Tyw1Ec57hfYruFh7BoeorLFdlXdnuY6LZOlgWCOU20HfTWS01wvlTFH1+Y9pQPEibThQW4DhEJva6luAntXEnLcpYZpGmVudXduvJ3muCCWs9tqHe1ioXXEuW2fXzlZPEHFsBd82rpg8EmIIzvdjRnCesetX+34eGJs0aydDmv7HMzD2mL3dRJRgV2FRLSykDSIpVluoW8K1LPo2oC2dVpenK63TsezqL+k31Lu2VhqvFU2ZDIPu/ly0M8MpXtXkh8X26JXJnt7gIDf9n1jk4xVW3j1fCoyNtbx0+qowM4TqL2LmplZbE8g1zN8jJgng6MJzZXd3PCQ0na/uAb3CGocjKapZ+TluzwfNgKLXmWqlGzcvfMnl/s8K1gkgGUZRLI4OrX8Unc2kkPO6JDHSignQwKu21qHxU8IZTF8z795x0+BNZbq9i8A5+6Dzp4B18dIa+JK2c87KlqXVIwle0svMMu1EVTAmWsu+yfwFwyM/GArc9U9nslFxcKECqaEpmWfepEer01SbmBbzNS6pZo9zWS8czanF3OAmP3IP3TZ9vL4JqPYlMg4xPqlzGXt511BSsrnsxhY8Luu4PgpXIGYK+f0EiMtcrtc1LBqZ/dCxzOmPOzy0344LGSen7MG5xCU9SYfvfGz3s2cC710GQE+CZvyhG6jZy3MWaNMFgqdaQ5kh18LcBKoToO4kp0urSV0hIuFtWxvDIBnEek8KKSogMlsIvKafTsjcjN+sG9FyX3HS0Nx3wy08Z4Dt2LQgHOhfQpozwAV5VdwdhMleh87eOVuRC4tP4DSaJQ2KYWon335seVo5bKrHZnO5BtjSGgO8gnp3qdLIjfg7rVVMcx928cutHh3sy34POW7SPinxJ74YdXKGWr8dXDtEbbtziOqEGJKsJ0TXg/1r9TsYtdyGSriej1P6Njvld8H/KXm6K1VPkuIIX43x8Pt/fKLJG8x68fNP97SU4o5t121li+wNj7dwnyCsTQNbjXpRfWS77kWbJYfntXuC6UFp3Tyy6oeipd9cdaGk3T9264VGEFBDIl+P84mkQcRCvpXXgRn1JvbhBaUM/7L3hT6+w+GtDDUCmVuZHN0cmVhbQplbmRvYmoKNTg3IDAgb2JqCjE4MTQKZW5kb2JqCjU4OCAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyA1ODYgMCBSCj4+CmVuZG9iago1ODkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA3IDAgUiAvWFlaIDcyLjAgMzcyLjk2IG51bGxdCj4+CmVuZG9iago1OTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNzA5LjAwNSA0NDMuNTQyIDcxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDcwOS4wMDUgNTM5Ljk5OCA3MTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago1OTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA3IDAgUiAvWFlaIDcyLjAgMzEwLjc1MiBudWxsXQo+PgplbmRvYmoKNTkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY5Ny4wMDUgNDI3LjU1OSA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago1OTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2OTcuMDA1IDUzOS45OTggNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1OTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwNyAwIFIgL1hZWiA3Mi4wIDI0OC41NDQgbnVsbF0KPj4KZW5kb2JqCjU5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2ODUuMDA1IDM5My44NTEgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1OTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjg1LjAwNSA1MzkuOTk4IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU5OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MDcgMCBSIC9YWVogNzIuMCAxNzQuMzM2IG51bGxdCj4+CmVuZG9iago1OTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjczLjAwNSA0MTMuNDU5IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY3My4wMDUgNTM5Ljk5OCA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5OCAwIFIKL0ggL0kKCj4+CmVuZG9iago2MDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDA3IDAgUiAvWFlaIDcyLjAgMTEyLjEyOCBudWxsXQo+PgplbmRvYmoKNjAyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY2MS4wMDUgMjUyLjIxOCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYwMSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2NjEuMDA1IDUzOS45OTggNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjA0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago2MDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjQ5LjAwNSAyNTIuMjE4IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY0OS4wMDUgNTM5Ljk5OCA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYwNCAwIFIKL0ggL0kKCj4+CmVuZG9iago2MDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgNjQ0LjQwMSBudWxsXQo+PgplbmRvYmoKNjA4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYzNy4wMDUgMjUyLjIxOCA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYwNyAwIFIKL0ggL0kKCj4+CmVuZG9iago2MDkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MzcuMDA1IDUzOS45OTggNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjEwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDU4MC44MDIgbnVsbF0KPj4KZW5kb2JqCjYxMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MjUuMDA1IDI1Mi4yMTggNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjI1LjAwNSA1MzkuOTk4IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCA1MTcuMjAzIG51bGxdCj4+CmVuZG9iago2MTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjEzLjAwNSAyNTIuMjE4IDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYxNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYxMy4wMDUgNTM5Ljk5OCA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYxMyAwIFIKL0ggL0kKCj4+CmVuZG9iago2MTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgNDUzLjYwNCBudWxsXQo+PgplbmRvYmoKNjE3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYwMS4wMDUgMjUyLjIxOCA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYxNiAwIFIKL0ggL0kKCj4+CmVuZG9iago2MTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MDEuMDA1IDUzOS45OTggNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjE5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDM5MC4wMDUgbnVsbF0KPj4KZW5kb2JqCjYyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1ODkuMDA1IDI1MC42MDUgNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjIxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTg5LjAwNSA1MzkuOTk4IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCAzMjYuNDA2IG51bGxdCj4+CmVuZG9iago2MjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTc3LjAwNSAyODkuMDIzIDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU3Ny4wMDUgNTM5Ljk5OCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyMiAwIFIKL0ggL0kKCj4+CmVuZG9iago2MjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc2IDAgUiAvWFlaIDcyLjAgMjYyLjgwNyBudWxsXQo+PgplbmRvYmoKNjI2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU2NS4wMDUgMjg2Ljk1MiA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NjUuMDA1IDUzOS45OTggNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjI4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3NiAwIFIgL1hZWiA3Mi4wIDE5OS4yMDggbnVsbF0KPj4KZW5kb2JqCjYyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NTMuMDA1IDM0OC4zMzQgNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MjggMCBSCi9IIC9JCgo+PgplbmRvYmoKNjMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggNTUzLjAwNSA1NDAuMTY4IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYzMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzYgMCBSIC9YWVogNzIuMCAxMzUuNjA5IG51bGxdCj4+CmVuZG9iago2MzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTQxLjAwNSAyNjYuOTc2IDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjYzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU0MS4wMDUgNTM5Ljk5OCA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYzMSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjYzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MjkuMDA1IDI4NC4wNzQgNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjM2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTI5LjAwNSA1MzkuOTk4IDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYzNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzkgMCBSIC9YWVogNzIuMCA2NjMuMjE0IG51bGxdCj4+CmVuZG9iago2MzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTE3LjAwNSAzNjkuNTE2IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYzOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNzk4IDUxNy4wMDUgNTQwLjUxOCA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYzNyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgNjAwLjE5MiBudWxsXQo+PgplbmRvYmoKNjQxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUwNS4wMDUgMzYwLjY1MyA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0MCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA1MDUuMDA1IDU0MC4zNDggNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDUyNS4xNyBudWxsXQo+PgplbmRvYmoKNjQ0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ5My4wMDUgMzc5LjE1NSA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0MyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA0OTMuMDA1IDU0MC4zNDggNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQ2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDQ2Mi4xNDggbnVsbF0KPj4KZW5kb2JqCjY0NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0ODEuMDA1IDQwMy44OCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY0NiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA0ODEuMDA1IDU0MC4zNDggNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQ5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDM5OS4xMjYgbnVsbF0KPj4KZW5kb2JqCjY1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NjkuMDA1IDQ0My40NDQgNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggNDY5LjAwNSA1NDAuMzQ4IDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY1MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1NzkgMCBSIC9YWVogNzIuMCAzMjQuMTA0IG51bGxdCj4+CmVuZG9iago2NTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDU3LjAwNSA0MDMuNjQxIDQ2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNjI4IDQ1Ny4wMDUgNTQwLjM0OCA0NjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1MiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgMjYxLjA4MiBudWxsXQo+PgplbmRvYmoKNjU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ0NS4wMDUgMzk5LjkzNyA0NTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2NTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyOCA0NDUuMDA1IDU0MC4zNDggNDU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjU4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU3OSAwIFIgL1hZWiA3Mi4wIDE5OC4wNiBudWxsXQo+PgplbmRvYmoKNjU5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQzMy4wMDUgMjM1LjMxIDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQzMy4wMDUgNTM5Ljk5OCA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1OCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NjEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTc5IDAgUiAvWFlaIDcyLjAgMTM1LjAzOCBudWxsXQo+PgplbmRvYmoKNjYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQyMS4wMDUgMjI0Ljk4MyA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2MSAwIFIKL0ggL0kKCj4+CmVuZG9iago2NjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0MjEuMDA1IDUzOS45OTggNDMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2NjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDA5LjAwNSA0MDMuNzEgNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDA5LjAwNSA1MzkuOTk4IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY2NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCA2NjQuNDQ0IG51bGxdCj4+CmVuZG9iago2NjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzk3LjAwNSAzNDcuMzk3IDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM5Ny4wMDUgNTM5Ljk5OCA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY2NyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgNjAzLjAyMSBudWxsXQo+PgplbmRvYmoKNjcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM4NS4wMDUgMzcyLjE2MyAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3MCAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzODUuMDA1IDUzOS45OTggMzk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDU0MS41OTggbnVsbF0KPj4KZW5kb2JqCjY3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNzMuMDA1IDM2MC44MyAzODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3MyAwIFIKL0ggL0kKCj4+CmVuZG9iago2NzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzNzMuMDA1IDUzOS45OTggMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjc2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDQ4MC4xNzUgbnVsbF0KPj4KZW5kb2JqCjY3NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNjEuMDA1IDM0Ny4zODcgMzcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzYxLjAwNSA1MzkuOTk4IDM3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCA0MTguNzUyIG51bGxdCj4+CmVuZG9iago2ODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzQ5LjAwNSAzNjguODU3IDM1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDM0OS4wMDUgNTQwLjIwOCAzNTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY3OSAwIFIKL0ggL0kKCj4+CmVuZG9iago2ODIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgMzU3LjMyOSBudWxsXQo+PgplbmRvYmoKNjgzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMzNy4wMDUgMzYyLjA5NSAzNDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4MiAwIFIKL0ggL0kKCj4+CmVuZG9iago2ODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzMzcuMDA1IDUzOS45OTggMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjg1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4MiAwIFIgL1hZWiA3Mi4wIDI5NS45MDYgbnVsbF0KPj4KZW5kb2JqCjY4NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMjUuMDA1IDM2Mi42OTMgMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2ODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggMzI1LjAwNSA1NDAuMTY4IDMzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY4OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODIgMCBSIC9YWVogNzIuMCAyMzQuNDgzIG51bGxdCj4+CmVuZG9iago2ODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzEzLjAwNSAzNzcuMjIxIDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDMxMy4wMDUgNTM5Ljk5OCAzMjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4OCAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgMTczLjA2IG51bGxdCj4+CmVuZG9iago2OTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzAxLjAwNSAzNTEuMDIyIDMxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDMwMS4wMDUgNTM5Ljk5OCAzMTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5MSAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTgyIDAgUiAvWFlaIDcyLjAgMTExLjYzNyBudWxsXQo+PgplbmRvYmoKNjk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI4OS4wMDUgNDAzLjAxMyAyOTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5NCAwIFIKL0ggL0kKCj4+CmVuZG9iago2OTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyODkuMDA1IDUzOS45OTggMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4NSAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago2OTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjc3LjAwNSAzNjkuNzAzIDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjk3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI3Ny4wMDUgNTM5Ljk5OCAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgNjQ0LjQwMSBudWxsXQo+PgplbmRvYmoKNzAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI2NS4wMDUgMzYyLjMxNCAyNzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcwMCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyNjUuMDA1IDUzOS45OTggMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzAzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4NSAwIFIgL1hZWiA3Mi4wIDU4MC44MDIgbnVsbF0KPj4KZW5kb2JqCjcwNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNTMuMDA1IDM4OS45MzggMjYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjUzLjAwNSA1MzkuOTk4IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCA1MTcuMjAzIG51bGxdCj4+CmVuZG9iago3MDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjQxLjAwNSAzNTYuODE3IDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzA2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDI0MS4wMDUgNTM5Ljk5OCAyNTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcwNiAwIFIKL0ggL0kKCj4+CmVuZG9iago3MDkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgNDUzLjYwNCBudWxsXQo+PgplbmRvYmoKNzEwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIyOS4wMDUgNDMxLjc2IDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzA5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDIyOS4wMDUgNTM5Ljk5NyAyMzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcwOSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgMzkwLjAwNSBudWxsXQo+PgplbmRvYmoKNzEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIxNy4wMDUgNDU3Ljk0IDIyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDIxNy4wMDUgNTM5Ljk5NyAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxMiAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgMzI2LjQwNiBudWxsXQo+PgplbmRvYmoKNzE2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIwNS4wMDUgNDU0LjEyOCAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxNSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4OCAyMDUuMDA1IDU0MC4yMDggMjE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzE4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4NSAwIFIgL1hZWiA3Mi4wIDI2Mi44MDcgbnVsbF0KPj4KZW5kb2JqCjcxOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxOTMuMDA1IDQ0Ny4wNTggMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MTggMCBSCi9IIC9JCgo+PgplbmRvYmoKNzIwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40NDggMTkzLjAwNSA1NDAuMTY4IDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzE4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcyMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODUgMCBSIC9YWVogNzIuMCAxOTkuMjA4IG51bGxdCj4+CmVuZG9iago3MjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTgxLjAwNSA0NjEuNTg2IDE5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzIxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjcyMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDE4MS4wMDUgNTM5Ljk5OCAxOTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyMSAwIFIKL0ggL0kKCj4+CmVuZG9iago3MjQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg1IDAgUiAvWFlaIDcyLjAgMTM1LjYwOSBudWxsXQo+PgplbmRvYmoKNzI1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE2OS4wMDUgNDQ2LjY3OSAxNzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyNCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxNjkuMDA1IDUzOS45OTggMTc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzI3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4OCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago3MjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMTU3LjAwNSA0NzQuMzAxIDE2Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzI3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDE1Ny4wMDUgNTM5Ljk5NyAxNjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcyNyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg4IDAgUiAvWFlaIDcyLjAgNjY0LjMyNiBudWxsXQo+PgplbmRvYmoKNzMxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDE0NS4wMDUgMzkwLjQyNiAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDczMCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxNDUuMDA1IDUzOS45OTggMTU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzMzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4OCAwIFIgL1hZWiA3Mi4wIDYwMi43NSBudWxsXQo+PgplbmRvYmoKNzM0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDEzMy4wMDUgNTEyLjkzIDE0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzMzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjczNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMjEuMDA1IDE5My43MiAxMzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDczMyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OSAxMjEuMDA1IDUzOS45OTkgMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3MzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU4OCAwIFIgL1hZWiA3Mi4wIDUyOS4xNzQgbnVsbF0KPj4KZW5kb2JqCjczOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAxMDkuMDA1IDQ4OS4yMSAxMTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDczNyAwIFIKL0ggL0kKCj4+CmVuZG9iago3MzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgOTcuMDA1IDIzNi40IDEwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc5IDk3LjAwNSA1MzkuOTk5IDEwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc0MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODggMCBS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cmVhbQplbmRvYmoKNzQ4IDAgb2JqCjE5MDYxCmVuZG9iago3NDkgMCBvYmoKWwo1OTAgMCBSCjU5MSAwIFIKNTkzIDAgUgo1OTQgMCBSCjU5NiAwIFIKNTk3IDAgUgo1OTkgMCBSCjYwMCAwIFIKNjAyIDAgUgo2MDMgMCBSCjYwNSAwIFIKNjA2IDAgUgo2MDggMCBSCjYwOSAwIFIKNjExIDAgUgo2MTIgMCBSCjYxNCAwIFIKNjE1IDAgUgo2MTcgMCBSCjYxOCAwIFIKNjIwIDAgUgo2MjEgMCBSCjYyMyAwIFIKNjI0IDAgUgo2MjYgMCBSCjYyNyAwIFIKNjI5IDAgUgo2MzAgMCBSCjYzMiAwIFIKNjMzIDAgUgo2MzUgMCBSCjYzNiAwIFIKNjM4IDAgUgo2MzkgMCBSCjY0MSAwIFIKNjQyIDAgUgo2NDQgMCBSCjY0NSAwIFIKNjQ3IDAgUgo2NDggMCBSCjY1MCAwIFIKNjUxIDAgUgo2NTMgMCBSCjY1NCAwIFIKNjU2IDAgUgo2NTcgMCBSCjY1OSAwIFIKNjYwIDAgUgo2NjIgMCBSCjY2MyAwIFIKNjY1IDAgUgo2NjYgMCBSCjY2OCAwIFIKNjY5IDAgUgo2NzEgMCBSCjY3MiAwIFIKNjc0IDAgUgo2NzUgMCBSCjY3NyAwIFIKNjc4IDAgUgo2ODAgMCBSCjY4MSAwIFIKNjgzIDAgUgo2ODQgMCBSCjY4NiAwIFIKNjg3IDAgUgo2ODkgMCBSCjY5MCAwIFIKNjkyIDAgUgo2OTMgMCBSCjY5NSAwIFIKNjk2IDAgUgo2OTggMCBSCjY5OSAwIFIKNzAxIDAgUgo3MDIgMCBSCjcwNCAwIFIKNzA1IDAgUgo3MDcgMCBSCjcwOCAwIFIKNzEwIDAgUgo3MTEgMCBSCjcxMyAwIFIKNzE0IDAgUgo3MTYgMCBSCjcxNyAwIFIKNzE5IDAgUgo3MjAgMCBSCjcyMiAwIFIKNzIzIDAgUgo3MjUgMCBSCjcyNiAwIFIKNzI4IDAgUgo3MjkgMCBSCjczMSAwIFIKNzMyIDAgUgo3MzQgMCBSCjczNSAwIFIKNzM2IDAgUgo3MzggMCBSCjczOSAwIFIKNzQwIDAgUgo3NDIgMCBSCjc0MyAwIFIKNzQ1IDAgUgo3NDYgMCBSCl0KZW5k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U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAwICAgICAwICAgMDAwMEBgQEBAQECAYGBQYJCAoKCQgJCQoMDwwKCw4LCQkNEQ0ODxAQERAKDBITEhATDxAQEP/bAEMBAwMDBAMECAQECBALCQsQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEP/dAAQAXP/aAAwDAQACEQMRAD8A/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//Q/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//R/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//S/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//T/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//U/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//V/UKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA//W/Sz+3bz/AKFfVfzt/wD47QAf27ef9Cvqv52//wAdoAP7dvP+hX1X87f/AOO0AH9u3n/Qr6r+dv8A/HaAD+3bz/oV9V/O3/8AjtAB/bt5/wBCvqv52/8A8doAP7dvP+hX1X87f/47QAf27ef9Cvqv52//AMdoAP7dvP8AoV9V/O3/APjtAB/bt5/0K+q/nb//AB2gA/t28/6FfVfzt/8A47QAf27ef9Cvqv52/wD8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z5/8ml/8kH/EVOLf+gv/AMp0v/kA/wCGMv2a/wDom/8A5WL/AP8Aj9H+qmUf8+f/ACaX/wAkH/EVOLf+gv8A8p0v/kD13Q9F03w3oun+HtFtvs+n6XaxWVpDvZ/LhjQIi7mJY4VQMkknHJNe7RpQoU40qatGKSXotEfDYvFVsfiKmKxDvOcnKT0V3J3bsrJXb6KxdrQ5z//V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/Q/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/R/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/S/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/T/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/U/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/W/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDj9c/wCQlN/2ELP/ANChoA6CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/X/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAK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UAf/1/000PV7XxBothrtktyltqNtFdQrc20tvKEdQyh4pVWSNsEZV1VgeCAeKurB0ajpy3Tt3/FaEUp+1gp9y9UFhQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH/0P0j8IaZ4v0qw+z+MPEumaxcLHbokthpT2CArCiyko08xO+UO4G4bVZU+YrvaqklNuSW7v8AgtPvu/RpdLuIQVOEYR6K3q7vXy93lVu6bvZ8sd+pLCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/9H9QqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/9L9QqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgD/9P9QqACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA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AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAEa/8hPTP+vl/wD0RLQB0NABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAH//V/UNv+Pm4/wB8f+gLQAlABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHPN/yE9T/AOvlP/REVAElABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAFTVtW0zQdMuta1q+hsrGyiaa4uJnCpGijJYk0AYXw58eaP8AE3Q9A8baBHMunX97eJb+cu13SI3EO8jtu8vcAeQCM80Aei0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf/W/UNv+Pm4/wB8f+gLQAlABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHPN/yE9T/AOvlP/REVAElABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAHN+Ovh14Q+KGjr4f8a6bNf6ekguDbpez26MwOAW8l134PIDZAPPWgCbwZ4P8OeANP0Dwl4S077DpNjc3H2e386SXZvjnlb5pGZjlnY8k9fSgDu6ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/ZCmVuZHN0cmVhbQplbmRvYmoKNzgyIDAgb2JqCjEyMjkzNwplbmRvYmoKNzgzIDAgb2JqCjw8IC9MZW5ndGggNzg0IDAgUiAv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h/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KADzof8Anun/AH0KADzof+e6f99CgA86H/nun/fQoAPOh/57p/30KAH0AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAf//V/VKgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAMu8/wCPl/w/kKAMLUfF/hPSLprHVvE+kWVygDNDcXsUbgHkEqzA80rpjaa3LWma5outKzaPrFlfhFVmNtcJKApJAJ2k8EqwH+6fSqs1r/Wyf5NP0aJuixDdWty0qW9zFK1vJ5UoRwxjfAO1sdDhgcHsR60ul/67fmPyJaACgCGC8tLqSeK2uoZXtpPKmVHDGJ9obawH3TtZTg9iD3o3Vwejswe8tI7qKxkuoUuZ1d4oWcB5FXG4qvUgblyR0yPWha7BtqTUAQreWjXb2C3UJuo41meAOPMVGJCsV6gEqwB6ZB9KFrqg2JqAIbi8tLQxC7uoYTPIIYvMcL5khzhFz1Y4PA54oWrsg6X/AK7E1AERurUXS2JuYhcvGZVhLjeUBALBeuAWAz05HrQtb26fr/wz+4Nhbi4t7S3kurueOGCFDJJJIwVE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ZeLb/wASahrcvxJ03SrCw8XDw3HoE1ijpPHlUAMm3zhcSbvMQhvLA25BG4jklanQTS5pSjN+jjzWturR5fevvfpon21E/bTXNyqHIvXmUHrfW7cuWNvLRu5zuv8Axi8b/wDCF+Dbnw/4r0OLWNa8I3Oo3cl68EcRvAbVEdi2FjO+SZQDhN/DcAgdCoJ4ipTadlyaLf3pa2v1tsYxxLVOM5WV/aau9vdjJq/knbm62IrTxD4517xB4a0nUviDrthfaN4vNreWt7pljFcNHJps00aStAWglBCSIpjwCJASodUaobjTbrKKknGdrXteMlfR6pu6T3203aMZ+0mlScpRalF62vaSe7XutXV19z1syOL4sfEKz0DQ/Gb+PdP1M+LtO1if+xorGFRpMlvaTToYmA8xvKeERSCUsCzdulOpSUOaildqKlzebcVrurS5vd2enXU6qMpTr05S0UqnI4eXvddHdcvvdNdOWyJtW8QfGbSo9dZ/it5kmi+DoPFu0aJaBZJ287dbZ25EB8k/9NPmB3jGDclSpyl7t+WoobvVO2vqunTumckalapGPvW5oc2y3S2/wu+vXTRpOxL/AMLW+KF147mu7Zmj0W18WReHXsnOnJZmBtili8kq3f2klzIiqpRgFADZJrOUIQoNt6uM2t7px5rWsmrLl96+urelknpOrWdT3FpH2fazU1Bu92mneVo200Ss221jt44+OEXhfQtdufH32ttT0CXxDcQaTp2nG7tYwsfllre4Kma3A3GRoyH3vhdqgCrmqVKrKLXux5dXe123dO2q2tF7bt3GnXrU4Sh8UnJWVr6bW5nZ7++r3+FRtdn0T4Y8Q6b4m0a01PTtStrzz7WCdzDlcebEsiko3zJuVgwVucEVjWp+zqShbZtd9na1/I3oVFVpQne90n2vfrbzNasjYKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAr6j/AMg+5/65P/6CaALFAGlp/wDx423/AFxT/wBBFAFigAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP/0v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDLvP8Aj5f8P5CgCpZQyyS3bIuR54HX/pmlABe6HZ6n9n/tLS7a7+yTpcwefGknlTLnbImfusMnDDkZojJxd46P/PR/ehNKS5Xtp+DTX3NJrzSZh+Nfhp4f8eQ2seu6XbyPa3NvMspgid2jiuI5jAS4P7p2iQOvQgD0FEJck1UXn87xlHX05m12YqkFUjyy8vlZp6erir90Z+ofBTwHfxaPp6eE9KtdL0i+lv8A+zILGBbS5kkt5IT5sW3a3Emc9cqvpV+2qc/tG23yuOvS7jLTzvH8WZfV6XJyRikr30S10a1Xa0n+BrXHgSwt9GXS/CtpZ+HZre2ltdPurCwtw1ikjKziJGUoAzKpK4wSASCQKio3Vvzu97X80unfa68r6GkKdOmrRila9rW0b6r8/PqWfCfhCw8G+GdO8KaRE4stLtktojIyl3AHLuRgFmOWY4GSSauvUeIm5T69OltreiWgqNP2MFBO/n1b3bfm3qyppHwx8C+H79NW0LwH4f069jLslzaadBDKpcYch1UEZHB55FP21Rrl5nbbfoL2FLn9pyrmve9le73d+7OU8R/AHSvFHjiPxlquqTShby1vfsz2Nk0ivblWSNLkxGdISyKzRh8E7sEBiC8PWlh1aPm+u76uzs7LRadr3sjPE4WGJd5+XbZO9lpdXer172tdnXD4b+C11C/1YeB9CF7qsUkF/c/2fB5t1G/30lbbl1buGyD3rPmkoKmn7q1t077eups6UHP2jiuba9tbbb+mhcv/AAhoeqC5GpeHNNu/tlstnc+fbRyedApLLE+4HcgLMQp4BJOOaLv8b/Pv6+Y+SPbpb5Pdej7Eej+CPDXh+O3h0HwrpWmpapLHAtpaRQiJZSrSBdoG0MUQsB1KqTnApzlKpfnd76O/Vf0yYUoU0lCKVuyK918NvBV++nSX3gfQbhtHRI9OMunwObNVIKrFlf3YBAIC4xgU41Jxk5Rk03vruEqNOaUZRTS202vvb1LPiDwT4d8W28Vt4q8L6XrMMD+ZFHqFpFcLG+MblDggHHGRSjKUJc0HZ+Q6lOFWPJUSa7PVHB+Of2dfDXjIW9pbvDo+nRW8lsbG20mwkijWR2eSS382FjbzMXOZEIzwcZAIujWlSlzb7dX02V01p5EVcPTqw5LWtd7J6u2tmnrpv99zs4vhz4Oh1Oy1pfBujNqWnQpBa3z2cTXMMaLtVVlI3gBeBz0pSrTk5Nv4nd+bYlQpxUfdXuqy7pLsXF8IaEiWca+HNNVdOjkis1FtGBbpINrrHx8gYcEDAI4NZt8yafVWfmuz8tNjou7363v89dfXV676vuNg8F+HbbQD4WtvC+lxaI6PGdNS0iW1KMSzL5QGzBJJIxySaqc5VJc03d6a+m33dDOnThTjywSS10W2u/39Sqnw38GRanZ61H4H0JNQ06JILO6XToBNbRou1EjfblFVeAAQAOBVe1qe97z97fXf17k+xpNxfKvd0Wmy7LsjWm0W1nuo764023luYopII5njVnSOQqXQMeQrFEyOh2rnoKyaTTT2e/n6muzUuq28ik/gnw3Jax2EnhXSmtYbJtNjhNpEY0tG27rcLjAiOxMp907V44FNybbbers36q9n8ru3a+hEYRilFLRXXye6+fXuQaR8O/BugCP+wPBOh6d5Monj+yWEMO2QK6hxtUYbbJIueuHYdzVyqzq/G299/O1/vsr+i7EqjThpGKXy7Xa/Fv72Z2r/AAj8G6lox0S08N6bpls9xazyLZWUEYkWC6W58phtwUZ1O4Ec72PU5pc8uaMm726dNmvwTdh1KaqRlHa93db3dm387K/e3oaek+APCnh+3htdB8HaNpsMNybyKO0soYVjuChjMqhQAHKEruHO0kdOKcqs5u8m27W1fTsKFClTVoRSW+iW/cdovgPwt4avLrUPDvhPSNLur45uprKzigec5J+dkALcknnuTSc5OKg3otkUqcIzdRJcz3fV+vcJPAnhibxCni2XwlpD65GNqak1nEbpRt28S43j5SR16HFEZyhFxi7J7roEqUJyU5JNrZ21XoynB8K/h/azXdxbfD3w7FLfrIl26aZbhp1k++rkLlg3cHr3o9pPlULuy2XTTb7rK3oCpwU3USXM93bV77vru/vfcltfhr4JstNi0Wy8C6DBYQ3S30drHp8Cwpcr92YIFwJBgYfGeOtU6tRyU3J3WzvqTGhShFwjFJPdWVn6odB8OfBlpqF/qtv4J0OK91WOSG+uEsIVluo5OXWVguXViPmDZB71PPLk9lf3e3T7i1CKq+3S9/v1+/cvTeE9GuPP+0eHtPl+1Wg0+ffbxt5tqN2IGyPmjG5vkPy/MeOTScm73e7v8+/r5goRVrLZW+Xb0KsngLwrLr0fiqTwho761EuxNRayhNyo27cCXG4fKSOvQ46U1KSi4J6PddH6oTpQlKMnFXjs7ar07EOqfDbwTrdj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AYSkobZ5gb96wPz7SAOAck50YpxqJq9kmvLVI6qifLGaf2kraWd4zfa+8VbX5DfC19rmo/Enxol5r95Jp+ky2lnaad5cIt08y1hlaTIj80vuZhy+3DH5ehCUV9XTtq5PXyVtO3XsFVNVYpPTkTtpq3Kav32ilvbyPOvAPxC12/1a71bxT438cLZ6fqWsm4ibwxAmirbWs9wqr9tFqDgRxLk+bkuCuc8UX5MNCryp3hGW/vNyinoubdt6K23kc8L1cVKkpyT55RSt7tlJpXly7WWrcjA8K/tK663grxprF7rmha5rENlbeINFt7eaNksra8kESWc4h+YvbOU8zPznzAM9DXX/AGfKfs6STUuaMJS6NtJ8y6dZJdPdRhRx9OcqlRSTioTqJdUoc3uys3q0otvvJpbI9DvW+IXw313wjLrXxBufFdj4g1NNF1C2u9NtoDHPJFI6XFsYEVkUNHhkcyfIxO4EZrGl7OtUlSUbe62nd393Wz6O6vslZ272NZxrUoqq531SkrK1pNR93ro2t2/dvd6XN+PVNct/jW+gPrlzPpF54cbUFsXjh8uCdLiOLcjKgk5ViSGZhk8Y4FZU0pUaja1i4Wf+JVLrt9ldL7nRWbjUpWeklUuv8Lp2fe/vtPW1ktL3b7+szQKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAP//R/VKgAoAKACgAoAKACgAoA5DxH4Q1K+8RWXi/w1rUWmara2z2cv2i2+0QXNuzbhG6BlIIf5gysD1HINTFuLfZ7r02frqN2kkn02+e/wCSOPvPhr4ssfEmh63puvC41ibUbu+1LVJrMNCubcRxxeQHBEexdgwxIJznpTg+V8sdlGXzblG/5X7aCk04tvduPySUv87d3c0B8H71Le3ki8Ux/bmfU5dRnawyt018FEhVA48vARcct0ok703SW3K4+e97/f07aeYQfLNVHupKX3K1vu699SFvg3qQ0648NweL9mhamLQ6lbGxBlkeGOONzFJv/diQRJkFWxjg81o5RlUc2tOZyS9XzWfknrpYhKUF7r15VG/orXt3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AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/0/1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1P1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1f1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFABQAUAFABQAUAFABQAUAFABQAUAf/1v1SoAKACgAoAKACgAoAKACgAoAKACgAoAKACgDP07/j91T/AK/F/wDSeKgDQoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAoeIP8AkBal/wBec3/oBoAv0AFA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b2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzkgNjk3LjAwNSA1MzkuOTk5IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODE4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODggMCBSIC9YWVogNzIuMCAyMzQuODcgbnVsbF0KPj4KZW5kb2JqCjgyMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2ODUuMDA1IDQyNS45NzYgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKODI0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjg1LjAwNSA1MzkuOTk4IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgyNSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1ODggMCBSIC9YWVogNzIuMCAxNzMuMjk0IG51bGxdCj4+CmVuZG9iago4MjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjczLjAwNSA0NjcuMjQyIDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY3My4wMDUgNTM5Ljk5OCA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgyNSAwIFIKL0ggL0kKCj4+CmVuZG9iago4MjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTg4IDAgUiAvWFlaIDcyLjAgMTExLjcxOCBudWxsXQo+PgplbmRvYmoKODI5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDY2MS4wMDUgNDkzLjAzMiA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgyOCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MzAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA2NjEuMDA1IDUzOS45OTcgNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MjggMCBSCi9IIC9JCgo+PgplbmRvYmoKODMxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1MyAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago4MzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjQ5LjAwNSA0NjcuMjMyIDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDY0OS4wMDUgNTM5Ljk5OCA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzMSAwIFIKL0ggL0kKCj4+CmVuZG9iago4MzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzUzIDAgUiAvWFlaIDcyLjAgNjQ2LjkyOCBudWxsXQo+PgplbmRvYmoKODM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYzNy4wMDUgNDgzLjY4MyA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzNCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MzcuMDA1IDUzOS45OTggNjQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKODM3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1MyAwIFIgL1hZWiA3Mi4wIDU4NS44NTYgbnVsbF0KPj4KZW5kb2JqCjgzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA2MjUuMDA1IDM0MC43MjUgNjM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKODM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjI1LjAwNSA1MzkuOTk4IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg0MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTMgMCBSIC9YWVogNzIuMCA1MDAuNzg0IG51bGxdCj4+CmVuZG9iago4NDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNjEzLjAwNSA0MjkuODg5IDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg0MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYxMy4wMDUgNTM5Ljk5OCA2MjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg0MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzUzIDAgUiAvWFlaIDcyLjAgNDAzLjcxMiBudWxsXQo+PgplbmRvYmoKODQ0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDYwMS4wMDUgMzM3LjgxNyA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg0MyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2MDEuMDA1IDUzOS45OTggNjEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODQ2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1MyAwIFIgL1hZWiA3Mi4wIDMzMC42NCBudWxsXQo+PgplbmRvYmoKODQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU4OS4wMDUgMzM3LjgxNyA1OTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg0NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4NDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1ODkuMDA1IDUzOS45OTggNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODQ5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1MyAwIFIgL1hZWiA3Mi4wIDI1Ny41NjggbnVsbF0KPj4KZW5kb2JqCjg1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1NzcuMDA1IDMzNy44MTcgNTg2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKODUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTc3LjAwNSA1MzkuOTk4IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg1MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTMgMCBSIC9YWVogNzIuMCAxODQuNDk2IG51bGxdCj4+CmVuZG9iago4NTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTY1LjAwNSAzMzcuODE3IDU3NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU2NS4wMDUgNTM5Ljk5OCA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg1MiAwIFIKL0ggL0kKCj4+CmVuZG9iago4NTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzUzIDAgUiAvWFlaIDcyLjAgMTExLjQyNCBudWxsXQo+PgplbmRvYmoKODU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDU1My4wMDUgMzc1LjYyOCA1NjIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg1NSAwIFIKL0ggL0kKCj4+CmVuZG9iago4NTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1NTMuMDA1IDUzOS45OTggNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKODU4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1NiAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iago4NTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTQxLjAwNSAzNjUuMjkyIDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU0MS4wMDUgNTM5Ljk5OCA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg1OCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NjEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU2IDAgUiAvWFlaIDcyLjAgNjQ0LjQwMSBudWxsXQo+PgplbmRvYmoKODYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDUyOS4wMDUgMzk0LjMzOSA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg2MSAwIFIKL0ggL0kKCj4+CmVuZG9iago4NjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1MjkuMDA1IDUzOS45OTggNTM4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKODY0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1NiAwIFIgL1hZWiA3Mi4wIDU4MC44MDIgbnVsbF0KPj4KZW5kb2JqCjg2NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA1MTcuMDA1IDM4NS45NjQgNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKODY2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTE3LjAwNSA1MzkuOTk4IDUyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTYgMCBSIC9YWVogNzIuMCA1MTcuMjAzIG51bGxdCj4+CmVuZG9iago4NjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNTA1LjAwNSA0MTIuMTQ0IDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDUwNS4wMDUgNTM5Ljk5OCA1MTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg2NyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU2IDAgUiAvWFlaIDcyLjAgNDUzLjYwNCBudWxsXQo+PgplbmRvYmoKODcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ5My4wMDUgMzg1Ljk1NSA1MDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4NzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0OTMuMDA1IDUzOS45OTggNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKODczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1NiAwIFIgL1hZWiA3Mi4wIDM5MC4wMDUgbnVsbF0KPj4KZW5kb2JqCjg3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0ODEuMDA1IDQwOC4zMzEgNDkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy40ODggNDgxLjAwNSA1NDAuMjA4IDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTYgMCBSIC9YWVogNzIuMCAzMjYuNDA2IG51bGxdCj4+CmVuZG9iago4NzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDY5LjAwNSA0MDEuMjYxIDQ3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDQ4IDQ2OS4wMDUgNTQwLjE2OCA0NzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4NzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU2IDAgUiAvWFlaIDcyLjAgMjYyLjgwNyBudWxsXQo+PgplbmRvYmoKODgwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDQ1Ny4wMDUgNDE1Ljc4OSA0NjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg3OSAwIFIKL0ggL0kKCj4+CmVuZG9iago4ODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA0NTcuMDA1IDUzOS45OTggNDY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKODgyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1NiAwIFIgL1hZWiA3Mi4wIDE5OS4yMDggbnVsbF0KPj4KZW5kb2JqCjg4MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0NDUuMDA1IDQwMC44ODIgNDU0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4ODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKODg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDQ1LjAwNSA1MzkuOTk4IDQ1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg4NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTYgMCBSIC9YWVogNzIuMCAxMzUuNjA5IG51bGxdCj4+CmVuZG9iago4ODYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgNDMzLjAwNSAzOTUuMzg1IDQ0Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQzMy4wMDUgNTM5Ljk5OCA0NDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg4NSAwIFIKL0ggL0kKCj4+CmVuZG9iago4ODggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU5IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjg4OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MjEuMDA1IDQyNy4yMSA0MzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg4OCAwIFIKL0ggL0kKCj4+CmVuZG9iago4OTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4NyA0MjEuMDA1IDU0MC4yMDcgNDMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4ODggMCBSCi9IIC9JCgo+PgplbmRvYmoKODkxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1OSAwIFIgL1hZWiA3Mi4wIDY2My4yMTQgbnVsbF0KPj4KZW5kb2JqCjg5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCA0MDkuMDA1IDQxOS43NjIgNDE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKODkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDA5LjAwNSA1MzkuOTk4IDQxOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTkgMCBSIC9YWVogNzIuMCA2MDAuMTkyIG51bGxdCj4+CmVuZG9iago4OTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzk3LjAwNSA0MTQuMjY1IDQwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM5Ny4wMDUgNTM5Ljk5OCA0MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5NCAwIFIKL0ggL0kKCj4+CmVuZG9iago4OTcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU5IDAgUiAvWFlaIDcyLjAgNTM3LjE3IG51bGxdCj4+CmVuZG9iago4OTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzg1LjAwNSA0MDguMzExIDM5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODk3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDM4NS4wMDUgNTQwLjIwOCAzOTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MDAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU5IDAgUiAvWFlaIDcyLjAgNDc0LjE0OCBudWxsXQo+PgplbmRvYmoKOTAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDM3My4wMDUgMzg2LjIxMyAzODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwMCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzNzMuMDA1IDUzOS45OTggMzgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTAzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1OSAwIFIgL1hZWiA3Mi4wIDQxMS4xMjYgbnVsbF0KPj4KZW5kb2JqCjkwNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzNjEuMDA1IDQwMC44NjIgMzcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzYxLjAwNSA1MzkuOTk4IDM3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkwNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NTkgMCBSIC9YWVogNzIuMCAzNDguMTA0IG51bGxdCj4+CmVuZG9iago5MDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMzQ5LjAwNSAzOTUuMzY1IDM1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTA2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDM0OS4wMDUgNTM5Ljk5OCAzNTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwNiAwIFIKL0ggL0kKCj4+CmVuZG9iago5MDkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzU5IDAgUiAvWFlaIDcyLjAgMjg1LjA4MiBudWxsXQo+PgplbmRvYmoKOTEwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMzNy4wMDUgNDcyLjM5MiAzNDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkwOSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjY1OCAzMzcuMDA1IDU0MC4zNzggMzQ2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTEyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1OSAwIFIgL1hZWiA3Mi4wIDIxMC4wNiBudWxsXQo+PgplbmRvYmoKOTEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMyNS4wMDUgNDM3LjgyNyAzMzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkxMiAwIFIKL0ggL0kKCj4+CmVuZG9iago5MTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ4OCAzMjUuMDA1IDU0MC4yMDggMzM0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTE1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc1OSAwIFIgL1hZWiA3Mi4wIDE0Ny4wMzggbnVsbF0KPj4KZW5kb2JqCjkxNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAzMTMuMDA1IDM4MC4xNjkgMzIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTE3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMzEzLjAwNSA1MzkuOTk4IDMyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTE1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkxOCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NjIgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKOTE5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDMwMS4wMDUgNDMzLjE0NiAzMTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkxOCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAzMDEuMDA1IDUzOS45OTggMzEwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MTggMCBSCi9IIC9JCgo+PgplbmRvYmoKOTIxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc2MiAwIFIgL1hZWiA3Mi4wIDY2NC4zNDYgbnVsbF0KPj4KZW5kb2JqCjkyMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyODkuMDA1IDM1Ny41NDQgMjk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTIzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjg5LjAwNSA1MzkuOTk4IDI5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTIxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NjIgMCBSIC9YWVogNzIuMCA2MDIuNzk1IG51bGxdCj4+CmVuZG9iago5MjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjc3LjAwNSAzOTguMjczIDI4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTI0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg4IDI3Ny4wMDUgNTQwLjIwOCAyODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyNCAwIFIKL0ggL0kKCj4+CmVuZG9iago5MjcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzYyIDAgUiAvWFlaIDcyLjAgNTQxLjI0NCBudWxsXQo+PgplbmRvYmoKOTI4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDI2NS4wMDUgMzgwLjQzOCAyNzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyNyAwIFIKL0ggL0kKCj4+CmVuZG9iago5MjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyNjUuMDA1IDUzOS45OTggMjc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTMwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc2MiAwIFIgL1hZWiA3Mi4wIDQ3OS42OTMgbnVsbF0KPj4KZW5kb2JqCjkzMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMjguMCAyNTMuMDA1IDM3Ny4wODIgMjYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTMyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjUzLjAwNSA1MzkuOTk4IDI2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTMwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NjIgMCBSIC9YWVogNzIuMCA0MTguMTQyIG51bGxdCj4+CmVuZG9iago5MzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjQxLjAwNSAzOTEuNzMgMjUwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTM1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMjQxLjAwNSA1MzkuOTk4IDI1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTMzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NjIgMCBSIC9YWVogNzIuMCAzNTYuNTkxIG51bGxdCj4+CmVuZG9iago5MzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjI5LjAwNSAzODYuMjMzIDIzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTM2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDIyOS4wMDUgNTM5Ljk5OCAyMzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzNiAwIFIKL0ggL0kKCj4+CmVuZG9iago5MzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzYyIDAgUiAvWFlaIDcyLjAgMjk1LjA0IG51bGxdCj4+CmVuZG9iago5NDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTI4LjAgMjE3LjAwNSA0ODMuNTQzIDIyNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTM5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuNDg3IDIxNy4wMDUgNTQwLjIwNyAyMjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkzOSAwIFIKL0ggL0kKCj4+CmVuZG9iago5NDIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzYyIDAgUiAvWFlaIDcyLjAgMjMzLjQ4OSBudWxsXQo+PgplbmRvYmoKOTQzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEyOC4wIDIwNS4wMDUgNDc2LjA5NSAyMTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk0MiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAyMDUuMDA1IDUzOS45OTggMjE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NDIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTQ1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc2MiAwIFIgL1hZWiA3Mi4wIDE3MS45MzggbnVsbF0KPj4KZW5kb2JqCjk0NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxOTMuMDA1IDIwNy40MzkgMjAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NDUgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTkzLjAwNSA1MzkuOTk4IDIwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTQ1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk0OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NjUgMCBSIC9YWVogNzIuMCA0OTEuOSBudWxsXQo+PgplbmRvYmoKOTQ5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE4MS4wMDUgMjM2LjQzNCAxOTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk0OCAwIFIKL0ggL0kKCj4+CmVuZG9iago5NTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxODEuMDA1IDUzOS45OTggMTkwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NDggMCBSCi9IIC9JCgo+PgplbmRvYmoKOTUxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc3NSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago5NTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAxNjkuMDA1IDEyNS4yNzYgMTc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTUzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggMTY5LjAwNSA1MzkuOTk4IDE3OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTUxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3NzUgMCBSIC9YWVogNzIuMCAzMjYuMCBudWxsXQo+PgplbmRvYmoKOTU1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE1Ny4wMDUgMjQ3Ljk2NSAxNjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1NCAwIFIKL0ggL0kKCj4+CmVuZG9iago5NTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCAxNTcuMDA1IDUzOS45OTggMTY2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTU3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc3OCAwIFIgL1hZWiA3Mi4wIDY1NS4yIG51bGxdCj4+CmVuZG9iago5NTggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTQ1LjAwNSAyMzcuMzkzIDE1NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTU3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc3IDE0NS4wMDUgNTM5Ljk5NyAxNTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1NyAwIFIKL0ggL0kKCj4+CmVuZG9iago5NjAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzc4IDAgUiAvWFlaIDcyLjAgMzc2LjggbnVsbF0KPj4KZW5kb2JqCjk2MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxMzMuMDA1IDQ5My4wOCAxNDIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk2MCAwIFIKL0ggL0kKCj4+CmVuZG9iago5NjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjYyNyAxMzMuMDA1IDU0MC4zNDcgMTQyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTYzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzc4NSAwIFIgL1hZWiA3Mi4wIDE1MS4yNjUgbnVsbF0KPj4KZW5kb2JqCjk2NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxMjEuMDA1IDQ3NS42NTEgMTMwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NjMgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTY1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy42MjggMTIxLjAwNSA1NDAuMzQ4IDEzMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTYzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk2NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs3OTAgMCBSIC9YWVogNzIuMCAzMDQuOTk1IG51bGxdCj4+CmVuZG9iago5NjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTA5LjAwNSAzNjguNzQzIDExOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTY2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk2OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDEwOS4wMDUgNTM5Ljk5OCAxMTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk2NiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NjkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNzk2IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjk3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDk3LjAwNSAxMzIuOTA4IDEwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTY5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDk3LjAwNSA1MzkuOTk4IDEwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTY5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs4MTcgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKOTczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgODUuMDA1IDExOS4wNiA5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTcyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDg1LjAwNSA1MzkuOTk4IDk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTc1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzgxNyAwIFIgL1hZWiA3Mi4wIDY3OC44IG51bGxdCj4+CmVuZG9iago5NzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNzMuMDA1IDE3MS45MiA4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTc1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3NyAwIG9iago8PCAvVHlwZSAvQW5u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IFIKODcxIDAgUgo4NzIgMCBSCjg3NCAwIFIKODc1IDAgUgo4NzcgMCBSCjg3OCAwIFIKODgwIDAgUgo4ODEgMCBSCjg4MyAwIFIKODg0IDAgUgo4ODYgMCBSCjg4NyAwIFIKODg5IDAgUgo4OTAgMCBSCjg5MiAwIFIKODkzIDAgUgo4OTUgMCBSCjg5NiAwIFIKODk4IDAgUgo4OTkgMCBSCjkwMSAwIFIKOTAyIDAgUgo5MDQgMCBSCjkwNSAwIFIKOTA3IDAgUgo5MDggMCBSCjkxMCAwIFIKOTExIDAgUgo5MTMgMCBSCjkxNCAwIFIKOTE2IDAgUgo5MTcgMCBSCjkxOSAwIFIKOTIwIDAgUgo5MjIgMCBSCjkyMyAwIFIKOTI1IDAgUgo5MjYgMCBSCjkyOCAwIFIKOTI5IDAgUgo5MzEgMCBSCjkzMiAwIFIKOTM0IDAgUgo5MzUgMCBSCjkzNyAwIFIKOTM4IDAgUgo5NDAgMCBSCjk0MSAwIFIKOTQzIDAgUgo5NDQgMCBSCjk0NiAwIFIKOTQ3IDAgUgo5NDkgMCBSCjk1MCAwIFIKOTUyIDAgUgo5NTMgMCBSCjk1NSAwIFIKOTU2IDAgUgo5NTggMCBSCjk1OSAwIFIKOTYxIDAgUgo5NjIgMCBSCjk2NCAwIFIKOTY1IDAgUgo5NjcgMCBSCjk2OCAwIFIKOTcwIDAgUgo5NzEgMCBSCjk3MyAwIFIKOTc0IDAgUgo5NzYgMCBSCjk3NyAwIFIKXQplbmRvYmoKOTgxIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0Fubm90cyA5ODAgMCBSCiAgL0NvbnRlbnRzIDk3OCAwIFIKPj4KZW5kb2JqCjk4MiAwIG9iago8PCAvTGVuZ3RoIDk4MyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic7RrLjtw27D5f4R+Io/cDCBbYyewU7a1ogB6KnFq0PSQtcurv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I4ZlQ8xicT7+emAKuS74qCfpisrjcmlW1SS1mI2y37ZS4r//A4TkYHIKZW5kc3RyZWFtCmVuZG9iago5OTQgMCBvYmoKMjU5MAplbmRvYmoKOTk1IDAgb2JqClsKOTkyIDAgUgpdCmVuZG9iago5OTYgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQW5ub3RzIDk5NSAwIFIKICAvQ29udGVudHMgOTkzIDAgUgo+PgplbmRvYmoKOTk3IDAgb2JqCjw8IC9VUkkgKGh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlL0dlbmVyaWNGQVFDb25uZWN0b3IpCi9TIC9VUkkgPj4KZW5kb2JqCjk5OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDU1NS4yMDUgNDc4LjkwNiA1NjUuMTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk5NyAwIFIKL0ggL0kKCj4+CmVuZG9iago5OTkgMCBvYmoKPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdHJzL25waC1nZW5lcmljaW50ZXJmYWNlLnBsL1dlYnNlcnZpY2VJRC8xKQovUyAvVVJJID4+CmVuZG9iagoxMDAwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDE3Mi45IDU0My4yMDUgNDc4Ljc4IDU1My4xOTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTk5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMDEgMCBvYmoKPDwgL0xlbmd0aCAxMDAyIDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzlGctuHDfsvl+hH8hE79EAgQHvzm7R3ooa6CHIqW3Sg93CufT3S0qk3utHi6AGGmMyGkqk+BapfTwoIeHvHb7WTYtfHg6PBFNi1cL4FqScF0YuwXkpFUwlTMkvAOAL/38nF+3EfcSox5LfCSR58Lv4+fDHQYrvDh8/AfRXgDvx1yGRY8SfDj92zMg3x1/NoVH6DXL4eFht2lP7RW1u2zYRtNDrohNL779/0GL/MwoTl2v0hQfhrMTBPQ2QXpzKA3gjD48H62TaAQdBCa+ZsGXCjZ+t0fWk+HI43h3eX5QTSoq7z8U9gwiL25yUUq/i7kF8/CClARVqDSAEqxtYZu2yCphRF4LCCrnCcwYYvvd+Jc5qSxgtDZXwtE8P0ouwncYDBtKJ9MyMJ+RFBXjbYWZPciDxuEMzi8SQmt6mHLpEUR8TvgxTfUwpqzNRtoVOpnG6EZuKq/SNUGm9Qe0nKRAn44UkQ5KO8eTI7ynRj3hTPlkT0t18Enc/1ObX4M2bBVc1iu1/Rd+0WSDz18BCv5uYKPnFOibSoThTMxFJzlZHRggjO9il37+1HJE8VkzNMFAjqva3vWJuv6aUdTKJ5COV80xj7DD7zACEaeREKVcNIXkvy16HI508in11H7zD6JQdlNbXvaN2ik4ym2CtGzxn/T57UJ7x9M3q5L1ZUaqKAqKh6IlzFGHsUDGyZIm65A0zs9E4FB6VatdHujUv26BJZwdNqttirGxJ55eNE2gDGEKJJ54Npbyw9vkamMXfO7XVkZMRwozb3u9q5qJHVBk+ek7PQ46QWgHIRJR7rajUi9hQw0STMhqSZDp2BSVblxrlhQnTMxdJn5MoORGNKTrTOELUGZ3z53lwD+8H9+gzn9aLrTNice5qrrMDw3vnYfhzvsPrEI8zYoZNjolMtzqQn6JRK7eh+6xus2QeVOuzZzaEKPnL/WVKigrlGNknAvkWZgMdGWuFe0nwf6t8dujMc86Ig+usYXSdSkLNOTTIXEnMToAYFL7Kh5eSHDTl9mKua2aS4xmgeldO8Cy9kp1FZK7p2MX5vOv5YZkiD0Y254YhTZ3voCQOYoOTDEpt62l4H4dKqyWaxwBg+KSFsfxfNrkFqKMJar0UOizrhv/E19/E57b0hiWx7aOuw3oV2wRAgxkZyZYRdRiLsdDXjG0GtiFEInUkbbsGclS7Ke54qp5Hb8wo8gBfmr7+CR8VsevcoCJDUuT1VuxbKmUdmIj7/weqSY0XdIJd36VkWLYVmkS8H+C4pZiTx+qg0hR7WHtSha8cxdaJstKFYpd6shhvlyrOjiW2uW5RW0qmWIVkusf0xPg6pj1jJjymfWKXgvF1onl6zIlo4J6nIUMpBT6BonqbJVWveRLFef8K+y4G858tHSx2Wca1B5Gc9IMl63G/FbXvq1z8yurVcmYizQ8Zq8t0T3fUVYazha9Ii6vrSSX7ogw8FBGyqaRLUfVENlYly6ao+/qlsYzXg2Wi7Dvx7BEfYKf09BU6fkd7sdfutI76Yklla8S3iV6kr8vZP+vBc5ewl7msfy5+thJRcc/bG+FC7pa2p70gYnyTW4AYDeKdgXbCiw+s+0rtVkLNidK44KcWqPFB/7dtYVZm+vLO+jGuVzuSb4qK4YB2VWNH1bY5kvsVAa+4FCxaMAYh/5n55ur/4mFciWnKxEVpnS+seCKF9YqxVO8BhXI0y5YzLziTbTKvBsi2LcHAiamdy5eHhsS9RWavJ25A19rgNSloxeQT0Jqi/ajpeIkhsaaYXifxzPP3SbxyfrvFs+O9Zd6h7gPLel+7PLt6t2a4lMkzLke/K1zlk3zO3Ub7HKcruMqnc2SUo703y9Jx5eHpcX0ot3dcGY89vd2juQPq8gZa3rjB8i+7oUo+yt/Z0q0FbJts6hsZ6Aa6K3Jv9eLBP5tfE6TYwhLCAI113eS3BK39YnErPQPJ7vM1PzB0ZPpfQtL0K7lVbpGb7z9lNXzdTyAZHbl74scGtagQC2RIHQqQ2p8dNCbaMDWTtmpxxr9to+Df3zrPfdQKZW5kc3RyZWFtCmVuZG9iagoxMDAyIDAgb2JqCjE1MjkKZW5kb2JqCjEwMDMgMCBvYmoKWwo5OTggMCBSCjEwMDAgMCBSCl0KZW5kb2JqCjEwMDQgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQW5ub3RzIDEwMDMgMCBSCiAgL0NvbnRlbnRzIDEwMDEgMCBSCj4+CmVuZG9iagoxMDA1IDAgb2JqCjw8IC9MZW5ndGggMTAwNiAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczRrLjhs37O6vmB+IIuo1EhAssF7bRXsrGqCHIKe2aQ9Ji+2lv19S78eMPbazm2DjeEaUxDdFmnrewcTx7w19zU5Mv33ZPccxmGYxSdMOgTaT5MxqwzkgKKzk6QsH6Iv+f8OZ0NNnv6J+5uk7DPH08Nf06+7vHZ9+2H34iKO/47ie/tuF7dLCX3Y/d8Tw746+mkIJ4juk8Hk3q4BTGAZOO+cmKyYxMxFIevvjFzEd/vHM+OmCbOHLpBWnh8/xgfbzoPyA30TD805pHjDQg4XJiLSxShs3djZ70+PTn7v9+93bE5gJ/73/VJsnSDZrQFotQr5MH95xzo+cCxc+3OIHvwHlyp9wbI+fR/wIHHsMz5KXefQNT2Eu1/gBnHOKsMcCFwTbxzk2zOOHhwlATZEEforLCbWKWySSdNxORXQQybaE7uHj9P4n4ldPwBt+Lboe4wbZdcZlfp8eJqkJLdiICh6mN9KxQMshsBvYqQEmrIA5fmyQBdEiVCS8WaCRwdkjor1wiZBBtLSc9gfolxzj4BKQOJci70k0ym4K4fGCOvVrT4EC4s5/N0CIABVVYeM7PauHCc3u3RpNUASQNVVPoHFpEtHSBKLlKXw2sOQxDnJaU5LnUwdleT6PUdqHYCWVaSg7mkYSwhw48tyZylAOUd/1GM05BqxeCjraaXITgh8i7FDgmcIsNRJFdD1d6KA1nn1baPIDicboN36fOOb9yJV9G7OK85PpZlFC5CnKwM93ayqS9mFSKpmFPEZjSSZy4DmMeOm7QfrGMqlouhBJ+i+GnQwEBJsHc0qDfJiVzLpz2HaVTIEk63xpH26LQXjlHvp9DpH3frBhqAc25p8AZEDkYzLF5YaYs1ZaT9xgrspspcmfAbZyzR4YrHawEMsHC2lsOvngsfWDHI2gp2lJPAE7rfWqjmuzkVTxoPdD72Oy8rlj3Kuy93AGi+4Mdo7hyYWBR8rMGCGN56ugDfbRhOco+X18thGOxIM/Y88dfgCOOeujIZw//YxislZi7SUJ5nV4ITg18xf28HwmN+/Gc24QrR6icgiXOI10JpfJ+KCYN/Tzo5L6fVKAT7i9OyQl1vNMoSUd5H5N7SEX6OsdpKfb87kvz8nDsoxOxeDrcSl5CfBrcvWBf3AxkDAaSB2NZmDh7G+ygMWA20zvY0EC+NxRR0euAb0QclzqdyDNemBDUcpYSG9Jx2UJL0aR962Mt0neLrKgaPWpMilTfF8kUzq1MUT18tzkS72MKHItknR5t1HzSg6aTxkBZAcYxFwlheFEzpE2zvdrK85zVmEK/JzkUnZT55SQ8rhTr69wVMlDoaHJiLroT8G1cd6FTI7HTN0HWrGN5sTj2qkDsSjKMtGRhjErAnRcQaWk0kUtl5OdhpGsGlksQUbfP77HihHRzIYpopbqUWWagc9+QAhVBobXZrqvl5njzmLh2cAwgmGWPf37x/SpLVWxpIZZMxem5WpdGfDlNa7DGfT5PJWnWJljUoAn6lieU/ketwiVfPszBzK1gBXSLwbVbwbKBSLszTS4cySQKAsJK79bvKQk5oEIj/+l5RB+knBoPV2S4gRzPnrJOZ9BcM9n8CrBBdOEwqjNKCjzlE8lGFDy7E+vOTxTRkZwUPE4oGefrY7oMdkFQK+eJbwUhwLYTBxKJW5DcS6PFAqY5RiVZm2Wo1JdKOcidQixGyKT0Hgu+Sw/RqZqIEQmqR3TlD0bH4q612Z6F5kqGEUm4JpRqHUrEYqmqzD9FSNUj3UpQgE3iXL/Mya+8vh6C0X1duuEYfbBeBD0t4tbLRHLcetVpLMWzbA4Y8rc44iXfR0LY04onL6I4pYoJtNvtXW9kZLe/XKEs44ZozGhhKsinEo/JCheyh+IKFOG91i9J3gqiW0cSyyk74pk2Jf9l0jHalwg6Q7E1aRfkuwCOskts+a+s0DFX/GoHqBfxNQcx5rxETXYu03TKyxWGF4x+5GEET6SIuxmEx44v1Hwct5solvRfAXPkWq+yfyuiBdSmztN7myDBdN93/wCdUtucLFF0uUHEiMNiRxSflANhPxAG0ipLSUE3WszvcsPKpjPD2bBSHlcLucH0lpmwvRXzA96rIv5wSwT5f4ExFcZX286Aavt1gnTRqS679vlBy0RK/nBa0hnLT9QmHSal60FFGgmNtYCr5QfKCw3LdwW72+I9UoqhlK4Oh05d8hSarLhkFVKMQ73xfO1Q9YL3V510CqsJm4xtzsOWmXkZvP7GrqmKH2DaZ3Vtdqmayu+ipkt6tqF52t07cRNpneHrjWHm83rFnQAN5nWWV0fN+laC45mpt3sXsSrT1dpWkssMlEOoI18LU0rvtm4XjF91goLT5SEmO1Vklj/jCi0u9PozvWC9eyYnBWmvZgwp3sQJ16awbF34ls8mueLViJVw+mSVWxO+vsS5pomMU5m1ELEHS5dkXKKmbUucQZubROXBUu7pCasLx5sB+y7yA1gSxu5QSOWAJcaw2Xihs5wviuRFi21bAfp5jZfQxNfuZSSV9tKeD2xbberBrRtvtHRDIjBSpZaUZ6+qp+qV5hK431DWFe8nusH1+s9LN9iuoxzq4Xq2qqavmGBKdKeTEVsukqZuqD5uka6eRc9N+nAm13fKz50XMzFPeqx5n24pLdccFc8dZcJenkG8xnNABP5IViMnXgdDSHdZkguCPxig7huzvfiAl4ZW3KGDU3ioSF7Z9NYPvJ8A7TBc77Tse9nxfeFlvM5KYgT7o5nEQl84V4dFiCGK2d56XV95Q5yd+vYKEFJYHtBm0/OMmuHUV8iL1zPFiJ3jReGePd6zZ3tbpv+cnkAX0ktVtjcmf6VV4/X3SrPy4m6cn97OK2BgZ39ldUJU2EseYitrGZBpgmLaqIOnpbm+1YK/f0P1aGzmQplbmRzdHJlYW0KZW5kb2JqCjEwMDYgMCBvYmoKMjE3OAplbmRvYmoKMTAwNyAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyAxMDA1IDAgUgo+PgplbmRvYmoKMTIxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzEwMDggMCBSIC9YWVogNzIuMCAzNzMuMiBudWxsXQo+PgplbmRvYmoKMTAwOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs5OTYgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMTAxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAyODYuODgzIDM5OC4yMDUgNTIxLjk5OSA0MDguMTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAxMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsxMDA3IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjEwMTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNDg3LjkyIDM4Ni4yMDUgNTIyLjAgMzk2LjE5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDExIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgOTguMCAzNzQuMjA1IDI1MC4zOSAzODQuMTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAxNCAwIG9iago8PCAvTGVuZ3RoIDEwMTUgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nM0aya7cNuw+X+EfiKPNtgQED0jevCnaW9EH9FDk1KLtIWmRU3+/2khRpOzxBC0QZBlbIimKuyh/uehJxT9v0s8WzPTr58uXOqanzUx27Yf0sk5WzX5ZldJxqmAq+IkD6Sf9/0bNZpk+ZQz6rOC3DCl4+HP6+fLXRU3fXX75GEd/i+PL9M+lkAPEny4/MmbUN8cf5dBq8w1y+OWyubKmWWcdlhDC5M1kttkUlt5+/9lM17/zZjK4SbbweVqcSg+f6kOil6fwIf4mHr5c3KLKCunB62k1QNgB4c7Otmx6avrj8uH18vaml0mr6fX3Zp5+8vMSFqWU2abXz9Mv75Ryz08fp9cfGpAeQalb/LfFERf/RaGrl/qenpcyr+OPTv9dJcWorCW4KCOrgaSNqMYQNP00vYlwZoqT2sd/QNuVtdS1AvvCR4eg3NMUxfOuolwri3FUb2k0IYhVElhiIaN0y290OwPe1MpJbRVr4xPPT1PIjGkDzGg7WO9IvJLzNPmhLqsIgVCfxY7USGi7+4/g5kb2HwFMYjowQFCioNDrI9FJ6gTVZbqLNBNniuVpY8BMmrQbv81kzlpKj5Nh9EjN/Xrn1EKE6ytOhNO3Nm4Y/0Va8W98t9fGUxbNrbyb93XMNnhVRajqnvL4VtbNdE/wrAITu59WJ6Q+igoDMGXBpNMyYHyJs8zS1tSRLYiwn6zrXtDwq1hwGDS2eX0oZgD8gEbWXJVs0QSZu1b2yRhK9SphO7+ANfcci+IeRQyA8fuizeJfBnsDnjbJL4znmMJ4HsFjjNlYkCS6yPLm+1/HpnJ//9I8gpfBQvVidTVMa9+2AmKhY92753Eqmt1LdaSlOTpsraNd6YOZ4BwzB7rWoYcw+nRtEDuqfbSvPiue5FaEReIMiL80YwHHQnylMEGOJMB3lkNllbi7NmOC+d44pSFEPmVkghCIThxmf98CK9CxCwIlZmyYHAFAJEfE9NWcro2f5kEUaOWMiQzIMM4FQLIDQQX8oUGNiqFjLh+KToSZ+0mUImD2ZNyXNDqwEyPLi69Ns8eeG23GlTJIZlvtzqXbEdxxvt2zWv1M9tAiQt7NYN1Vpl1niSeBpGuqFPo5MtVHLXVkqMSRMx1N+ODlL+EFUzcNBLA+ag/PC5ZR2Nj7UYSAFajtMLkzap3FSRny/RwGsUc4ZCGMy1jqeGAvm8zDsvzR84Yi6dyNTx7LC0FXAGP0rk2pLcJUJJr9GyVFAyNA7vJ/mD0qkK0hzoS9tQiXCnYCJYVAIhmxWwLOfXjkRO5PnIWFYPo1hyEfJruQT7hMwVgKvbmWNJ0gE3fWJARW39QA56J9s94xZxmBjZZ5YBSBR3BfGYFfQBeDVayM88NjjtYPnnMAAXKVmMgGunDo0REIJ2kgxUFyEACjNBwzcxaqfjbmdx2QGzDVBUdk37ao3Ve5jbWjIIjEh2bDgEQxh0uc6HRwWiPvlTIY2IqTubkTjfGl/XIgGgoiFAGT9BAkNMbjK0Xq+mDUggAoF/h7bgKhDo5vV77C6AiLGzKqD/GIxXtzghyXzaHZAJCo//mk2a8sBi4LZ1VJYrcgHhjIMkjGIKyqR4iqkDNBx0luwETqaVPXpkkY507SpTg0oCGd3oHWkUt19IhZAY0UWcxN8geGDWPJoppKz3Dv+A60wtCvzGOewjnju+gPyQPtboODbl0/W8fW8mSL7fvRoHco7JTSIFyz59ubXuOJpLtNMOtkwjora4IPC6YuW8NROlh5xBZ3ERHb6jDb4CK20i2/Ktlcak2kgGpLDF+fJrt0wQ0gtv49CwYUdWVziriAlyuxNh7Sz1F+bcYCrqlTv+hG4ZkijXaz9yaEZdVDGWjaaQITUoo2ygLUXHfLScr1cWMxw5itGQCu74l03D58jnVKtbbzsDjh0oh2YLWQAZgvaC7X1HHdsMyOFyIwRu1GVrsAtZ8akTZcpJA2TUfBnOcJdVFlAJc2qDOGz6s+nFvJ3khF33YAoZuuzKnAyYRmwyN4bv8d7An7L/BM404vc0jbtM4OdT+yf8U7FclunJW46Cdn/ePIL876Q8KssUtU+PF4bH1IV59hyPGo45SDOJzdyBUfvfSCcD3uw3Dd9Vbd2vxVIi+t1OB1CT1ElTRgukCuJrvaWWsXZbbihXHCtDEF6Pe1x2ZLCZ3ravCBZ9UlovzuiwVl6wpVBxADnwE2akk7OKyo236W8ZP1y7zFnJmtDUQeFb6xa8q83XYy0CdOD6XyIFUTjoXmTl3grvPpoJyqFUO6FyO4xid2TWuGJ4fCQvF9Em/kcS2RfkF2qxVxFg+BszH34XEb7HIjBlYTazGwmJYV0BMLX7nUs6pvLaR2xTBI4r3CCgcNVDeZULccroghV3QDbNikgbACLbrtIklFmOciybpd1cpH+6HH5IcTHIcyjdyjwBzQywKqmxTF9SK55N1EHD8wZ7rm3lkYYUhHCmnLjHpwxuG7pzc8AC+439FJV4B/TQXiJ6eCMIGWhEl4tS0UY/exBi/t2zMNu8e+ft/HuTq5wRXP6wrhpBrZ9XIx04pNmroZobnEAN7T0WudoY67G0K4/boT5DTpUx8HOc2ulfC+sY5nq/DNJnGctLc062iPOOZ+o+900vF2mfCRfV/975J4kNOOmxRKScjHwzBpM4hqK5pP9DdhPuAXHxq7aaMl+PGg1/sJPZ+eMaxaTjw3EdLCBlY45RtQDJGvbUrGa4EChfGfeHGWx8AjV1ma3C0N3Fb76vdrAwQVCZ7W7ILqbsUDQLTZ0jBh9dGVLWJaJdP4SkVNgLHPPSpIu6XpyR2xqb3JLihleyiJE32oDlyRDHSq3yf2OkpM26A2OboAYQ3U1tIjuZZ8bYGXKixpYUQVuyinRoWZdpSwSoRRuW4wUPPr4rzZti1RbC27gUtyv9KX5uRml8InmppGrmHFQZzfN36oW7688q9pV2fmNZ4oug+PVfrqyHsxmr8eHnx2bMw6u3x8HQ0p9vrIt8iMDP9oukw/yG08mKuw8ldFHh/7WhrRE3cH3yW72a5JL8rGc11ESrpq3x4bNVSRcXpe7PptKyT9+RebrGT3CmVuZHN0cmVhbQplbmRvYmoKMTAxNSAwIG9iagoyMzA1CmVuZG9iagoxMDE2IDAgb2JqClsKMTAxMCAwIFIKMTAxMiAwIFIKMTAxMyAwIFIKXQplbmRvYmoKMTAwOCAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMTAxNiAwIFIKICAvQ29udGVudHMgMTAxNCAwIFIKPj4KZW5kb2JqCjEwMTcgMCBvYmoKPDwgL0xlbmd0aCAxMDE4IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzNWsluJDcMvfdX6AdGo30BAgPuth0ktyAGcgjmlGSSwziBc8nvh6SkKi3VS1V7g1FuLRRJkU+UxKrnnWQC/j7hj4+K/fa0e85tknnFtGubpHVMCx6sE0JCVxopyg804A/+/yS4suwbjajLovymJlEKf7Ffdn/vBPt+9+sXaP0d2i37b5fYlYE/737qlBEfTr9aQy3VB9TweedNkqkcl9HGGFlQTHmukkqff3hS7O4fmgyRK8TCE7NGYOFbLiA/6poK8Is6PO+MFUkCFoJkThXGpjBucOYz9AIp/cSMS6VvVDKBilUh9dF8eRQxsD/zUOMEULF//2BfWxnQV1nXOEnmAHLsIG5zKVuSawP+G82J5s4skuVbWILGszBZHFsLj0l22Cw6npIMvcdh9ZoT95Nwkvva8xbg9P3j7vODBPiyx69zLAtMOh49Ajto9vjEfv1OwGq75rn5wh5/rCXA0rEe1rAAZF8oAdaCELdCaKzCPwlt0sBzgMdDIz5QFnuo38MvPiBC4ZhDohUPiUYCL6kGrTQsaJx3cPGV5m0s9zRvWHSbJCSO4DXLpOjc5ix3iixTeOtww4xhKMVmi2HgDGAVk+rYTpxzuzA3THocgZzIpnfA5yHJvX+kKOMBqxARU6DJlRRrZNBcYnB2FGi66kTahZ7cjtFHCssRefFIFAJSYd1bhqJa4lI8ksIVjWlvgarI1S3a1OyOK4WGdcmw7xetWiWWo9abWOdYHIuGCy1j9G7jaju7nqUAE2gFK8SfFPGSwUvbRId1WrJIG3L/fjGwSam5QjWVcmssgWobDFcmPWqf+7J6WJa3Vb305zKpt88x11S/lcpyP/NfUl0pHlB14VdtRqj6OcsuidOKGxTngtmKGRINM9MYU4GV8bmtaR9FG3U1XMlhJs2aHLMfVRj7R1WsvAjWizPfaHgnAaIwe+PO+rmIec8V5cUmWK6NL0FcCcdTBwbgy5WPwD26DUcGW44K5AufjgxE7RNVd2xQUnGFaCxHh6ohHR90sBxkxKjpvNBVG/LuCFH10THCQ9QAJYRePkYoKblP5G94lOilLh4nvC6a04YJVZ2rmzbMit1xxdDQNhn6/Y4TrRJHjhNvYZ1jxwmlAnchYLzYvDecWe9KB66Chyiozwbedz5TKON5CHRlWHVb2rgxK+u5QXHObr6c9RszRrQLNmbl4AoAoqXyL70vT/6T2YfZfyv2auUdoNLHENRb7dUquItR+hKuj3YT0k65Xl/meg3X0ZdA3Unf92t3nx66eJf+M1ZDOTKuwo2Wdguqr4CNVmY7UjeI02YTSk/BxujLYGP0iyD2LWBjwjrYWL1pRVyDG6cvReoHuBloOHpuQfnxZxQR1JXInm4FDi7YzTFHMCOAuwkxqqimW4FMoEAbqSCmdCHZGm2Jv3dwH5Dp6nCfTERnMyS/PXUNMXDFjxbIfJgzlw6YuUi3i0AawzgeKDEZs7yqjW4fUUw3j6bvboGHKzq37eWe0/NIqdGOhxZTylTJcmNqJB9uWKQewEm5K+mOxmaJd0kCuqfcvCj1UkusUVhrJzGzM/ehFTA69TRFVt+HsnH8MOu7rJfNs8XQgs9t4qf3oxekHNsani635VBDaWY7y+mtXCWmh2Q6BPgeN/1UPvkLfDETdc5QDx1B74Gpg5Duq9EN2wqBM6sagrHrlPsbTEVN0FsSR4b2GfONuBaQIQNK5PzdYJmjJqusQbAcgL7SuoNe7RsH2Vu7zHLSsOHmj00/v7SgxydBOLogbZrSwusZ4wZEkd1M1tfnBfaQbfpQfJc3r1ABWVaKF5Xk5eoRbahC0l2vfqIZoVCHyBnLBZ00rmBvsn3rm+SJekFnnqVu0zagyDiVXlnfxj4yj6kCHNIi/qk9jm5w4IZgYQcyU3JNTrvMDMjChuIFXA8JRPcz3YzFSwyu/Dljz1KaPSW3ad/VF9bopKXrTV6WZh1ATkkTdfgI8/qoxzQxvbSfgFSjYd7lL+J5MaRHXmShhZXowwCBxaDnWLdGuyhTIXamH0Kem5xStqCj70MnOe3YylwnZYROjp/hPLllokaRql5fZ7ivcUQecTbCNLzHHYD6KK6Egffoifyoh9HhUQwOn05iJZRMIXcYbqXkdHL31i+nsnU56tsqHslTnl54823xqGo8fraQUthVQ0phOxG5Ng6mQjnrrtqQdynsqg9T2MFxnL5QyxlspDaJ+g0z2L3UpQx28EVx1AWmEXNtiz4Vs+NaoZFDMvL7pa9bJZbT169vmmO5a6sjh3tW9Pr867WNt1JrIse1IwVoc0XumjaymA8X5f59EEt3bWsDdzCrYNe9HitpnSkNcCtOvrFdphvVATQqsIBS5qrX7NR+n8NS/8o8b2iqhK+YVCvHs5JNJpXLMe6Qx8vqFf7xV+7Wex7AqjGIs44cnFo7LGbRh6z2IZPm7JIo0/PV9A5tHyVeOo+8jozRDLjALlwy5/JOazAd/cXLaONKdcJtWjYL+aOlz9AU7FwuRi/W7sRrXyg7HSAEgqnKR69VQ96NTeC4NqJMu3FXrcm73bjqw904cre8DzvtYRDRveE+3Etd/jCNJzVSYdvnVvzUjjdb88T3X1kJNGDW4RoNui+fnVHckRGqdvBW4CEMrcRm4RNxhYDFcKiWmkRXXfPdeMemn0DqXqktvraJrq+Kqrjuy/ZpePtV8LCwJZeYco5AjWftiEt0TshjYNNmWp3NLI3kVruP7RT8+x/BGdRHCmVuZHN0cmVhbQplbmRvYmoKMTAxOCAwIG9iagoyMDUyCmVuZG9iagoxMDE5IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDEwMTcgMCBSCj4+CmVuZG9iagoxMDIwIDAgb2JqCjw8IC9MZW5ndGggMTAyMSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVpLb+Q2DL7Pr9AfWC/1loFFgGR3pmhvxQboYbGnttseNi3SS/9+ST08tiQ/xlbSIJjIkinxE0VSEs3nE2eAf++osL1gvz6dnmMbZ1YwaaZNXBsmoXPaAHB8FXpCKrCBCvr/Djqh2XffY/wMqQxNkB7+ZL+c/joB++H05Su2/obtmv17CsOljp9PP2dg4M3hGyOUXLxBhM8nqwJPYTre677vmRNM2E4ESO9/fBLs099+Mp5ckC48Ma2AHr7HBxrPvxoesCQMzyelIXCgB8eZEWlglQae6JmNquc8WGWcB0ulth0B7B3W8xpEftD1gE1/+O7KwIjsn9/ZtwkzHBPFEgXNk9hHgteug9CXhr+ORNIM0h4Ju5MKl7iUOK3IZKiwRJ8rUK5E88qgDI8CIQ4RyfC0CYsfoobC5hg8+zWxjGa2A0xVMIAL+PB4en/hqI7s8dvVNzlmOmf9Okj2+MS+fAA0niO/u6/s8acxA2465Tm4VQ6o0gD3AJKq+I9jG1f4+wggqK3HkmiJ7gF/2M5FwRFtDyw6AaTdOifizC9hRBqZ34e6JF+CrAX9PiFdH2kX6QtEUneGZOBMv0UGvI0clO6ElwNqw8usrVZRe5TexyGMiIqpGYdMM63ubK9QaNymwaW7Y0qxD2HqXiwkcIfiUKHuRUJlbAd1x7A/9hAkTYs/XEZ5CYzPj94zOtcRKcjoIa/16ClV732VNcFVTqtj6sxnXl+R7yQfY8kQKs6TfAVSy0D9Ku4pOMmMac1v4wgJd8DCOxGrOwENwy04bw3ek1nzf3rvCYi6+34V6cx5bw4vbuOcbzfyPQ5cpudLtNgz/lyoe9daOjYuVNhT6GB9w6wJniJhqfCjwrM2kS2PpQnP5NWH+sPVsXhYbuR71agcwecPV161aUgVNioFN22+NI2xNIuNqMJKybADKWf36onfmfowcz/7KDVhoyT6sFcqO9ojV+lLqFoeVmnP3kZ/nyRzvi6myLb3CeTN/SpHHYGmYqj7i0JXKrz3+vlw+xTK/uVUrNhlYrdOhXZjIh/M7OPx6W0bs5yyE7vMsTZlz54gughvzj4WaUuIPW9jxgtslYt6fgPUa5/yMA68nTknPzxa/DmpztOWEDm0M9sZtktSXe9TQhbQxDzzbaTmEOs0JSQJTczHs1PRSnmQhKh4gXm6CrS+idlUWaqN0OpnAIF3iRbmUWV53gjtXIemXROzqLLUG6HpOjS8IiiExiVvDk1uXFA5s6DWoRloPL/b9romNkpN1KE522b3mDs5LTiH3rbZBRZiNDmUrbEZME3UXMWTBXlske4xJiyIvwxkENfpS6g+lnZc7SVJZrSN+wCAhWFLz6Gu05dQfRDuuBmssp5RgO39SugpWnfQTNaOsRuOpLJBCC9B8XdyMgUJw6W3BqlOVwlpqiZmQ4d1SIuVLDaDVacpIRnVxDyq7Gb0bJm2hGhVE7OosZX38bjoboc837ecgmsTSiCWQ+CE1xe+TlNC6tuEDBSp+3kklVFoypsFj1Bys9ncr4zRQ5uQQQ6huuNUaUpIXLyYGeV6tuYj941RTkmIJmbnb2spwJekGJ8LE6rd9Db3Lacg21z931D8U6lGoYE+SjQqCkWb/ev7qZSrn8iOX/1zOOlEnhyWZ7+g4+v0JWwDh010FfYl1NXMprxOX8K2cNgM35JJ2uNhhVumQ/B5MrM+mBdFPCi0QFc++SlcmH2bCCXdUn2bjO/FtunXpuuOhyqK6V4Cy/ShCOZWapauhNkfD1us2cZiqKxKV346hzYhDH7MAWq+L1wxFxxc+Q6lBYUgDKqkfLFMiB0fFLU8Hp6Y/iqpEiHTxhpt2udKaGN9soQT/ZDzckOyhE5JEl7eNrgLT20DVZYwod2QyRAyJkYNIWXCqJBIlsoJQZYlMXpHaRI4FU4JSbaeJUHU8QP7K6ZJ5FxreRII3ATghGVU24Nn3H0mO4FkO5uWUIDhEzCHocxlJOgGkb4VUzKw3ZReKSPBHIjM7ficbxpF1/IUtw2RXOOjY9s8+OrOv5BttyOSaxpFy+Y+io1hLX0UQyeZJeEaJTqDfnuSrwyMTiquaPVGVslWFrjo/q4rak2QVW9JYc6GyXOtw+sb0XLdQW/yKoweb0uyHrpPE1qLvZB33NFmgtScYyeyZTEYCS2X1NVlEngb1dK87UWhv/8A7dGQ1wplbmRzdHJlYW0KZW5kb2JqCjEwMjEgMCBvYmoKMTY0MQplbmRvYmoKMTAyMiAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyAxMDIwIDAgUgo+PgplbmRvYmoKMTAyMyAwIG9iago8PCAvTGVuZ3RoIDEwMjQgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nN1bS4/bNhC++1foD0Qhh0OKBIoC3o1dtLeiC/QQ5JQ27SHbYnvp3y+HD4sSKVk2ae+mWGhFUSTnmycfHr3seMfs3zu6DQa6z8+7l1DHuwE6oaZVXKpOsF5LxRi3r3xPFm+2gm70/x3rQXZfXY+0zOLdV7FY+LP7dffXjnU/7D5+srW/2XrZ/bvzw8WOv+x+noFhbw5filBweIMIX3YDepqgem6kMabT0MHQg4f0/sdn6D787ZhxzYFs4bmTyKjwNRRoPPfqVLB3wvCyQ8k8BSpo3imIA2MceGJnQzA97cCi0g4s3RUKC8vKigbPHlmgyHrDjO7+cAOgYmm7f37vvkzo2WGtZIKseZR8IvukMxFIH/so8kTivUD7Khc7qWU6mFfU1IoH2zxp40BYSK8BilkBPjzt3h+5NYju6csYHazgez2QpRjRPT13H7+jzpdd1hQYImOCHvf2osKDvcgTLBiwZRDJBb4PX+33/afu6acUKFc9OqS6CikfbJmuR0+NH+z94KkCoThaRBE5jki398uQW29kg33FrLPcEDnJkt6TLN17MoR9kK/9x+043Lbhj9u5ysfMuBOyV6QXrcwtuWMffPNYR+1uwfE2OpkUUPbgdGyjVYUUxGNApz0y4sRRPgTKqXU+jFxt75chlxgiAMqbIgd/p/ebUedoFfooQIuaGrR7bxmkXbKSc9aTRoJy3wzpgNbrLVKFNUBdMMdAhOqNVzyBdUBYECv3putCEV06mPghmO1xZGB5zIwJLaxzk2dU2UaRIC4wsQ9+dxi14PrtzzCARQaMaOKXRYqHZTU49DxY9GPoe5ha//KY+dzHoImTFknGwFggy6GJt5XIClwmC3Az14GyztysEFwlRnkWXeic60CZC8H9xIh6qJoYjfdm59HBMWAIEA3LpoLz7XOoyJt4CQbJURACzcY51HgpEtS1NhC0sdoGN7Q5JCvMs5hycUi7jyNxDKxOHA+BXFhqRBGk2iq3KSx+WRNPnJMTciTr5j3u3zlNRS9V49p9CfbyODkrA/PLYWRVC3kXZuMCIi7m0uVRYgTrbQsQTRPXLZIF75qlVQb1E+Dbu3p6FmfYKMDXpok7l8hR4IS4vrhQ4st9cxaMbuKCW2CUdhFLGrqEvQ27BmC6iVu76UsFF0wgneYHDC4ctuIMQ/khlMUYWJ2bE9tx2w6hLKcaXqeZs8p1E7dfI4s6aGA+JW7qk0OGoc0MPvjHdKtzD+0s08xZFUOTkLFGdk075/vkkFG1maUL7u+kj17S7jLJ0VU8xjp47YgPYfekxrYYtOnu0l8iaDKO5dolx2DnQoWk8y9lIxKv1lDciZz8IJSzAA1jGzj6stMYC+W9j44TP9s8duGcTLl1v9bD1f52YtMECCFIU/B2r2eL+xKMQVa7/aWSd3OOGi8x+GuLZEss6PrjqJsZj/ZG47SCbLIlrjUgg9UhocR23PXFswgHaRYyRJxfHkfWXPuj1yjVRzHMd5PL4+anrQyrw8AmFo/+GZNlK8RoByssZP1yFjg2cfOJYR699OJajSVGmO5bltvlMEE0DQMlKc9XzzRPLEl2ZbUsRP0p10mSdcFTIDRxwcoYLiTcxE3uGMOFgqZu8o3EcDHUH5tdHcP3M1ZJkyJn8Zq4reuP2K6N2xSzcXaAc03cNvXHYneI2/ZtU9ffErcFXhW3kbN2C966gIn8+iOvCee0u+FBYdGWyhs4hOuPqfAKcqLNkVKq+3QPt6Zn1G32bnMuV6CU2xV+t9bVJlhSRglWuU0OSbU5drlDTgoO7Y5N7pyUgrrN8ckbzUpB0/C45NtNS5Gs/kjltfJSuHS5ByBFVWLRnRJTJDTKALowM8UFWDMNtBszVKTwqT+DkuobzlGRWH8k8spZKlLWH4m8gTQVqUQTl70wTUUOt0vyWUlTkRpu5z73y1ORpv6o5E55KtaymrjJ/yRPRXHexN0a5qkoaJRJNCP3Cnkqir7maODeN8xTUVh/1HHvPJXD0/wbEYXQKy6nn9OwjjJAdFbrvmoofEwDYNf75HJQqmKzx0u+sJkNM/8UyL++EK1d2jKj5o8sKV72DdCp+/RrD9lxNvncg/dcD/Sxh+ps7GCGdAWnUOp+pR6KagLkvRTqbSuF/v4DXjHZCAplbmRzdHJlYW0KZW5kb2JqCjEwMjQgMCBvYmoKMTYwNAplbmRvYmoKMTAyNSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyAxMDIzIDAgUgo+PgplbmRvYmoKMTAyNiAwIG9iago8PCAvTGVuZ3RoIDEwMjcgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nM1aS2/cNhC+76/QH4jC9wMIDHi9u0V7K2KghyKntmkPSYv00r/fmeGQIkVpLa3tJAnWeg2H3zxJDvnlIAcB/9/gxUc1/Pb58IXfycGrQbv2lbRu0GIM1gkh4VNqKfIFXuAF/74Ro7LDJ2pR34t8Ta9Evvlr+OXw90EMPxx+/QBvf4f3dvjvkNjlhu8PP8/AiO8OX41QS/UdIvxy8Cb1qdwoo40xDkENyo8qQXr742c1nP4hYYhcoS98HqwRePOJb5AffSo3cEUMXw7GitQD3gQ5OJUZm8y48TPPrhcIrHGBwOJVSgsY4Z+HF92j4B7FGEUMw5/EwDhR0/37x/Cx6Q/YgmZY1zJrvtI9NnapMSl74oUqTSqvND5qA3bu1Y5maZklQ71fQFNRrfuEcZL1gn0wlnK3CQ2xWILhOxDU/xbduEY3+/Asa0eAJY+Ph7cXCZ45PH6c0lQY3Bg8umzUw+Pn4dd3AuJo3w98UogT/B7g5/l6FELfC6HgJ0N6lhd4h2Gq4P05tZO72959GB5/qgWQbjQkQXh1CYxJ3+U9o1Lpm0Y28EcCLwk08mGfdD3fTkpILcKDAgRE/jOklIjCpV5qRCKyXQCJAknUMV2F4XvF9zrZDvnRPUrLtEhD97a17/U+O0k1eDDaM7j4WpKawPpXSbotSKc2HWJjR0W2gZT5TMT4SD1Db/K80TbHyjZmv23W++wktYazhbGvJek12zzdpkPsTMoOOBt7BuKlyCfdw3uj+RcnXeNziRWg0adEL91Ea9iWdLXpp9mOmRfRsQY2ZAlvIEuAtM48O3TOSc0lBPi+S8xqolGXdE/mEnx/n9JiE2KbeXcCBg3JwaGu9gqYASBeidrFXH2ZQMhl/4l6c2yXjH+/PCLUPQvLoqPY+f7Comf1XFbVIIV6diC2v74LqZ4ZOYklTDrcADOWetYBEyRtcCKDDl+4k37YBRTK75I+SKcPrLPTHSAzwztW04VDLHsMk8mpc5iGidmUR1o/QtDhLMkV0R7uYORBvmQCSqN3A2iZujpxBhXJotUnAugYHAcokhNVyAm5kKvaxlUHIbWcUZP3ZOaBg8qBBnzmtQCSiKvXWYuef3m+InhEccvyzGXg5jWpY3H5M41JecbD6kAJdIsTzVuTmxaABvm0IP6CYfhFQnIVNWm85nGf5EYtJ7kXZo2x9wECntVbJm/A9w04TDYIiUZiQ38yWw+R6OMEMrdQ57vBRKKyyWRaZB8rPV36dhT8vjLRmZ/ZHeQpDSrZHUs7biMvMxy+0pRNfLKnk1Ou8TsxXc3LTBpIEky6yO4151F75jZtNhymr5bbsWlFxhxnvI+ATasS0OeZCJpVdek9I8jeM3LwyEobQY1ue5QW8k4bhU/nFCWpdGRuK9MNmqvJVdyDeGtumbDvTBmloVZruqHZU4d4HgXb+WhOfGJh1IXJQOcZjX4pj88zZ+wXc7BKDxr4OF0mannoqmFLM8osTvPcdKrP7N/ZwKcZdRXC9bvapPk9ha5NflC/L6HKaw7SUFhun/N2DuKn+tw6hGZ6NXee6ptB2XVJS+ckSVk70ETzboipX1X8QE/6X05GZq5TPwXPNivlLJElShrtXUP5zjXaScOk5Bx29ND7Ic/CaXlomYqps0Imd6nzyrqSiE5M8aryu3r0iPXEzzRzL+UGZWEKD2t7WKOUINK8msWZswjrUzds7iGDW4DqQymEYGGocawy8ZkmAM2XVekyRS9j+XKZHFS0XGdzuPSWAqnF1VrqxFkvBx5bq6SAZhInGt7FXasRk1GyPVocquV5ZqcUbbJOX58RSOdJMtNgeDrQZ+GA9g6xs3dORvPRJFtMpoEdnI/G/4UErKUcg/OY9UuRSQeYqZnrSbW2RBng9dS75unE+ZGK7xo3BAB3KsHnp1SIt9aNIBes4KjyPnucaGfl+PwBi/LQ84ipAtp0RXmsP2tlIdTk1yl4p7p70+XSXoDSMmNGJChC4Mdb4NTs1lFZWPCJpNxvtxvQgljeDfgq2lnbCYCl+Oish3CON5ePnigqaKsAh4sh2CeL9WZrKQUjMxdsXfpOLBZKy07iTiHow+3aKzB59WnST+cB+SFBKhWbvEQ4TrRLMDysMCwtyPbDMKyRex6zjiw1TlJ8WyxcpuvhwIJHIBwXdtn9pbUSxU3uhzBwwU9dPnC2PvYaWabpi/lCbHbRV9SGEfFmV6W1vRBlC2Ouif57372Mt7voC2pBxdtdk8vkpZx4ThGQt1OaaLlK28PS4WZXrbWDlxyYeXJfupYpeMvzkb/zfS6SF83ONXx5Wrsm3OzqOm9p8laMZn/K2zJ5w5ZgzCNxV9uF7Tb/Iln8W2vf+ZtDTOZqXt68OE9QaQflivb3te1hwwLsJUaLb6394G4OYZpxZGi41V9tWdaaXqfr4UT3PYw6VtibQ4tqdpwzs2HXNHOdtoclLYSKi37n6YeX1g4sbm51/dL1itR0uMVULv7Qw1zS4vN59mJqA6EBvqjMkzt/u/Y8t0/UrTEQDh6bvtZSxFp9k6vPWS5vMVrvYLFnQe7odxYY2g0ornNS5ZD3wWZFBhuxChBi8FxnqF6kUoMzfoRFIDCi2sLssSGfVRuqb1hwgIGXjoqF5XqDDTBnTdRfseQw73Wp6mDDKBJwxFI93YKnbr6y1q9UvLrWn2Eqqr3hTOQiotUDf4KO/L1SWDk6jmeit/bq8a1XWN07OiNn4dP2UeLJJTWf28FDBng+B59vWGI7OtRmwEf95kNtV9e1qJVLSiD5OBC1e+jpa8gb18COTrRB9jJmlyYXF55XoNaHhmqYawtUyHizg84Oa1aQgJsz4WKIYYSZ1PwtBcfCiXAFjkOHq9TSKzF73HNMfMZmfp49fd6JFuZCIrr5o6hu9x1kL83bk8LdoCZHGTxmGTdICY0wgFUZ3BQdYlo0kzJytNp930bB//8DMTTTJwplbmRzdHJlYW0KZW5kb2JqCjEwMjcgMCBvYmoKMjIxMAplbmRvYmoKMTAyOCAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyAxMDI2IDAgUgo+PgplbmRvYmoKMTAyOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs4MTcgMCBSIC9YWVogNzIuMCA2MjQuNCBudWxsXQo+PgplbmRvYmoKMTAzMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA3MDkuMDA1IDE2Ny44MzMgNzE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA3MDkuMDA1IDUzOS45OTggNzE4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDI5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMzIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbOTg0IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjEwMzMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2OTcuMDA1IDE1MC4zMzMgNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjQ0OCA2OTcuMDA1IDU0MC4xNjggNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDMyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2ODUuMDA1IDMzMS4yNDkgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDA5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2ODUuMDA1IDUzOS45OTggNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDA5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbOTk2IDAgUiAvWFlaIDcyLjAgNjgxLjYgbnVsbF0KPj4KZW5kb2JqCjEwMzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjczLjAwNSAyNTEuMTM5IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAzNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjczLjAwNSA1MzkuOTk4IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAzNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNjYxLjAwNSAyODAuNDU4IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAxMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjYxLjAwNSA1MzkuOTk4IDY3MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAxMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzEwMDcgMCBSIC9YWVogNzIuMCA2MzYuMjUgbnVsbF0KPj4KZW5kb2JqCjEwNDMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjQ5LjAwNSAxODQuNzY4IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQ0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjQ5LjAwNSA1MzkuOTk4IDY1OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQ1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzEwMDcgMCBSIC9YWVogNzIuMCAxNTAuOTQgbnVsbF0KPj4KZW5kb2JqCjEwNDYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjM3LjAwNSAyMTAuNTY2IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjM3LjAwNSA1MzkuOTk4IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQ4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzEwMTkgMCBSIC9YWVogNzIuMCAzMjguMDY1IG51bGxdCj4+CmVuZG9iagoxMDQ5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYyNS4wMDUgMTg0Ljc1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MCBSIDEwMTkgMCBSIDEwMjIgMCBSIDEwMjUgMCBSIDEwMjggMCBSIDEwNjAgMCBSIF0gPj4KZW5kb2JqCjEwODggMCBvYmoKPDwKICAvVHlwZSAvQ2F0YWxvZwogIC9QYWdlcyAxNSAwIFIKICAvTGFuZyAoZW4pCiAgL01ldGFkYXRhIDUgMCBSCiAgL1BhZ2VMYWJlbHMgMTA4OSAwIFIKPj4KZW5kb2JqCjE0IDAgb2JqCjw8CiAgL0ZvbnQgPDwKICAvRjE2IDEwNjYgMCBSCiAgL0YxNSAxMDc1IDAgUgogIC9GMTkgMTA4NCAwIFIKPj4KICAvUHJvY1NldCBbL1BERiAvSW1hZ2VCIC9JbWFnZUMgL1RleHRdCiAgL1hPYmplY3QgPDwKICAvSW0xIDcgMCBSCiAgL0ltMiA5IDAgUgogIC9JbTMgMTYgMCBSCiAgL0ltNCAxOCAwIFIKICAvSW01IDc3OSAwIFIKICAvSW02IDc4MSAwIFIKICAvSW03IDc4NiAwIFIKPj4KICAvQ29sb3JTcGFjZSA8PCAvRGVmYXVsdFJHQiA0IDAgUiA+Pgo+PgplbmRvYmoKMTA4OSAwIG9iago8PCAvTnVtcyBbMCA8PCAvUyAvRCA+PiAxIDw8IC9TIC9yIC9TdCAyID4+IDIgPDwgL1MgL3IgL1N0IDMgPj4gMyA8PCAvUyAvciAvU3QgNCA+PiA0IDw8IC9TIC9yIC9TdCA1ID4+IDUgPDwgL1MgL3IgL1N0IDYgPj4gNiA8PCAvUyAvciAvU3QgNyA+PiA3IDw8IC9TIC9yIC9TdCA4ID4+IDggPDwgL1MgL3IgL1N0IDkgPj4gOSA8PCAvUyAvRCA+PiAxMSA8PCAvUyAvRCAvU3QgMyA+PiAxMiA8PCAvUyAvRCAvU3QgNCA+PiAxNyA8PCAvUyAvRCAvU3QgOSA+PiAyMiA8PCAvUyAvRCAvU3QgMTQgPj4gMjcgPDwgL1MgL0QgL1N0IDE5ID4+IDMyIDw8IC9TIC9EIC9TdCAyNCA+PiAzNyA8PCAvUyAvRCAvU3QgMjkgPj4gNTAgPDwgL1MgL0QgL1N0IDQyID4+IDU2IDw8IC9TIC9EIC9TdCA0OCA+PiA2MCA8PCAvUyAvRCAvU3QgNTIgPj5dID4+CmVuZG9iagp4cmVmCjAgMTA5MAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDEzOSAwMDAwMCBuIAowMDAwMDAyNjc3IDAwMDAwIG4gCjAwMDAwMDI2OTcgMDAwMDAgbiAKMDAwMDAwMjczMCAwMDAwMCBuIAowMDAwMDAzNjYyIDAwMDAwIG4gCjAwMDAwMDM2ODEgMDAwMDAgbiAKMDAwMDA1MjIwNiAwMDAwMCBuIAowMDAwMDUyMjI3IDAwMDAwIG4gCjAwMDAxMDU0ODcgMDAwMDAgbiAKMDAwMDEwNTUwOSAwMDAwMCBuIAowMDAwMTA2MDE2IDAwMDAwIG4gCjAwMDAxMDYwMzYgMDAwMDAgbiAKMDAwMDc4ODU3MiAwMDAwMCBuIAowMDAwNzg3OTE5IDAwMDAwIG4gCjAwMDAxMDYyMzAgMDAwMDAgbiAKMDAwMDExMjQwMSAwMDAwMCBuIAowMDAwMTEyNDIyIDAwMDAwIG4gCjAwMDAxMTk2MDIgMDAwMDAgbiAKMDAwMDExOTYyMyAwMDAwMCBuIAowMDAwMTE5NzA4IDAwMDAwIG4gCjAwMDAxMTk4NDYgMDAwMDAgbiAKMDAwMDEyMDg4OCAwMDAwMCBuIAowMDAwMTIwOTA4IDAwMDAwIG4gCjAwMDAxMjA5MzUgMDAwMDAgbiAKMDAwMDEyMTE0NiAwMDAwMCBuIAowMDAwMTIzODUyIDAwMDAwIG4gCjAwMDAxMjM4NzMgMDAwMDAgbiAKMDAwMDEyNDA2NyAwMDAwMCBuIAowMDAwMTI0MTcyIDAwMDAwIG4gCjAwMDAxMjQzMDkgMDAwMDAgbiAKMDAwMDEyNDQxNSAwMDAwMCBuIAowMDAwMTI0NTUyIDAwMDAwIG4gCjAwMDAxMjQ2NjcgMDAwMDAgbiAKMDAwMDEyNDgwMyAwMDAwMCBuIAowMDAwMTI0OTMxIDAwMDAwIG4gCjAwMDAxMjUwNjcgMDAwMDAgbiAKMDAwMDEyNTIwMyAwMDAwMCBuIAowMDAwMTI1MzMyIDAwMDAwIG4gCjAwMDAxMjU0NjggMDAwMDAgbiAKMDAwMDEyNTYwNCAwMDAwMCBuIAowMDAwMTI4MTA2IDAwMDAwIG4gCjAwMDAxMjgxMjcgMDAwMDAgbiAKMDAwMDEyODE5NiAwMDAwMCBuIAowMDAwMTI4NDA3IDAwMDAwIG4gCjAwMDAxMjkyNTggMDAwMDAgbiAKMDAwMDEyOTI3OCAwMDAwMCBuIAowMDAwMTI5NDcyIDAwMDAwIG4gCjAwMDAxMjk1NjcgMDAwMDAgbiAKMDAwMDEyOTcwMyAwMDAwMCBuIAowMDAwMTMxMDk1IDAwMDAwIG4gCjAwMDAxMzExMTYgMDAwMDAgbiAKMDAwMDEzMTE0MyAwMDAwMCBuIAowMDAwMTMxMzU0IDAwMDAwIG4gCjAwMDAxMzMwMzEgMDAwMDAgbiAKMDAwMDEzMzA1MiAwMDAwMCBuIAowMDAwMTMzMjQ2IDAwMDAwIG4gCjAwMDAxMzQ5NjUgMDAwMDAgbiAKMDAwMDEzNDk4NiAwMDAwMCBuIAowMDAwMTM1MTgwIDAwMDAwIG4gCjAwMDAxMzY2NTkgMDAwMDAgbiAKMDAwMDEzNjY4MCAwMDAwMCBuIAowMDAwMTM2ODc0IDAwMDAwIG4gCjAwMDAxMzY5NTIgMDAwMDAgbiAKMDAwMDEzNzA4OCAwMDAwMCBuIAowMDAwMTM3MjI1IDAwMDAwIG4gCjAwMDAxMzczMDMgMDAwMDAgbiAKMDAwMDEzNzQ0MCAwMDAwMCBuIAowMDAwMTM3NTgwIDAwMDAwIG4gCjAwMDAxMzc2NTggMDAwMDAgbiAKMDAwMDEzNzc5NiAwMDAwMCBuIAowMDAwMTM3OTM2IDAwMDAwIG4gCjAwMDAxMzgwMTYgMDAwMDAgbiAKMDAwMDEzODE1NCAwMDAwMCBuIAowMDAwMTM4Mjk0IDAwMDAwIG4gCjAwMDAxMzgzNzQgMDAwMDAgbiAKMDAwMDEzODUxMiAwMDAwMCBuIAowMDAwMTM4NjUyIDAwMDAwIG4gCjAwMDAxMzg3MzIgMDAwMDAgbiAKMDAwMDEzODg3MCAwMDAwMCBuIAowMDAwMTM5MDEwIDAwMDAwIG4gCjAwMDAxMzkwOTAgMDAwMDAgbiAKMDAwMDEzOTIyOCAwMDAwMCBuIAowMDAwMTM5MzY4IDAwMDAwIG4gCjAwMDAxMzk0NDggMDAwMDAgbiAKMDAwMDEzOTU4NiAwMDAwMCBuIAowMDAwMTM5NzI2IDAwMDAwIG4gCjAwMDAxMzk4MDYgMDAwMDAgbiAKMDAwMDEzOTk0NCAwMDAwMCBuIAowMDAwMTQwMDg0IDAwMDAwIG4gCjAwMDAxNDAxNjQgMDAwMDAgbiAKMDAwMDE0MDMwMiAwMDAwMCBuIAowMDAwMTQwNDQyIDAwMDAwIG4gCjAwMDAxNDA1MjIgMDAwMDAgbiAKMDAwMDE0MDY2MCAwMDAwMCBuIAowMDAwMTQwODAwIDAwMDAwIG4gCjAwMDAxNDA4ODAgMDAwMDAgbiAKMDAwMDE0MTAxNyAwMDAwMCBuIAowMDAwMTQxMTU3IDAwMDAwIG4gCjAwMDAxNDEyMzYgMDAwMDAgbiAKMDAwMDE0MTM3MyAwMDAwMCBuIAowMDAwMTQxNTE0IDAwMDAwIG4gCjAwMDAxNDE1OTMgMDAwMDAgbiAKMDAwMDE0MTczMyAwMDAwMCBuIAowMDAwMTQxODc1IDAwMDAwIG4gCjAwMDAxNDE5NTYgMDAwMDAgbiAKMDAwMDE0MjA5NSAwMDAwMCBuIAowMDAwMTQyMjM3IDAwMDAwIG4gCjAwMDAxNDIzMTggMDAwMDAgbiAKMDAwMDE0MjQ1OCAwMDAwMCBuIAowMDAwMTQyNjAwIDAwMDAwIG4gCjAwMDAxNDI2ODEgMDAwMDAgbiAKMDAwMDE0MjgyMSAwMDAwMCBuIAowMDAwMTQyOTYzIDAwMDAwIG4gCjAwMDAxNDMwNDQgMDAwMDAgbiAKMDAwMDE0MzE4NCAwMDAwMCBuIAowMDAwMTQzMzI2IDAwMDAwIG4gCjAwMDAxNDM0MDcgMDAwMDAgbiAKMDAwMDE0MzU0NiAwMDAwMCBuIAowMDAwMTQzNjg4IDAwMDAwIG4gCjAwMDA3MTI1ODQgMDAwMDAgbiAKMDAwMDE0MzgyOCAwMDAwMCBuIAowMDAwMTQzOTcwIDAwMDAwIG4gCjAwMDAxNDQwNDkgMDAwMDAgbiAKMDAwMDE0NDE4OCAwMDAwMCBuIAowMDAwMTQ0MzMwIDAwMDAwIG4gCjAwMDAxNDQ0MDkgMDAwMDAgbiAKMDAwMDE0NDU0OSAwMDAwMCBuIAowMDAwMTQ0NjkxIDAwMDAwIG4gCjAwMDAxNDQ3NzAgMDAwMDAgbiAKMDAwMDE0NDkxMCAwMDAwMCBuIAowMDAwMTQ1MDUyIDAwMDAwIG4gCjAwMDAxNDUxMzEgMDAwMDAgbiAKMDAwMDE0NTI3MSAwMDAwMCBuIAowMDAwMTQ1NDEzIDAwMDAwIG4gCjAwMDAxNDU0OTIgMDAwMDAgbiAKMDAwMDE0NTYzMiAwMDAwMCBuIAowMDAwMTQ1Nzc0IDAwMDAwIG4gCjAwMDAxNDU4NTMgMDAwMDAgbiAKMDAwMDE0NTk5MSAwMDAwMCBuIAowMDAwMTQ2MTMzIDAwMDAwIG4gCjAwMDAxNDYyMTIgMDAwMDAgbiAKMDAwMDE0NjM1MiAwMDAwMCBuIAowMDAwMTQ2NDk0IDAwMDAwIG4gCjAwMDAxNDY1NzMgMDAwMDAgbiAKMDAwMDE0NjcxMyAwMDAwMCBuIAowMDAwMTQ2ODU1IDAwMDAwIG4gCjAwMDAxNDY5MzQgMDAwMDAgbiAKMDAwMDE0NzA3MyAwMDAwMCBuIAowMDAwMTQ3MjE1IDAwMDAwIG4gCjAwMDAxNDcyOTQgMDAwMDAgbiAKMDAwMDE0NzQzNCAwMDAwMCBuIAowMDAwMTQ3NTc2IDAwMDAwIG4gCjAwMDAxNDc2NTcgMDAwMDAgbiAKMDAwMDE0Nzc5NyAwMDAwMCBuIAowMDAwMTQ3OTM5IDAwMDAwIG4gCjAwMDAxNDgwMjAgMDAwMDAgbiAKMDAwMDE0ODE2MCAwMDAwMCBuIAowMDAwMTQ4MzAyIDAwMDAwIG4gCjAwMDAxNDgzODMgMDAwMDAgbiAKMDAwMDE0ODUyMyAwMDAwMCBuIAowMDAwMTQ4NjY1IDAwMDAwIG4gCjAwMDAxNDg3NDYgMDAwMDAgbiAKMDAwMDE0ODg4NiAwMDAwMCBuIAowMDAwMTQ5MDI4IDAwMDAwIG4gCjAwMDAxNDkxMDkgMDAwMDAgbiAKMDAwMDE0OTI0OCAwMDAwMCBuIAowMDAwMTQ5MzkwIDAwMDAwIG4gCjAwMDAxNDk0NzEgMDAwMDAgbiAKMDAwMDE0OTYxMSAwMDAwMCBuIAowMDAwMTQ5NzUzIDAwMDAwIG4gCjAwMDAxNDk4MzQgMDAwMDAgbiAKMDAwMDE0OTk3NCAwMDAwMCBuIAowMDAwMTUwMTE2IDAwMDAwIG4gCjAwMDAxNTAxOTYgMDAwMDAgbiAKMDAwMDE1MDMzNiAwMDAwMCBuIAowMDAwMTUwNDc4IDAwMDAwIG4gCjAwMDAxNTA1NTkgMDAwMDAgbiAKMDAwMDE1MDY5OSAwMDAwMCBuIAowMDAwMTUwODQxIDAwMDAwIG4gCjAwMDAxNTA5MjAgMDAwMDAgbiAKMDAwMDE1MTA2MCAwMDAwMCBuIAowMDAwMTUxMjAyIDAwMDAwIG4gCjAwMDAxNTEyODIgMDAwMDAgbiAKMDAwMDE1MTQyMiAwMDAwMCBuIAowMDAwMTUxNTY0IDAwMDAwIG4gCjAwMDAxNTE2NDQgMDAwMDAgbiAKMDAwMDE1MTc4NCAwMDAwMCBuIAowMDAwMTUxOTI2IDAwMDAwIG4gCjAwMDAxNTIwMDYgMDAwMDAgbiAKMDAwMDE1MjE0NiAwMDAwMCBuIAowMDAwMTUyMjg4IDAwMDAwIG4gCjAwMDAxNTIzNjggMDAwMDAgbiAKMDAwMDE1MjUwOCAwMDAwMCBuIAowMDAwMTUyNjUwIDAwMDAwIG4gCjAwMDAxNTI3MjkgMDAwMDAgbiAKMDAwMDE1Mjg2OSAwMDAwMCBuIAowMDAwMTUzMDExIDAwMDAwIG4gCjAwMDAxNTMwOTEgMDAwMDAgbiAKMDAwMDE1MzIzMSAwMDAwMCBuIAowMDAwMTUzMzczIDAwMDAwIG4gCjAwMDAxNTM0NTMgMDAwMDAgbiAKMDAwMDE1MzU5MyAwMDAwMCBuIAowMDAwMTUzNzM1IDAwMDAwIG4gCjAwMDAxNTM4MTUgMDAwMDAgbiAKMDAwMDE1Mzk1NSAwMDAwMCBuIAowMDAwMTU0MDk3IDAwMDAwIG4gCjAwMDAxNTQxNzcgMDAwMDAgbiAKMDAwMDE1NDMxNyAwMDAwMCBuIAowMDAwMTU0NDU5IDAwMDAwIG4gCjAwMDAxNTQ1MzggMDAwMDAgbiAKMDAwMDE1NDY3NyAwMDAwMCBuIAowMDAwMTU0ODE4IDAwMDAwIG4gCjAwMDAxNTQ4OTkgMDAwMDAgbiAKMDAwMDE1NTAzNyAwMDAwMCBuIAowMDAwMTU1MTc3IDAwMDAwIG4gCjAwMDAxODMxMzcgMDAwMDAgbiAKMDAwMDE4MzE2MCAwMDAwMCBuIAowMDAwMTgzOTczIDAwMDAwIG4gCjAwMDAxODQxODcgMDAwMDAgbiAKMDAwMDE4NTM5MSAwMDAwMCBuIAowMDAwMTg1NDEzIDAwMDAwIG4gCjAwMDAxODU2MDkgMDAwMDAgbiAKMDAwMDE4NzIxNyAwMDAwMCBuIAowMDAwMTg3MjM5IDAwMDAwIG4gCjAwMDAxODc0MzUgMDAwMDAgbiAKMDAwMDE4OTEzNCAwMDAwMCBuIAowMDAwMTg5MTU2IDAwMDAwIG4gCjAwMDAxODkzNTIgMDAwMDAgbiAKMDAwMDE5MDUxMyAwMDAwMCBuIAowMDAwMTkwNTM1IDAwMDAwIG4gCjAwMDAxOTA3MzEgMDAwMDAgbiAKMDAwMDE5MjIzOSAwMDAwMCBuIAowMDAwMTkyMjYxIDAwMDAwIG4gCjAwMDAxOTI0NTcgMDAwMDAgbiAKMDAwMDE5MjUzOCAwMDAwMCBuIAowMDAwMTkyNjc4IDAwMDAwIG4gCjAwMDAxOTI4MjAgMDAwMDAgbiAKMDAwMDE5MjkwMSAwMDAwMCBuIAowMDAwMTkzMDQxIDAwMDAwIG4gCjAwMDAxOTMxODMgMDAwMDAgbiAKMDAwMDE5MzI2NCAwMDAwMCBuIAowMDAwMTkzNDAzIDAwMDAwIG4gCjAwMDAxOTM1NDUgMDAwMDAgbiAKMDAwMDE5MzYyNiAwMDAwMCBuIAowMDAwMTkzNzY2IDAwMDAwIG4gCjAwMDAxOTM5MDggMDAwMDAgbiAKMDAwMDE5Mzk4OSAwMDAwMCBuIAowMDAwMTk0MTI5IDAwMDAwIG4gCjAwMDAxOTQyNzEgMDAwMDAgbiAKMDAwMDE5NDM1MiAwMDAwMCBuIAowMDAwMTk0NDkyIDAwMDAwIG4gCjAwMDAxOTQ2MzQgMDAwMDAgbiAKMDAwMDE5NDcxNSAwMDAwMCBuIAowMDAwMTk0ODU1IDAwMDAwIG4gCjAwMDAxOTQ5OTcgMDAwMDAgbiAKMDAwMDE5NTA3OCAwMDAwMCBuIAowMDAwMTk1MjE4IDAwMDAwIG4gCjAwMDAxOTUzNjAgMDAwMDAgbiAKMDAwMDE5NTQ0MCAwMDAwMCBuIAowMDAwMTk1NTgwIDAwMDAwIG4gCjAwMDAxOTU3MjIgMDAwMDAgbiAKMDAwMDE5NTgwNCAwMDAwMCBuIAowMDAwMTk1OTQ0IDAwMDAwIG4gCjAwMDAxOTYwODYgMDAwMDAgbiAKMDAwMDE5NjE2OCAwMDAwMCBuIAowMDAwMTk2MzA4IDAwMDAwIG4gCjAwMDAxOTY0NTAgMDAwMDAgbiAKMDAwMDE5NjUzMiAwMDAwMCBuIAowMDAwMTk2NjcyIDAwMDAwIG4gCjAwMDAxOTY4MTQgMDAwMDAgbiAKMDAwMDE5Njg5NiAwMDAwMCBuIAowMDAwMTk3MDM2IDAwMDAwIG4gCjAwMDAxOTcxNzggMDAwMDAgbiAKMDAwMDE5NzI2MCAwMDAwMCBuIAowMDAwMTk3NDAwIDAwMDAwIG4gCjAwMDAxOTc1NDIgMDAwMDAgbiAKMDAwMDE5NzYyNCAwMDAwMCBuIAowMDAwMTk3NzY0IDAwMDAwIG4gCjAwMDAxOTc5MDYgMDAwMDAgbiAKMDAwMDE5Nzk4OCAwMDAwMCBuIAowMDAwMTk4MTI4IDAwMDAwIG4gCjAwMDAxOTgyNzAgMDAwMDAgbiAKMDAwMDE5ODM1MiAwMDAwMCBuIAowMDAwMTk4NDkxIDAwMDAwIG4gCjAwMDAxOTg2MzMgMDAwMDAgbiAKMDAwMDE5ODcxNCAwMDAwMCBuIAowMDAwMTk4ODU0IDAwMDAwIG4gCjAwMDAxOTg5OTYgMDAwMDAgbiAKMDAwMDE5OTA3OCAwMDAwMCBuIAowMDAwMTk5MjE4IDAwMDAwIG4gCjAwMDAxOTkzNjAgMDAwMDAgbiAKMDAwMDE5OTQ0MCAwMDAwMCBuIAowMDAwMTk5NTgwIDAwMDAwIG4gCjAwMDAxOTk3MjIgMDAwMDAgbiAKMDAwMDE5OTgwNCAwMDAwMCBuIAowMDAwMTk5OTQ0IDAwMDAwIG4gCjAwMDAyMDAwODYgMDAwMDAgbiAKMDAwMDIwMDE2NyAwMDAwMCBuIAowMDAwMjAwMzA3IDAwMDAwIG4gCjAwMDAyMDA0NDkgMDAwMDAgbiAKMDAwMDIwMDUzMSAwMDAwMCBuIAowMDAwMjAwNjcwIDAwMDAwIG4gCjAwMDAyMDA4MTIgMDAwMDAgbiAKMDAwMDIwMDg5MyAwMDAwMCBuIAowMDAwMjAxMDMzIDAwMDAwIG4gCjAwMDAyMDExNzUgMDAwMDAgbiAKMDAwMDIwMTI1NyAwMDAwMCBuIAowMDAwMjAxMzk3IDAwMDAwIG4gCjAwMDAyMDE1MzkgMDAwMDAgbiAKMDAwMDIwMTYyMCAwMDAwMCBuIAowMDAwMjAxNzU5IDAwMDAwIG4gCjAwMDAyMDE5MDEgMDAwMDAgbiAKMDAwMDIwMTk4MyAwMDAwMCBuIAowMDAwMjAyMTIzIDAwMDAwIG4gCjAwMDAyMDIyNjUgMDAwMDAgbiAKMDAwMDIwMjM0NiAwMDAwMCBuIAowMDAwMjAyNDg2IDAwMDAwIG4gCjAwMDAyMDI2MjggMDAwMDAgbiAKMDAwMDIwMjcwOCAwMDAwMCBuIAowMDAwMjAyODQ4IDAwMDAwIG4gCjAwMDAyMDI5OTAgMDAwMDAgbiAKMDAwMDIwMzA3MiAwMDAwMCBuIAowMDAwMjAzMjEyIDAwMDAwIG4gCjAwMDAyMDMzNTQgMDAwMDAgbiAKMDAwMDIwMzQzNiAwMDAwMCBuIAowMDAwMjAzNTc2IDAwMDAwIG4gCjAwMDAyMDM3MTggMDAwMDAgbiAKMDAwMDIwMzgwMCAwMDAwMCBuIAowMDAwMjAzOTQwIDAwMDAwIG4gCjAwMDAyMDQwODIgMDAwMDAgbiAKMDAwMDIwNDE2NCAwMDAwMCBuIAowMDAwMjA0MzA0IDAwMDAwIG4gCjAwMDAyMDQ0NDYgMDAwMDAgbiAKMDAwMDIwNDUyNyAwMDAwMCBuIAowMDAwMjA0NjY3IDAwMDAwIG4gCjAwMDAyMDQ4MDkgMDAwMDAgbiAKMDAwMDIwNDg5MSAwMDAwMCBuIAowMDAwMjA1MDMxIDAwMDAwIG4gCjAwMDAyMDUxNzMgMDAwMDAgbiAKMDAwMDIwNTI1NSAwMDAwMCBuIAowMDAwMjA1Mzk0IDAwMDAwIG4gCjAwMDAyMDU1MzYgMDAwMDAgbiAKMDAwMDIwNTYxOCAwMDAwMCBuIAowMDAwMjA1NzU4IDAwMDAwIG4gCjAwMDAyMDU5MDAgMDAwMDAgbiAKMDAwMDIwNTk4MiAwMDAwMCBuIAowMDAwMjA2MTIyIDAwMDAwIG4gCjAwMDAyMDYyNjQgMDAwMDAgbiAKMDAwMDIwNjM0NCAwMDAwMCBuIAowMDAwMjA2NDg0IDAwMDAwIG4gCjAwMDAyMDY2MjYgMDAwMDAgbiAKMDAwMDIwNjcwOCAwMDAwMCBuIAowMDAwMjA2ODQ4IDAwMDAwIG4gCjAwMDAyMDY5OTAgMDAwMDAgbiAKMDAwMDIwNzA3MiAwMDAwMCBuIAowMDAwMjA3MjEwIDAwMDAwIG4gCjAwMDAyMDczNDkgMDAwMDAgbiAKMDAwMDIwNzQ4OCAwMDAwMCBuIAowMDAwMjA3NTcwIDAwMDAwIG4gCjAwMDAyMDc3MDkgMDAwMDAgbiAKMDAwMDIwNzg0OCAwMDAwMCBuIAowMDAwMjA3OTg3IDAwMDAwIG4gCjAwMDAyMDgwNjkgMDAwMDAgbiAKMDAwMDIwODIwOCAwMDAwMCBuIAowMDAwMjA4MzQ3IDAwMDAwIG4gCjAwMDAyMDg0ODYgMDAwMDAgbiAKMDAwMDIwODU2OCAwMDAwMCBuIAowMDAwMjA4NzA4IDAwMDAwIG4gCjAwMDAyMDg4NTAgMDAwMDAgbiAKMDAwMDIwODkzMiAwMDAwMCBuIAowMDAwMjA5MDcyIDAwMDAwIG4gCjAwMDAyMDkyMTQgMDAwMDAgbiAKMDAwMDIwOTI5NiAwMDAwMCBuIAowMDAwMjA5NDM2IDAwMDAwIG4gCjAwMDAyMDk1NzggMDAwMDAgbiAKMDAwMDIwOTY2MCAwMDAwMCBuIAowMDAwMjA5Nzk4IDAwMDAwIG4gCjAwMDAyMDk5MzcgMDAwMDAgbiAKMDAwMDIxMDA3NiAwMDAwMCBuIAowMDAwMjEwMTU3IDAwMDAwIG4gCjAwMDAyMTAyOTYgMDAwMDAgbiAKMDAwMDIxMDQzNyAwMDAwMCBuIAowMDAwMjEwNTE5IDAwMDAwIG4gCjAwMDAyMTA2NTcgMDAwMDAgbiAKMDAwMDIxMDc5NyAwMDAwMCBuIAowMDAwMjEwODc3IDAwMDAwIG4gCjAwMDAyMTEwMTUgMDAwMDAgbiAKMDAwMDIxMTE1NSAwMDAwMCBuIAowMDAwMjI4MjI1IDAwMDAwIG4gCjAwMDAyMjgyNDggMDAwMDAgbiAKMDAwMDIyOTEwMSAwMDAwMCBuIAowMDAwMjI5MzE1IDAwMDAwIG4gCjAwMDAyMzEwODkgMDAwMDAgbiAKMDAwMDIzMTExMSAwMDAwMCBuIAowMDAwMjMxMzA3IDAwMDAwIG4gCjAwMDAyMzMwMzAgMDAwMDAgbiAKMDAwMDIzMzA1MiAwMDAwMCBuIAowMDAwMjMzMjQ4IDAwMDAwIG4gCjAwMDAyMzUxMDIgMDAwMDAgbiAKMDAwMDIzNTEyNCAwMDAwMCBuIAowMDAwMjM1MzIwIDAwMDAwIG4gCjAwMDAyMzcxNjEgMDAwMDAgbiAKMDAwMDIzNzE4MyAwMDAwMCBuIAowMDAwMjM3Mzc5IDAwMDAwIG4gCjAwMDAyMzkwMTggMDAwMDAgbiAKMDAwMDIzOTA0MCAwMDAwMCBuIAowMDAwMjM5MjM2IDAwMDAwIG4gCjAwMDAyMzkzMTggMDAwMDAgbiAKMDAwMDIzOTQ1OCAwMDAwMCBuIAowMDAwMjM5NjAwIDAwMDAwIG4gCjAwMDAyMzk2ODIgMDAwMDAgbiAKMDAwMDIzOTgyMiAwMDAwMCBuIAowMDAwMjM5OTY0IDAwMDAwIG4gCjAwMDAyNDAwNDYgMDAwMDAgbiAKMDAwMDI0MDE4NiAwMDAwMCBuIAowMDAwMjQwMzI4IDAwMDAwIG4gCjAwMDAyNDA0MTAgMDAwMDAgbiAKMDAwMDI0MDU1MCAwMDAwMCBuIAowMDAwMjQwNjkyIDAwMDAwIG4gCjAwMDAyNDA3NzMgMDAwMDAgbiAKMDAwMDI0MDkxMyAwMDAwMCBuIAowMDAwMjQxMDU1IDAwMDAwIG4gCjAwMDAyNDExMzcgMDAwMDAgbiAKMDAwMDI0MTI3NyAwMDAwMCBuIAowMDAwMjQxNDE5IDAwMDAwIG4gCjAwMDAyNDE1MDEgMDAwMDAgbiAKMDAwMDI0MTY0MSAwMDAwMCBuIAowMDAwMjQxNzgzIDAwMDAwIG4gCjAwMDAyNDE4NjUgMDAwMDAgbiAKMDAwMDI0MjAwNSAwMDAwMCBuIAowMDAwMjQyMTQ3IDAwMDAwIG4gCjAwMDAyNDIyMjkgMDAwMDAgbiAKMDAwMDI0MjM2OSAwMDAwMCBuIAowMDAwMjQyNTExIDAwMDAwIG4gCjAwMDAyNDI1OTEgMDAwMDAgbiAKMDAwMDI0MjczMSAwMDAwMCBuIAowMDAwMjQyODczIDAwMDAwIG4gCjAwMDAyNDI5NTQgMDAwMDAgbiAKMDAwMDI0MzA5NCAwMDAwMCBuIAowMDAwMjQzMjM2IDAwMDAwIG4gCjAwMDAyNDMzMTcgMDAwMDAgbiAKMDAwMDI0MzQ1NyAwMDAwMCBuIAowMDAwMjQzNTk5IDAwMDAwIG4gCjAwMDAyNDM2ODAgMDAwMDAgbiAKMDAwMDI0MzgyMCAwMDAwMCBuIAowMDAwMjQzOTYyIDAwMDAwIG4gCjAwMDAyNDQwNDMgMDAwMDAgbiAKMDAwMDI0NDE4MyAwMDAwMCBuIAowMDAwMjQ0MzI1IDAwMDAwIG4gCjAwMDAyNDQ0MDUgMDAwMDAgbiAKMDAwMDI0NDU0NSAwMDAwMCBuIAowMDAwMjQ0Njg3IDAwMDAwIG4gCjAwMDAyNDQ3NjggMDAwMDAgbiAKMDAwMDI0NDkwOCAwMDAwMCBuIAowMDAwMjQ1MDUwIDAwMDAwIG4gCjAwMDAyNDUxMzEgMDAwMDAgbiAKMDAwMDI0NTI3MSAwMDAwMCBuIAowMDAwMjQ1NDEzIDAwMDAwIG4gCjAwMDAyNDU0OTQgMDAwMDAgbiAKMDAwMDI0NTYzNCAwMDAwMCBuIAowMDAwMjQ1Nzc2IDAwMDAwIG4gCjAwMDAyNDU4NTcgMDAwMDAgbiAKMDAwMDI0NTk5NyAwMDAwMCBuIAowMDAwMjQ2MTM5IDAwMDAwIG4gCjAwMDAyNDYyMTkgMDAwMDAgbiAKMDAwMDI0NjM1OCAwMDAwMCBuIAowMDAwMjQ2NTAwIDAwMDAwIG4gCjAwMDAyNDY1ODIgMDAwMDAgbiAKMDAwMDI0NjcyMiAwMDAwMCBuIAowMDAwMjQ2ODY0IDAwMDAwIG4gCjAwMDAyNDY5NDYgMDAwMDAgbiAKMDAwMDI0NzA4NiAwMDAwMCBuIAowMDAwMjQ3MjI4IDAwMDAwIG4gCjAwMDAyNDczMTAgMDAwMDAgbiAKMDAwMDI0NzQ1MCAwMDAwMCBuIAowMDAwMjQ3NTkyIDAwMDAwIG4gCjAwMDAyNDc2NzQgMDAwMDAgbiAKMDAwMDI0NzgxNCAwMDAwMCBuIAowMDAwMjQ3OTU2IDAwMDAwIG4gCjAwMDAyNDgwMzcgMDAwMDAgbiAKMDAwMDI0ODE3NyAwMDAwMCBuIAowMDAwMjQ4MzE5IDAwMDAwIG4gCjAwMDAyNDg0MDEgMDAwMDAgbiAKMDAwMDI0ODU0MSAwMDAwMCBuIAowMDAwMjQ4NjgzIDAwMDAwIG4gCjAwMDAyNDg3NjUgMDAwMDAgbiAKMDAwMDI0ODkwNSAwMDAwMCBuIAowMDAwMjQ5MDQ3IDAwMDAwIG4gCjAwMDAyNDkxMjkgMDAwMDAgbiAKMDAwMDI0OTI2OSAwMDAwMCBuIAowMDAwMjQ5NDExIDAwMDAwIG4gCjAwMDAyNDk0OTMgMDAwMDAgbiAKMDAwMDI0OTYzMyAwMDAwMCBuIAowMDAwMjQ5Nzc1IDAwMDAwIG4gCjAwMDAyNDk4NTUgMDAwMDAgbiAKMDAwMDI0OTk5NSAwMDAwMCBuIAowMDAwMjUwMTM3IDAwMDAwIG4gCjAwMDAyNTAyMTggMDAwMDAgbiAKMDAwMDI1MDM1OCAwMDAwMCBuIAowMDAwMjUwNTAwIDAwMDAwIG4gCjAwMDAyNTA1ODEgMDAwMDAgbiAKMDAwMDI1MDcyMSAwMDAwMCBuIAowMDAwMjUwODYzIDAwMDAwIG4gCjAwMDAyNTA5NDQgMDAwMDAgbiAKMDAwMDI1MTA4NCAwMDAwMCBuIAowMDAwMjUxMjI2IDAwMDAwIG4gCjAwMDAyNTEzMDcgMDAwMDAgbiAKMDAwMDI1MTQ0NiAwMDAwMCBuIAowMDAwMjUxNTg4IDAwMDAwIG4gCjAwMDAyNTE2NjggMDAwMDAgbiAKMDAwMDI1MTgwOCAwMDAwMCBuIAowMDAwMjUxOTUwIDAwMDAwIG4gCjAwMDAyNTIwMzEgMDAwMDAgbiAKMDAwMDI1MjE3MSAwMDAwMCBuIAowMDAwMjUyMzEzIDAwMDAwIG4gCjAwMDAyNTIzOTQgMDAwMDAgbiAKMDAwMDI1MjUzNCAwMDAwMCBuIAowMDAwMjUyNjc2IDAwMDAwIG4gCjAwMDAyNTI3NTcgMDAwMDAgbiAKMDAwMDI1Mjg5NyAwMDAwMCBuIAowMDAwMjUzMDM5IDAwMDAwIG4gCjAwMDAyNTMxMjAgMDAwMDAgbiAKMDAwMDI1MzI2MCAwMDAwMCBuIAowMDAwMjUzNDAyIDAwMDAwIG4gCjAwMDAyNTM0ODIgMDAwMDAgbiAKMDAwMDI1MzYyMiAwMDAwMCBuIAowMDAwMjUzNzY0IDAwMDAwIG4gCjAwMDAyNTM4NDUgMDAwMDAgbiAKMDAwMDI1Mzk4NSAwMDAwMCBuIAowMDAwMjU0MTI3IDAwMDAwIG4gCjAwMDAyNTQyMDggMDAwMDAgbiAKMDAwMDI1NDM0OCAwMDAwMCBuIAowMDAwMjU0NDkwIDAwMDAwIG4gCjAwMDAyNTQ1NzEgMDAwMDAgbiAKMDAwMDI1NDcxMSAwMDAwMCBuIAowMDAwMjU0ODUzIDAwMDAwIG4gCjAwMDAyNTQ5MzQgMDAwMDAgbiAKMDAwMDI1NTA3NCAwMDAwMCBuIAowMDAwMjU1MjE2IDAwMDAwIG4gCjAwMDAyNTUyOTYgMDAwMDAgbiAKMDAwMDI1NTQzNiAwMDAwMCBuIAowMDAwMjU1NTc4IDAwMDAwIG4gCjAwMDAyNTU2NTkgMDAwMDAgbiAKMDAwMDI1NTc5OCAwMDAwMCBuIAowMDAwMjU1OTQwIDAwMDAwIG4gCjAwMDAyNTYwMjEgMDAwMDAgbiAKMDAwMDI1NjE2MSAwMDAwMCBuIAowMDAwMjU2MzAzIDAwMDAwIG4gCjAwMDAyNTYzODQgMDAwMDAgbiAKMDAwMDI1NjUyNCAwMDAwMCBuIAowMDAwMjU2NjY2IDAwMDAwIG4gCjAwMDAyNTY3NDcgMDAwMDAgbiAKMDAwMDI1Njg4NyAwMDAwMCBuIAowMDAwMjU3MDI5IDAwMDAwIG4gCjAwMDAyNTcxMDkgMDAwMDAgbiAKMDAwMDI1NzI0OSAwMDAwMCBuIAowMDAwMjU3MzkxIDAwMDAwIG4gCjAwMDAyNTc0NzMgMDAwMDAgbiAKMDAwMDI1NzYxMyAwMDAwMCBuIAowMDAwMjU3NzU1IDAwMDAwIG4gCjAwMDAyNTc4MzcgMDAwMDAgbiAKMDAwMDI1Nzk3NiAwMDAwMCBuIAowMDAwMjU4MTE3IDAwMDAwIG4gCjAwMDAyNTgxOTkgMDAwMDAgbiAKMDAwMDI1ODMzNyAwMDAwMCBuIAowMDAwMjU4NDc3IDAwMDAwIG4gCjAwMDAyNTg1NTkgMDAwMDAgbiAKMDAwMDI1ODY5NyAwMDAwMCBuIAowMDAwMjU4ODM3IDAwMDAwIG4gCjAwMDAyNzE4OTcgMDAwMDAgbiAKMDAwMDI3MTkyMCAwMDAwMCBuIAowMDAwMjcyODA1IDAwMDAwIG4gCjAwMDAyNzMwMTkgMDAwMDAgbiAKMDAwMDI3NDI4MiAwMDAwMCBuIAowMDAwMjc0MzA0IDAwMDAwIG4gCjAwMDAyNzQ1MDAgMDAwMDAgbiAKMDAwMDI3NjE1OCAwMDAwMCBuIAowMDAwMjc2MTgwIDAwMDAwIG4gCjAwMDAyNzYzNzYgMDAwMDAgbiAKMDAwMDI3NzU1NCAwMDAwMCBuIAowMDAwMjc3NTc2IDAwMDAwIG4gCjAwMDAyNzc3NzIgMDAwMDAgbiAKMDAwMDI3ODg3MyAwMDAwMCBuIAowMDAwMjc4ODk1IDAwMDAwIG4gCjAwMDAyNzkwOTEgMDAwMDAgbiAKMDAwMDI4MDk4MyAwMDAwMCBuIAowMDAwMjgxMDA1IDAwMDAwIG4gCjAwMDAyODEyMDEgMDAwMDAgbiAKMDAwMDI4MTI4MiAwMDAwMCBuIAowMDAwMjgxNDIyIDAwMDAwIG4gCjAwMDAyODE1NjQgMDAwMDAgbiAKMDAwMDI4MTY0NiAwMDAwMCBuIAowMDAwMjgxNzg2IDAwMDAwIG4gCjAwMDAyODE5MjggMDAwMDAgbiAKMDAwMDI4MjAxMCAwMDAwMCBuIAowMDAwMjgyMTUwIDAwMDAwIG4gCjAwMDAyODIyOTIgMDAwMDAgbiAKMDAwMDI4MjM3NCAwMDAwMCBuIAowMDAwMjgyNTE0IDAwMDAwIG4gCjAwMDAyODI2NTYgMDAwMDAgbiAKMDAwMDI4MjczOCAwMDAwMCBuIAowMDAwMjgyODc4IDAwMDAwIG4gCjAwMDAyODMwMjAgMDAwMDAgbiAKMDAwMDI4MzEwMCAwMDAwMCBuIAowMDAwMjgzMjQwIDAwMDAwIG4gCjAwMDAyODMzODIgMDAwMDAgbiAKMDAwMDI4MzQ2NCAwMDAwMCBuIAowMDAwMjgzNjA0IDAwMDAwIG4gCjAwMDAyODM3NDYgMDAwMDAgbiAKMDAwMDI4MzgyOCAwMDAwMCBuIAowMDAwMjgzOTY4IDAwMDAwIG4gCjAwMDAyODQxMTAgMDAwMDAgbiAKMDAwMDI4NDE5MiAwMDAwMCBuIAowMDAwMjg0MzMyIDAwMDAwIG4gCjAwMDAyODQ0NzQgMDAwMDAgbiAKMDAwMDI4NDU1NiAwMDAwMCBuIAowMDAwMjg0Njk2IDAwMDAwIG4gCjAwMDAyODQ4MzggMDAwMDAgbiAKMDAwMDI4NDkyMCAwMDAwMCBuIAowMDAwMjg1MDYwIDAwMDAwIG4gCjAwMDAyODUyMDIgMDAwMDAgbiAKMDAwMDI4NTI4NCAwMDAwMCBuIAowMDAwMjg1NDI0IDAwMDAwIG4gCjAwMDAyODU1NjYgMDAwMDAgbiAKMDAwMDI4NTY0OCAwMDAwMCBuIAowMDAwMjg1Nzg4IDAwMDAwIG4gCjAwMDAyODU5MzAgMDAwMDAgbiAKMDAwMDI4NjAxMiAwMDAwMCBuIAowMDAwMjg2MTUyIDAwMDAwIG4gCjAwMDAyODYyOTQgMDAwMDAgbiAKMDAwMDI4NjM3NiAwMDAwMCBuIAowMDAwMjg2NTE2IDAwMDAwIG4gCjAwMDAyODY2NTggMDAwMDAgbiAKMDAwMDI4NjczOCAwMDAwMCBuIAowMDAwMjg2ODc4IDAwMDAwIG4gCjAwMDAyODcwMjAgMDAwMDAgbiAKMDAwMDI4NzEwMiAwMDAwMCBuIAowMDAwMjg3MjQyIDAwMDAwIG4gCjAwMDAyODczODQgMDAwMDAgbiAKMDAwMDI4NzQ2NiAwMDAwMCBuIAowMDAwMjg3NjA2IDAwMDAwIG4gCjAwMDAyODc3NDggMDAwMDAgbiAKMDAwMDI4NzgyOSAwMDAwMCBuIAowMDAwMjg3OTY5IDAwMDAwIG4gCjAwMDAyODgxMTEgMDAwMDAgbiAKMDAwMDI4ODE5MyAwMDAwMCBuIAowMDAwMjg4MzMyIDAwMDAwIG4gCjAwMDAyODg0NzQgMDAwMDAgbiAKMDAwMDI4ODU1NiAwMDAwMCBuIAowMDAwMjg4Njk2IDAwMDAwIG4gCjAwMDAyODg4MzggMDAwMDAgbiAKMDAwMDI4ODkyMCAwMDAwMCBuIAowMDAwMjg5MDYwIDAwMDAwIG4gCjAwMDAyODkyMDIgMDAwMDAgbiAKMDAwMDI4OTI4NCAwMDAwMCBuIAowMDAwMjg5NDI0IDAwMDAwIG4gCjAwMDAyODk1NjYgMDAwMDAgbiAKMDAwMDI4OTY0NyAwMDAwMCBuIAowMDAwMjg5Nzg2IDAwMDAwIG4gCjAwMDAyODk5MjggMDAwMDAgbiAKMDAwMDI5MDAxMCAwMDAwMCBuIAowMDAwMjkwMTUwIDAwMDAwIG4gCjAwMDAyOTAyOTIgMDAwMDAgbiAKMDAwMDI5MDM3MiAwMDAwMCBuIAowMDAwMjkwNTExIDAwMDAwIG4gCjAwMDAyOTA2NTMgMDAwMDAgbiAKMDAwMDI5MDczNSAwMDAwMCBuIAowMDAwMjkwODc1IDAwMDAwIG4gCjAwMDAyOTEwMTcgMDAwMDAgbiAKMDAwMDI5MTA5OSAwMDAwMCBuIAowMDAwMjkxMjM5IDAwMDAwIG4gCjAwMDAyOTEzODEgMDAwMDAgbiAKMDAwMDI5MTQ2MyAwMDAwMCBuIAowMDAwMjkxNjAyIDAwMDAwIG4gCjAwMDAyOTE3NDQgMDAwMDAgbiAKMDAwMDI5MTgyNiAwMDAwMCBuIAowMDAwMjkxOTY2IDAwMDAwIG4gCjAwMDAyOTIxMDggMDAwMDAgbiAKMDAwMDI5MjE5MCAwMDAwMCBuIAowMDAwMjkyMzMwIDAwMDAwIG4gCjAwMDAyOTI0NzIgMDAwMDAgbiAKMDAwMDI5MjU1NCAwMDAwMCBuIAowMDAwMjkyNjk0IDAwMDAwIG4gCjAwMDAyOTI4MzYgMDAwMDAgbiAKMDAwMDI5MjkxOCAwMDAwMCBuIAowMDAwMjkzMDU4IDAwMDAwIG4gCjAwMDAyOTMyMDAgMDAwMDAgbiAKMDAwMDI5MzI4MiAwMDAwMCBuIAowMDAwMjkzNDIyIDAwMDAwIG4gCjAwMDAyOTM1NjQgMDAwMDAgbiAKMDAwMDI5MzY0NSAwMDAwMCBuIAowMDAwMjkzNzg1IDAwMDAwIG4gCjAwMDAyOTM5MjcgMDAwMDAgbiAKMDAwMDI5NDAwOSAwMDAwMCBuIAowMDAwMjk0MTQ5IDAwMDAwIG4gCjAwMDAyOTQyOTEgMDAwMDAgbiAKMDAwMDI5NDM3MSAwMDAwMCBuIAowMDAwMjk0NTExIDAwMDAwIG4gCjAwMDAyOTQ2NTMgMDAwMDAgbiAKMDAwMDI5NDczNSAwMDAwMCBuIAowMDAwMjk0ODc1IDAwMDAwIG4gCjAwMDAyOTUwMTcgMDAwMDAgbiAKMDAwMDI5NTA5OSAwMDAwMCBuIAowMDAwMjk1MjM5IDAwMDAwIG4gCjAwMDAyOTUzODEgMDAwMDAgbiAKMDAwMDI5NTQ2MyAwMDAwMCBuIAowMDAwMjk1NjAzIDAwMDAwIG4gCjAwMDAyOTU3NDUgMDAwMDAgbiAKMDAwMDI5NTgyNyAwMDAwMCBuIAowMDAwMjk1OTY2IDAwMDAwIG4gCjAwMDAyOTYxMDggMDAwMDAgbiAKMDAwMDI5NjE5MCAwMDAwMCBuIAowMDAwMjk2MzI5IDAwMDAwIG4gCjAwMDAyOTY0NzEgMDAwMDAgbiAKMDAwMDI5NjU1MyAwMDAwMCBuIAowMDAwMjk2NjkzIDAwMDAwIG4gCjAwMDAyOTY4MzUgMDAwMDAgbiAKMDAwMDI5NjkxNyAwMDAwMCBuIAowMDAwMjk3MDU3IDAwMDAwIG4gCjAwMDAyOTcxOTkgMDAwMDAgbiAKMDAwMDI5NzI4MSAwMDAwMCBuIAowMDAwMjk3NDIxIDAwMDAwIG4gCjAwMDAyOTc1NjMgMDAwMDAgbiAKMDAwMDI5NzY0NSAwMDAwMCBuIAowMDAwMjk3Nzg1IDAwMDAwIG4gCjAwMDAyOTc5MjcgMDAwMDAgbiAKMDAwMDI5ODAwNyAwMDAwMCBuIAowMDAwMjk4MTQ3IDAwMDAwIG4gCjAwMDAyOTgyODkgMDAwMDAgbiAKMDAwMDI5ODM3MSAwMDAwMCBuIAowMDAwMjk4NTExIDAwMDAwIG4gCjAwMDAyOTg2NTMgMDAwMDAgbiAKMDAwMDI5ODczNCAwMDAwMCBuIAowMDAwMjk4ODczIDAwMDAwIG4gCjAwMDAyOTkwMTIgMDAwMDAgbiAKMDAwMDI5OTE1NCAwMDAwMCBuIAowMDAwMjk5MjM2IDAwMDAwIG4gCjAwMDAyOTkzNzUgMDAwMDAgbiAKMDAwMDI5OTUxMiAwMDAwMCBuIAowMDAwMjk5NjUzIDAwMDAwIG4gCjAwMDAyOTk3MzUgMDAwMDAgbiAKMDAwMDI5OTg3MyAwMDAwMCBuIAowMDAwMzAwMDEzIDAwMDAwIG4gCjAwMDAzMDAwOTUgMDAwMDAgbiAKMDAwMDMwMDIzMyAwMDAwMCBuIAowMDAwMzAwMzczIDAwMDAwIG4gCjAwMDAzMTk1MTIgMDAwMDAgbiAKMDAwMDMxOTUzNSAwMDAwMCBuIAowMDAwMzIwNDA0IDAwMDAwIG4gCjAwMDAzMjA2MTggMDAwMDAgbiAKMDAwMDMyMjY3MSAwMDAwMCBuIAowMDAwMzIyNjkzIDAwMDAwIG4gCjAwMDAzMjI4ODkgMDAwMDAgbiAKMDAwMDMyNDA1NiAwMDAwMCBuIAowMDAwMzI0MDc4IDAwMDAwIG4gCjAwMDAzMjQyNzQgMDAwMDAgbiAKMDAwMDMyNTcyNyAwMDAwMCBuIAowMDAwMzI1NzQ5IDAwMDAwIG4gCjAwMDAzMjU5NDUgMDAwMDAgbiAKMDAwMDMyNzU2MyAwMDAwMCBuIAowMDAwMzI3NTg1IDAwMDAwIG4gCjAwMDAzMjc3ODEgMDAwMDAgbiAKMDAwMDMyOTk1OSAwMDAwMCBuIAowMDAwMzI5OTgxIDAwMDAwIG4gCjAwMDAzMzAxNzcgMDAwMDAgbiAKMDAwMDMzMDI1NyAwMDAwMCBuIAowMDAwMzMwMzk2IDAwMDAwIG4gCjAwMDAzMzA1MzggMDAwMDAgbiAKMDAwMDMzMTU5NSAwMDAwMCBuIAowMDAwMzMxNjE2IDAwMDAwIG4gCjAwMDAzMzE2NTMgMDAwMDAgbiAKMDAwMDMzMTg2NyAwMDAwMCBuIAowMDAwMzMzOTAyIDAwMDAwIG4gCjAwMDAzMzM5MjQgMDAwMDAgbiAKMDAwMDMzNDEyMCAwMDAwMCBuIAowMDAwMzM1ODkyIDAwMDAwIG4gCjAwMDAzMzU5MTQgMDAwMDAgbiAKMDAwMDMzNjExMCAwMDAwMCBuIAowMDAwMzc0NDgzIDAwMDAwIG4gCjAwMDAzNzQ1MDYgMDAwMDAgbiAKMDAwMDQ5NzY0NiAwMDAwMCBuIAowMDAwNDk3NjcwIDAwMDAwIG4gCjAwMDA0OTg3MzcgMDAwMDAgbiAKMDAwMDQ5ODc1OCAwMDAwMCBuIAowMDAwNDk4OTU0IDAwMDAwIG4gCjAwMDA2NDEwNTkgMDAwMDAgbiAKMDAwMDY0MTA4MyAwMDAwMCBuIAowMDAwNjQzMDIxIDAwMDAwIG4gCjAwMDA2NDMwNDMgMDAwMDAgbiAKMDAwMDY0MzIzOSAwMDAwMCBuIAowMDAwNjQ0NDgzIDAwMDAwIG4gCjAwMDA2NDQ1MDUgMDAwMDAgbiAKMDAwMDY0NDcwMSAwMDAwMCBuIAowMDAwNjQ1OTg1IDAwMDAwIG4gCjAwMDA2NDYwMDcgMDAwMDAgbiAKMDAwMDY0NjIwMyAwMDAwMCBuIAowMDAwNjQ3MzU1IDAwMDAwIG4gCjAwMDA2NDczNzcgMDAwMDAgbiAKMDAwMDY0NzU3MyAwMDAwMCBuIAowMDAwNjQ4ODkxIDAwMDAwIG4gCjAwMDA2NDg5MTMgMDAwMDAgbiAKMDAwMDY0OTEwOSAwMDAwMCBuIAowMDAwNjUwNDEzIDAwMDAwIG4gCjAwMDA2NTA0MzUgMDAwMDAgbiAKMDAwMDY1MDYzMSAwMDAwMCBuIAowMDAwNjUyMDg5IDAwMDAwIG4gCjAwMDA2NTIxMTEgMDAwMDAgbiAKMDAwMDY1MjMwNyAwMDAwMCBuIAowMDAwNjUzNjA0IDAwMDAwIG4gCjAwMDA2NTM2MjYgMDAwMDAgbiAKMDAwMDY1MzgyMiAwMDAwMCBuIAowMDAwNjU0NTY4IDAwMDAwIG4gCjAwMDA2NTQ1ODkgMDAwMDAgbiAKMDAwMDY1NDc4NSAwMDAwMCBuIAowMDAwNjU3MzE2IDAwMDAwIG4gCjAwMDA2NTczMzggMDAwMDAgbiAKMDAwMDY1NzUzNCAwMDAwMCBuIAowMDAwNjU3NjE2IDAwMDAwIG4gCjAwMDA2NTc3NTUgMDAwMDAgbiAKMDAwMDY1Nzg5NCAwMDAwMCBuIAowMDAwNjU4MDM2IDAwMDAwIG4gCjAwMDA2NTgxMTcgMDAwMDAgbiAKMDAwMDY1ODI1NyAwMDAwMCBuIAowMDAwNjU4Mzk5IDAwMDAwIG4gCjAwMDA2NTg0ODEgMDAwMDAgbiAKMDAwMDY1ODYyMSAwMDAwMCBuIAowMDAwNjU4NzYzIDAwMDAwIG4gCjAwMDA2NTg4NDUgMDAwMDAgbiAKMDAwMDY1ODk4NSAwMDAwMCBuIAowMDAwNjU5MTI3IDAwMDAwIG4gCjAwMDA2NTkyMDcgMDAwMDAgbiAKMDAwMDY1OTM0NyAwMDAwMCBuIAowMDAwNjU5NDg5IDAwMDAwIG4gCjAwMDA2NTk1NzEgMDAwMDAgbiAKMDAwMDY1OTcxMSAwMDAwMCBuIAowMDAwNjU5ODUzIDAwMDAwIG4gCjAwMDA2NTk5MzUgMDAwMDAgbiAKMDAwMDY2MDA3NSAwMDAwMCBuIAowMDAwNjYwMjE3IDAwMDAwIG4gCjAwMDA2NjAyOTkgMDAwMDAgbiAKMDAwMDY2MDQzOSAwMDAwMCBuIAowMDAwNjYwNTgxIDAwMDAwIG4gCjAwMDA2NjA2NjMgMDAwMDAgbiAKMDAwMDY2MDgwMyAwMDAwMCBuIAowMDAwNjYwOTQ1IDAwMDAwIG4gCjAwMDA2NjEwMjYgMDAwMDAgbiAKMDAwMDY2MTE2NiAwMDAwMCBuIAowMDAwNjYxMzA4IDAwMDAwIG4gCjAwMDA2NjEzOTAgMDAwMDAgbiAKMDAwMDY2MTUzMCAwMDAwMCBuIAowMDAwNjYxNjcyIDAwMDAwIG4gCjAwMDA2NjE3NTQgMDAwMDAgbiAKMDAwMDY2MTg5NCAwMDAwMCBuIAowMDAwNjYyMDM2IDAwMDAwIG4gCjAwMDA2NjIxMTggMDAwMDAgbiAKMDAwMDY2MjI1OCAwMDAwMCBuIAowMDAwNjYyNDAwIDAwMDAwIG4gCjAwMDA2NjI0ODAgMDAwMDAgbiAKMDAwMDY2MjYyMCAwMDAwMCBuIAowMDAwNjYyNzYyIDAwMDAwIG4gCjAwMDA2NjI4NDQgMDAwMDAgbiAKMDAwMDY2Mjk4NCAwMDAwMCBuIAowMDAwNjYzMTI2IDAwMDAwIG4gCjAwMDA2NjMyMDggMDAwMDAgbiAKMDAwMDY2MzM0OCAwMDAwMCBuIAowMDAwNjYzNDkwIDAwMDAwIG4gCjAwMDA2NjM1NzIgMDAwMDAgbiAKMDAwMDY2MzcxMiAwMDAwMCBuIAowMDAwNjYzODU0IDAwMDAwIG4gCjAwMDA2NjM5MzYgMDAwMDAgbiAKMDAwMDY2NDA3NiAwMDAwMCBuIAowMDAwNjY0MjE4IDAwMDAwIG4gCjAwMDA2NjQzMDAgMDAwMDAgbiAKMDAwMDY2NDQ0MCAwMDAwMCBuIAowMDAwNjY0NTgyIDAwMDAwIG4gCjAwMDA2NjQ2NjQgMDAwMDAgbiAKMDAwMDY2NDgwNCAwMDAwMCBuIAowMDAwNjY0OTQ2IDAwMDAwIG4gCjAwMDA2NjUwMjggMDAwMDAgbiAKMDAwMDY2NTE2OCAwMDAwMCBuIAowMDAwNjY1MzEwIDAwMDAwIG4gCjAwMDA2NjUzOTIgMDAwMDAgbiAKMDAwMDY2NTUzMiAwMDAwMCBuIAowMDAwNjY1Njc0IDAwMDAwIG4gCjAwMDA2NjU3NTYgMDAwMDAgbiAKMDAwMDY2NTg5NiAwMDAwMCBuIAowMDAwNjY2MDM4IDAwMDAwIG4gCjAwMDA2NjYxMTggMDAwMDAgbiAKMDAwMDY2NjI1NyAwMDAwMCBuIAowMDAwNjY2Mzk5IDAwMDAwIG4gCjAwMDA2NjY0ODEgMDAwMDAgbiAKMDAwMDY2NjYyMSAwMDAwMCBuIAowMDAwNjY2NzYzIDAwMDAwIG4gCjAwMDA2NjY4NDUgMDAwMDAgbiAKMDAwMDY2Njk4NSAwMDAwMCBuIAowMDAwNjY3MTI3IDAwMDAwIG4gCjAwMDA2NjcyMDggMDAwMDAgbiAKMDAwMDY2NzM0OCAwMDAwMCBuIAowMDAwNjY3NDkwIDAwMDAwIG4gCjAwMDA2Njc1NzIgMDAwMDAgbiAKMDAwMDY2NzcxMiAwMDAwMCBuIAowMDAwNjY3ODU0IDAwMDAwIG4gCjAwMDA2Njc5MzYgMDAwMDAgbiAKMDAwMDY2ODA3NiAwMDAwMCBuIAowMDAwNjY4MjE4IDAwMDAwIG4gCjAwMDA2NjgzMDAgMDAwMDAgbiAKMDAwMDY2ODQ0MCAwMDAwMCBuIAowMDAwNjY4NTgyIDAwMDAwIG4gCjAwMDA2Njg2NjQgMDAwMDAgbiAKMDAwMDY2ODgwNCAwMDAwMCBuIAowMDAwNjY4OTQ2IDAwMDAwIG4gCjAwMDA2NjkwMjcgMDAwMDAgbiAKMDAwMDY2OTE2NyAwMDAwMCBuIAowMDAwNjY5MzA5IDAwMDAwIG4gCjAwMDA2NjkzOTEgMDAwMDAgbiAKMDAwMDY2OTUzMSAwMDAwMCBuIAowMDAwNjY5NjczIDAwMDAwIG4gCjAwMDA2Njk3NTMgMDAwMDAgbiAKMDAwMDY2OTg5MyAwMDAwMCBuIAowMDAwNjcwMDM1IDAwMDAwIG4gCjAwMDA2NzAxMTcgMDAwMDAgbiAKMDAwMDY3MDI1NyAwMDAwMCBuIAowMDAwNjcwMzk5IDAwMDAwIG4gCjAwMDA2NzA0ODEgMDAwMDAgbiAKMDAwMDY3MDYyMSAwMDAwMCBuIAowMDAwNjcwNzYzIDAwMDAwIG4gCjAwMDA2NzA4NDUgMDAwMDAgbiAKMDAwMDY3MDk4NSAwMDAwMCBuIAowMDAwNjcxMTI3IDAwMDAwIG4gCjAwMDA2NzEyMDkgMDAwMDAgbiAKMDAwMDY3MTM0OSAwMDAwMCBuIAowMDAwNjcxNDkxIDAwMDAwIG4gCjAwMDA2NzE1NzMgMDAwMDAgbiAKMDAwMDY3MTcxMiAwMDAwMCBuIAowMDAwNjcxODU0IDAwMDAwIG4gCjAwMDA2NzE5MzYgMDAwMDAgbiAKMDAwMDY3MjA3NiAwMDAwMCBuIAowMDAwNjcyMjE4IDAwMDAwIG4gCjAwMDA2NzIyOTkgMDAwMDAgbiAKMDAwMDY3MjQzOSAwMDAwMCBuIAowMDAwNjcyNTgxIDAwMDAwIG4gCjAwMDA2NzI2NjMgMDAwMDAgbiAKMDAwMDY3MjgwMyAwMDAwMCBuIAowMDAwNjcyOTQ1IDAwMDAwIG4gCjAwMDA2NzMwMjcgMDAwMDAgbiAKMDAwMDY3MzE2NyAwMDAwMCBuIAowMDAwNjczMzA5IDAwMDAwIG4gCjAwMDA2NzMzODkgMDAwMDAgbiAKMDAwMDY3MzUyOSAwMDAwMCBuIAowMDAwNjczNjcxIDAwMDAwIG4gCjAwMDA2NzM3NTEgMDAwMDAgbiAKMDAwMDY3Mzg5MCAwMDAwMCBuIAowMDAwNjc0MDMyIDAwMDAwIG4gCjAwMDA2NzQxMTIgMDAwMDAgbiAKMDAwMDY3NDI1MiAwMDAwMCBuIAowMDAwNjc0Mzk0IDAwMDAwIG4gCjAwMDA2NzQ0NzQgMDAwMDAgbiAKMDAwMDY3NDYxNCAwMDAwMCBuIAowMDAwNjc0NzU2IDAwMDAwIG4gCjAwMDA2NzQ4MzYgMDAwMDAgbiAKMDAwMDY3NDk3NSAwMDAwMCBuIAowMDAwNjc1MTE3IDAwMDAwIG4gCjAwMDA2NzUxOTkgMDAwMDAgbiAKMDAwMDY3NTMzOSAwMDAwMCBuIAowMDAwNjc1NDgxIDAwMDAwIG4gCjAwMDA2NzU1NjMgMDAwMDAgbiAKMDAwMDY3NTcwMyAwMDAwMCBuIAowMDAwNjc1ODQ1IDAwMDAwIG4gCjAwMDA2NzU5MjUgMDAwMDAgbiAKMDAwMDY3NjA2MyAwMDAwMCBuIAowMDAwNjc2MjA0IDAwMDAwIG4gCjAwMDA2NzYyODQgMDAwMDAgbiAKMDAwMDY3NjQyMCAwMDAwMCBuIAowMDAwNjc2NTYwIDAwMDAwIG4gCjAwMDA2NzY2NDAgMDAwMDAgbiAKMDAwMDY3Njc3NyAwMDAwMCBuIAowMDAwNjc2OTE3IDAwMDAwIG4gCjAwMDA2OTUzODggMDAwMDAgbiAKMDAwMDY5NTQxMSAwMDAwMCBuIAowMDAwNjk2Mjg4IDAwMDAwIG4gCjAwMDA2OTY1MDIgMDAwMDAgbiAKMDAwMDY5ODcxNSAwMDAwMCBuIAowMDAwNjk4NzM3IDAwMDAwIG4gCjAwMDA2OTg5MzMgMDAwMDAgbiAKMDAwMDcwMTc2NSAwMDAwMCBuIAowMDAwNzAxNzg3IDAwMDAwIG4gCjAwMDA3MDE5ODMgMDAwMDAgbiAKMDAwMDcwNDMxNSAwMDAwMCBuIAowMDAwNzA0MzM3IDAwMDAwIG4gCjAwMDA3MDQ1MzMgMDAwMDAgbiAKMDAwMDcwNDY1NSAwMDAwMCBuIAowMDAwNzA0NzkxIDAwMDAwIG4gCjAwMDA3MDc0NTkgMDAwMDAgbiAKMDAwMDcwNzQ4MSAwMDAwMCBuIAowMDAwNzA3NTEwIDAwMDAwIG4gCjAwMDA3MDc3MjQgMDAwMDAgbiAKMDAwMDcwNzgzOSAwMDAwMCBuIAowMDAwNzA3OTc4IDAwMDAwIG4gCjAwMDA3MDgwNzcgMDAwMDAgbiAKMDAwMDcwODIxNyAwMDAwMCBuIAowMDAwNzA5ODI2IDAwMDAwIG4gCjAwMDA3MDk4NDkgMDAwMDAgbiAKMDAwMDcwOTg4OCAwMDAwMCBuIAowMDAwNzEwMTA1IDAwMDAwIG4gCjAwMDA3MTIzNjMgMDAwMDAgbiAKMDAwMDcxMjM4NiAwMDAwMCBuIAowMDAwNzE1NzEwIDAwMDAwIG4gCjAwMDA3MTI2NjUgMDAwMDAgbiAKMDAwMDcxMjc0NiAwMDAwMCBuIAowMDAwNzEyODkwIDAwMDAwIG4gCjAwMDA3MTI5NzIgMDAwMDAgbiAKMDAwMDcxMzExMyAwMDAwMCBuIAowMDAwNzEzMjUzIDAwMDAwIG4gCjAwMDA3MTU2MzggMDAwMDAgbiAKMDAwMDcxNTY2MSAwMDAwMCBuIAowMDAwNzE1OTI3IDAwMDAwIG4gCjAwMDA3MTgwNTkgMDAwMDAgbiAKMDAwMDcxODA4MiAwMDAwMCBuIAowMDAwNzE4MjgwIDAwMDAwIG4gCjAwMDA3MjAwMDEgMDAwMDAgbiAKMDAwMDcyMDAyNCAwMDAwMCBuIAowMDAwNzIwMjIyIDAwMDAwIG4gCjAwMDA3MjE5MDYgMDAwMDAgbiAKMDAwMDcyMTkyOSAwMDAwMCBuIAowMDAwNzIyMTI3IDAwMDAwIG4gCjAwMDA3MjQ0MTcgMDAwMDAgbiAKMDAwMDcyNDQ0MCAwMDAwMCBuIAowMDAwNzI0NjM4IDAwMDAwIG4gCjAwMDA3MjQ3MTkgMDAwMDAgbiAKMDAwMDcyNDg2MSAwMDAwMCBuIAowMDAwNzI1MDA1IDAwMDAwIG4gCjAwMDA3MjUwODYgMDAwMDAgbiAKMDAwMDcyNTIyNyAwMDAwMCBuIAowMDAwNzI1MzcxIDAwMDAwIG4gCjAwMDA3MjU1MTIgMDAwMDAgbiAKMDAwMDcyNTY1NiAwMDAwMCBuIAowMDAwNzI1NzM3IDAwMDAwIG4gCjAwMDA3MjU4NzkgMDAwMDAgbiAKMDAwMDcyNjAyMyAwMDAwMCBuIAowMDAwNzI2MTY0IDAwMDAwIG4gCjAwMDA3MjYzMDggMDAwMDAgbiAKMDAwMDcyNjM5MSAwMDAwMCBuIAowMDAwNzI2NTMzIDAwMDAwIG4gCjAwMDA3MjY2NzcgMDAwMDAgbiAKMDAwMDcyNjc2MCAwMDAwMCBuIAowMDAwNzI2OTAyIDAwMDAwIG4gCjAwMDA3MjcwNDYgMDAwMDAgbiAKMDAwMDcyNzEzMCAwMDAwMCBuIAowMDAwNzI3MjcyIDAwMDAwIG4gCjAwMDA3Mjc0MTYgMDAwMDAgbiAKMDAwMDcyNzUwMCAwMDAwMCBuIAowMDAwNzI3NjQyIDAwMDAwIG4gCjAwMDA3Mjc3ODYgMDAwMDAgbiAKMDAwMDczNDAxMSAwMDAwMCBuIAowMDAwNzM0MDM0IDAwMDAwIG4gCjAwMDA3MzQyMTggMDAwMDAgbiAKMDAwMDczNDQzNSAwMDAwMCBuIAowMDAwNzM1NzAwIDAwMDAwIG4gCjAwMDA3MzU3MjMgMDAwMDAgbiAKMDAwMDczNTkyMSAwMDAwMCBuIAowMDAwNzM2MTg5IDAwMDAwIG4gCjAwMDA3NTE2NjQgMDAwMDAgbiAKMDAwMDc1MTY0MCAwMDAwMCBuIAowMDAwNzUxNzY0IDAwMDAwIG4gCjAwMDA3NTE3ODUgMDAwMDAgbiAKMDAwMDc1MjQ2OSAwMDAwMCBuIAowMDAwNzUxOTUzIDAwMDAwIG4gCjAwMDA3NTMwODMgMDAwMDAgbiAKMDAwMDc1MzEwNSAwMDAwMCBuIAowMDAwNzUzMzY4IDAwMDAwIG4gCjAwMDA3NzA2OTcgMDAwMDAgbiAKMDAwMDc3MDY3MyAwMDAwMCBuIAowMDAwNzcwODA1IDAwMDAwIG4gCjAwMDA3NzA4MjYgMDAwMDAgbiAKMDAwMDc3MTU1NSAwMDAwMCBuIAowMDAwNzcwOTg5IDAwMDAwIG4gCjAwMDA3NzIyMjkgMDAwMDAgbiAKMDAwMDc3MjI1MSAwMDAwMCBuIAowMDAwNzcyNTE2IDAwMDAwIG4gCjAwMDA3ODY0MjMgMDAwMDAgbiAKMDAwMDc4NjM5OSAwMDAwMCBuIAowMDAwNzg2NTI1IDAwMDAwIG4gCjAwMDA3ODY1NDYgMDAwMDAgbiAKMDAwMDc4NzI1NCAwMDAwMCBuIAowMDAwNzg2NzEzIDAwMDAwIG4gCjAwMDA3ODc4OTcgMDAwMDAgbiAKMDAwMDc4ODQ2MSAwMDAwMCBuIAowMDAwNzg4ODUwIDAwMDAwIG4gCnRyYWlsZXIKPDwKICAvUm9vdCAxMDg4IDAgUgogIC9JbmZvIDEgMCBSCiAgL0lEIFs8MjNCRDc3RkI2NzkxRTRGMzkyRUMxNjgxQUI0Mzg5OTk+IDwyM0JENzdGQjY3OTFFNEYzOTJFQzE2ODFBQjQzODk5OT5dCiAgL1NpemUgMTA5MAo+PgpzdGFydHhyZWYKNzg5Mjg3CiUlRU9GCg==
en
de
internal
external
public
Misc
Misc Comment
1
current_timestamp
1
current_timestamp
1
0